Banner Top
ESP32 WiFi Probe — 基于混杂模式的无线设备感知系统

ESP32 WiFi Probe — 基于混杂模式的无线设备感知系统

ESP32 IoT WiFi 硬件 MQTT 安全

发布于: 2026-06-02

ESP32 WiFi Probe — 基于混杂模式的无线设备感知系统

在线体验https://monitor.npc-ai.fun/probes

GitHubdr4g00n/myAgent-Shopping/AgentESP32

硬件:ESP32-DevKitC + USB 供电


项目概述

AgentESP32 是一个基于 ESP32 的 Wi-Fi 探针系统,通过 Wi-Fi 芯片的混杂模式(Promiscuous Mode)被动嗅探 802.11 管理帧,实现对周边无线设备的感知、跟踪和生命周期管理。

它不是传统的 WiFi 扫描工具——传统的扫描只能看到自己连接的网络,而混杂模式可以捕获所有 802.11 管理帧:Probe Request、Beacon、Authentication、Deauthentication... 这意味着你可以看到周围所有设备(即使它们没有连接到你的网络)。


核心功能

1. 被动嗅探

ESP32 的 Wi-Fi 芯片在混杂模式下接收所有 802.11 管理帧,不区分是否发给自己:

  • Probe Request:设备搜索网络(手机、电脑在找 WiFi)
  • Probe Response:AP 响应探测
  • Beacon:AP 广播自身存在
  • Authentication/Deauthentication:认证过程、强制断开检测
  • Association/Disassociation:设备关联/断开 AP

2. 设备生命周期跟踪

从发现到消失的完整状态机:

DISCOVERED → PROBING → AUTHENTICATING → ASSOCIATED → CONNECTED
                                              ↓
                                       DISCONNECTED → OFFLINE → GONE

每个设备维护完整的时间线:首次发现、首次探测、关联时间、断开时间、信号强度变化。

3. 多探针协同定位

支持部署多个 ESP32 探针,通过 MQTT 将数据汇聚到中央 Hub:

  • 按 MAC 地址或前缀扫描特定设备
  • 比较不同探针的 RSSI 信号强度,推断设备位置
  • 最近 7 天出现时间线可视化(SVG 时间线)

4. 厂商识别

内置 30+ 厂商 OUI 数据库:

  • Apple(202 个 OUI)
  • Huawei(204 个)
  • Samsung(50 个)
  • Xiaomi、OPPO、vivo、Intel、MediaTek...

支持随机 MAC 检测:通过 LAA bit(mac[0] & 0x02)识别随机化 MAC 地址。


硬件组成

┌──────────────────────────────────────┐
│         ESP32-DevKitC                │
│  ┌──────────────┐  ┌──────────────┐ │
│  │  Wi-Fi 芯片   │  │  4MB Flash   │ │
│  │  (混杂模式)   │  │  (SPIFFS)    │ │
│  └──────────────┘  └──────────────┘ │
│  ┌──────────────┐                   │
│  │  MQTT 客户端  │  USB 供电         │
│  │  (PubSub)    │                   │
│  └──────────────┘                   │
└──────────────────────────────────────┘
              │
              ▼ MQTT
┌──────────────────────────────────────┐
│         Agora Hub                    │
│  ┌──────────────┐  ┌──────────────┐ │
│  │  MQTT Broker  │  │  Monitor UI  │ │
│  │  (EMQX)      │  │  (Web)       │ │
│  └──────────────┘  └──────────────┘ │
└──────────────────────────────────────┘

技术架构

信道跳频

后台 FreeRTOS 任务每 250ms 切换一次信道,覆盖 2.4GHz 的 13 个信道:

uint8_t channels[] = {1, 6, 11, 2, 7, 12, 3, 8, 13, 4, 9, 5, 10};

双模式运行

// SNIFFING 模式:混杂模式捕获,Wi-Fi 断开
if (g_mode == RunMode::SNIFFING) {
    if (now - g_mode_start_time >= cfg.report_interval_ms) {
        enter_reporting_mode();  // 切换模式
    }
}

// REPORTING 模式:连接 WiFi + MQTT,上报数据
if (g_mode == RunMode::REPORTING) {
    mqtt_manager_loop();
    agent_runtime_heartbeat();
    agent_runtime_report_events();
    if (now - g_mode_start_time >= 3000) {
        enter_sniffing_mode();  // 3秒后切回
    }
}

去重机制

5 秒窗口内相同 MAC+SSID 丢弃,避免重复记录:

if (now - g_dedup[i].last_seen <= DEDUP_WINDOW_SEC) {
    return false;  // 重复,丢弃
}

数据持久化

  • 每个 MAC 一个 JSON 文件(/history/aabbccddeeff.json
  • 最多保存 50 次出现记录
  • 最多 200 个 MAC 文件,自动淘汰最旧的

监控面板

访问 https://monitor.npc-ai.fun/probes

功能 说明
设备搜索 按 MAC 地址搜索或从下拉列表选择
设备信息卡 厂商、首次发现、总出现次数、信号强度
出现时间线 最近 7 天 SVG 时间线,按探针分组
RSSI 变化 Chart.js 折线图,每个探针一条线
设备列表 所有检测到的设备表格
SSE 实时推送 探针有新数据时自动刷新

关键技术栈

层级 技术 说明
硬件平台 ESP32-DevKitC 4MB Flash
开发框架 Arduino (ESP-IDF) framework = arduino
Wi-Fi API ESP-IDF Promiscuous Mode esp_wifi_set_promiscuous()
MQTT 库 PubSubClient 2.8 knolleary/PubSubClient
JSON 处理 ArduinoJson 7.0 bblanchon/ArduinoJson
文件系统 SPIFFS 配置和历史数据持久化
构建工具 PlatformIO platform = espressif32

快速开始

git clone https://github.com/dr4g00n/myAgent-Shopping
cd AgentESP32

# 安装 PlatformIO
pip install platformio

# 编译并烧录
pio run --target upload

# 监控串口输出
pio device monitor

配置 data/config.json

{
    "agent_id": "esp32_probe_001",
    "report_interval_ms": 10000,
    "channels": [1, 6, 11, 2, 7, 12, 3, 8, 13, 4, 9, 5, 10],
    "watchlist": ["aa:bb:cc:dd:ee:ff"]
}

应用场景

场景 A:设备资产管理

  • 企业内网中追踪未授权设备接入
  • 识别随机 MAC 地址的访客设备

场景 B:安全监控

  • 检测 Deauthentication 攻击(WiFi 干扰)
  • 监控特定设备的在线状态

场景 C:人流统计

  • 商场/门店的客流分析(不侵犯隐私,仅统计 MAC 出现频次)
  • 多探针协同,绘制热力图

项目意义

AgentESP32 证明了硬件 Agent 也是 AgentHub 生态的一等公民:它像软件 Agent 一样注册能力、发送心跳、响应任务,只是它的"能力"是感知物理世界。

这为"物联网 + AI Agent"的融合提供了一个范例:每个传感器不仅是数据采集器,更是可以自主协商、主动上报的智能实体。

Banner Bottom
客服 联系我