maxbrito500/esp32-c5-deauth

GitHub: maxbrito500/esp32-c5-deauth

基于 ESP32-C5 的双频 Wi-Fi 取消认证工具包,支持通过 BLE 从手机、桌面或智能手表端远程扫描并发送 802.11 去认证帧。

Stars: 64 | Forks: 7

# 5G Deauther — 双频 Wi-Fi 取消认证工具包

Flutter controller showing the scanned network list

ESP32-C5 固件,可扫描 2.4 GHz 和 5 GHz 接入点,并允许控制器(手机、桌面设备或手表)通过 Bluetooth LE 链路向选定目标发送 802.11 取消认证帧。此仓库中包含三个控制器前端: | 前端 | 路径 | 备注 | |-----------|------|-------| | ESP32-C5 固件 | `esp32-c5/` | 射频端。针对 Seeed XIAO ESP32-C5 的 ESP-IDF 项目。 | | Flutter 应用 | `flutter/` | Android / Linux 桌面。功能齐全(白名单、黑名单、全面清除、控制台)。 | | Garmin 手表应用 | `garmin/` | 适用于 Fenix 7 系列的 Connect IQ 应用。极简功能:扫描 → 列出网络 → 取消认证。 | 射频端和控制器使用 Nordic UART Service (NUS) BLE 配置文件以及简单的行缓冲文本协议进行通信。有关协议参考,请参阅 `esp32-c5/README.md`。 ## 截图与演示 | 网络面板 | 全面清除演示 | |----------------|-----------| | 网络选项卡 | 全面清除雷达运行中 | 网络面板按频段和信号对扫描到的 AP 进行排序,并允许您在按下 **取消认证** 之前勾选单个目标。全面清除选项卡的剪辑展示了在选定持续时间内同时驱动所有可见 AP 的雷达视图。 ## ⚠️ 仅限合乎道德的使用 本项目发布用于**防御性安全研究与教育**——对您拥有或获得明确书面许可进行评估的网络进行渗透测试、安全培训、夺旗 (CTF) 练习、Wi-Fi 协议弱点的实验室演示以及学术研究。 针对您不拥有或未获得明确测试许可的网络使用取消认证帧在**大多数司法管辖区都是非法的**。 不受本许可证涵盖的示例包括: - 干扰邻居、雇主、咖啡馆、学校或机场的 Wi-Fi - 破坏他人的视频通话、智能家居设备或 IoT 设备 - 对任意接入点进行大规模拒绝服务攻击 - 绕过强制门户或规避付费 Wi-Fi 访问控制 如果您不希望在向网络所有者展示您的具体操作时感到不安,**请勿对网络运行此固件**。 您需对使用本软件的行为承担全部责任。通过构建、刷入或运行它,即表示您接受此责任。 ## 快速刷入(浏览器,免安装) 将固件刷入 ESP32-C5 的最快方法是:通过 USB-C 插入开发板,并在 **Chrome 或 Edge** 中点击此链接(需要 Web Serial,因此 Firefox/Safari 无法使用)。 [**在浏览器中刷入 ESP32-C5 Deauther →**](https://espressif.github.io/esp-launchpad/?flashConfigURL=https://raw.githubusercontent.com/maxbrito500/esp32-c5-deauth/flasher/config.toml) 该页面是 Espressif 官方的 **ESP Launchpad**,其预设指向了本仓库中的固件。点击 *Connect*,选择 XIAO 的串行端口,然后点击 *Flash* —— 合并后的二进制文件将被写入偏移地址 `0x0000`,无需手动调整地址。总时间:不到一分钟。 设备运行后,请安装下方的 Android APK 或 Linux 桌面应用,以通过 BLE 控制它。 ## 下载 预构建的二进制文件已在每个带标签版本的 [**Releases**](https://github.com/maxbrito500/esp32-c5-deauth/releases) 页面上发布。无需工具链: | 文件 | 用途 | |------|-----------| | `esp32c5-deauther-firmware.zip` | ESP32-C5 固件包。推荐使用[上方的浏览器刷入工具](#quick-flash-browser-no-install);此 zip 包仅供离线 / `esptool` 用户使用。 | | `deauther-android.apk` | Android 手机 —— 适用于所有 CPU 架构(arm64、armv7、x86_64)的单个 APK。 | | `deauther-linux-x64.tar.gz` | Linux 桌面。解压并运行 `./deauther`。 | | `SHA256SUMS` | 用于验证下载的校验和 | Garmin 手表应用目前不在发布包中 —— 因为 Connect IQ 应用需使用每个开发者的密钥进行签名,所以必须在本地构建(参见 `garmin/run-fenix7pro.sh`)。 ## 硬件 - **Seeed Studio XIAO ESP32-C5** —— 参见 `specs.md`。其他 ESP32-C5 开发板应该也能使用;只需在 `esp32-c5/main/led.c` 中调整板载 LED 的 GPIO 即可。 - USB-C 数据线(需要支持数据传输,不能是仅充电线),用于刷入。 - (可选)Garmin Fenix 7 系列手表。 ## 从源码构建 (Ubuntu 22.04 / 24.04) 在干净的 Ubuntu 安装环境中进行了测试。每个组件都可以独立构建 —— 只需安装您需要的工具链。 ### ESP32-C5 固件 ``` # ESP-IDF 所需的系统软件包。 sudo apt-get update sudo apt-get install -y \ git wget flex bison gperf python3 python3-venv python3-pip \ cmake ninja-build ccache dfu-util libusb-1.0-0 \ libffi-dev libssl-dev # Clone ESP-IDF v5.5.1(与已 patch 的 libnet80211.a 相匹配)。 mkdir -p ~/esp && cd ~/esp git clone -b v5.5.1 --recursive https://github.com/espressif/esp-idf.git cd esp-idf ./install.sh esp32c5 # downloads RISC-V toolchain + tools # 在当前 shell 中激活 toolchain。 . ~/esp/esp-idf/export.sh # add this to ~/.bashrc to make it permanent # Apply wifi patch 并 build。 cd /path/to/this/repo/esp32-c5 cp patched_libnet/libnet80211.a "$IDF_PATH/components/esp_wifi/lib/esp32c5/" idf.py set-target esp32c5 idf.py build # 通过 USB-C JTAG 烧录(无需按 BOOT/RESET 按钮)。 ./flash.sh ``` 打过补丁的 `libnet80211.a` 使 `esp_wifi_80211_tx()` 能够接受具有伪造源地址的管理帧 —— 这是 C5 的 5 GHz 射频进行取消认证所必需的。原始库在首次打补丁后会被保留为 `libnet80211.a.orig`。 ### Flutter — Android APK ``` # 1. JDK 17。 sudo apt-get install -y openjdk-17-jdk # 2. Flutter SDK (stable channel)。 git clone -b stable --depth 1 https://github.com/flutter/flutter.git ~/flutter echo 'export PATH="$HOME/flutter/bin:$PATH"' >> ~/.bashrc export PATH="$HOME/flutter/bin:$PATH" # 3. Android command-line tools — 将 Flutter 指向你的 Android SDK # (Android Studio 会安装此项;否则请从 https://developer.android.com/studio 获取 "command-line tools # only" 并解压至 # ~/Android/Sdk/cmdline-tools/latest/,然后接受 licenses)。 flutter doctor --android-licenses flutter doctor # should be all green for Android # 4. Build 一个可在所有 CPU 架构上运行的 universal APK。 cd /path/to/this/repo/flutter flutter pub get flutter build apk --release ls build/app/outputs/flutter-apk/app-release.apk ``` 通过 `adb install`(需启用 USB 调试)安装到手机,或将 `.apk` 复制到手机后点击进行安装。 ### Flutter — Linux 桌面 ``` # 1. GTK 和 build 工具。 sudo apt-get install -y \ clang cmake ninja-build pkg-config libgtk-3-dev liblzma-dev \ libsecret-1-dev libjsoncpp-dev # 2. Flutter SDK(同上)。 flutter config --enable-linux-desktop # 3. Build 并运行。 cd /path/to/this/repo/flutter flutter pub get flutter run -d linux # or: flutter build linux --release ``` ### Garmin 手表应用 Garmin SDK 需要(免费的)开发者帐户 —— 构建脚本请参见 [`garmin/`](garmin/)(`run-fenix7pro.sh`、`sideload.sh`)。 ## 设备端 LED 指示灯 XIAO ESP32-C5 上的黄色用户 LED(GPIO 27,低电平有效)通过闪烁节奏发出信号 —— 单色硬件无法进行颜色编码: | 状态 | 模式 | |-------|---------| | 空闲(无 BLE 客户端) | 每 5 秒短闪一次 | | BLE 客户端已连接 | 每 5 秒短闪两次 | | 攻击运行中 | 连续快速频闪(约 6 Hz) | 开发板上独立的红色 **C** LED 仅在设备使用电池运行时亮起 —— 这是一个硬件指示灯,不受固件控制。 ## 仓库布局 ``` . ├── esp32-c5/ # ESP-IDF firmware (NimBLE + dual-band scanner + deauth engine) ├── flutter/ # Cross-platform controller app (BLE + HTTP API) ├── garmin/ # Connect IQ watch app (Monkey C) ├── inspirations/ # Reference implementations from related projects ├── specs.md # XIAO ESP32-C5 hardware reference ├── LICENSE # Apache 2.0 └── NOTICE # Third-party attributions ``` ## 致谢 本项目最初是对 [**AnvilBrain/esp32-c5-dualband-deauther**](https://github.com/AnvilBrain/esp32-c5-dualband-deauther) 的重构,该项目证明了 ESP32-C5 的 5 GHz 射频可以被强制发送伪造 SA(源地址)的管理帧。感谢 AnvilBrain 发布了这项工作以及使 5 GHz 取消认证在此芯片上成为可能的 libnet80211.a 补丁。原始项目基于 MIT 许可证。 本仓库基于 **Apache 2.0** 许可证授权(参见 [`LICENSE`](LICENSE) 和 [`NOTICE`](NOTICE))。
标签:2.4GHz, 5GHz, 802.11协议, Android应用, Connect IQ, CTF工具, DNS枚举, ESP32-C5, ESP-IDF, Flutter, Garmin手表, Nordic UART Service, Wi-Fi安全, 去认证攻击, 双频Wi-Fi, 客户端加密, 嵌入式开发, 拒绝服务攻击, 教育研究, 无线射频, 智能硬件, 漏洞搜索, 物联网安全, 网络安全工具, 网络攻防, 蓝牙BLE, 跨平台开发