这是一份为你的 ESP32-C3 智能 WiFi 切换器(网页配置版) 量身定制的详细使用说明书。你可以直接按照以下步骤进行操作和测试。
🚀 第一阶段:初次开机与配网(配置模式)
当 ESP32-C3 刚刚通电时,它会优先进入“配置模式”。在这个阶段,它会变成一个路由器,发射出专属的 WiFi 热点供你连接。
1. 给设备供电 将烧录好程序的 ESP32-C3 插入电源(充电宝或 USB 适配器均可)。
2. 连接配置热点
- 打开你的手机或电脑的 WiFi 设置。
- 搜索并连接名为
ESP32_Switcher_Config的 WiFi。 - 输入密码:
12345678。 - (💡 贴心设计:设备刚开机时只有 60 秒的时间会广播这个热点。但别担心,只要你的手机连上了这个热点,60秒倒计时就会自动暂停,你可以慢慢配置,不会被踢下线。)
3. 打开配置网页
- 连接热点后,打开手机或电脑的浏览器(推荐 Chrome、Safari 或 Edge)。
- 在地址栏输入:
192.168.4.1并回车。 - 你将看到一个蓝白风格的“⚙️ 切换器参数配置”页面。
📝 第二阶段:参数设置详解
在网页中,你会看到以下几个核心参数,你可以根据实际的房间环境进行调整:
- 目标 A 路由器 SSID: * 填什么:你要保护的那个路由器的 WiFi 名称(也就是你希望设备一直连着的那个主路由器)。
- 注意:严格区分大小写,千万不要填错,否则设备会一直找不到路由器。
- B 房间触发阈值 (RSSI):
- 填什么:代表信号强度的负数(比如
-68)。数字越靠近 0,代表信号越强(距离越近)。 - 作用:当有人拿着手机走到 B 房间,信号弱于(比如低于 -68dBm)这个设定的值时,切换器就会认定“他进 B 房间了”,开始将他踢下线。
- 填什么:代表信号强度的负数(比如
- 最大记录设备数: * 默认
25即可,一般家庭环境足够用了(最大支持填 50)。 - Deauth 攻击间隔 (毫秒): * 默认
1200(即 1.2 秒)。意思是每隔 1.2 秒给 B 房间的设备发送一次“强制断开”指令。如果有些设备比较顽固,可以适当调低到800或1000。 - 自动校准模式:
- 关闭:严格按照你上面填写的“触发阈值”来工作。
- 开启:如果你不知道阈值该填多少,就选这个。开启后,设备进入工作状态的前 60 秒只看不踢。你只需拿着手机在 B 房间走动一圈,它会自动学习 B 房间的信号强度范围,并智能设定一个最适合的阈值。
4. 保存并重启 确认无误后,点击网页底部的 “保存并重启设备”。此时手机会与热点断开,ESP32 将把配置永久保存在芯片内部,并自动重启。
🛡️ 第三阶段:正常工作(嗅探与切换模式)
设备重启后,如果 60 秒内没有手机再去连接它的配置热点(或者你刚才点击了保存),它就会关闭热点,正式进入“潜行工作模式”。
它的工作流程如下:
- 静默扫描:它会在 1~13 信道间扫描,寻找你配置的“目标 A 路由器”,并锁定它的信道和 MAC 地址。
- 监听 B 房间:它开始抓取空气中的 WiFi 数据包。当发现有设备的信号强度达到了你设定的“B 房间阈值”,它就会将其记录到“活跃设备列表”中。
- 精准打击:对于列表中的设备,ESP32 会伪装成 A 路由器,向该设备发送 Deauth(解除认证)数据帧,迫使该设备断开当前连接,从而实现“切换”效果。
- 智能放行:如果该设备离开了 B 房间(超过 15 秒没有被 ESP32 监听到足够强的信号),ESP32 会自动将它从列表中移除,停止发送断开指令。
❓ 常见问题与维护 (FAQ)
Q1:我之前配置错了,或者换了路由器,怎么重新修改参数? 很简单。拔掉 ESP32 的电源重新插上。在刚通电的前 60 秒内,使用手机重新连接 ESP32_Switcher_Config 热点,进入 192.168.4.1 修改并保存即可。你的新配置会覆盖旧配置。
Q2:我怎么知道它现在到底在干嘛?有没有成功踢人? 如果你手头有电脑,可以使用数据线将 ESP32 连到电脑上,打开 Arduino IDE 的 串口监视器 (Serial Monitor),将波特率设置为 115200。 你会看到非常详细的中文运行日志,包括:
- 它找到了几个候选路由器
- 当前锁定了哪个信道
- 哪些设备的 MAC 地址进入了 B 房间
- 已经发送了多少次 Deauth 指令
- 每 30 秒打印一次的全局统计报表
目前设备主要通过串口输出状态,在脱离电脑独立运行时,你可能无法直观地知道它是否正在攻击。需要我为你加上代码,利用 ESP32-C3 板载的 LED 指示灯来显示工作状态吗(比如:配置期常亮,找到路由器后慢闪,正在踢人时快闪)?
切换器判定设备进入 B 房间,并不是因为信号“弱于”(低于)设定值,恰恰相反,是因为信号“强于”(大于)这个设定值 。
这个机制的底层原理基于空间距离与无线电波强度的关系(RSSI 探测),结合了 ESP32 的混杂监听模式(Promiscuous Mode)。
我们可以把这个过程拆解为以下几个生动的步骤来理解:
1. 负数规则:理解 RSSI(信号强度指示)
Wi-Fi 的信号强度(RSSI)在程序中是用负数来表示的,单位是 dBm 。+1
- 数字越靠近 0,表示信号越强(距离越近)。比如
-40 dBm信号极强,说明设备就在眼前。 - 数字越远离 0,表示信号越弱(距离越远)。比如
-85 dBm信号极弱,说明设备在很远的另一个房间。
所以,-65 dBm 是大于(强于)-68 dBm 的。程序中的触发逻辑是:当 rssi > currentRssiThreshold(例如测得信号为 -65,大于阈值 -68)时,才会把设备加入 B 房间的名单 。
2. “顺风耳”模式:被动监听
ESP32 并没有连接你手机的 Wi-Fi。相反,它开启了“混杂模式”(类似网络抓包),变成了一个全频段的“顺风耳” 。 你的手机只要开着 Wi-Fi,哪怕没有在下载东西,它也会时不时地向四周发射无线电波(比如寻找周围有没有更强的路由器,或者发送心跳包)。ESP32 就在暗中默默捕捉这些电波。+2
3. 位置逻辑:ESP32 的埋伏点
这个系统的巧妙之处在于:ESP32 切换器本身是物理放置在 B 房间里的。
- 当你坐在 A 房间时,离 B 房间里的 ESP32 很远。ESP32 听到你手机发出的电波非常微弱(比如
-80 dBm)。因为-80 < -68,ESP32 认为你“还没进来”,按兵不动 。 - 当你拿着手机走近并踏入 B 房间时,你的手机离 ESP32 越来越近。ESP32 听到你手机的声音越来越响亮。
- 一旦这声音的强度越过了那条设定的红线(比如达到了
-60 dBm,大于-68 dBm),ESP32 就立刻断定:“抓到你了,你进入了我的地盘(B 房间)!”
4. 实施拦截:发送 Deauth 断开指令
既然确认你进了 B 房间,按理说你应该连 B 房间的路由器了,但手机通常很“笨”,只要 A 路由器的信号还没彻底断光,它就死死咬住不放,导致你在 B 房间上网极慢。 此时,ESP32 就会冒充 A 路由器,对你的手机大喊一句:“我要断开连接!”(这就是 Deauth 攻击帧)。你的手机收到这个强制断开指令后,就会瞬间掉线,然后立刻去寻找周围最强的信号——自然就顺利切换到了你头顶上 B 房间的路由器。
总结来说:因为 ESP32 就放在 B 房间,所以它依靠“听”你手机信号的响亮程度(RSSI 是否大于阈值),来判断你到底离它有多近。