lukeswitz/AntiHunter

GitHub: lukeswitz/AntiHunter

基于 ESP32-S3 的开源无线传感器节点固件,通过分布式 LoRa Mesh 网络实现 WiFi/BLE 频谱感知、周界防御和无人机检测等安全监控能力。

Stars: 378 | Forks: 61

[![代码质量](https://static.pigsec.cn/wp-content/uploads/repos/2026/04/9fdaee7a1f061835.svg)](https://github.com/lukeswitz/AntiHunter/actions/workflows/lint.yml) [![PlatformIO CI](https://static.pigsec.cn/wp-content/uploads/repos/2026/04/fe69d1ed59061836.svg)](https://github.com/lukeswitz/AntiHunter/actions/workflows/platformio.yml) [![CodeQL](https://static.pigsec.cn/wp-content/uploads/repos/2026/04/82b0a216ef061837.svg)](https://github.com/lukeswitz/AntiHunter/actions/workflows/github-code-scanning/codeql) [![预发布版](https://img.shields.io/github/v/release/lukeswitz/AntiHunter?include_prereleases&label=pre-release&color=orange)](https://github.com/lukeswitz/AntiHunter/releases) [![GitHub 代码大小(字节)](https://img.shields.io/github/languages/code-size/lukeswitz/AntiHunter)](https://github.com/lukeswitz/AntiHunter/tree/main/Antihunter/src)

AntiHunter Command Center Logo

快速入门 | DIY 组装 | 功能特性

DIGI 检测节点 2.4GHz WiFi/BLE 固件

### 新闻: `2026年1月` - 收录于 [2025年20佳 XIAO 项目](https://www.seeedstudio.com/blog/2026/01/29/best-xiao-projects/) ## 目录 1. [概述](#overview) 2. [功能特性](#features) 3. [检测模式](#detection-modes) 4. [传感器集成](#sensor-integration) 5. [安全数据销毁](#secure-data-destruction) 6. [RF 配置](#rf-configuration) 7. [系统架构](#system-architecture) 8. [硬件](#hardware) 9. [入门指南](#getting-started) 10. [Mesh 命令](#mesh-commands) 11. [API 参考](#api-reference) 12. [致谢](#credits) 13. [免责声明](#legal-disclaimer) ## 概述 - 用于周边防御和频谱感知的开源无线传感器节点。 - 采用 ESP32-S3,支持 WiFi/BLE 扫描、GPS、SD 卡日志记录和 LoRa mesh 联网。 - 可部署单个节点或分布式网络——每个节点独立扫描,并通过 Meshtastic 进行协同。 I sell on Tindie ## 功能特性 image | 功能 | 作用 | 扫描模式 | |---------|-------------|------------| | **目标扫描** | MAC/OUI/SSID 监控列表,带即时 mesh 告警 | WiFi、BLE 或两者 | | **设备扫描器** | 捕获附近所有 WiFi 和 BLE 设备的 RSSI、信道、名称 | WiFi、BLE 或两者 | | **探测请求扫描器** | 被动嗅探——揭示设备正在搜索的 SSID | WiFi、BLE 或两者 | | **幽灵 SSID 检测** | 标记被探测但没有附近 AP 响应的 SSID | 探测 / 设备扫描 | | **基线异常检测** | 先学习后告警:发现新增、丢失和发生变化的设备 | WiFi + BLE | | **MAC 随机化关联** | 通过行为签名将随机化的 MAC 与固定身份关联起来 | WiFi + BLE | | **Deauth 攻击检测** | 实时检测解除认证/取消关联帧,并跟踪来源 | WiFi 混杂模式 | | **无人机 RID 检测** | 识别广播远程 ID(ODID/ASTM F3411,法国 ID)的无人机 | WiFi beacon/NAN | | **三角定位** | 通过 mesh 基于多节点 RSSI 的位置估算(实验性) | WiFi、BLE | | **Mesh 网络** | 通过 Meshtastic 的 LoRa mesh——告警、远程命令、协同 | UART 串口 | | **安全数据销毁** | 触发式或远程擦除,擦除后带混淆处理 | 震动 / mesh | | **隐私模式** | 一键 MAC/GPS/SSID 脱敏,用于截图 | Web UI 按钮 | | **省电模式** | 80MHz CPU,轻度休眠,降低 GPS 频率,仅保留 mesh 心跳 | Mesh 命令 | | **白名单** | 全局设备白名单——在所有扫描模式中被忽略 | Web UI / API | | **数据浏览器** | 查看发现结果、设备日志和扫描数据 | Web UI / API | image ### 使用场景 - 周边安全和入侵检测 - 渗透测试和无线安全审计 - 反无人机行动和空域监控 - 监视检测和 OPSEC 审计 - 跨 MAC 随机化的设备指纹识别 - 探测分析和非法设备检测 - 活动安保与监控 ## 检测模式 ### 1. 目标扫描 image 维护一个 MAC 地址(完整或 OUI 前缀)、SSID 或身份 ID(`T-XXXX`)的监控列表。扫描 WiFi 信道和 BLE 频率,一旦检测到即通过 Web UI、mesh 和指挥中心发出告警。 - 仅 WiFi、仅 BLE 或组合扫描 - 全局白名单过滤已知设备 - 将 RSSI、信道、GPS 和设备名称记录到 SD 卡 - 通过 mesh 网络发送实时告警 ### 2. 三角定位(实验性) 多个节点同时扫描同一目标。每个节点记录 RSSI 和 GPS 坐标。数据通过 mesh 汇总,并通过卡尔曼滤波进行加权三边测量。 - 输出:GPS 坐标、置信度、估算误差(米)、平均 HDOP - 通过 mesh 发送 Google Maps 链接 - 每个目标的距离调整系数(0.1x - 5.0x)
RF 环境校准 路径损耗模型:`distance = 10^((RSSI0 - RSSI) / (10 * n))` | 环境 | WiFi n | BLE n | WiFi RSSI0 | BLE RSSI0 | 使用场景 | |-------------|--------|-------|------------|-----------|----------| | 开阔天空 | 2.0 | 2.0 | -23 dBm | -60 dBm | 清晰的视距,障碍物极少 | | 郊区 | 2.7 | 2.5 | -24 dBm | -62 dBm | 稀疏植被,分散建筑 | | 室内 | 3.2 | 2.9 | -25 dBm | -65 dBm | 标准室内,少量墙壁 | | 密集室内 | 4.0 | 3.5 | -27 dBm | -69 dBm | 办公区域,大量隔断 | | 工业区 | 4.8 | 4.0 | -30 dBm | -73 dBm | 重度障碍物,机械设​​备 |
## 3. 检测嗅探器 ### A. 设备扫描器 捕获范围内所有 WiFi 和 BLE 设备。记录 MAC、SSID、信号强度、名称和信道。 - 勾选 **捕获探测** 以在设备扫描中附带收集探测请求。启用后,探测请求将与正常扫描一起被捕获,并送入探测数据库(MAC、供应商、RSSI、SSID、随机化状态): ### B. 基线异常检测 image 两阶段扫描:首先建立已知设备的基线,然后监控异常情况——新设备出现、设备消失、重现以及显著的 RSSI 变化。持久化存储在重启后依然保留。 - RAM 缓存:200-500 台设备,SD 溢出:1K-100K 台设备(无 SD 卡时默认为 1500) - RAM 与 SD 之间的自动分层 ### C. Deauth 攻击检测 WiFi 解除认证/取消关联帧嗅探器,具备实时检测功能。集成随机化跟踪以进行来源识别。 ### D. 无人机 RID 检测 检测符合 FAA/EASA 标准广播远程 ID 的无人机。支持 ODID/ASTM F3411(NAN 动作帧,beacon 帧)和法国无人机 ID(OUI 0x6a5c35)。提取 UAV ID、飞手位置和飞行遥测数据。支持 Mesh 告警和 SD 日志记录。 ### E. MAC 随机化关联(实验性) 使用行为签名将随机化的 MAC 地址与固定的设备身份关联:IE 指纹识别、信道序列、时序、RSSI 模式和序列号关联。分配带有 SD 持久化的身份 ID(`T-XXXX`)。 - 最多 30 个同时存在的身份,每个身份可关联 50 个 MAC - 双重签名支持(完整和最小 IE 模式) - 基于置信度的关联及自适应阈值 - 检测全局 MAC 泄漏和 WiFi-BLE 关联 ### F. 探测请求扫描器 image 超越了单纯的探测请求捕获:关联所有三个 802.11 地址字段以检测幽灵 SSID(仅存在于设备历史记录中的网络),识别哪些 AP 进行了响应,并通过目标地址匹配捕获静默设备。 - **三字段关联**:探测请求(addr2=源)、探测响应(addr1=客户端,addr2=AP,addr3=BSSID)以及目标地址匹配,全部汇入单一的每设备记录中 - **目标地址(addr1)匹配**:检测发往目标 MAC 的探测请求——捕获从不发送自身身份的静默或休眠设备 - **幽灵 SSID 检测**:将探测请求与探测响应进行交叉比对,标记没有附近 AP 响应的 SSID。幽灵 SSID 显示时带有 `~` 前缀(例如,`~"HomeNetwork"` 与 `"CoffeeShop"`),并揭示设备在其他地方连接过的网络——位置历史、家庭/工作网络、出行轨迹 - SSID 监控列表:将 SSID 与 MAC 和 OUI 一起添加到目标列表中 - OUI 供应商识别(68 个供应商表) - MAC 随机化检测(本地管理位检查) - 监控列表命中的 Mesh 告警(60 秒去重冷却) - RSSI 最小/最大/当前值跟踪,每台设备最多 4 个被探测的 SSID ## 传感器集成 | 传感器 | 接口 | 描述 | |--------|-----------|-------------| | **GPS** | UART2 (RX=GPIO44, TX=GPIO43) 9600 波特率 | TinyGPS++ NMEA 解析。位置、高度、卫星数据。API 位于 `/gps`。 | | **SD 卡** | SPI | 记录至 `/antihunter.log`,包含时间戳、MAC、RSSI、GPS。Web 界面显示存储统计信息。 | | **震动/防拆** | SW-420 (中断) | 中断驱动,带 3 秒速率限制。附带 GPS 和时间戳的 Mesh 告警。 | | **RTC** | DS3231 via I2C | Flash 写入时 NTP 同步,回退到系统时间和 GPS。漂移修正。所有时间戳均为 UTC。 | ## 安全数据销毁 防拆检测和紧急数据擦除。 - **篡改自动擦除**:震动触发的销毁(默认禁用) - **部署延迟**:启用后用于部署的宽限期 - **手动安全擦除**:通过 Web 界面 - **远程强制擦除**:带有令牌认证(5 分钟有效期,设备特定)的 Mesh 命令 - **混淆处理**:擦除后植入虚假的物联网气象站配置
自动擦除配置 | 参数 | 范围 | 描述 | |-----------|-------|-------------| | 部署延迟 | 30s - 10min | 自动擦除激活前的宽限期 | | 触发震动次数 | 2-5 | 触发所需的移动次数 | | 检测窗口 | 10-60s | 震动检测的时间范围 | | 擦除延迟 | 10-300s | 销毁前的倒计时 | | 冷却期 | 5-60min | 防拆尝试之间的最短时间 | **使用方法:** 1. 通过 Web 界面启用带部署延迟的自动擦除 2. 根据您的环境配置阈值 3. 部署设置期间离开 4. 监控 mesh 告警以获取防拆事件 5. 远程擦除:使用 `@NODE ERASE_REQUEST` 生成令牌,然后执行 `@NODE ERASE_FORCE:`
## RF 配置 ### 扫描预设 | 预设 | WiFi 信道时间 | WiFi 扫描间隔 | BLE 扫描间隔 | BLE 扫描时长 | RSSI 阈值 | 使用场景 | |--------|----------------|---------------|--------------|--------------|----------------|----------| | 均衡 | 300ms | 8000ms | 4000ms | 3000ms | -80 dBm | 低功耗,隐蔽 | | 标准 | 160ms | 6000ms | 3000ms | 3000ms | -90 dBm | 通用(默认) | | 激进 | 110ms | 4000ms | 2000ms | 2000ms | -70 dBm | 快速检测,高覆盖率 | | 自定义 | 用户定义 | 用户定义 | 用户定义 | 用户定义 | 用户定义 | 精细调整 | 通过 Web 界面 `http://192.168.4.1` 或 API 进行配置。所有设置持久化至 NVS 和 SD 卡。
参数调优 - **WiFi 信道时间**:每个信道的持续时间(50-300ms)。越短 = 覆盖越快。 - **WiFi 扫描间隔**:扫描周期之间的时间(1000-10000ms)。 - **BLE 扫描间隔**:BLE 周期之间的时间(1000-10000ms)。 - **BLE 扫描时长**:每个周期的活动扫描时间(1000-5000ms)。越长越能改善发现率,但会降低 WiFi 扫描频率。 - **RSSI 阈值**:全局信号过滤器(-100 至 -10 dBm)。三角定位不受此限制。 - **WiFi 信道**:逗号分隔(1,6,11)或范围(1..14)。默认:1,6,11。
## 系统架构 System Architecture 节点独立运行,并通过 Meshtastic mesh 网络进行协同。 **工作流:** 检测 -> 数据收集(RSSI、GPS、时间戳)-> Mesh 广播 -> 指挥中心聚合 **[AntiHunter 指挥中心](https://github.com/TheRealSirHaXalot/AntiHunter-Command-Control-PRO):** 汇总所有节点的数据,提供实时映射和可视化。 ## 硬件 ### 组装 PCB image - 插图版[组装手册](https://github.com/lukeswitz/AntiHunter/blob/main/hw/Prototype_STL_Files/Antihunter-DIGINODE-AssemblyManual.pdf) ### 核心组件 - **Seeed XIAO ESP32-S3**(至少 8MB 闪存) - **Meshtastic 板**:Heltec v3.2(推荐)或 T114。备选方案见[讨论](https://github.com/lukeswitz/AntiHunter/discussions)。 - **GPS、SDHC、震动和 RTC 模块**
物料清单 核心组件 - 1x Seeed Studio XIAO ESP32-S3 - 1x Heltec WiFi LoRa 32 V3.2(兼容 T114,首选 V3.2) - 1x ATGM336H GPS 模块 - 1x Micro SD SDHC TF 卡读取器模块 - 1x SD 卡(FAT32,推荐 16GB) - 1x SW-420 震动传感器 - 1x DS3231 实时时钟模块 - 1x KSD9700 常开型热敏线传感器(30-40C) 连接器与紧固件 - 6x JST 2.54 2 针端子(也适用于 2.0mm JST) - 10x M3 嵌件螺母 - 2x M3x15mm 黄铜六角铜柱 - 1x 1/4" 三脚架螺母 - 1x JST 电源公头线(用于开关到主板的连接) - 8x M3 平头螺丝(用于外壳) - 6x M3 螺丝(用于 PCB 和电源板) 天线与线缆 - 3x U.FL 转 SMA 馈线(SMA 座,10-20cm) - 1x 6dBi 天线 2.4GHz(WiFi/BLE) - 1x 6dBi 天线 LoRa(视地区而定:868MHz 欧盟 / 915MHz 美国 / 923MHz 亚洲) - 1x GNSS 螺旋天线(L1/L5) 电源与散热 - 1x 30mm 5V 风扇 - JST(也适用于 2.0mm JST) - 1x 3 针迷你开/关开关 - 1x Type-C 15W 3A 5V 快充 UPS 电源 (2S 18650 充电模块 DC-DC 升压转换器,88x41x22mm) 外壳 - 1x 防水外壳(可 3D 打印) - STL 文件:[hw 文件夹](https://github.com/lukeswitz/AntiHunter/tree/main/hw/Prototype_STL_Files) - 组装手册:[PDF](https://github.com/lukeswitz/AntiHunter/blob/main/hw/Prototype_STL_Files/Antihunter-DIGINODE-AssemblyManual.pdf)
引脚定义参考 XIAO ESP32S3 [引脚图](https://camo.githubusercontent.com/29816f5888cbba2564bd0e0add96cd723a730cb65c81e48aa891f0f9c20471cd/68747470733a2f2f66696c65732e736565656473747564696f2e636f6d2f77696b692f536565656453747564696f2d5849414f2d455350333253332f696d672f322e6a7067) | 功能 | GPIO | 描述 | |----------|------|-------------| | 震动传感器 | 2 | SW-420 防拆检测(中断) | | RTC SDA | 6 | DS3231 I2C 数据 | | RTC SCL | 3 | DS3231 I2C 时钟 | | GPS RX | 44 | NMEA 数据接收 | | GPS TX | 43 | GPS 发送(未使用) | | SD CS | 1 | SD 卡片选 | | SD SCK | 7 | SPI 时钟 | | SD MISO | 8 | SPI MISO | | SD MOSI | 9 | SPI MOSI | | Mesh RX | 4 | Meshtastic UART 接收 | | Mesh TX | 5 | Meshtastic UART 发送 |
## 入门指南 ### Web 烧录与配置工具(推荐) 直接从浏览器进行烧录和配置——无需安装任何工具。需要桌面版 Chrome 或 Edge 浏览器。 **[打开 Web 烧录器](https://lukeswitz.github.io/AntiHunter/)** -- 选择 Full 或 Headless,插入您的 ESP32-S3,然后点击 Connect & Flash。烧录完成后,使用内置串口终端配置设备:它会重置开发板,检测配置窗口,并自动发送您的设置。 ### CLI 烧录 ``` curl -fsSL -o flashAntihunter.sh https://raw.githubusercontent.com/lukeswitz/AntiHunter/main/Dist/flashAntihunter.sh chmod +x flashAntihunter.sh ./flashAntihunter.sh ``` 烧录时使用 `-c` 配置设备参数,使用 `-e` 先擦除闪存。 **烧录后操作:** - **完整固件**:连接至 `Antihunter` WiFi AP(密码:`antihunt3r123`),打开 `http://192.168.4.1`。在 RF 设置中配置射频设置、检测模式并更改 AP 凭据。 - **无头固件**:仅支持串口监视器或 mesh 命令。 ### 从源码构建 **前置条件:** PlatformIO,Git,USB 数据线。可选:带有 PlatformIO 扩展的 VS Code。 ``` git clone https://github.com/lukeswitz/AntiHunter.git cd AntiHunter ``` ``` pio device list # List connected devices pio run -e AntiHunter-full -t upload # Flash full firmware (web UI) pio run -e AntiHunter-headless -t upload # Flash headless firmware pio device monitor -e AntiHunter-full # Serial monitor pio run -e AntiHunter-full -t erase -t upload # Clean flash (erase + upload) ``` **构建环境:** - `AntiHunter-full` -- Web 服务器(ESPAsyncWebServer,AsyncTCP)带 AP 管理面板 - `AntiHunter-headless` -- 最小依赖,无 Web UI,仅限 mesh/串口 ## Mesh 网络集成 通过 UART 的 Meshtastic LoRa mesh 用于远程分布式感知。 - **连接**:TEXTMSG 模式,115200 波特率。引脚:`10 RX / 9 TX`(T114),`19 RX / 20 TX`(Heltec V3) - **协议**:标准 Meshtastic 串口,公共和加密频道 - **速率限制**:3 秒间隔(可配置) - **寻址**:`@ALL COMMAND` 用于广播,`@AH01 COMMAND` 用于特定节点。节点 ID:2-5 个字母数字字符。 ## Mesh 命令 所有时间戳均为 UTC。节点 ID:2-5 个字母数字字符(A-Z,0-9),无空格。 ### 核心 | 命令 | 描述 | 示例 | |---------|-------------|---------| | `STATUS` | 系统状态(模式、扫描状态、命中数、温度、运行时间、GPS) | `@ALL STATUS` | | `STOP` | 停止所有操作 | `@ALL STOP` | ### 配置 | 命令 | 参数 | 示例 | |---------|------------|---------| | `CONFIG_TARGETS` | 管道符分隔的 MAC、OUI 前缀或 SSID | `@ALL CONFIG_TARGETS:AA:BB:CC:DD:EE:FF\|11:22:33\|MyNetwork` | | `CONFIG_NODEID` | 2-5 个字母数字字符 ID | `@AH01 CONFIG_NODEID:AH02` | | `CONFIG_RSSI` | 阈值(-128 至 -10) | `@ALL CONFIG_RSSI:-80` | | `CONFIG_CHANNELS` | 逗号分隔的信道 | `@ALL CONFIG_CHANNELS:1,6,11` | ### 扫描 | 命令 | 参数 | 示例 | |---------|------------|---------| | `SCAN_START` | `模式:秒数:信道[:FOREVER]`(0=WiFi,1=BLE,2=两者) | `@ALL SCAN_START:2:300:1,6,11` | | `DEVICE_SCAN_START` | `模式:秒数[:FOREVER[:+PROBE]]` | `@ALL DEVICE_SCAN_START:2:300:+PROBE` | | `BASELINE_START` | `持续时间[:FOREVER]`(最少 60 秒) | `@ALL BASELINE_START:300` | | `BASELINE_STATUS` | 无 | `@ALL BASELINE_STATUS` | | `DRONE_START` | `秒数[:FOREVER]` | `@ALL DRONE_START:300` | | `DEAUTH_START` | `秒数[:FOREVER]` | `@ALL DEAUTH_START:300` | | `RANDOMIZATION_START` | `模式:秒数[:FOREVER]` | `@ALL RANDOMIZATION_START:2:300` | | `PROBE_START` | `模式:秒数[:FOREVER][:+ALL]`(0=WiFi,1=BLE,2=两者)。`+ALL` 将每个探测通过 mesh 广播,不仅是目标匹配项。 | `@ALL PROBE_START:2:300:+ALL` | | `PROBE_STOP` | 无 | `@ALL PROBE_STOP` | `DEVICE_SCAN_START` 上的 `+PROBE` 标志可在设备扫描期间启用探测请求捕获,在正常的设备发现之外填充探测数据库。
三角定位命令 | 命令 | 参数 | 示例 | |---------|------------|---------| | `TRIANGULATE_START` | `目标:持续时间[:rfEnv[:wifiPwr:blePwr]]` rfEnv:0=开阔天空,1=郊区,2=室内,3=密集室内,4=工业区。wifiPwr/blePwr:0.1-5.0 | `@AH01 TRIANGULATE_START:AA:BB:CC:DD:EE:FF:60:2:1.5:0.8` | | `TRIANGULATE_STOP` | 无 | `@ALL TRIANGULATE_STOP` | | `TRIANGULATE_RESULTS` | 无 | `@AH01 TRIANGULATE_RESULTS` |
安全命令 | 命令 | 参数 | 示例 | |---------|------------|---------| | `ERASE_REQUEST` | 无 | `@AH01 ERASE_REQUEST` | | `ERASE_FORCE` | 认证令牌 | `@AH02 ERASE_FORCE:AH_12345678_87654321_00001234` | | `ERASE_CANCEL` | 无 | `@AH01 ERASE_CANCEL` | | `AUTOERASE_ENABLE` | `部署延迟:擦除延迟:震动次数:检测窗口:冷却期`(以秒为单位,震动次数除外) | `@AH01 AUTOERASE_ENABLE:60:30:3:30:300` | | `AUTOERASE_DISABLE` | 无 | `@AH01 AUTOERASE_DISABLE` | | `AUTOERASE_STATUS` | 无 | `@AH01 AUTOERASE_STATUS` | | `VIBRATION_STATUS` | 无 | `@AH01 VIBRATION_STATUS` | | `VIBRATION_ON` | 无 | `@AH01 VIBRATION_ON` | | `VIBRATION_OFF` | 无 | `@AH01 VIBRATION_OFF` |
省电模式命令 | 命令 | 参数 |示例 | |---------|------------|---------| | `BATTERY_SAVER_START` | `间隔分钟`(1-30,默认 5) | `@AH01 BATTERY_SAVER_START:10` | | `BATTERY_SAVER_STOP` | 无 | `@AH01 BATTERY_SAVER_STOP` | | `BATTERY_SAVER_STATUS` | 无 | `@AH01 BATTERY_SAVER_STATUS` | 停止 WiFi/BLE 扫描,将 CPU 降至 80MHz,启用轻度休眠,每分钟轮询一次 GPS。Mesh UART 保持活动。心跳格式: ``` NODE_ID: HEARTBEAT: Temp:XXC GPS:lat,lon Battery:SAVER ```
心跳命令 通过 mesh 周期性广播状态。**默认禁用。** | 命令 | 参数 | 示例 | |---------|------------|---------| | `HB_ON` | 无 | `@AH01 HB_ON` | | `HB_OFF` | 无 | `@AH01 HB_OFF` | | `HB_INTERVAL` | `分钟`(1-60) | `@AH01 HB_INTERVAL:10` | 格式:`NODE_ID: Time:YYYY-MM-DD_HH:MM:SS Temp:XX.XC [GPS:lat,lon]`
告警消息格式 | 告警类型 | 格式 | |------------|--------| | 目标检测 | `NODE_ID: Target: TYPE MAC RSSI:dBm [Name:name] [GPS=lat,lon]` | | 基线异常 | `NODE_ID: ANOMALY-NEW/RETURN/RSSI: TYPE MAC RSSI:dBm [details]` | | Deauth 攻击 | `NODE_ID: ATTACK: DEAUTH SRC:MAC DST:MAC RSSI:dBm CH:N` | | 三角定位数据 | `NODE_ID: T_D: MAC RSSI:dBm Type:WiFi/BLE GPS=lat,lon HDOP=X.XX` | | 三角定位完成 | `NODE_ID: T_F: MAC=addr GPS=lat,lon CONF=85.5 UNC=12.3` | | 三角定位结束 | `NODE_ID: T_C: MAC=addr Nodes=N [Google Maps link]` | | 探测监控命中 | `NODE_ID: PROBE_HIT: MAC RSSI:dBm SSID:"network" [GHOST] [GPS=lat,lon]` | | 篡改检测 | `NODE_ID: TAMPER_DETECTED: Auto-erase in Xs [GPS:lat,lon]` | | 状态响应 | `NODE_ID: STATUS: Mode:TYPE Scan:STATE Hits:N Temp:XXC Up:HH:MM:SS GPS=lat,lon` |
## API 参考 ### 核心 | 端点 | 方法 | 描述 | |----------|--------|-------------| | `/` | GET | Web 界面 | | `/diag` | GET | 系统诊断 | | `/stop` | GET | 停止所有操作 | | `/config` | GET/POST | 系统配置(JSON) | | `/clear-results` | POST | 清除所有扫描结果 | ### 扫描 | 端点 | 方法 | 描述 | |----------|--------|-------------| | `/scan` | POST | 启动目标扫描(`mode`、`secs`、`forever`、`ch`、`triangulate`、`targetMac`) | | `/sniffer` | POST | 启动检测扫描(`detection`、`secs`、`forever`、`randomizationMode`、`probeScanMode`、`captureProbes`) | | `/drone` | POST | 启动无人机 RID 检测(`secs`、`forever`) | ### 结果 | 端点 | 方法 | 描述 | |----------|--------|-------------| | `/results` | GET | 最新扫描/三角定位结果 | | `/sniffer-cache` | GET | 缓存的设备检测数据 | | `/probe-results` | GET | 探测请求结果 | | `/deauth-results` | GET | Deauth 攻击日志 | | `/randomization-results` | GET | 随机化关联结果 | | `/baseline-results` | GET | 基线异常结果 | | `/drone-results` | GET | 无人机检测结果 | | `/drone-log` | GET | 无人机事件日志(JSON) | ### 探测数据库 | 端点 | 方法 | 描述 | |----------|--------|-------------| | `/api/probedb` | GET | 探测数据库(JSON:MAC、供应商、SSID、RSSI、随机化状态) | | `/api/probedb/clear` | POST | 清空探测数据库 | | `/api/probes.jsonl` | GET | 从 SD 卡流式传输探测日志(JSONL) | ### 数据浏览器 Web UI 中的**数据**选项卡提供了所有 SD 卡记录的扫描数据的可搜索、可排序视图。从下拉菜单中选择数据集,跨任何列进行搜索,点击列标题进行排序,并翻页浏览结果。 | 端点 | 方法 | 描述 | |----------|--------|-------------| | `/api/deauth.jsonl` | GET | Deauth/取消关联攻击日志(JSONL) | | `/api/deauth/clear` | POST | 清除 deauth 日志(RAM + SD) | | `/api/drones.jsonl` | GET | 无人机 RID 检测日志(JSONL) | | `/api/drones/clear` | POST | 清除无人机日志(RAM + SD) | | `/api/vibrations.jsonl` | GET | 震动/防拆事件日志(JSONL) | | `/api/vibrations/clear` | POST | 清除震动日志(SD) | | `/api/antihunter.log` | GET | 系统事件日志(文本) | | `/api/antihunter.log/clear` | POST | 清除系统日志 | 可用数据集:探测设备、探测事件、Deauth 攻击、无人机检测、震动事件、基线统计和系统日志。所有数据集均支持导出(下载原始文件)和清除(带确认)。无头固件在没有 Web UI 的情况下也会将相同的数据记录到 SD 卡。
配置端点 | 端点 | 方法 | 描述 | |----------|--------|-------------| | `/node-id` | GET/POST | 获取/设置节点 ID(1-16 个字符) | | `/mesh-interval` | GET/POST | 获取/设置 mesh 发送间隔(1500-30000ms) | | `/save` | POST | 保存目标配置 | | `/export` | GET | 导出目标 MAC 列表 | | `/allowlist-export` | GET | 导出白名单 | | `/allowlist-save` | POST | 保存白名单 | | `/api/time` | POST | 从 Unix 时间戳设置 RTC 时间 |
RF 配置端点 | 端点 | 方法 | 参数 | 描述 | |----------|--------|------------|-------------| | `/rf-config` | GET | - | RF 配置(JSON) | | `/rf-config` | POST | `preset`(0-2) | 应用预设:0=均衡,1=标准,2=激进 | | `/rf-config` | POST | `wifiChannelTime`、`wifiScanInterval`、`bleScanInterval`、`bleScanDuration`、`wifiChannels`、`globalRssiThreshold` | 完整自定义配置 | | `/rf-config` | POST | `globalRssiThreshold`(-100 至 -10) | 仅 RSSI 阈值 | | `/wifi-config` | GET | - | WiFi AP 设置(JSON) | | `/wifi-config` | POST | `ssid`(1-32),`pass`(8-63 或留空) | 更新 AP 凭据(会触发重启) |
基线端点 | 端点 | 方法 | 描述 | |----------|--------|-------------| | `/baseline/status` | GET | 基线扫描状态(JSON) | | `/baseline/stats` | GET | 基线统计(JSON) | | `/baseline/config` | GET/POST | 基线配置(`rssiThreshold`、`baselineDuration`、`ramCacheSize`、`sdMaxDevices`、`absenceThreshold`、`reappearanceWindow`、`rssiChangeDelta`) | | `/baseline/reset` | POST | 重置基线 |
三角定位端点 | 端点 | 方法 | 描述 | |----------|--------|-------------| | `/triangulate/start` | POST | 启动(`mac`、`duration`、`rfEnv`,可选 `wifiPwr`/`blePwr` 0.1-5.0) | | `/triangulate/stop` | POST | 停止三角定位 | | `/triangulate/status` | GET | 状态(JSON) | | `/triangulate/results` | GET | 结果 | | `/triangulate/nodes` | GET | 已连接的三角定位节点 | | `/triangulate/calibrate` | POST | 校准路径损耗(`mac`、`distance`) |
随机化、安全和硬件端点 **随机化:** | 端点 | 方法 | 描述 | |----------|--------|-------------| | `/randomization/reset` | POST | 重置随机化检测 | | `/randomization/clear-old` | POST | 清除旧的身份(可选 `age`) | | `/randomization/identities` | GET | 跟踪的身份(JSON) | **安全:** | 端点 | 方法 | 描述 | |----------|--------|-------------| | `/erase/status` | GET | 擦除状态 | | `/erase/request` | POST | 请求安全擦除(`confirm`=WIPE_ALL_DATA,可选 `reason`) | | `/erase/cancel` | POST | 取消擦除序列 | | `/secure/status` | GET | 防拆检测状态 | | `/secure/abort` | POST | 中止防拆序列 | | `/config/autoerase` | GET/POST | 自动擦除配置 | | `/battery-saver` | GET | 省电模式(`action`=start/stop/status,`interval`) | **硬件:** | 端点 | 方法 | 描述 | |----------|--------|-------------| | `/gps` | GET | GPS 状态与位置 | | `/sd-status` | GET | SD 卡状态 | | `/drone/status` | GET | 无人机检测状态(JSON) | | `/mesh` | POST | 启用/禁用 mesh | | `/mesh-test` | GET | 测试 mesh 连通性 | | `/mesh-hb` | POST | 启用/禁用心跳(`enabled=true\|false`) | | `/mesh-hb-interval` | POST | 设置心跳间隔(`interval=1-60` 分钟) | | `/vibration` | POST | 切换震动传感器 |
## 致谢 原创概念和硬件设计由 @TheRealSirHaXalot 提供。欢迎[参与](https://github.com/lukeswitz/AntiHunter/discussions)——PR、Issue 和文档贡献。 ## 法律免责声明
完整免责声明 ``` AntiHunter (AH) is provided for lawful, authorized use only -- such as research, training, and security operations on systems and radio spectrum you own or have explicit written permission to assess. You are solely responsible for compliance with all applicable laws and policies, including privacy/data-protection (e.g., GDPR), radio/telecom regulations (LoRa ISM band limits, duty cycle), and export controls. Do not use AH to track, surveil, or target individuals, or to collect personal data without a valid legal basis and consent where required. Authors and contributors are not liable for misuse, damages, or legal consequences arising from use of this project. By using AH, you accept full responsibility for your actions and agree to indemnify the authors and contributors against any claims related to your use. These tools are designed for ethical blue team use, such as securing events, auditing networks, or training exercises. THE SOFTWARE IS PROVIDED "AS IS" AND "AS AVAILABLE," WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED. TO THE MAXIMUM EXTENT PERMITTED BY LAW, IN NO EVENT SHALL THE DEVELOPERS, MAINTAINERS, OR CONTRIBUTORS BE LIABLE FOR ANY CLAIM, DAMAGES, OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT, STRICT LIABILITY, OR OTHERWISE, ARISING FROM OR IN CONNECTION WITH THE SOFTWARE, INCLUDING ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, CONSEQUENTIAL, EXEMPLARY, OR PUNITIVE DAMAGES. BY ACCESSING, DOWNLOADING, INSTALLING, COMPILING, EXECUTING, OR OTHERWISE USING THE SOFTWARE, YOU ACCEPT THIS DISCLAIMER AND THESE LIMITATIONS OF LIABILITY. ```
标签:2.4GHz射频, C/C++, DIY硬件, ESP32, Mesh网络, PlatformIO, RF配置, SIGINT, UML, WiFi检测, XIAO, 事务性I/O, 传感器集成, 反侦察, 反追踪, 固件开发, 安全数据销毁, 密码管理, 射频监测, 嵌入式系统, 开源硬件, 插件系统, 无线信号处理, 物理安全, 物联网安全, 硬件黑客, 网络安全, 网络安全, 自毁机制, 蓝牙检测, 边界防御, 边缘计算, 隐私保护, 隐私保护