51 lines
1.5 KiB
C
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
|