为避免手头上的NodeMCU(ESP8266)和128x64 OLED吃灰,找了个适合的项目——WiFi Deauther。

很多人将其称为WiFi干扰器,这是不准确的。

ESP8266 Deauther可用于扫描WiFi设备,阻止选定的连接,创建多个热点反制WiFi扫描器。

原理

伪造路由器向客户端发送取消认证报文,使客户端主动断开WiFi连接。属于DoS(拒绝服务式攻击)。

即便目标处于加密网络中也有效,因为取消认证报文无需加密。

此漏洞在802.11w-2009中有提议解决,但几乎所有厂商的默认设置都将其禁用。

硬件准备

Parts # 备注
NodeMCU 1
0.96寸128*64黄蓝双色OLED 1
按钮 3
万能板 1 可用面包板代替
飞线 若干 可用跳线代替

NodeMCU简介

ESP8266-NodeMCU-V2-Pinout

NodeMCU Pin GPIO Note
D0 GPIO 16 无I2C或PWM,有时用作芯片LED
D1 GPIO 5
D2 GPIO 4
D3 GPIO 0 Flash按钮
D4 GPIO 2 需上拉电阻, 板载LED
D5 GPIO 14
D6 GPIO 12
D7 GPIO 13
D8 GPIO 15 需下拉电阻
D9 GPIO 3 串口RX (Serial)
D10 GPIO 1 串口(Serial)
SD2 GPIO 9 Flash
SD3 GPIO 10 Flash
  • D0不可用作PWM调光的RGB灯或I2C显示屏
  • D4和D8需要电阻,通常板子已带,用作Boot。
  • D9和D10用作串口调试和上传代码,勿用。
  • D3接按钮用于进入Flash模式。
  • SD2和SD3用于板载SPI闪存。

综上,总共有11个GPIO可用,其中4个慎用。

推荐I2C显示屏+3按钮+ws2812灯,这样比较省端口。最简方案单个NodeMCU开发板即可,连上板子AP通过网页配置和执行攻击,但攻击时会很卡甚至连不上界面,不推荐。

我这边是按手头有的配件搭配,所以是SPI显示屏+3按钮,不用LED。显示屏界面有后退选项,故3按钮(上、下、确认)足够了。

如果是用面包板,推荐用NodeMCU V2,V3太宽不适合。

接线

NodeMCU Parts
D5 OLED_SCL
D7 OLED_SDA
D1 OLED_RST
D2 OLED_D/C
D3 按钮_上
D6 按钮_下
D4 按钮_A

IMG_20221015_152147

编译代码

参考作者的Compiling using Arduino IDE的步骤即可。

注意用Arduino IDE打开源码前,先用VS Code之类的编辑A_config.h文件。需修改处如下:

1
2
3
4
5
6
7
8
...
#define DISPLAY_EXAMPLE_SPI
...
#elif defined(DISPLAY_EXAMPLE_SPI)
#define SSD1306_SPI //此处根据你的显示屏驱动芯片选择

#define FLIP_DIPLAY true //显示内容需上下翻转
...

默认AP名为pwned,密码deauther,手机连上AP后浏览器访问http://192.168.4.1进入管理员界面。这些可以在A_config.h中配置,跳过也无所谓,可以在网页界面更改。

然后打开Arduino IDE,先选好板子NodeMCU和端口。再打开esp8266_deauther.ino。IDE的界面可能会比较卡,这也是为何先编辑好配置文件的原因,然后直接点Upload。

IMG_20221015_152121

参考资料

Wi-Fi deauthentication attack

Setup Display & Buttons