Eberth-sys/Deauth-Alert-WiFi-IoT-System
GitHub: Eberth-sys/Deauth-Alert-WiFi-IoT-System
基于 ESP32 与树莓派的分布式 IoT 系统,用于实时检测 Wi-Fi 802.11 取消认证攻击并提供多渠道告警与可视化面板。
Stars: 1 | Forks: 0
用于监控和检测 Wi-Fi 网络中取消认证攻击的 IoT 系统
使用 ESP32 节点、Raspberry Pi、实时警报和 Web 面板对 2.4 GHz Wi-Fi 频谱进行分布式监控。
▶️ 观看演示 · 🎓 论文答辩 (UBA) · 📄 论文 (PDF)
## 概述 | ⚠️ **负责任且经授权的使用** | | :--- | | 本系统将 Wi-Fi 接口配置为混杂模式以检测 802.11 取消认证攻击。请仅在自有网络或获得明确授权的情况下使用。捕获第三方流量可能违反相关法律法规。作者不对任何不当使用承担责任。 | ## 目录 - [概述](#descripción-general) - [架构](#arquitectura) - [技术栈](#tecnologías) - [仓库结构](#estructura-del-repositorio) - [快速开始](#puesta-en-marcha) - [学术证据与公开资源](#evidencia-académica-y-recursos-públicos) - [项目状态](#estado-del-proyecto) - [当前范围](#alcance-actual) - [未来改进](#próximas-mejoras) - [支持项目](#apoye-el-proyecto) - [关于作者](#sobre-el-autor) - [许可证](#licencia) ## 概述 这是一个分布式 IoT 系统,可实时检测 802.11 取消认证攻击。这是一种拒绝服务 攻击,旨在强制断开 Wi-Fi 客户端的连接,并为更复杂的攻击(如伪造接入点 *Evil Twin*)提供便利。 **目标:** - 实时监控 2.4 GHz Wi-Fi 管理流量。 - 通过即时警报(Web 面板、Telegram 和云端)进行早期检测。 - 使用易获取的硬件(ESP32 + Raspberry Pi)实现低成本和可扩展性。 **背景(最新技术现状):**诸如 *Aircrack-ng* 或 *Wireshark* 之类的工具在分析方面非常有效,但需要持续的人工监督,且无法自动做出响应;商业化的入侵检测解决方案(*WIDS/IPS*)虽然稳健,但价格昂贵且难以进行定制。本项目探索了一种基于 ESP32-WROOM-32U(运行于混杂模式)和 *Bluetooth Low Energy* (BLE) 的自主、低成本替代方案。 ## 架构 系统分为四层,涵盖了从捕获攻击到实时可视化的全过程。  **事件流(检测 → 警报):** 1. 处于混杂模式的 ESP32 节点捕获 802.11 取消认证*帧*。 2. 节点比对目标 BSSID,如果匹配,则通过 BLE 发出警报。 3. Raspberry Pi 接收警报,将其持久化到 PostgreSQL 中,并发布到 AWS IoT 和 Telegram。 4. FastAPI 后端通过 REST 暴露警报,并通过 WebSocket 进行广播。 5. React 面板实时显示警报。   ## 技术栈 | 层级 | 技术手册 | 技术 | 角色 | | --- | --- | --- | --- | | 感知层 | [Arduino](perception-layer/esp32-nodes-ino/README.md) · [ESP-IDF](perception-layer/espidf-nodes/README.md) | ESP32-WROOM-32U · C/C++ (Arduino `.ino` 和 ESP-IDF `.c`) | 在混杂模式下捕获取消认证*帧*;通过 BLE 发送 | | 处理层 | [处理层](processing-layer/README.md) | Python (`bleak`, `paho-mqtt`, `psycopg2`) · Docker/PostgreSQL | BLE 摄取、持久化、发布 MQTT/AWS IoT 和 Telegram | | 后端 | [后端](backend/README.md) | FastAPI · SQLAlchemy · PostgreSQL · JWT | REST API + WebSocket + 身份验证 | | 前端 | [前端](frontend/README.md) | React · Vite · TypeScript · TailwindCSS | 实时面板 | ### 硬件组件 | 组件 | 系统角色 | | --- | --- | | **ESP32-WROOM-32U** | 感知层的传感器节点。在混杂模式下捕获 802.11 Wi-Fi 帧 (2.4 GHz) 并通过 BLE 发出警报。包含用于外接天线的 U.FL 连接器。 | | **Raspberry Pi 5 (8 GB RAM)** | 中央处理单元。接收 BLE 警报,将其持久化到 PostgreSQL,并发布到 AWS IoT 和 Telegram。 | ### 主要版本 取自 `requirements.txt`、`package.json`、Dockerfiles 和 `docker-compose.yml`。 | 组件 | 版本 | | --- | --- | | Python | 3.11 | | FastAPI · Uvicorn | 0.139 · 0.51 | | SQLAlchemy · Pydantic | 2.0 · 2.13 | | PostgreSQL | 16 | | React · Vite · TypeScript | 19 · 6 · 5.7 | | Node (构建) · nginx | 22 · 1.31 | ## 仓库结构 ``` Deauth-Alert-WiFi-IoT-System/ ├── perception-layer/ # Firmware ESP32 (Arduino .ino + ESP-IDF .c), modo promiscuo ├── processing-layer/ # Raspberry Pi: ingesta BLE, PostgreSQL (Docker), MQTT/AWS, Telegram ├── backend/ # API FastAPI + PostgreSQL + JWT + WebSocket (Dockerfile incluido) ├── frontend/ # Panel React + Vite + TypeScript (Dockerfile + nginx.conf) ├── docs/img/ # Diagramas y banner (SVG) usados en la documentación ├── docker-compose.yml # Conjunto de servicios web: postgres + backend + frontend (docker compose up) ├── .env.example # Plantilla de variables de entorno (los .env reales NO se versionan) ├── .gitignore └── README.md ``` ## 快速开始 **要求:**Docker(用于整套 Web 服务)。对于物理实验环境,还需要:Raspberry Pi (Raspberry Pi OS) · 4× ESP32-WROOM-32U · Python 3.11+ · Node.js 20+。 ``` git clone https://github.com/Eberth-sys/Deauth-Alert-WiFi-IoT-System.git cd Deauth-Alert-WiFi-IoT-System ``` ### 选项 A. 使用 Docker 运行 Web 服务套件(推荐,无需硬件) 只需一条命令即可启动 **postgres + backend + frontend**(通过环境变量进行配置;密钥在**运行时**从 `.env` 中获取,从不硬编码在镜像中): ``` cp .env.example .env # completar: PG_*, JWT_SECRET_KEY (>=32), SERVICE_API_KEY, CORS_ORIGINS, VITE_* docker compose up --build ``` | 服务 | URL | | --- | --- | | 前端 (面板) | http://localhost:8080 | | 后端 (API + `/docs`) | http://localhost:8000 | | PostgreSQL | localhost:5432 | ### 无需硬件测试(ESP32 节点模拟器) 您还没有硬件,或者想在投资购买设备之前评估该项目?工具 [`tools/simulate_esp32.py`](tools/simulate_esp32.py) 允许您在不购买任何东西的情况下对 Deauth-Alert 进行端到端测试。它会生成与 ESP32 节点检测到攻击时产生的相同警报,并将它们插入到数据库中,且使用与处理层完全相同的列。这样,您就可以在搭建物理实验环境之前,看到面板、警报以及整个流程的运行情况。 在已启动 Web 服务套件(选项 A)的情况下,从仓库根目录运行: ``` # Linux / macOS: 连接变量(与 web-stack 的 .env 中的相同) export PG_HOST=localhost PG_PORT=5432 PG_DB=deauth_alerts \ PG_USER=
工程学院 (FIUBA), 布宜诺斯艾利斯大学 · IoT 专家资格项目
## 许可证
本仓库的代码和原创文档基于 Apache 2.0 许可证分发。有关使用条款,请参阅 [LICENSE](LICENSE);有关归属、商标和排除的材料,请参阅 [NOTICE](NOTICE)。
© 2025-2026 Esp. Ing. Eberth Gabriel Alarcón González.标签:AV绕过, ESP32, FastAPI, React, Syscalls, UML, Wi-Fi监控, 测试用例, 物联网, 网络安全, 自动化攻击, 请求拦截, 逆向工具, 隐私保护