/** * @file handshake_capture.h * @brief WPA/WPA2 Handshake and PMKID capture with dual-radio support * * ESP32-C5 Dual Radio Enhancement: * - Radio 1 (2.4GHz): Dedicated to sniffing/capturing * - Radio 2 (5GHz or same band): Deauth attacks to force reconnection * * This allows simultaneous capture and attack for maximum efficiency */ #ifndef HANDSHAKE_CAPTURE_H #define HANDSHAKE_CAPTURE_H #include #include #include "esp_wifi.h" #include "frame_analyzer_types.h" // Capture configuration typedef struct { uint8_t bssid[6]; // Target AP BSSID uint8_t ssid[33]; // Target AP SSID uint8_t ssid_len; // SSID length uint8_t channel; // Target channel uint32_t timeout_sec; // Capture timeout in seconds capture_method_t method; // Capture method bool use_dual_radio; // Use both radios (if available) uint8_t deauth_interval_ms; // Deauth packet interval (default 100ms) uint8_t deauth_count; // Deauth packets per burst (default 5) } capture_config_t; // Capture status typedef struct { attack_state_t state; handshake_state_t handshake_state; bool handshake_captured; bool pmkid_captured; uint32_t packets_captured; uint32_t eapol_packets; uint32_t deauth_sent; uint32_t elapsed_sec; char target_ssid[33]; uint8_t target_bssid[6]; } capture_status_t; // Initialize handshake capture module void handshake_capture_init(void); // Start handshake capture bool handshake_capture_start(const capture_config_t *config); // Start PMKID capture bool pmkid_capture_start(const capture_config_t *config); // Stop capture bool handshake_capture_stop(void); // Check if capture is running bool handshake_capture_is_running(void); // Get capture status const capture_status_t* handshake_capture_get_status(void); // Get captured handshake data const handshake_data_t* handshake_capture_get_handshake(void); // Get captured PMKIDs pmkid_item_t* handshake_capture_get_pmkids(void); // Get PCAP buffer for download uint8_t* handshake_capture_get_pcap(unsigned *size); // Get HCCAPX buffer for download uint8_t* handshake_capture_get_hccapx(unsigned *size); // Reset capture state void handshake_capture_reset(void); // Utility: Get AP record by SSID const wifi_ap_record_t* handshake_capture_find_ap(const char *ssid); // Utility: Scan and get AP list for target selection int handshake_capture_scan_targets(void); #endif // HANDSHAKE_CAPTURE_H