Skip to content

JesseCHale/HaleHound-CYD

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

4 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

              _                                                   _
         .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

Multi-protocol offensive security toolkit for the ESP32 Cheap Yellow Display

Version v3.5.5 | By JesseCHale | HaleHound.com


What Is This

40+ attack modules across WiFi, Bluetooth, SubGHz, 2.4GHz, and NFC β€” all running on a $7 touchscreen dev board. External CC1101, NRF24L01+PA+LNA, PN532, and GPS modules plug into the CYD's breakout pins. Everything is touch-driven. All radios transmit at maximum power. No safety nets.


Supported Boards

Board Build Target Display Touch Status
ESP32-2432S028 (2.8") esp32-cyd ILI9341 240x320 XPT2046 Resistive Fully Tested
QDtech E32R35T (3.5") esp32-e32r35t ST7796 320x480 XPT2046 Resistive Fully Tested
QDtech E32R28T (2.8") esp32-e32r28t ILI9341 240x320 XPT2046 Resistive Fully Tested
NM-RF-Hat (2.8") esp32-cyd-hat ILI9341 240x320 XPT2046 Resistive Supported

All UI scales automatically between 240x320 and 320x480. Pick your board, flash, done.


Hardware

Required

Module What It Does
CYD board (any above) Base platform β€” ESP32 + touchscreen + SD card
CC1101 (HW-863 or E07-433M20S) SubGHz radio: 300-928 MHz capture, replay, jam, brute force
NRF24L01+PA+LNA 2.4GHz radio: BLE jam, WLAN jam, MouseJack, spectrum analysis
PN532 V3 (Elechouse, SPI mode) NFC/RFID: card scan, read, clone, brute force, emulate
GPS (GT-U7 or NEO-6M) Wardriving, Flock You geolocation, live satellite view

Also Required: Independent 3.3V Power for Ebyte Modules

The Ebyte PA modules (E07-433M20S and E01-2G4M27SX) draw too much current for the CYD's onboard 3.3V regulator. You must power them from a separate 5V→3.3V buck converter. Tap 5V from USB and step it down to 3.3V independently — do not share the CYD's 3.3V rail or you'll get brownouts, random resets, and failed radio init.

Part Example
5V→3.3V buck converter AMS1117-3.3 module, MP2307, or any 3.3V reg rated 500mA+
Input 5V from USB VBUS (before the CYD's regulator)
Output 3.3V to E07 VCC and E01 VCC independently
Ground Common ground with CYD β€” all GNDs must tie together

The signal wires (SPI, CS, CE, GDO0, GDO2, TX_EN, RX_EN) still connect directly to ESP32 GPIOs β€” only VCC gets the independent supply.

Optional

Component Why
E07-433M20S PA module 20dBm amplified SubGHz β€” serious range upgrade over stock CC1101
10uF capacitor Across NRF24 VCC/GND β€” stops random resets on PA+LNA modules
MicroSD card (FAT32) Loot storage, .sub files, wardriving logs, OTA updates
LiPo battery + boost Portable operation

Menu Tree

HALEHOUND-CYD v3.5.5
β”‚
β”œβ”€β”€ WiFi
β”‚   β”œβ”€β”€ Packet Monitor         Real-time 802.11 frame capture + graph
β”‚   β”œβ”€β”€ Beacon Spammer         Flood fake SSIDs
β”‚   β”œβ”€β”€ WiFi Deauther          Scan β†’ tap β†’ disconnect all clients
β”‚   β”œβ”€β”€ Probe Sniffer          Capture probes β†’ auto-spawn Evil Twin
β”‚   β”œβ”€β”€ WiFi Scanner           Scan APs β†’ tap to Deauth or Clone
β”‚   β”œβ”€β”€ Captive Portal         GARMR Evil Twin credential harvester
β”‚   β”œβ”€β”€ Station Scanner        Find connected clients + deauth handoff
β”‚   └── Auth Flood             Flood AP with auth frames from random MACs
β”‚
β”œβ”€β”€ Bluetooth
β”‚   β”œβ”€β”€ BLE Jammer             NRF24 flood on BLE ad channels 37/38/39
β”‚   β”œβ”€β”€ BLE Spoofer            Multi-platform BLE pairing spam
β”‚   β”œβ”€β”€ BLE Beacon             Custom iBeacon / Eddystone broadcast
β”‚   β”œβ”€β”€ BLE Predator           GATT recon β†’ clone device β†’ honeypot trap
β”‚   β”œβ”€β”€ WhisperPair            CVE-2025-36911 β€” Fast Pair exploit
β”‚   β”œβ”€β”€ Airoha RACE            CVE-2025-20700 β€” link key extraction
β”‚   └── Lunatic Fringe ──┐
β”‚       β”œβ”€β”€ Tracker Scan  β”‚    Multi-platform BLE tracker scanner
β”‚       β”œβ”€β”€ AirTag Detect β”‚    Apple FindMy tracker detection
β”‚       β”œβ”€β”€ Phantom Flood β”‚    Fake FindMy advertisement flood
β”‚       └── AirTag Replay β”‚    Sniff + replay real AirTag identity
β”‚
β”œβ”€β”€ 2.4GHz (NRF24)
β”‚   β”œβ”€β”€ Scanner                Channel activity across 2400-2525 MHz
β”‚   β”œβ”€β”€ Spectrum Analyzer      Visual RF spectrum + AP-locked zoom
β”‚   β”œβ”€β”€ NRF Sniffer            Promiscuous packet capture (Goodspeed)
β”‚   β”œβ”€β”€ MouseJack              Wireless keyboard keystroke injection
β”‚   β”œβ”€β”€ WLAN Jammer            Broadband 2.4GHz disruption
β”‚   └── Proto Kill             Multi-protocol 2.4GHz attack suite
β”‚
β”œβ”€β”€ SubGHz (CC1101)
β”‚   β”œβ”€β”€ Replay Attack          Record + replay RF signals (300-928 MHz)
β”‚   β”œβ”€β”€ Brute Force            Automated code gen (Princeton/CAME/Nice/PT2262)
β”‚   β”œβ”€β”€ SubGHz Jammer          Wideband SubGHz disruption
β”‚   β”œβ”€β”€ Spectrum Analyzer      SubGHz RF spectrum display
β”‚   β”œβ”€β”€ Saved Profile          Load saved signals from SD
β”‚   β”œβ”€β”€ Tesla Charge           Open any Tesla charge port (US/EU/BOTH)
β”‚   └── .Sub Read              Flipper .sub file browser + transmitter
β”‚
β”œβ”€β”€ RFID (PN532)
β”‚   β”œβ”€β”€ Card Scanner           Detect + identify NFC/RFID cards
β”‚   β”œβ”€β”€ Card Reader            MIFARE sector data dump
β”‚   β”œβ”€β”€ Card Clone             Clone UID to writable card
β”‚   β”œβ”€β”€ Key Brute Force        MIFARE key A/B brute force
β”‚   └── Card Emulate           Replay captured card UID
β”‚
β”œβ”€β”€ Jam Detect
β”‚   β”œβ”€β”€ WiFi Guardian          Detect deauth floods
β”‚   β”œβ”€β”€ SubGHz Sentinel        Detect SubGHz carrier jamming
β”‚   β”œβ”€β”€ 2.4GHz Watchdog        Detect broadband 2.4GHz jamming
β”‚   └── Full Spectrum          All bands simultaneously
β”‚
β”œβ”€β”€ SIGINT
β”‚   β”œβ”€β”€ EAPOL Capture          WPA handshake + PMKID capture
β”‚   β”œβ”€β”€ Karma Attack           Auto-respond to all probes β†’ portal
β”‚   β”œβ”€β”€ Wardriving             GPS-tagged AP scanning to SD
β”‚   β”œβ”€β”€ Saved Captures         Browse captured handshakes
β”‚   β”œβ”€β”€ IoT Recon              Automated LAN scanner + credential brute
β”‚   β”œβ”€β”€ Loot                   Unified loot browser (5 categories)
β”‚   └── Flock You              Flock Safety ALPR camera detector
β”‚
β”œβ”€β”€ Tools
β”‚   β”œβ”€β”€ Serial Monitor         UART passthrough terminal
β”‚   β”œβ”€β”€ Update Firmware        OTA flash from SD card
β”‚   β”œβ”€β”€ Touch Calibrate        4-corner calibration tool
β”‚   β”œβ”€β”€ GPS                    Live satellite view + NMEA data
β”‚   └── Radio Test             Hardware verification + wiring diagrams
β”‚
β”œβ”€β”€ Settings
β”‚   β”œβ”€β”€ Brightness             Backlight PWM (10-255)
β”‚   β”œβ”€β”€ Screen Timeout         30s / 1m / 2m / 5m / 10m / Never
β”‚   β”œβ”€β”€ Swap Colors            BGR ↔ RGB panel toggle
β”‚   β”œβ”€β”€ Invert Display         Inverted color toggle
β”‚   β”œβ”€β”€ Color Mode             Default / Colorblind / High Contrast
β”‚   β”œβ”€β”€ Rotation               0Β° / 180Β° / 90Β° CW / 90Β° CCW
β”‚   β”œβ”€β”€ Device Info            Heap, CPU, flash, board name
β”‚   β”œβ”€β”€ Set PIN                4-digit boot lock
β”‚   └── CC1101 Module          Standard HW-863 ↔ E07 PA module
β”‚
└── About
    └── Firmware info + armed module list

Feature Highlights

WiFi

All WiFi attacks use the ESP32's built-in radio β€” no external hardware. APSTA mode: STA scans, AP injects raw frames. Max TX at +20.5 dBm.

  • Deauther β€” Scan, tap a target, flood deauth frames. WiFi Scanner has tap-to-deauth built in.
  • Probe Sniffer β†’ Evil Twin β€” Capture what devices are looking for, then become that network. Auto-spawns GARMR captive portal with the probed SSID.
  • Auth Flood β€” Random MAC auth frame flood. Exhausts AP client tables. 85-bar equalizer shows attack rhythm.
  • Captive Portal (GARMR) β€” Fake AP + DNS hijack + credential harvest page. Works standalone or chained from Probe Sniffer / WiFi Scanner.

Bluetooth

All BLE uses the ESP32's built-in Bluetooth. Proper WiFi↔BLE radio teardown handled automatically.

  • BLE Predator β€” Three phases: SCAN (discover + threat classify), RECON (GATT enumerate all services/chars), HONEYPOT (clone as connectable server, capture credentials on WRITE). Loot saved to SD.
  • Airoha RACE β€” CVE-2025-20700/20701/20702. Unauthenticated BLE GATT access to Airoha chipsets (Sony XM4/XM5/XM6, Marshall, JBL, Jabra, etc). Extracts Bluetooth link keys, BD_ADDR, firmware version, flash memory. No pairing required.
  • WhisperPair β€” CVE-2025-36911. Probes Google Fast Pair devices for unauthorized pairing vulnerability.
  • Lunatic Fringe β€” Hub for tracker detection and attacks. Scans for AirTags, Samsung SmartTags, Tile, Chipolo, Google FMDN. Phantom Flood spams fake FindMy trackers. AirTag Replay clones real AirTag identities.

2.4GHz (NRF24)

External NRF24L01+PA+LNA required. All modes at RF24_PA_MAX (+20 dBm with PA module).

  • NRF Sniffer β€” Travis Goodspeed promiscuous mode. Captures raw packets from wireless keyboards, mice, drones. Tap a captured address β†’ auto-populates MouseJack.
  • MouseJack β€” Keystroke injection into Logitech Unifying, Dell, Microsoft wireless keyboards. HID++ packets, pre-built payloads (reverse shell, WiFi exfil, custom string).
  • WLAN Jammer / Proto Kill β€” Broadband 2.4GHz disruption. Affects WiFi, BLE, Zigbee, wireless peripherals, drones.

SubGHz (CC1101)

External CC1101 required. All TX at setPA(12) max power. Optional E07-433M20S PA module for 20dBm amplified output.

  • Replay Attack β€” Record and replay SubGHz signals. RSSI gating, drain loop, repeat validation. Save profiles to SD.
  • Brute Force β€” Automated code generation with de Bruijn sequences. Princeton, CAME, Nice FLO, PT2262.
  • Tesla Charge β€” Opens the charge port on any Tesla. Static 43-byte OOK payload, zero authentication, zero rolling code. Works on every Tesla ever made. US (315 MHz), EU (433.92 MHz), or both.
  • .Sub Read β€” Browse and transmit Flipper Zero .sub files from SD card. Supports RAW, Princeton, CAME, Nice FLO across full CC1101 frequency range. No .sub files required β€” shows empty state if folder is missing. Drop files in /subghz/ when you have them.

RFID (PN532)

External PN532 V3 in SPI mode. Scan, read, clone, brute force, and emulate MIFARE Classic cards.

Jam Detect

Defensive modules. WiFi Guardian catches deauth floods, SubGHz Sentinel detects carrier jamming, 2.4GHz Watchdog spots broadband disruption, Full Spectrum monitors all bands at once.

SIGINT

  • EAPOL Capture β€” WPA 4-way handshake + PMKID extraction. Deauth to force reauth, capture, save in hashcat format.
  • Karma Attack β€” Auto-respond to every probe request, chain into captive portal for credential harvest.
  • IoT Recon β€” Connect to WiFi, scan the subnet, fingerprint services (HTTP, RTSP, Telnet, MQTT, Modbus, XMEye), brute force default credentials. Dual-core: networking on Core 0, UI on Core 1. Drop custom creds in /creds.txt on SD.
  • Flock You β€” Passive detection of Flock Safety ALPR cameras and Raven/ShotSpotter sensors via BLE fingerprinting. 22 OUI prefixes, 8 Raven GATT service UUIDs, firmware version estimation. GPS-tagged saves to SD.
  • Loot β€” Unified browser for all captured data: wardriving CSVs, EAPOL handshakes, WhisperPair/BLE Predator loot, IoT Recon reports, credentials.

VALHALLA Protocol

Every offensive module is gated behind a liability disclaimer. Accept to unlock offensive tools, decline to enter Blue Team mode β€” defensive and passive modules only. Blue Team mode persists across reboots. The VALHALLA/BLUE TEAM banner on the home screen shows your current mode.


Wiring

All external radios share the VSPI bus (GPIO 18/19/23) with the built-in SD card. Only one device talks at a time β€” the SPI manager handles bus arbitration automatically. The Radio Test module (Tools > Radio Test) also has 4-page visual wiring diagrams built into the firmware.

Note: CiferTech's original firmware had CC1101 TX/RX pins swapped. HaleHound corrects this β€” GDO0 is TX (to radio), GDO2 is RX (from radio).

CC1101 SubGHz Radio

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”              β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚    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)  β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜              β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

E32R28T / E32R35T: CC1101 CS moves to GPIO 21 (GPIO 27 is backlight on 3.5"). All other pins identical.

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)β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜              β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

E32R28T / E32R35T: NRF24 CSN moves to GPIO 26 (GPIO 4 used for CC1101 PA TX_EN). CE and IRQ stay the same.

10uF capacitor between VCC/GND at the NRF24 module if you get random resets.

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 Switches: CH1=OFF, CH2=ON for SPI mode.

GPS Module

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”              β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚    GT-U7         β”‚              β”‚  CYD P1 Connector β”‚
β”‚    GPS           β”‚              β”‚  (JST header)     β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€              β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚ VCC ─────────────┼─────────────── VIN               β”‚
β”‚ GND ─────────────┼─────────────── GND               β”‚
β”‚ TX ──────────────┼─────────────── RX (GPIO 3)       β”‚
β”‚ RX (not used) ───┼─────────────── TX (GPIO 1)       β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜              β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

USB Conflict: GPIO 3 is shared with USB serial RX. Firmware calls Serial.end() during GPS, restores on exit.

E07-433M20S PA Module (Optional Amplified SubGHz)

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”              β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚ E07-433M20S      β”‚              β”‚  E32R28T/E32R35T  β”‚
β”‚ (CC1101 + PA)    β”‚              β”‚    ESP32          β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€              β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚ VCC ─────────────┼── 3.3V BUCK ── (NOT CYD 3.3V!)  β”‚
β”‚ GND ─────────────┼─────────────── GND (common)      β”‚
β”‚ SCK ─────────────┼─────────────── GPIO 18 (VSPI)    β”‚
β”‚ MOSI ────────────┼─────────────── GPIO 23 (VSPI)    β”‚
β”‚ MISO ────────────┼─────────────── GPIO 19 (VSPI)    β”‚
β”‚ CS ──────────────┼─────────────── GPIO 21            β”‚
β”‚ GDO0 (TX) ───────┼─────────────── GPIO 22            β”‚
β”‚ GDO2 (RX) ───────┼─────────────── GPIO 35            β”‚
β”‚ TX_EN ───────────┼─────────────── GPIO 4             β”‚
β”‚ RX_EN ───────────┼─────────────── GPIO 0             β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜              β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Must be powered from an independent 5V→3.3V buck converter — not the CYD's 3.3V rail. The PA module draws too much current. Same applies to the NRF24 E01-2G4M27SX. Enable PA mode in Settings > CC1101 Module. E32R28T/E32R35T only.


SD Card

FAT32 formatted MicroSD. Nothing is required β€” every module handles missing folders gracefully.

/sd/
β”œβ”€β”€ subghz/         .sub files for Sub Read (organize into subfolders)
β”œβ”€β”€ eapol/          EAPOL/PMKID captures
β”œβ”€β”€ wardriving/     GPS-tagged AP logs
β”œβ”€β”€ wp_loot/        WhisperPair + BLE Predator loot
β”œβ”€β”€ loot/           Flock You detection logs
β”œβ”€β”€ creds.txt       Custom credentials for IoT Recon (optional)
β”œβ”€β”€ iot_recon.txt   IoT Recon attack reports
└── firmware/       OTA update .bin files

Flash β€” Pre-Compiled Binaries

Pre-built firmware is in the flash_package/ folder. One binary per board.

Easiest Method

Flash HaleHound-<board>-FULL.bin at address 0x0.

Web Flasher (No Install)

  1. Open esp.huhn.me in Chrome/Edge/Opera
  2. Connect β†’ select your CYD serial port
  3. Set address 0x0, select the FULL.bin for your board
  4. Program β†’ power cycle

esptool

esptool.py --chip esp32 --baud 115200 write_flash 0x0 HaleHound-CYD-FULL.bin

Four-File Method (Fallback)

If single-file gives a black screen:

Address File
0x1000 bootloader.bin
0x8000 partitions.bin
0xe000 boot_app0.bin
0x10000 HaleHound-<board>.bin

First Boot

Touch calibration runs automatically on first boot. Tap the 4 corner crosshairs. If display orientation is wrong, fix it in Settings > Rotation β€” no reflash needed.

CH340 Driver

CYD boards use CH340 USB serial. Install if your computer doesn't see the board:


Build from Source

# Install PlatformIO, plug in CYD, then:

pio run -e esp32-cyd --target upload          # 2.8" CYD
pio run -e esp32-e32r35t --target upload      # E32R35T 3.5"
pio run -e esp32-e32r28t --target upload      # E32R28T
pio run -e esp32-cyd-hat --target upload      # NM-RF-Hat

# Serial monitor
pio device monitor -b 115200

Requires Python 3.10-3.13 (3.14 needs a platform.py patch).


TX Power

Every attack radio runs at max.

Radio Power
WiFi (ESP32) +20.5 dBm
NRF24+PA+LNA +20 dBm
CC1101 +12 dBm (stock) / +20 dBm (E07 PA)
BLE (ESP32) +9 dBm

Known Issues

Issue Fix
NRF24 random resets Solder 10uF cap across VCC/GND at module
GPS shares GPIO 3 with USB serial Firmware handles this β€” Serial.end() during GPS
Display upside-down after flash Settings > Rotation
Touch offset after flash Auto-calibrates first boot, or Tools > Touch Calibrate
Python 3.14 breaks PlatformIO Use 3.10-3.13 or patch platform.py

Credits

HaleHound-CYD by JesseCHale

Community

This project exists because of the people who use it, break it, and tell me what to build next.

Duggie (@duggie162-cpu)

  • Radio Test upgrade source code (NRF24 spectrum scan, CC1101 signal detection, GPS test)
  • RFID module recommendation

@CircuitZ β€” IoT Recon idea

@ValleytechSolutions β€” Jam Detect concept

@duggie162-cpu, @ValleytechSolutions, @TalkingSasquach, @Notorious-Squirrel, @Man-In-The-Mayhem, @hamspiced β€” The efforts and ideas that created the OPSEC of the HaleHound


GitHub: github.com/JesseCHale/HaleHound-CYD

I built this.

About

ESP32-DIV HaleHound Edition for Cheap Yellow Display - Multi-protocol offensive security toolkit

Topics

Resources

License

Stars

Watchers

Forks

Sponsor this project

Packages