samdenty/Wi-PWN

GitHub: samdenty/Wi-PWN

基于 ESP8266 的 WiFi 去认证攻击固件,用于无线网络安全测试与审计。

Stars: 1716 | Forks: 326

Wi-PWN

Sponsor this project
ESP8266 firmware for performing deauthentication attacks, with ease.

- 快速响应的 Material Design UI,支持可选的暗色模式 - 集成 [Deauth Detector](https://github.com/spacehuhn/DeauthDetector)(完全可自定义) - WiFi 客户端模式 - 在 WiFi 网络上访问 Wi-PWN - 信息页面显示总发送数据包数、运行时间、内存使用情况、检查更新等 - 易于使用的翻译引擎 - 想翻译成您自己的语言?[只需到这里请求!](https://wi-pwn.samdd.me/discord) ### 英文翻译 德语翻译 中文翻译 荷兰语翻译 俄语翻译 意大利语翻译 斯洛伐克语翻译 葡萄牙语翻译 波兰语翻译 爱沙尼亚语翻译 土耳其语翻译 捷克语翻译 希伯来语翻译 ## 目录 - [介绍](#introduction) - [什么是 Wi-PWN](#what-is-Wi-PWN) - [工作原理](#how-it-works) - [如何防御此类攻击](#how-to-protect-against-it) - [安装](#installation) - [使用 NodeMCU-Flasher 刷写](#nodemcu) - [使用 Arduino 编译](#arduino) - [如何使用](#how-to-use) - [常见问题](#faq) - [许可证](#license) - [来源及其他链接](#sources-and-additional-links) ## 介绍 ### 什么是 Wi-PWN Wi-PWN 是一个能在廉价的 Arduino 开发板上执行 [deauth attacks](https://en.wikipedia.org/wiki/Wi-Fi_deauthentication_attack) 的固件。[ESP8266](https://en.wikipedia.org/wiki/ESP8266) 是一款内置 Wi-Fi 的廉价微控制器。它包含一个强大的 160 MHz 处理器,并且可以使用 [Arduino](https://www.arduino.cc/en/Main/Software) 进行编程。 取消验证攻击(Deauthentication attack)经常与 [Wi-Fi jamming](https://en.wikipedia.org/wiki/Radio_jamming#Method) 混淆,因为它们都会阻止用户访问 Wi-Fi 网络。 ### 工作原理 802.11 Wi-Fi 协议包含一个所谓的 [deauthentication frame](https://mrncciew.com/2014/10/11/802-11-mgmt-deauth-disassociation-frames/)。它用于安全地将客户端从无线网络断开。 由于这些管理数据包是未加密的,您只需要知道 Wi-Fi 路由器的 MAC 地址和您想要断开连接的客户端设备的 MAC 地址。您不需要处于网络中或知道密码,只要在信号范围内即可。 ### 如何防御此类攻击 随着 [802.11w-2009](https://en.wikipedia.org/wiki/IEEE_802.11w-2009) 更新标准的推出,管理帧默认被加密。 [802.11w](https://en.wikipedia.org/wiki/IEEE_802.11w-2009) 在现实世界中很少被使用,因为需要**路由器和客户端设备**同时支持该标准,否则它们将无法连接到路由器。 由于大量遗留设备不支持新标准,升级到 [802.11w](https://en.wikipedia.org/wiki/IEEE_802.11w-2009) 标准通常昂贵且困难。由于维护上的噩梦,超过 95% 的设备仍在使用易受攻击的 802.11 标准——即使较新的设备支持更新的标准。 ## 安装 需求: - ESP8266 模块(任何开发板) - Micro-USB 线缆 - 电脑 我建议购买 USB 转接/开发者板,主要是因为它具有 4Mb 的闪存且操作简单。 为了上传 Wi-PWN 固件,您可以使用两种方法之一。第一种方法总体上更简单,但使用 Arduino 更适合调试。 **您只需要选择其中一种安装方法!** ### 安装必要的驱动程序 ESP8266 开发板使用的 UART 转换器有两种变体: |CP210x|CH34x| |:---:|:---:| | [驱动程序](https://github.com/samdenty99/Wi-PWN/tree/master/drivers/CP210x) | [驱动程序](https://github.com/samdenty99/Wi-PWN/tree/master/drivers/CH34x) | ||| ### 方法 1:使用 NodeMCU-Flasher 刷写 1. [下载](https://github.com/samdenty99/Wi-PWN/releases/latest) 当前版本的 Wi-PWN 2. 使用 [nodemcu-flasher](https://github.com/nodemcu/nodemcu-flasher/raw/master/Win64/Release/ESP8266Flasher.exe) 上传 `.bin` 文件。或者您也可以使用 espressif 提供的官方 [esptool](https://github.com/espressif/esptool)。 3. 连接您的 ESP8266(确保已安装驱动程序)并打开 *NodeMCU Flasher* 4. 转到 `Advanced`(高级)选项卡,为您的主板选择正确的值。 5. 导航到 `config`(配置)选项卡,并点击第一个条目的齿轮图标。 6. 浏览找到您刚刚下载的 `.bin` 文件并点击打开。 7. 切换回 `Operation`(操作)选项卡并点击 Flash(F)。 ### 方法 2:使用 Arduino 编译 1. [下载此项目的源代码](https://github.com/samdenty99/Wi-PWN/archive/master.zip)。 2. 安装 [Arduino](https://www.arduino.cc/en/Main/Software) 并打开它。 3. 转到 `File`(文件) > `Preferences`(首选项) 4. 将 `http://arduino.esp8266.com/stable/package_esp8266com_index.json` 添加到 *Additional Boards Manager URLs*(附加开发板管理器网址)。(参考 [https://github.com/esp8266/Arduino](https://github.com/esp8266/Arduino)) 5. 转到 `Tools`(工具) > `Board`(开发板) > `Boards Manager`(开发板管理器) 6. 输入 `esp8266` 7. 选择版本 `2.0.0` 并点击 `Install`(安装)(**必须是 2.0.0 版本!**)

![Arduino 截图,选择正确的版本](https://static.pigsec.cn/wp-content/uploads/repos/2026/03/c6528c927c095230.jpg) 8. 转到 `File`(文件) > `Preferences`(首选项) 9. 打开 `More preferences can be edited directly in the file`(可以直接在文件中编辑更多首选项)下的文件夹路径

![Arduino 截图,打开文件夹路径](https://static.pigsec.cn/wp-content/uploads/repos/2026/03/84df79bab6095231.jpg) 10. 进入 `packages` > `esp8266` > `hardware` > `esp8266` > `2.0.0` > `tools` > `sdk` > `include` 11. 使用文本编辑器打开 `user_interface.h` 12. 在最后一行 `#endif` 之前,添加以下内容: ``` typedef void (*freedom_outside_cb_t)(uint8 status); int wifi_register_send_pkt_freedom_cb(freedom_outside_cb_t cb); void wifi_unregister_send_pkt_freedom_cb(void); int wifi_send_pkt_freedom(uint8 *buf, int len, bool sys_seq); ``` ![记事本截图,复制粘贴正确的代码](https://static.pigsec.cn/wp-content/uploads/repos/2026/03/4f14774f8a095232.jpg) 13. 进入此项目的 [arduino/SDK_fix](https://github.com/samdenty99/Wi-PWN/arduino/SDK_fix) 文件夹 14. 将 `ESP8266Wi-Fi.cpp` 和 `ESP8266Wi-Fi.h` 复制到 `C:\Users\%username%\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.0.0\libraries\ESP8266WiFi\src` 15. 在 Arduino 中打开 `arduino/Wi-PWN/Wi-PWN.ino` 16. 在 `Tools`(工具) > `Board`(开发板) 选择您的 ESP8266 开发板,并在 `Tools`(工具) > `Port`(端口) 选择正确的端口 **如果没有显示端口,您需要重新安装驱动程序**,在网上搜索芯片型号 + 'driver Windows' 17. 根据您的主板,您可能需要调整 `Tools`(工具) > `Board`(开发板) > `Flash Frequency`(闪存频率)和 `Tools`(工具) > `Board`(开发板) > `Flash Size`(闪存大小)。我使用的是 `80MHz` Flash Frequency,以及 `4M (1M SPIFFS)` Flash Size 18. 上传! CTRL-U **注意:** 如果您使用的是 512kb 版本的 ESP8266,您需要在 `data.h` 中注释掉 mac 供应商列表的一部分 ## 如何使用 1. 将您的 ESP8266 连接到 USB 电源(您可以使用 OTG 线通过手机供电) 2. 在您的设备上扫描 Wi-Fi 网络并连接到 `Wi-PWN`(默认无密码)。 3. 连接后,打开浏览器并访问 `http://192.168.4.1` 4. 点击 ACCEPT(接受)以接受条款和条件

![](https://static.pigsec.cn/wp-content/uploads/repos/2026/03/b42bdd1752095233.png) 5. 指定 Wi-PWN 使用的 SSID 和密码,然后点击 CONTINUE(继续)

![](https://static.pigsec.cn/wp-content/uploads/repos/2026/03/2781897b2a095234.png) 6. 使用您在上一步中指定的 SSID 和密码重新连接到新网络。 7. 返回浏览器,页面应该会重新加载(如果页面没有重新加载,请再次打开 `http://192.168.4.1`)

8. 点击 Scan(扫描)按钮扫描 Wi-Fi 网络

![](https://static.pigsec.cn/wp-content/uploads/repos/2026/03/01685ade98095234.png)
**注意:您可能需要重新连接到 Wi-Fi 网络。** 9. 选择您想要进行攻击的 WiFi 网络。完成后,点击 Attack(攻击)按钮 10. 选择您希望执行的攻击

![](https://static.pigsec.cn/wp-content/uploads/repos/2026/03/466c63c39e095235.png)
## 常见问题 #### 只能在某些设备上连接到 Wi-Fi 网络 这是由于信道冲突造成的。只需在能够连接到 Wi-Fi 网络的设备上访问 `192.168.4.1/settings.html`,并将**通道号**从 `1` 更改为直到 `14` 的任何数字。 #### 上传时出现 `espcomm_sync failed` / `espcomm_open` ESP 上传工具无法与芯片通信。 - 使用不同的 USB 端口和线缆重新连接芯片。 - 安装 USB 驱动程序(cp2102 或 ch340)。 - 确保选择了正确的 COM 端口。 #### SSID 无法加载?(没有清除按钮) 尝试在连接到您的 ESP 时访问 `192.168.4.1/clearSSID.json` 来重置 SSID 列表。 如果这不能解决您的问题,请在 [official discord]() 寻求帮助。 #### Deauth 攻击不起作用 如果您在网站上看到 0 pkts/s,那么您犯了错误。请检查您是否正确遵循了安装步骤以及是否安装了正确的 SDK,它必须是 2.0.0 版本! 如果它可以发送数据包但您的目标没有断开连接,那么 Wi-Fi 路由器要么使用了 [802.11w](#how-to-protect-against-it) 并对此类攻击进行了防护,要么它在 5GHz 频段上通信,而 ESP8266 由于其 2.4GHz 天线而不支持该频段。 #### 如果您有关于 ESP8266 的其他问题或疑问,您也可以查看官方 [community forum](http://www.esp8266.com/)。 [![Analytics](https://ga-beacon.appspot.com/UA-85426772-5/Wi-PWN/?pixel)](https://github.com/igrigorik/ga-beacon)
标签:802.11, Arduino, Deauth攻击, ESP8266, IoT安全, IPv6支持, Material Design, PE加载, UML, WiFi安全, Wi-PWN, 去认证攻击, 固件, 客户端加密, 客户端加密, 嵌入式系统, 拒绝服务, 攻击路径可视化, 无线攻击, 渗透工具, 网络安全, 网络攻防, 隐私保护, 黑客工具