maxbrito500/esp32-c5-deauth
GitHub: maxbrito500/esp32-c5-deauth
基于 ESP32-C5 的双频 Wi-Fi 取消认证工具包,支持通过 BLE 从手机、桌面或智能手表端远程扫描并发送 802.11 去认证帧。
Stars: 64 | Forks: 7
# 5G Deauther — 双频 Wi-Fi 取消认证工具包
|
|
网络面板按频段和信号对扫描到的 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))。
|
|
网络面板按频段和信号对扫描到的 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, 跨平台开发