JesseCHale/HaleHound-CYD

GitHub: JesseCHale/HaleHound-CYD

专为 ESP32 CYD 开发板设计的多协议攻击性安全工具包,集成 WiFi、蓝牙、SubGHz、2.4GHz 和 NFC 五大无线攻击模块。

Stars: 155 | Forks: 16

``` _ _ .k$$$$$g, ,g$$$$$k. .k$$$$$$$$$$$a. .a$$$$$$$$$$$k. .J$$$$$?' `?$?^?, ,?^?$?` `?$$$$$L. JS$$SI!a, _.JS$ ?, ,? $SL._ ,a$!IS$$SL k$$$SI!:?$$$$$$$$$xu$$j j$$ux$$$$$$$$$?:!IS$$$k :I$$SI:J$$?*"$$$$4^?*?: :?*?^4$$$$"*?$$L:iIS$$I: :IS$$SiJ?` _.'$?`/' ': :' '/'?$'._ `?LiS$$SI: ?ISSik? _ ', ` . ,' _ ?kiSSI? ?i$?` _ k$ . :. $k _ `?$i? '?I:-?z$$I _._.' ._._ I$$z?-:I?' '*?- '?$$a louSxuS? ?xuSxuol a$$?' -?*' i$$$$$$$$$$$S S$$$$$$$$$$$i ?$$$?- -?$$$? ██░ ██ ▄▄▄ ██▓ ▓█████ ██░ ██ ▒█████ █ ██ ███▄ █ ▓█████▄ ▓██░ ██▒▒████▄ ▓██▒ ▓█ ▀ ▓██░ ██▒▒██▒ ██▒ ██ ▓██▒ ██ ▀█ █ ▒██▀ ██▌ ▒██▀▀██░▒██ ▀█▄ ▒██░ ▒███ ▒██▀▀██░▒██░ ██▒▓██ ▒██░▓██ ▀█ ██▒░██ █▌ ░▓█ ░██ ░██▄▄▄▄██ ▒██░ ▒▓█ ▄ ░▓█ ░██ ▒██ ██░▓▓█ ░██░▓██▒ ▐▌██▒░▓█▄ ▌ ░▓█▒░██▓ ▓█ ▓██▒░██████▒░▒████▒░▓█▒░██▓░ ████▓▒░▒▒█████▓ ▒██░ ▓██░░▒████▓ ▒ ░░▒░▒ ▒▒ ▓▒█░░ ▒░▓ ░░░ ▒░ ░ ▒ ░░▒░▒░ ▒░▒░▒░ ░▒▓▒ ▒ ▒ ░ ▒░ ▒ ▒ ▒▒▓ ▒ ▒ ░▒░ ░ ▒ ▒▒ ░░ ░ ▒ ░ ░ ░ ░ ▒ ░▒░ ░ ░ ▒ ▒░ ░░▒░ ░ ░ ░ ░░ ░ ▒░ ░ ▒ ▒ ░ ░░ ░ ░ ▒ ░ ░ ░ ░ ░░ ░░ ░ ░ ▒ ░░░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ _ _ .k$$$$$g, ,g$$$$$k. .k$$$$$$$$$$$a. .a$$$$$$$$$$$k. .J$$$$$?' `?$?^?, ,?^?$?` `?$$$$$L. JS$$SI!a, _.JS$ ?, ,? $SL._ ,a$!IS$$SL k$$$SI!:?$$$$$$$$$xu$$j j$$ux$$$$$$$$$?:!IS$$$k :I$$SI:J$$?*"$$$$4^?*?: :?*?^4$$$$"*?$$L:iIS$$I: :IS$$SiJ?` _.'$?`/' ': :' '/'?$'._ `?LiS$$SI: ?ISSik? _ ', . . ,' _ ?kiSSI? ?i$?` _ k$ .: :. $k _ `?$i? '?I:-?z$$I _._.' ._._ I$$z?-:I?' '*?- '?$$a louSxuS? ?xuSxuol a$$?' -?*' i$$$$$$$$$$$S S$$$$$$$$$$$i ?$$$?- -?$$$? ``` # HaleHound-CYD **ESP32-DIV HaleHound 版 —— Cheap Yellow Display** 版本 **v3.2.0 CYD 版** | 作者 [JesseCHale](https://github.com/JesseCHale) ## 概述 HaleHound-CYD 是一个专为 ESP32 "Cheap Yellow Display" (CYD) 平台打造的多协议攻击性安全工具包。支持 2.8 英寸 (ESP32-2432S028) 和 3.5 英寸 (ESP32-3248S035C) 两种 CYD 开发板。外部 CC1101 SubGHz、NRF24L01+PA+LNA 2.4GHz、PN532 NFC/RFID 以及 GPS 模块通过 CYD 的引脚接口连接。 原版 ESP32-DIV 的所有攻击模块均已保留,并新增 CYD 独占功能:全触摸屏导航、EAPOL/PMKID 捕获、Karma 攻击、带 GPS 记录的 Wardriving(战驰)、PN532 RFID 卡扫描/克隆/暴力破解、防御性干扰检测、用于硬件黑客的 UART 串口监视器,以及从 SD 卡进行的 OTA 固件更新。 所有无线电均以最大功率发射。没有任何安全限制。 ## 目录 - [硬件需求](#hardware-requirements) - [支持的开发板](#supported-boards) - [完整接线指南](#complete-wiring-guide) - [菜单树](#menu-tree) - [攻击模块 - 详情](#attack-modules---detailed) - [WiFi 攻击](#wifi-attacks) - [蓝牙攻击](#bluetooth-attacks) - [2.4GHz NRF24 攻击](#24ghz-nrf24-attacks) - [SubGHz CC1101 攻击](#subghz-cc1101-attacks) - [SIGINT 行动](#sigint-operations) - [工具](#tools) - [设置](#settings) - [触摸导航](#touch-navigation) - [TX 功率配置](#tx-power-configuration) - [SD 卡结构](#sd-card-structure) - [构建与烧录](#build-and-flash) - [引脚参考表](#pin-reference-table) - [SPI 总线共享](#spi-bus-sharing) - [已知问题](#known-issues) - [项目结构](#project-structure) ## 硬件需求 ### 基础开发板 (二选一) | 组件 | CYD 2.8" (ESP32-2432S028) | CYD 3.5" (ESP32-3248S035C) | |-----------|---------------------------|---------------------------| | MCU | ESP32-WROOM-32 / 32UE | ESP32-WROOM-32 | | 显示屏 | 2.8" ILI9341 240x320 | 3.5" ST7796 320x480 | | 触摸 | XPT2046 电阻式 (SPI) | GT911 电容式 (I2C) | | Flash | 4MB 起 (推荐 16MB) | 4MB 起 (推荐 16MB) | | USB | CH340C (Micro-USB 或 USB-C) | CH340C (USB-C) | | SD 卡 | 板载 MicroSD (VSPI) | 板载 MicroSD (VSPI) | | 电源 | 5V USB 或 LiPo + 升压 | 5V USB 或 LiPo + 升压 | | 背光 | GPIO 21 | GPIO 27 | ### 外部模块 (完整功能需全部配备) | 模块 | 型号 | 用途 | |--------|-------|---------| | SubGHz 无线电 | CC1101 HW-863 (红板) | 300-928 MHz 信号捕获/重放/干扰 | | 2.4GHz 无线电 | NRF24L01+PA+LNA | WiFi/BLE/Zigbee 干扰, MouseJack | | NFC/RFID | PN532 V3 (Elechouse) | 13.56 MHz 卡扫描/读取/克隆/暴力破解 | | GPS | GT-U7 或 NEO-6M | Wardriving, 位置记录 | ### 可选组件 | 组件 | 用途 | |-----------|---------| | 10uF 电容 | NRF24 电源稳定性 (跨接在模块 VCC/GND) | | MicroSD 卡 | Payload 存储, PCAP 保存, Wardriving 日志 | | LiPo 电池 + 升压转换器 | 便携操作 | | 外置天线 | 扩展范围 (若使用 ESP32-WROOM-32UE) | ## 支持的开发板 | 开发板 | 构建目标 | 显示屏 | 触摸 | 状态 | |-------|-------------|---------|-------|--------| | ESP32-2432S028 (2.8") | `esp32-cyd` | 240x320 ILI9341 | XPT2046 电阻式 | **已全面测试** | | ESP32-3248S035C (3.5") | `esp32-cyd-35` | 320x480 ST7796 | GT911 电容式 | **已全面测试** | | QDtech E32R28T (2.8") | `esp32-e32r28t` | 240x320 ILI9341 | XPT2046 电阻式 | 支持 | | NM-RF-Hat (2.8") | `esp32-cyd-hat` | 240x320 ILI9341 | XPT2046 电阻式 | 支持 | 开发板选择通过 PlatformIO 构建目标自动完成。构建命令: ``` pio run -e esp32-cyd # 2.8" CYD pio run -e esp32-cyd-35 # 3.5" CYD pio run -e esp32-e32r28t # E32R28T pio run -e esp32-cyd-hat # NM-RF-Hat ``` ### 3.5" CYD 差异 3.5" CYD (ESP32-3248S035C) 使用相同的芯片 (ESP32-D0WD-V3),所有外部无线电接线也相同,但在开发板层面有以下差异: | 特性 | 2.8" CYD | 3.5" CYD | |---------|----------|----------| | 分辨率 | 240x320 | 320x480 | | 显示驱动 | ILI9341 | ST7796 | | 触摸 | XPT2046 (SPI, 软件模拟) | GT911 (I2C, 电容式) | | 背光 | GPIO 21 | GPIO 27 | | CC1101 CS | GPIO 27 | **GPIO 26** (GPIO 27 = 背光) | | 扬声器 RX | GPIO 26 | N/A (GPIO 26 = CC1101 CS) | | 触摸引脚 | CLK=25, MOSI=32, MISO=39, CS=33 | SDA=33, SCL=32, RST=21, INT=25 | 所有 UI 坐标通过 `cyd_config.h` 中的 `SCALE_Y`/`SCALE_X`/`SCALE_W`/`SCALE_H` 宏自动缩放。 ## 完整接线指南 ### SPI 总线架构 CYD 拥有**两条独立的 SPI 总线**。理解这一点至关重要: ``` ┌─────────────────────────────────────────────────────────────┐ │ HSPI BUS (Display) │ │ MISO=GPIO12 MOSI=GPIO13 SCLK=GPIO14 CS=GPIO15 │ │ ┌─────────┐ │ │ │ ILI9341 │ DC=GPIO2 BL=GPIO21 RST=EN │ │ │ Display │ │ │ └─────────┘ │ └─────────────────────────────────────────────────────────────┘ ┌─────────────────────────────────────────────────────────────┐ │ SEPARATE TOUCH SPI (Bit-Banged) │ │ CLK=GPIO25 MOSI=GPIO32 MISO=GPIO39 CS=GPIO33 │ │ ┌──────────┐ │ │ │ XPT2046 │ IRQ=GPIO36 │ │ │ Touch │ │ │ └──────────┘ │ └─────────────────────────────────────────────────────────────┘ ┌─────────────────────────────────────────────────────────────┐ │ VSPI BUS (Shared Radio Bus) │ │ SCK=GPIO18 MOSI=GPIO23 MISO=GPIO19 │ │ │ │ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐ │ │ │ SD Card │ │ CC1101 │ │ NRF24 │ │ PN532 │ │ │ │ CS=GPIO5 │ │ CS=GPIO27│ │ CSN=GPIO4│ │ CS=GPIO17│ │ │ │ (built-in│ │ GDO0=G22 │ │ CE=GPIO16│ │ (RFID/ │ │ │ │ slot) │ │ GDO2=G35 │ │ │ │ NFC) │ │ │ └──────────┘ └──────────┘ └──────────┘ └──────────┘ │ │ │ │ IMPORTANT: Only ONE device active at a time! │ │ Pull target CS LOW, all others HIGH before SPI transfer. │ │ PN532 uses LSBFIRST (others use MSBFIRST) — handled by │ │ Adafruit library's beginTransaction/endTransaction. │ └─────────────────────────────────────────────────────────────┘ ``` ### CC1101 SubGHz 无线电接线 ``` ┌─────────────────┐ ┌──────────────────┐ │ CC1101 │ │ CYD ESP32 │ │ HW-863 │ │ │ ├─────────────────┤ ├──────────────────┤ │ VCC ─────────────┼──────────────┤ 3.3V │ │ GND ─────────────┼──────────────┤ GND │ │ SCK ─────────────┼──────────────┤ GPIO 18 (VSPI) │ │ MOSI ────────────┼──────────────┤ GPIO 23 (VSPI) │ │ MISO ────────────┼──────────────┤ GPIO 19 (VSPI) │ │ CS ──────────────┼──────────────┤ GPIO 27 (CN1 hdr) │ │ GDO0 (TX) ───────┼──────────────┤ GPIO 22 (P3 hdr) │ │ GDO2 (RX) ───────┼──────────────┤ GPIO 35 (P3 hdr) │ └─────────────────┘ └──────────────────┘ ``` **3.5" CYD 注意:** CC1101 CS 在 3.5" 板上移至 **GPIO 26**,因为 GPIO 27 是背光引脚。所有其他 CC1101 引脚保持不变。 **GDO0/GDO2 引脚命名修正:** 原版 ESP32-DIV 固件 (CiferTech) 存在 TX 和 RX **接反** 的问题。HaleHound 修正了这一点: - **GDO0** (GPIO 22) = 数据发送**至** CC1101 (TX 线) - **GDO2** (GPIO 35) = 数据**来自** CC1101 (RX 线) GPIO 35 在 ESP32 上仅可作为输入,这对 RX 来说是正确的。 ### NRF24L01+PA+LNA 接线 ``` ┌─────────────────┐ ┌──────────────────┐ │ NRF24L01 │ │ CYD ESP32 │ │ +PA+LNA │ │ │ ├─────────────────┤ ├──────────────────┤ │ VCC ─────────────┼──────────────┤ 3.3V │ │ GND ─────────────┼──────────────┤ GND │ │ SCK ─────────────┼──────────────┤ GPIO 18 (VSPI) │ │ MOSI ────────────┼──────────────┤ GPIO 23 (VSPI) │ │ MISO ────────────┼──────────────┤ GPIO 19 (VSPI) │ │ CSN ─────────────┼──────────────┤ GPIO 4 (was RGB R)│ │ CE ──────────────┼──────────────┤ GPIO 16 (was RGB G)│ │ IRQ (optional) ──┼──────────────┤ GPIO 17 (was RGB B)│ └─────────────────┘ └──────────────────┘ ``` **电源注意:** +PA+LNA 版本耗电较大。如果遇到随机重启或初始化失败,请在 NRF24 模块的 VCC 和 GND 之间直接焊接一个 **10uF 电容**。 **引脚重用:** CYD 的 RGB LED 引脚 (GPIO 4, 16, 17) 已被牺牲用于 NRF24 和 PN532。固件中已禁用 RGB LED (`CYD_HAS_RGB_LED = 0`)。 ### PN532 NFC/RFID 接线 ``` ┌─────────────────┐ ┌──────────────────┐ │ PN532 V3 │ │ CYD ESP32 │ │ (Elechouse) │ │ │ ├─────────────────┤ ├──────────────────┤ │ VCC ─────────────┼──────────────┤ 3.3V (CN1 hdr) │ │ GND ─────────────┼──────────────┤ GND (CN1 hdr) │ │ SCK ─────────────┼──────────────┤ GPIO 18 (VSPI) │ │ MOSI ────────────┼──────────────┤ GPIO 23 (VSPI) │ │ MISO ────────────┼──────────────┤ GPIO 19 (VSPI) │ │ SS ──────────────┼──────────────┤ GPIO 17 (was RGB B)│ └─────────────────┘ └──────────────────┘ ``` **DIP 拨码开关:** 设置 CH1=OFF, CH2=ON 以启用 SPI 模式。 **SPI 注意:** PN532 使用 LSBFIRST SPI,而所有其他 VSPI 设备使用 MSBFIRST。这是安全的,因为 Adafruit 库在每次传输时都会用 `beginTransaction(LSBFIRST)`/`endTransaction()` 包裹,且 SPI 管理器确保同一时间只有一个设备处于活动状态。 **引脚共享:** GPIO 17 原本是 NRF24 IRQ,但 HaleHound-CYD 从未使用 NRF24 中断线。PN532 CS 重用了此引脚。 ### GPS 模块接线 ``` ┌─────────────────┐ ┌──────────────────┐ │ GT-U7 │ │ CYD P1 Connector │ │ GPS │ │ (JST header) │ ├─────────────────┤ ├──────────────────┤ │ VCC ─────────────┼──────────────┤ VIN │ │ GND ─────────────┼──────────────┤ GND │ │ TX ──────────────┼──────────────┤ RX (GPIO 3) │ │ RX (not used) ───┼──────────────┤ TX (GPIO 1) │ └─────────────────┘ └──────────────────┘ ``` **USB 冲突:** GPIO 3 与 CH340C USB 串口 RX 共享。当 GPS 激活时,固件调用 `Serial.end()` 释放 GPIO 3 以便进行 UART2 重映射。通过 `Serial.println()` (TX 在 GPIO 1) 的调试输出仍然有效。GPS 退出时会恢复正常串口。 ### SD 卡 MicroSD 插槽**内置于 CYD 开发板背面**。无需外部接线。 - CS = GPIO 5 (低电平有效) - 与无线电共享 VSPI 总线 (GPIO 18/19/23) - SPI 管理器自动处理访问冲突 ## 菜单树 ``` HALEHOUND-CYD v3.2.0 │ ├── WiFi ────────────────────────────────────────────────── │ ├── Packet Monitor ......... Real-time 802.11 frame capture │ ├── Beacon Spammer ......... Flood SSIDs (custom or random) │ ├── WiFi Deauther .......... Target deauth with network scan │ ├── Probe Sniffer .......... Capture probe requests → Evil Twin │ ├── WiFi Scanner ........... Scan APs → Tap-to-Deauth/Clone │ ├── Captive Portal ......... GARMR Evil Twin credential harvest │ ├── Station Scanner ........ Enumerate connected clients │ ├── Auth Flood ............. 802.11 auth frame flood attack │ └── Back to Main Menu │ ├── Bluetooth ───────────────────────────────────────────── │ ├── BLE Jammer ............. Flood advertisements │ ├── BLE Spoofer ............ Clone device identities │ ├── BLE Beacon ............. Broadcast custom BLE beacons │ ├── Sniffer ................ Passive BLE traffic analysis │ ├── BLE Scanner ............ Discover nearby BLE devices │ ├── WhisperPair ............ CVE-2025-36911 Fast Pair scanner │ ├── AirTag Detect .......... Apple FindMy tracker detection │ ├── Lunatic Fringe ......... Multi-platform tracker scanner │ └── Back to Main Menu │ ├── 2.4GHz (NRF24) ─────────────────────────────────────── │ ├── Scanner ................ Channel activity scanner │ ├── Spectrum Analyzer ...... Visual RF spectrum display │ ├── WLAN Jammer ............ 2.4GHz broadband disruption │ ├── Proto Kill ............. Multi-protocol attack suite │ └── Back to Main Menu │ ├── SubGHz (CC1101) ────────────────────────────────────── │ ├── Replay Attack .......... Record and replay RF signals │ ├── Brute Force ............ Automated code generation │ ├── SubGHz Jammer .......... Wideband SubGHz disruption │ ├── Spectrum Analyzer ...... SubGHz RF spectrum display │ ├── Saved Profile .......... Load saved signal profiles │ └── Back to Main Menu │ ├── RFID (PN532) ────────────────────────────────────────── │ ├── NFC Scanner ............ Detect & identify cards in range │ ├── Card Reader ............ Read MIFARE block data │ ├── Card Clone ............. Clone UID to writable card │ ├── Brute Force ............ MIFARE key bruteforce (A/B) │ ├── Card Emulator .......... Emulate captured card UID │ └── Back to Main Menu │ ├── Jam Detect ──────────────────────────────────────────── │ ├── WiFi Guardian .......... Detect 802.11 deauth floods │ ├── BLE Watchdog ........... Detect BLE advertisement floods │ ├── SubGHz Sentinel ........ Detect SubGHz carrier jamming │ └── Back to Main Menu │ ├── SIGINT ──────────────────────────────────────────────── │ ├── EAPOL Capture .......... WPA handshake/PMKID capture │ ├── Karma Attack ........... Auto-respond to probe requests │ ├── Wardriving ............. GPS-tagged AP scanning │ ├── Saved Captures ......... Browse captured handshakes │ └── Back to Main Menu │ ├── Tools ───────────────────────────────────────────────── │ ├── Serial Monitor ......... UART passthrough terminal │ ├── Update Firmware ........ Flash .bin from SD card │ ├── Touch Calibrate ........ Touchscreen recalibration │ ├── GPS .................... Live satellite view & NMEA data │ ├── Radio Test ............. SPI radio hardware verification │ └── Back to Main Menu │ ├── Settings ────────────────────────────────────────────── │ ├── Brightness ............. Backlight PWM control │ ├── Screen Timeout ......... 30s / 1m / 2m / 5m / 10m / Never │ ├── Swap Colors ............ BGR / RGB panel toggle │ ├── Theme .................. Color theme selection │ ├── Rotation ............... Portrait orientation (0°/180°/90CW/90CCW) │ ├── Device Info ............ Hardware stats (+ Easter Egg) │ ├── Set PIN ................ 4-digit lock PIN (optional) │ ├── CC1101 Module .......... Standard / E07 PA module toggle │ └── Back to Main Menu │ └── About ───────────────────────────────────────────────── └── Full-screen about page with armed module list ``` ## 攻击模块 - 详情 ### WiFi 攻击 所有 WiFi 攻击使用 ESP32 内置 WiFi 无线电。无需外部模块。 #### 数据包监视器 将 WiFi 无线电置于混杂模式并显示实时 802.11 帧统计信息。显示管理帧、数据帧和控制帧计数以及实时每秒数据包图表。 ``` ┌─────────────────────────────┐ │ ATTACK FLOW │ │ │ │ WiFi → Promiscuous Mode │ │ → Frame Callback │ │ → Classify Frame Type │ │ → Update Counters │ │ → Draw Live Graph │ └─────────────────────────────┘ ``` #### 信标洪泛 用虚假的 WiFi 网络名称充斥空域。可配置 SSID 列表或随机生成。在最大 TX 功率下使用原始 802.11 帧注入。 ``` ┌─────────────────────────────────────────┐ │ ATTACK FLOW │ │ │ │ Init WiFi (APSTA mode) │ │ Set max TX power (82 = +20.5dBm) │ │ Disable power save (WIFI_PS_NONE) │ │ Loop: │ │ Build beacon frame with target SSID │ │ esp_wifi_80211_tx() on AP interface │ │ Cycle through SSID list │ │ Display count on screen │ └─────────────────────────────────────────┘ ``` **目标场景:** 干扰客户端自动连接,充斥附近 WiFi 列表,在行动中制造干扰。 #### WiFi 反认证器 扫描接入点,允许您通过点击选择目标,然后发送反认证帧以断开该 AP 上的所有客户端。 ``` ┌──────────────────────────────────────────────┐ │ ATTACK FLOW │ │ │ │ 1. Scan networks (esp_wifi_scan_start) │ │ 2. Display AP list with RSSI bars │ │ 3. User taps target AP │ │ 4. Switch to target's channel │ │ 5. Build deauth frame (reason code 7) │ │ 6. esp_wifi_80211_tx() via AP interface │ │ 7. Broadcast deauth to FF:FF:FF:FF:FF:FF │ │ 8. Display deauth packet counter │ │ │ │ REQUIRES: WIFI_MODE_APSTA │ │ Raw frame TX needs an active AP interface. │ │ STA does scanning, AP does injection. │ └──────────────────────────────────────────────┘ ``` **WiFi 扫描器 → 反认证联动:** WiFi 扫描器模块具有“点击即攻击”功能。点击任何扫描到的 AP 并选择 Deauth —— 目标 BSSID、SSID 和信道将直接传递给反认证器,跳过扫描阶段。 #### 探测请求嗅探器 → Evil Twin 链 捕获附近设备的探测请求帧,揭示它们正在寻找的 SSID。选择任何探测到的 SSID 即可生成一个伪装该网络的 GARMR Evil Twin 强制门户。 ``` ┌────────────────────────────────────────────────┐ │ ATTACK CHAIN │ │ │ │ Probe Sniffer │ │ → Capture probe requests (passive) │ │ → Display SSID + client MAC + RSSI │ │ → User selects probed SSID │ │ ↓ │ │ GARMR Captive Portal (auto-spawns) │ │ → Create fake AP with selected SSID │ │ → DNS hijack all domains to portal │ │ → Serve credential harvesting page │ │ → Captured creds displayed on screen │ └────────────────────────────────────────────────┘ ``` #### WiFi 扫描器 全功能 AP 扫描器,显示信号强度条、信道信息、加密类型和供应商 OUI 查询。点击任何结果进行攻击: ``` Tap an AP: ├── DEAUTH → Launch deauther pre-targeted at this AP └── CLONE → Launch GARMR captive portal with this SSID ``` #### 强制门户 (GARMR Evil Twin) 独立的强制门户,创建虚假 AP 并捕获凭据。从 `portal_pages.h` 提供可定制的门户页面。所有 DNS 查询都解析到 ESP32,强制在连接的客户端上弹出强制门户窗口。 #### 站点扫描器 扫描附近网络上连接的客户端 (站点)。显示客户端 MAC、关联的 AP 和 RSSI。支持反认证联动以断开选定的客户端。 #### 认证洪泛 通过从随机 MAC 地址向目标 AP 发送大量 802.11 认证帧来淹没其客户端表。扫描附近的接入点,点击选择目标,然后进行洪泛攻击。 ``` ┌──────────────────────────────────────────────┐ │ ATTACK FLOW │ │ │ │ 1. Scan networks (esp_wifi_scan_start) │ │ 2. Display AP list with RSSI bars │ │ 3. User taps target AP │ │ 4. Switch to target's channel │ │ 5. Validate TX with test auth frame │ │ 6. Flood auth frames from random MACs │ │ 7. 85-bar equalizer shows attack rhythm │ │ │ │ REQUIRES: WIFI_MODE_APSTA │ │ Raw frame TX needs an active AP interface. │ └──────────────────────────────────────────────┘ ``` **目标场景:** 强制 AP 耗尽其关联表,导致合法客户端无法连接。对具有小型客户端表限制的消费级路由器有效。 ### 蓝牙攻击 所有 BLE 攻击使用 ESP32 内置蓝牙无线电。WiFi 和 BLE 模式之间的无线电资源释放会自动处理。 #### BLE 干扰器 在 BLE 广播信道 (37, 38, 39) 上充斥垃圾数据以扰乱附近的 BLE 连接。 #### BLE 欺骗器 克隆附近 BLE 设备的身份。先扫描,选择目标,然后 ESP32 广播为该设备。 #### BLE 信标 广播自定义 BLE 信标广播包。可以伪装 AirTag、Tile 或自定义 iBeacon/Eddystone 负载。 #### BLE 嗅探器 被动 BLE 流量分析器。实时显示广播数据、RSSI、设备名称和制造商数据。 #### BLE 扫描器 发现工具,附近所有 BLE 设备及其名称、MAC 地址、RSSI 和广播的服务。 #### WhisperPair — CVE-2025-36911 Fast Pair 漏洞扫描器 扫描 Google Fast Pair 设备并探测 WhisperPair 漏洞 (CVE-2025-36911)。发现 Fast Pair 服务广播,然后通过 GATT 连接以检查基于密钥的配对特征在配对模式之外是否可访问 —— 这是一种允许未经授权配对的情况。 ``` ┌──────────────────────────────────────────────┐ │ ATTACK FLOW │ │ │ │ 1. BLE scan for Fast Pair service UUID │ │ 2. Filter devices with Fast Pair adverts │ │ 3. Connect to target via GATT │ │ 4. Probe Key-Based Pairing characteristic │ │ 5. Report: VULNERABLE / PATCHED / UNKNOWN │ │ │ │ Passive discovery, active GATT probe. │ └──────────────────────────────────────────────┘ ``` #### AirTag 检测 — Apple FindMy 追踪器检测 被动 BLE 扫描器,检测 AirTag、FindMy 配件和兼容的第三方追踪器。过滤 Apple 制造商数据 (0x4C) 及 FindMy 类型字节 (0x12/0x19)。显示每个检测到的追踪器的 MAC 地址、RSSI 邻近条、电量估算、距离计算和状态字节。每 5 秒自动重新扫描,检测到新追踪器时闪烁警示。同时追踪最多 20 个唯一设备。 ``` ┌──────────────────────────────────────────────┐ │ DETECTION METHOD │ │ │ │ 1. BLE scan for Apple manufacturer data │ │ 2. Filter: company ID 0x004C (Apple) │ │ 3. Match FindMy type: 0x12 or 0x19 │ │ 4. Extract status byte and battery level │ │ 5. Calculate distance from RSSI │ │ 6. Track unique MACs (up to 20) │ │ 7. Alert flash on new tracker detection │ │ 8. Auto-rescan every 5 seconds │ └──────────────────────────────────────────────┘ ``` **BLE 无线电注意事项:** - 始终使用 `BLEDevice::deinit(false)` —— `deinit(true)` 存在导致重新初始化失败的 bug - 在 `BLEDevice::init()` 和 `esp_ble_tx_power_set()` 之间需 150ms 延迟以防崩溃 - BLE 初始化前调用 `esp_wifi_stop()` 即可 —— 切勿调用 `esp_wifi_deinit()` - 所有 BLE TX 设置为 `ESP_PWR_LVL_P9` (最大功率) #### Lunatic Fringe — 跨平台 BLE 追踪器扫描器 扫描所有主要平台的商用 BLE 追踪设备。通过服务 UUID `0xFEAA` 识别 Google Find My Device Network (FMDN) 追踪器,`0xFD5A` 识别 Samsung SmartTag,`0xFEED` 识别 Tile,`0xFE33` 识别 Chipolo,以及通过制造商 ID `0x004C` 配合 FindMy 类型字节识别 Apple AirTag。在可滚动列表视图中显示检测到的追踪器,包含平台图标、名称、RSSI 邻近条和信号强度。选择任何追踪器可查看详情,包括 MAC 地址、平台、RSSI、电池电量估算和状态信息。每 5 秒自动重新扫描,检测到新追踪器时闪烁警示。同时追踪最多 20 个唯一设备。 ``` ┌──────────────────────────────────────────────┐ │ DETECTION METHOD │ │ │ │ 1. BLE scan for tracker service UUIDs │ │ 2. Match: Google FMDN (0xFEAA) │ │ 3. Match: Samsung SmartTag (0xFD5A) │ │ 4. Match: Tile (0xFEED) │ │ 5. Match: Chipolo (0xFE33) │ │ 6. Match: Apple AirTag (0x004C + FindMy) │ │ 7. List view with RSSI proximity bars │ │ 8. Detail view per tracker │ │ 9. Auto-rescan every 5 seconds │ │ 10. Alert flash on new tracker detection │ └──────────────────────────────────────────────┘ ``` *概念:Duggie* ### 2.4GHz NRF24 攻击 需要外部 NRF24L01+PA+LNA 模块。所有攻击均在 `RF24_PA_MAX` 功率级别下运行。 #### 扫描器 扫描所有 126 个 NRF24 信道 (2400-2525 MHz) 并显示活动信道。用于在攻击前查找活动的 2.4GHz 设备。 #### 频谱分析仪 使用 NRF24 作为宽带接收器的 2.4GHz 频段实时可视化频谱显示。通过瀑布图显示所有信道的信号强度。 #### WLAN 干扰器 宽带 2.4GHz 破坏。NRF24+PA+LNA 快速循环信道并传输噪声,同时干扰 WiFi、蓝牙、Zigbee 和其他 2.4GHz 协议。 ``` ┌──────────────────────────────────────────┐ │ ATTACK FLOW │ │ │ │ Init NRF24 at RF24_PA_MAX │ │ Loop across channels 0-125: │ │ Set channel │ │ Transmit random payload │ │ Hop to next channel (fast sweep) │ │ Result: Broadband 2.4GHz disruption │ │ │ │ Affects: WiFi, BLE, Zigbee, Z-Wave, │ │ wireless keyboards/mice, │ │ baby monitors, drones │ └──────────────────────────────────────────┘ ``` #### 协议杀手 多协议攻击套件,结合信道跳变与特定协议的破坏模式。使用优化的干扰模式针对特定的 2.4GHz 协议。 ### SubGHz CC1101 攻击 需要外部 CC1101 HW-863 模块。所有攻击均使用 `setPA(12)` (最大 TX 功率)。 #### 重放攻击 录制 SubGHz 信号,然后按需重放。适用于车库门、车钥匙 (固定码)、门禁开启器以及工作在 300-928 MHz 范围内的其他设备。 ``` ┌──────────────────────────────────────────────┐ │ ATTACK FLOW │ │ │ │ 1. Set target frequency (e.g., 433.92 MHz) │ │ 2. Enter RX mode — listen for signals │ │ 3. Signal captured → stored in memory │ │ 4. User triggers replay │ │ 5. Switch to TX mode │ │ 6. setPA(12) for max power │ │ 7. Transmit captured signal │ │ 8. Optional: save to SD card profile │ │ │ │ Supported modulations: ASK/OOK, 2-FSK │ │ Common targets: 315MHz, 433.92MHz, 868MHz │ └──────────────────────────────────────────────┘ ``` #### 暴力破解 针对固定码系统的自动代码生成。遍历可能的代码组合并逐个发送。对码空间有限的老式车库门和门禁系统有效。 #### SubGHz 干扰器 可配置 SubGHz 频率上的宽带干扰。扰乱范围内的车库门开启器、车钥匙、报警系统和其他 SubGHz 设备。 #### 频谱分析仪 实时 SubGHz 频谱显示。扫描 300-928 MHz 范围以在攻击前识别活动频率。 #### 已保存配置 从 SD 卡加载并重放之前保存的 SubGHz 信号配置文件。 ### SIGINT 行动 用于被动和主动无线侦察的高级信号情报模块。 #### EAPOL 捕获 捕获附近网络的 WPA/WPA2 四次握手和 PMKID。强制反认证以触发重新认证,然后捕获 EAPOL 交换。 ``` ┌──────────────────────────────────────────────────┐ │ ATTACK FLOW │ │ │ │ 1. Scan for target networks │ │ 2. User selects target AP │ │ 3. Set WiFi to target channel │ │ 4. Enable promiscuous mode │ │ 5. Send deauth to force reauthentication │ │ 6. Capture EAPOL frames: │ │ - Message 1: AP → Client (ANonce + PMKID) │ │ - Message 2: Client → AP (SNonce) │ │ - Message 3: AP → Client (GTK) │ │ - Message 4: Client → AP (Confirmation) │ │ 7. Extract PMKID from Message 1 RSN IE │ │ 8. Save to SD card in hashcat format │ │ 9. Display capture status on screen │ │ │ │ Output: .hc22000 or .hccapx for offline crack │ └──────────────────────────────────────────────────┘ ``` #### Karma 攻击 自动响应所有探测请求并回复匹配的信标帧,诱骗设备连接到 ESP32。与强制门户结合用于凭据收集。 ``` ┌──────────────────────────────────────────────┐ │ ATTACK FLOW │ │ │ │ 1. Enable promiscuous mode │ │ 2. Listen for probe request frames │ │ 3. For each probed SSID: │ │ → Create matching beacon response │ │ → Broadcast as that network │ │ 4. Client auto-connects (trusts SSID) │ │ 5. DNS hijack to captive portal │ │ 6. Harvest credentials │ │ │ │ Captures: "Home_WiFi", "Starbucks", │ │ "HOTEL_GUEST" — whatever devices remember │ └──────────────────────────────────────────────┘ ``` #### Wardriving 带 GPS 标记的 WiFi 扫描。扫描接入点的同时记录 GPS 坐标,创建每个网络及其物理位置的日志。需要 GPS 模块。 ``` ┌────────────────────────────────────┐ │ DATA COLLECTED PER AP │ │ │ │ SSID, BSSID, Channel, RSSI, │ │ Encryption type, Latitude, │ │ Longitude, Altitude, Timestamp │ │ │ │ Saved to SD card as CSV/JSON │ └────────────────────────────────────┘ ``` #### 已保存捕获 浏览和管理 SD 卡上存储的之前捕获的 EAPOL 握手和 PMKID 哈希。 ### 工具 #### 串口监视器 用于硬件黑客的 UART 直通终端。连接到目标设备的调试端口,直接从 CYD 屏幕读取/发送串口数据。 - **P1 接口:** 通过 UART0 全双工 (GPIO 3 RX / GPIO 1 TX) —— 与 USB 串口共享 - **扬声器引脚:** 仅 RX,通过 GPIO 26 —— 专用,无 USB 冲突 - **默认波特率:** 115200 (可配置) #### 更新固件 直接从 SD 卡刷入新的固件 `.bin` 文件,无需电脑。浏览 SD 卡,选择 `.bin`,确认后 ESP32 应用 OTA 更新并重启。 #### 触摸校准 交互式四角触摸屏校准工具。点击屏幕每个角落的十字准心,计算特定开发板的原始触摸到屏幕坐标映射。每点采集 5 次采样平均值以确保精度。 **自动校准:** 刷机后首次启动 (或 EEPROM 重置后),固件在显示主菜单前自动运行触摸校准。这确保每块板立即获得可用的触摸映射 —— 无需在触摸失灵时通过菜单导航。 **EEPROM 持久化:** 校准值保存至 EEPROM 并在断电后保留。可随时通过 工具 > 触摸校准 重新校准。按 BOOT 按钮取消校准。 #### GPS 通过 TinyGPSPlus 进行实时 GPS 卫星视图和 NMEA 数据解析。显示卫星数量、定位状态、纬度、经度、海拔、速度和 HDOP。以 9600 波特率自动扫描 GPIO 3 (P1 接口)。 #### 无线电测试 用于 NRF24L01+ 和 CC1101 无线电的交互式 SPI 硬件验证工具。通过读取芯片识别寄存器 (NRF24 CONFIG 寄存器 0x08,CC1101 VERSION 寄存器 0x14) 测试 SPI 通信,并提供智能故障诊断 —— 区分布线问题、芯片损坏和克隆芯片检测。包括电池电压读数和 4 页接线原理图,采用 KiCad 风格布局,显示 NRF24、GPS 和 CC1101 连接的彩色走线、焊点和芯片框。 ### 设置 #### 亮度 背光 PWM 控制,带有更暗/更亮触摸按钮。范围:10-255。保存至 EEPROM。 #### 屏幕超时 无操作后自动变暗。选项:30 秒、1 分钟、2 分钟、5 分钟、10 分钟、从不。触摸或按 BOOT 唤醒。保存至 EEPROM。 #### 交换颜色 切换 ILI9341 显示屏的 BGR (默认) 和 RGB 色彩顺序。某些批次的 CYD 板面板连线存在颜色通道交换,导致红色显示为蓝色,反之亦然。此设置直接写入 MADCTL 寄存器并保存至 EEPROM。 #### 旋转 不同的 CYD 制造商以不同方向安装 LCD 面板。如果刷机后显示屏出现倒置或侧向,请使用此设置进行校正。UI **仅为竖屏** (高大于宽) —— 此设置旋转竖屏布局以补偿开发板面板的物理安装方式。 | 选项 | 使用场景 | |--------|----------| | 标准 (0°) | 显示正常 —— 最常见 | | 翻转 180° | 显示屏倒置 | | 90° 顺时针 | 面板侧向安装 (顺时针) | | 90° 逆时针 | 面板侧向安装 (逆时针) | 每次旋转更改后触摸输入会自动重新校准。所选旋转保存至 EEPROM 并在断电后保留。 **注意:** 90° 顺时针和 90° 逆时针仅用于补偿侧向安装的 LCD 面板。它们**不是**横屏模式。 #### 设备信息 硬件信息页面,显示:设备名称、固件版本、可用堆内存、CPU 频率、Flash 大小和板型。 **彩蛋:** 快速连续点击 "By: HaleHound" 五次以查看 PR #76 故事。 ## 触摸导航 CYD 除了 BOOT (GPIO 0) 外没有物理按钮。所有导航均基于触摸屏。 ### 主菜单 主菜单以 2x4 网格显示 8 个类别,配有骷髅图标。**点击任何图标**进入该子菜单。 ### 子菜单 子菜单显示为垂直列表。**点击任何项目**启动该模块。 ### 模块内部 | 操作 | 方法 | |--------|--------| | **退出模块** | 点击返回图标 (左上角,状态栏下方) | | **退出模块** | 按 BOOT 按钮 (GPIO 0) | | **滚动** | 点击向上区域 (左上) 或向下区域 (左下) | | **选择** | 点击屏幕中心 | | **从休眠唤醒** | 点击任意位置或按 BOOT | ### 触摸区域 (2.8" 竖屏) ``` ┌────────────┬────────────────┬────────────┐ │ UP │ │ BACK │ y: 0-60 │ (0-80) │ │ (160-240) │ ├────────────┤ ├────────────┤ │ │ │ │ │ │ SELECT │ │ │ │ (80-160, │ │ │ │ 130-190) │ │ │ │ │ │ ├────────────┤ ├────────────┤ │ DOWN │ │ │ y: 260-320 │ (0-80) │ │ │ └────────────┴────────────────┴────────────┘ ``` ## TX 功率配置 每个攻击无线电均配置为最大发射功率。 | 无线电 | 设置 | 功率级别 | 已验证 | |-------|---------|-------------|----------| | WiFi 信标洪泛 | `esp_wifi_set_max_tx_power(82)` + `WIFI_PS_NONE` | +20.5 dBm | 是 | | WiFi 反认证器 | `esp_wifi_set_max_tx_power(82)` + `WIFI_PS_NONE` | +20.5 dBm | 是 | | NRF24 (所有模式) | `RF24_PA_MAX` | +20 dBm (带 PA+LNA) | 是 | | CC1101 重放 | `setPA(12)` | +12 dBm | 是 | | CC1101 干扰器 | `setPA(12)` | +12 dBm | 是 | | CC1101 暴力破解 | `setPA(12)` | +12 dBm | 是 | | BLE (所有模式) | `ESP_PWR_LVL_P9` | +9 dBm | 是 | 纯被动模块 (数据包监视器、探测请求嗅探器、站点扫描器、BLE 扫描器) 不设置 TX 功率,因为它们仅接收。 ## SD 卡结构 插入 MicroSD 卡 (FAT32 格式) 用于数据捕获和 OTA 更新。 ``` /sd/ ├── eapol/ ← EAPOL/PMKID captures │ ├── target_handshake.hc22000 │ └── ... ├── wardriving/ ← GPS-tagged AP logs │ └── wardrive_20260215.csv └── firmware/ ← OTA update binaries └── halehound-cyd.bin ``` ## 预编译二进制文件 预编译固件二进制文件位于 `flash_package/` 文件夹中,供不想从源码构建的用户使用。 ### 单一二进制文件 —— 适用于所有开发板 一个固件二进制文件适用于所有 CYD 开发板,无论 LCD 面板方向如何。无需再猜测下载哪个旋转文件。 | 文件 | 烧录地址 | 描述 | |------|---------------|-------------| | `HaleHound-CYD-FULL.bin` | `0x0` | 完整镜像 —— 单文件,最简单的方法 | | `HaleHound-CYD.bin` | `0x10000` | 仅固件 —— 需要 3 个共享启动文件 | 如果刷机后显示屏倒置或侧向,请进入 **设置 > 旋转** 并选择正确的方向。触摸会自动重新校准。无需重新刷机。 ### 烧录方式 提供两种烧录方式。如果一种不工作,请尝试另一种。 | 方式 | 文件 | 备注 | |--------|-------|-------| | **单文件** | `HaleHound-CYD-FULL.bin` 于 `0x0` | 一个文件,适用于大多数开发板 | | **四文件** | `bootloader.bin` + `partitions.bin` + `boot_app0.bin` + `HaleHound-CYD.bin` | 适用于所有开发板,包括不兼容 DIO/QIO 的板子 | ### 使用 ESP Web Flasher 烧录 (免安装) 1. 在 **Chrome**、**Edge** 或 **Opera** 中打开 [esp.huhn.me](https://esp.huhn.me) (不支持 Firefox/Safari) 2. 点击 **Connect** 并选择您的 CYD 串口 3.单文件方法:** 设置地址 `0x0`,选择 `HaleHound-CYD-FULL.bin` 4. **四文件方法:** 添加所有四个条目: - `0x1000` → `bootloader.bin` - `0x8000` → `partitions.bin` - `0xe000` → `boot_app0.bin` - `0x10000` → `HaleHound-CYD.bin` 5. 点击 **Program** 并等待完成 6. 重新给 CYD 上电 (拔下并重新插入 USB) ### 使用 esptool 烧录 (命令行) ``` # 单文件方法 esptool.py --chip esp32 --baud 115200 write_flash 0x0 HaleHound-CYD-FULL.bin # 四文件方法 esptool.py --chip esp32 --baud 115200 write_flash \ 0x1000 bootloader.bin \ 0x8000 partitions.bin \ 0xe000 boot_app0.bin \ 0x10000 HaleHound-CYD.bin ``` ### 首次启动 首次启动时 (或刷机后),固件会自动运行触摸校准 —— 出现提示时点击 4 个角落的十字准心。如果显示屏方向错误,请进入 **设置 > 旋转** 进行修正。UI 仅支持竖屏模式。 ### CH340 USB 驱动 CYD 开发板使用 CH340 USB 转串口芯片。如果您的电脑无法识别开发板,请安装驱动: - **Windows:** [CH341SER.EXE](https://www.wch-ic.com/downloads/CH341SER_EXE.html) - **macOS:** [CH341SER_MAC.ZIP](https://www.wch-ic.com/downloads/CH341SER_MAC_ZIP.html) - **Linux:** 内核 5.x+ 内置 (无需安装) ### 预编译二进制文件故障排除 | 问题 | 解决方案 | |---------|----------| | 单文件刷机后黑屏 | 改用四文件方法 | | 显示屏侧向或倒置 | 进入 设置 > 旋转 并选择正确的方向 | | 触摸反向或偏移 | 在设置中更改旋转,或使用 工具 > 触摸校准 | | "Failed to connect" 错误 | 按住 BOOT 按钮同时点击 Program | | 浏览器不显示串口 | 使用 Chrome/Edge/Opera 并安装 CH340 驱动 | | 刷机完成但无法启动 | 先擦除 Flash:`esptool.py --chip esp32 erase_flash` 然后重刷 | 完整分步说明请参阅 `flash_package/FLASH_INSTRUCTIONS.txt`。 ## 从源码构建 ### 前置条件 - [PlatformIO](https://platformio.org/) (CLI 或 IDE) - Python 3.10-3.13 (3.14 需要 platform.py 补丁) - 连接到 CYD 的 USB 线 ### 构建 ``` # 2.8" CYD (默认) pio run -e esp32-cyd # 3.5" CYD pio run -e esp32-cyd-35 # E32R28T 变体 pio run -e esp32-e32r28t # NM-RF-Hat 变体 pio run -e esp32-cyd-hat ``` ### 烧录 ``` # 构建并上传 (2.8") pio run -e esp32-cyd --target upload # 构建并上传 (3.5") pio run -e esp32-cyd-35 --target upload # 如果串口未自动检测到: pio run -e esp32-cyd --target upload --upload-port /dev/cu.usbserial-0001 ``` ### 串口监视器 ``` pio device monitor -b 115200 ``` ### 一键命令 (构建 + 烧录 + 监视) ``` pio run -e esp32-cyd --target upload && pio device monitor -b 115200 ``` ### 分区方案 使用 `huge_app.csv` 分区方案以获得最大应用空间。由于攻击模块、图标和嵌入资源数量众多,固件体积较大。 ## 引脚参考表 ### 使用中的引脚 | GPIO | 功能 | 总线 | 接口 | 备注 | |------|----------|-----|-----------|-------| | 0 | BOOT 按钮 | - | PCB | 低电平有效,Strapping 引脚 | | 1 | USB 串口 TX | UART0 | P1 | 与 GPS TX 共享 (未使用) | | 2 | TFT DC | HSPI | PCB | 数据/命令选择 | | 3 | GPS RX / USB 串口 RX | UART2 | P1 | 共享 —— Serial.end() 变通方案 | | 4 | NRF24 CSN | VSPI | Wire | 原为 RGB 红色 LED | | 5 | SD 卡 CS | VSPI | PCB | 板载 MicroSD 插槽 | | 12 | TFT MISO | HSPI | PCB | 显示数据输入 | | 13 | TFT MOSI | HSPI | PCB | 显示数据输出 | | 14 | TFT SCLK | HSPI | PCB | 显示时钟 | | 15 | TFT CS | HSPI | PCB | 显示芯片选择 | | 16 | NRF24 CE | - | Wire | 原为 RGB 绿色 LED | | 17 | NRF24 IRQ | - | Wire | 原为 RGB 蓝色 LED (可选) | | 18 | VSPI SCK | VSPI | Wire | 共享:SD + CC1101 + NRF24 | | 19 | VSPI MISO | VSPI | Wire | 共享:SD + CC1101 + NRF24 | | 21 | TFT 背光 | PWM | PCB | PWM 通道 0 | | 22 | CC1101 GDO0 (TX) | - | P3 | 数据发往无线电 | | 23 | VSPI MOSI | VSPI | Wire | 共享:SD + CC1101 + NRF24 | | 25 | 触摸 CLK | Bit-bang | PCB | XPT2046 触摸 SPI | | 26 | 扬声器 / UART 监视器 | - | P4 | 8002A 功放输出 (仅 RX 串口) | | 27 | CC1101 CS | VSPI | CN1 | CC1101 芯片选择 | | 32 | 触摸 MOSI | Bit-bang | PCB | XPT2046 触摸 SPI | | 33 | 触摸 CS | Bit-bang | PCB | XPT2046 触摸芯片选择 | | 34 | LDR / 电池 ADC | ADC | PCB | 仅输入,可用 | | 35 | CC1101 GDO2 (RX) | - | P3 | 数据来自无线电 (仅输入) | | 36 | 触摸 IRQ | - | PCB | XPT2046 触摸中断 | | 39 | 触摸 MISO | Bit-bang | PCB | XPT2046 触摸 SPI (仅输入) | ### 不可用引脚 | GPIO | 原因 | |------|--------| | 6-11 | 连接至 SPI flash —— **切勿使用** | | 34, 36, 39 | 仅输入 —— 无内部上拉/下拉 | ### 功能标志 在 `cyd_config.h` 中设置: | 标志 | 默认值 | 含义 | |------|---------|---------| | `CYD_HAS_CC1101` | 1 | CC1101 SubGHz 无线电已连接 | | `CYD_HAS_NRF24` | 1 | NRF24L01+PA+LNA 已连接 | | `CYD_HAS_GPS` | 1 | GPS 模块已连接 | | `CYD_HAS_SDCARD` | 1 | SD 卡已启用 | | `CYD_HAS_RGB_LED` | 0 | 禁用 (引脚用于 NRF24) | | `CYD_HAS_SPEAKER` | 0 | 禁用 (GPIO 26 用于串口监视器) | | `CYD_HAS_PCF8574` | 0 | 无 I2C 按钮扩展器 (CYD 使用触摸) | | `CYD_HAS_SERIAL_MON` | 1 | UART 串口监视器已启用 | ## SPI 总线共享 三个设备共享 VSPI 总线 (GPIO 18/19/23)。`spi_manager` 模块处理互斥: ``` ┌────────────────────────────────────────────────────┐ │ SPI BUS ARBITRATION │ │ │ │ Before using any VSPI device: │ │ 1. Pull ALL CS pins HIGH (deselect all) │ │ GPIO 5 (SD) → HIGH │ │ GPIO 27 (CC1101) → HIGH │ │ GPIO 4 (NRF24) → HIGH │ │ 2. Pull target CS pin LOW (select one) │ │ 3. Perform SPI transaction │ │ 4. Pull target CS HIGH when done │ │ │ │ RULE: Only ONE device active at a time! │ │ Violating this corrupts data on all three. │ └────────────────────────────────────────────────────┘ ``` ## 已知问题 | 问题 | 状态 | 变通方案 | |-------|--------|------------| | GPIO 26 无法用于 GPS UART | 已确认 | 使用 GPIO 3 (P1)。GPIO 26 馈通 8002A 功放 IC | | GPS 与 USB 串口共享 GPIO 3 | 设计如此 | GPS 激活期间固件调用 Serial.end(),退出时恢复 | | RGB LED 不可用 | 设计如此 | 引脚重用于 NRF24 CE/CSN 和 PN532 CS | | 扬声器不可用 (2.8") | 设计如此 | GPIO 26 重用于串口监视器 RX | | 扬声器不可用 (3.5") | 设计如此 | GPIO 26 = 3.5" 上的 CC1101 CS | | Python 3.14 破坏 PlatformIO 构建 | Platform bug | 打补丁 `platform.py` 或使用 Python 3.10-3.13 | | NRF24+PA+LNA 随机重启 | 电源问题 | 在模块 VCC/GND 间增加 10uF 电容 | | CYD 板 LCD 面板方向不同 | 硬件差异 | 使用 设置 > 旋转 选择正确的竖屏方向 | | 触摸映射因 2.8" CYD 板而异 | 硬件差异 | 首次启动自动校准;通过 工具 → 触摸校准 重新校准 | | PN532 使用 LSBFIRST SPI | 设计如此 | Adafruit 库在 beginTransaction 中处理字节顺序;SPI 管理器解决总线冲突 | ## 项目结构 ``` HaleHound-CYD/ ├── HaleHound-CYD.ino ......... Main firmware, menus, setup/loop ├── cyd_config.h ............... Master pin configuration ├── shared.h ................... Color palette, state variables ├── platformio.ini ............. Build configuration ├── User_Setup.h ............... TFT_eSPI display driver config │ ├── wifi_attacks.cpp/h ......... Packet Mon, Beacon, Deauth, Probe, │ WiFi Scan, Captive Portal, Station Scan ├── bluetooth_attacks.cpp/h .... BLE Jammer, Spoofer, Beacon, Sniffer, Scanner ├── nrf24_attacks.cpp/h ........ Scanner, Analyzer, WLAN Jammer, Proto Kill ├── nrf24_config.cpp/h ......... NRF24 initialization and SPI setup ├── subghz_attacks.cpp/h ....... Replay, Brute Force, Jammer, Analyzer ├── subconfig.cpp/h ............ CC1101 initialization and SPI setup │ ├── rfid_attacks.cpp/h ......... PN532 NFC Scanner, Reader, Clone, Brute, Emulator │ ├── eapol_capture.cpp/h ........ EAPOL/PMKID handshake capture ├── karma_attack.cpp/h ......... Karma AP auto-respond attack ├── wardriving.cpp/h ........... GPS-tagged AP scan engine ├── wardriving_screen.cpp/h .... Wardriving display and UI ├── saved_captures.cpp/h ....... Browse saved handshakes on SD ├── jam_detect.cpp/h ........... WiFi/BLE/SubGHz jam detection │ ├── radio_test.cpp/h ........... SPI radio diagnostics + wiring diagrams ├── gps_module.cpp/h ........... GPS setup, NMEA parsing, display ├── gps.h ...................... GPS type definitions ├── serial_monitor.cpp/h ....... UART passthrough terminal ├── firmware_update.cpp/h ...... OTA update from SD card │ ├── touch_buttons.cpp/h ........ Touch input, zones, calibration ├── CYD28_TouchscreenR.cpp/h ... Custom XPT2046 driver (polling mode) ├── spi_manager.cpp/h .......... VSPI bus arbitration ├── utils.cpp/h ................ Glitch text, centered text, helpers │ ├── icon.h ..................... Menu and module icon bitmaps ├── skull_bg.h ................. Skull watermark background bitmap ├── nuke_icon.h ................ NUKE cloud animation icon ├── nosifer_font.h ............. Custom Nosifer font (3 sizes) ├── portal_pages.h ............. Captive portal HTML pages │ └── .pio/ ...................... PlatformIO build artifacts └── libdeps/esp32-cyd/ ..... Auto-downloaded libraries ``` ## 库 由 PlatformIO 管理 (`platformio.ini` 中的 `lib_deps`): | 库 | 版本 | 用途 | |---------|---------|---------| | TFT_eSPI | ^2.5.43 | ILI9341 显示驱动 | | ArduinoJson | ^7.0.0 | 用于配置/配置文件的 JSON 解析 | | TinyGPSPlus | ^1.0.3 | NMEA GPS 语句解析 | | EspSoftwareSerial | ^8.2.0 | GPS 软串口 | | rc-switch | ^2.6.4 | SubGHz 协议编码/解码 | | arduinoFFT | ^2.0.2 | 频谱分析仪 FFT | | RF24 | ^1.4.9 | NRF24L01 驱动 | | XPT2046_Touchscreen | git | 触摸控制器驱动 | | SmartRC-CC1101-Driver-Lib | ^2.5.7 | CC1101 无线电驱动 | ## 致谢 **HaleHound-CYD** 由 [JesseCHale](https://github.com/JesseCHale) 开发 基于 ESP32-DIV 项目。HaleHound 版包含 8 项新功能、17 个错误修复、硬件引脚修正 (CC1101 TX/RX 交换修复)、全触摸屏支持、SIGINT 套件以及 CYD 硬件移植。 GitHub: [github.com/JesseCHale/HaleHound-CYD](https://github.com/JesseCHale/HaleHound-CYD) ### 社区贡献者 **Duggie** — Lunatic Fringe 概念,EAPOL 返回按钮 bug 报告 *我打造了它。*
标签:Cheap Yellow Display, CYD, ESP32, HaleHound, UML, Wi-Fi安全, 便携式渗透设备, 信号分析, 多协议安全工具, 安全测试, 嵌入式安全, 提示词注入, 攻击性安全, 物联网安全, 硬件黑客, 蓝牙安全