/** * @file frame_analyzer.h * @brief Frame analyzer for 802.11 EAPOL/Handshake capture */ #ifndef FRAME_ANALYZER_H #define FRAME_ANALYZER_H #include #include #include "esp_wifi.h" #include "frame_analyzer_types.h" // Initialize frame analyzer void frame_analyzer_init(void); // Start/Stop capture for specific BSSID void frame_analyzer_capture_start(search_type_t search_type, const uint8_t *bssid, const uint8_t *ssid, uint8_t ssid_len); void frame_analyzer_capture_stop(void); // Parse EAPOL packet from data frame eapol_packet_t* parse_eapol_packet(data_frame_t *frame); // Parse EAPOL-Key packet from EAPOL packet eapol_key_packet_t* parse_eapol_key_packet(eapol_packet_t *eapol_packet); // Parse PMKIDs from EAPOL-Key packet pmkid_item_t* parse_pmkid(eapol_key_packet_t *eapol_key_packet); // Check if frame BSSID matches target bool is_frame_bssid_matching(const wifi_promiscuous_pkt_t *frame, const uint8_t *target_bssid); // Process captured frame (called by sniffer callback) void frame_analyzer_process_frame(wifi_promiscuous_pkt_t *pkt, wifi_promiscuous_pkt_type_t type); // Get current handshake state handshake_state_t frame_analyzer_get_handshake_state(void); // Get captured handshake data const handshake_data_t* frame_analyzer_get_handshake(void); // Check if handshake is complete bool frame_analyzer_handshake_complete(void); // Get captured PMKIDs pmkid_item_t* frame_analyzer_get_pmkids(void); // Reset capture state void frame_analyzer_reset(void); #endif // FRAME_ANALYZER_H