Commit Graph

7 Commits

Author SHA1 Message Date
drjones
804e71e175 handshake-capture-c6: production SD gating (SD_IsReady), v1.0.1
- Gate capture on SD_IsReady() after successful SD_Init; avoid false
  'insert SD' when SD.cardType() lies after WiFi on shared SPI with LCD
- SD_Init: LCD CS high, SD.end() on empty card; HandshakeCapture save path
  retries SD_Init before discard
- FAT filename sanitize, discard deadlocks, WPA3 scan labels, docs (README,
  PRODUCTION, IMPROVEMENTS), firmware version 1.0.1

Made-with: Cursor
2026-03-21 01:12:12 -07:00
drjones
4bef28bd83 Improve capture performance: shorter RX lock, PMKID-first save, channel sweep
- Reduce time spent in capture spinlock by snapshotting slot BSSIDs and
  only locking for shared-state updates
- Add PMKID KDE detection to save on EAPOL M1 when present
- Sweep channels with remaining WPA targets instead of camping one channel

Made-with: Cursor
2026-03-17 23:19:58 -07:00
drjones
ec3e0449a1 Add live capture visuals: progress bar, blinking active targets, per-network state
- Progress bar under status line shows captured/total WPA targets
- Three visual states per network:
  Green (pending) -> Orange blinking (active target) -> Red + checkmark (captured)
- Active targets show live info: client count during observation,
  EAPOL progress during capture (e.g. " NetworkName 1/2")
- Status line shows channel number and phase context
- LVGL symbols: lightning bolt for active, checkmark for captured
- Title updated to " Capture" with WiFi icon

Made-with: Cursor
2026-03-17 22:25:46 -07:00
drjones
09f1a7969e Clean up repo: remove vendor dirs, stray images, simplify gitignore
Made-with: Cursor
2026-03-17 22:12:56 -07:00
drjones
50338a6d5c Implement 4-phase capture architecture: observe, target, capture
- Phase 2 (Observation): passive client mapping from data frame headers,
  ClientInfo array per slot (up to 8 clients), 5s observation window
- Phase 3 (Targeting): unicast deauth burst to each discovered client
  instead of broadcast, reason code 7, 5 frames per client
- Phase 4 (Capture): timeout + retry loop cycles back to observation
  to refresh stale client list (2 cycles within 30s channel timeout)
- Fix EAPOL detection: compute LLC/SNAP offset from QoS vs non-QoS
  header length, verify AA-AA-03 SNAP prefix, skip protected frames
- Concurrency: portMUX spinlock for callback/main-loop shared state,
  no dynamic alloc in callback, pre-allocated 4KB PCAP buffer per slot
- Phase-aware LCD status display (mapping → capturing → EAPOL count)

Made-with: Cursor
2026-03-17 22:11:41 -07:00
drjones
74236ef884 Remove vendor/reference dirs, add README
Made-with: Cursor
2026-03-17 20:08:56 -07:00
drjones
026f15a4a7 Initial commit: handshake capture firmware for ESP32-C6 1.47" LCD
Made-with: Cursor
2026-03-17 20:07:32 -07:00