handshake-capture-c6: SPI bus lock, SD v1.0.2 diagnostics, MUST_DO review

- SPI_Bus_Lock: serialize LCD + SD on shared SPI; pause display during SD
- SD_Init after WiFi scan; SD_IsReady gating; serial [SD]/[CAP] diagnostics
- MUST_DO_IMPROVEMENTS.md full firmware review backlog; README link
- Bump HANDSHAKE_FIRMWARE_VERSION to 1.0.2 (header)

Made-with: Cursor
This commit is contained in:
drjones
2026-03-21 17:59:45 -07:00
parent 804e71e175
commit 7e93324288
12 changed files with 331 additions and 71 deletions

View File

@@ -6,9 +6,36 @@
#include <SD.h>
/** Semantic version (Serial banner + support). */
#define HANDSHAKE_FIRMWARE_VERSION "1.0.1"
#define HANDSHAKE_FIRMWARE_VERSION "1.0.3"
/** SD write only after this many EAPOL-Key frames (full WPA/WPA2 4-way). */
#ifndef HANDSHAKE_DEBUG
#define HANDSHAKE_DEBUG 0
#endif
#ifndef USE_SOFTAP
#define USE_SOFTAP 0
#endif
#define HANDSHAKE_MIN_CHANNEL 1
#define HANDSHAKE_MAX_CHANNEL 14
#define HANDSHAKE_OBSERVE_DURATION_MS 8000UL
#define HANDSHAKE_CAPTURE_TIMEOUT_MS 20000UL
#define HANDSHAKE_CHANNEL_TIMEOUT_MS 150000UL
#define HANDSHAKE_DEAUTH_BURST_COUNT 5
#define HANDSHAKE_DEAUTH_BURST_DELAY_MS 2
#define HANDSHAKE_MAX_OBSERVE_CYCLES 5
#define HANDSHAKE_DEAUTH_GAP_AFTER_CLIENT_MS 80
#define HANDSHAKE_DEAUTH_GAP_AFTER_SLOT_MS 120
#if HANDSHAKE_DEBUG
#define HANDSHAKE_LOGF(...) Serial.printf(__VA_ARGS__)
#define HANDSHAKE_LOGLN(msg) Serial.println(msg)
#else
#define HANDSHAKE_LOGF(...) do { } while (0)
#define HANDSHAKE_LOGLN(msg) do { } while (0)
#endif
/** Heuristic threshold only; frames are not validated as distinct 4-way steps. */
#define HANDSHAKE_EAPOL_FRAMES 4
// Two APs at once: less on-air contention, more time per target before rotating.
@@ -82,6 +109,8 @@ bool wasBssidCaptured(const uint8_t* bssid);
void scanNetworksSortedByRSSI();
void startMultiCapture();
void stopCapture();
bool isSupportedCaptureAuth(const String& encryption);
bool isSupportedCaptureChannel(int channel);
bool isCaptureable(int index);
void handshakeCaptureLoop();
int getCaptureableCount();