Files
c5-project/ESP32-C5-Toolkit/main/frame_analyzer.h
2026-05-03 23:19:51 -07:00

51 lines
1.5 KiB
C

/**
* @file frame_analyzer.h
* @brief Frame analyzer for 802.11 EAPOL/Handshake capture
*/
#ifndef FRAME_ANALYZER_H
#define FRAME_ANALYZER_H
#include <stdint.h>
#include <stdbool.h>
#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