9#ifndef _DOT11DECRYPT_SYSTEM_H
10#define _DOT11DECRYPT_SYSTEM_H
16#define DOT11DECRYPT_RET_SUCCESS 0
17#define DOT11DECRYPT_RET_UNSUCCESS 1
19#define DOT11DECRYPT_RET_NO_DATA 1
20#define DOT11DECRYPT_RET_WRONG_DATA_SIZE 2
21#define DOT11DECRYPT_RET_REQ_DATA 3
22#define DOT11DECRYPT_RET_NO_VALID_HANDSHAKE 4
23#define DOT11DECRYPT_RET_NO_DATA_ENCRYPTED 5
25#define DOT11DECRYPT_RET_SUCCESS_HANDSHAKE -1
27#define DOT11DECRYPT_MAX_KEYS_NR 64
30#define DOT11DECRYPT_WPA_NONCE_LEN 32
31#define DOT11DECRYPT_WPA_PTK_MAX_LEN 96
32#define DOT11DECRYPT_WPA_MICKEY_MAX_LEN 32
34#define DOT11DECRYPT_WEP_128_KEY_LEN 16
37#define DOT11DECRYPT_MAC_LEN 6
38#define DOT11DECRYPT_RADIOTAP_HEADER_LEN 24
40#define DOT11DECRYPT_EAPOL_MAX_LEN 1024U
42#define DOT11DECRYPT_TK_LEN 16
45#define DOT11DECRYPT_MAX_CAPLEN (12 * 1024)
47#define DOT11DECRYPT_WEP_IVLEN 3
48#define DOT11DECRYPT_WEP_KIDLEN 1
49#define DOT11DECRYPT_WEP_ICV 4
50#define DOT11DECRYPT_WEP_HEADER DOT11DECRYPT_WEP_IVLEN + DOT11DECRYPT_WEP_KIDLEN
51#define DOT11DECRYPT_WEP_TRAILER DOT11DECRYPT_WEP_ICV
60#define DOT11DECRYPT_RSNA_EXTIV 0x20
61#define DOT11DECRYPT_RSNA_EXTIVLEN 4
62#define DOT11DECRYPT_TKIP_MICLEN 8
64#define DOT11DECRYPT_RSNA_HEADER DOT11DECRYPT_WEP_HEADER + DOT11DECRYPT_RSNA_EXTIVLEN
66#define DOT11DECRYPT_CCMP_HEADER DOT11DECRYPT_RSNA_HEADER
67#define DOT11DECRYPT_CCMP_TRAILER 8
68#define DOT11DECRYPT_CCMP_256_TRAILER 16
70#define DOT11DECRYPT_GCMP_HEADER 8
71#define DOT11DECRYPT_GCMP_TRAILER 16
73#define DOT11DECRYPT_TKIP_HEADER DOT11DECRYPT_RSNA_HEADER
74#define DOT11DECRYPT_TKIP_TRAILER DOT11DECRYPT_TKIP_MICLEN + DOT11DECRYPT_WEP_ICV
76#define DOT11DECRYPT_RSNA_MIN_TRAILER 8
78#define DOT11DECRYPT_MAX_MLO_LINKS 3
87#include "ws_symbol_export.h"
96 unsigned char bssid[DOT11DECRYPT_MAC_LEN];
97 unsigned char sta[DOT11DECRYPT_MAC_LEN];
113 unsigned char nonce[DOT11DECRYPT_WPA_NONCE_LEN];
118 int tmp_group_cipher;
120 unsigned char ptk[DOT11DECRYPT_WPA_PTK_MAX_LEN];
125 uint8_t ap_mld_mac_set : 1;
126 uint8_t sta_mld_mac_set : 1;
127 uint8_t ap_mld_mac[DOT11DECRYPT_MAC_LEN];
128 uint8_t sta_mld_mac[DOT11DECRYPT_MAC_LEN];
129 struct DOT11DECRYPT_MLO_LINK_INFO {
131 uint8_t sta_mac_set : 1;
132 uint8_t ap_mac_set : 1;
134 uint8_t sta_mac[DOT11DECRYPT_MAC_LEN];
135 uint8_t ap_mac[DOT11DECRYPT_MAC_LEN];
136 } mlo_links[DOT11DECRYPT_MAX_MLO_LINKS];
146 uint8_t pkt_ssid[DOT11DECRYPT_WPA_SSID_MAX_LEN];
150typedef enum _DOT11DECRYPT_HS_MSG_TYPE {
151 DOT11DECRYPT_HS_MSG_TYPE_INVALID = 0,
152 DOT11DECRYPT_HS_MSG_TYPE_4WHS_1,
153 DOT11DECRYPT_HS_MSG_TYPE_4WHS_2,
154 DOT11DECRYPT_HS_MSG_TYPE_4WHS_3,
155 DOT11DECRYPT_HS_MSG_TYPE_4WHS_4,
156 DOT11DECRYPT_HS_MSG_TYPE_GHS_1,
157 DOT11DECRYPT_HS_MSG_TYPE_GHS_2
158} DOT11DECRYPT_HS_MSG_TYPE;
172 DOT11DECRYPT_HS_MSG_TYPE msg_type;
179 uint16_t key_data_len;
180 uint8_t group_cipher;
190 uint8_t mlo_link_count;
194 } mlo_link[DOT11DECRYPT_MAX_MLO_LINKS];
196 uint8_t mlo_gtk_count;
201 } mlo_gtk[DOT11DECRYPT_MAX_MLO_LINKS];
210 uint8_t frame_subtype;
211 uint8_t group_cipher;
223 uint16_t gtk_subelem_key_len;
224 uint8_t bssid[DOT11DECRYPT_MAC_LEN];
225 uint8_t sa[DOT11DECRYPT_MAC_LEN];
226 uint8_t da[DOT11DECRYPT_MAC_LEN];
278 const unsigned data_off,
279 const unsigned data_len,
281 uint32_t *decrypt_len,
307 const unsigned char bssid[DOT11DECRYPT_MAC_LEN],
308 const unsigned char sta[DOT11DECRYPT_MAC_LEN],
309 unsigned char *decrypted_data,
unsigned *decrypted_len,
341 const uint8_t *eapol_raw,
342 const unsigned tot_len,
343 const unsigned char bssid[DOT11DECRYPT_MAC_LEN],
344 const unsigned char sta[DOT11DECRYPT_MAC_LEN])
370 uint8_t *decrypted_gtk,
size_t *decrypted_len,
389 const unsigned tot_len)
436 const size_t keys_nr)
int Dot11DecryptGetKCK(const PDOT11DECRYPT_KEY_ITEM key, const uint8_t **kck)
Definition dot11decrypt.c:564
int Dot11DecryptScanEapolForKeys(PDOT11DECRYPT_CONTEXT ctx, PDOT11DECRYPT_EAPOL_PARSED eapol_parsed, const uint8_t *eapol_raw, const unsigned tot_len, const unsigned char bssid[6], const unsigned char sta[6])
Definition dot11decrypt.c:850
WS_DLL_PUBLIC int Dot11DecryptDestroyContext(PDOT11DECRYPT_CONTEXT ctx)
Definition dot11decrypt.c:1213
int Dot11DecryptDecryptPacket(PDOT11DECRYPT_CONTEXT ctx, const uint8_t *data, const unsigned data_off, const unsigned data_len, unsigned char *decrypt_data, uint32_t *decrypt_len, PDOT11DECRYPT_KEY_ITEM key)
int Dot11DecryptDecryptKeyData(PDOT11DECRYPT_CONTEXT ctx, PDOT11DECRYPT_EAPOL_PARSED eapol_parsed, const unsigned char bssid[6], const unsigned char sta[6], unsigned char *decrypted_data, unsigned *decrypted_len, PDOT11DECRYPT_KEY_ITEM key)
Definition dot11decrypt.c:385
int Dot11DecryptSetLastSSID(PDOT11DECRYPT_CONTEXT ctx, char *pkt_ssid, size_t pkt_ssid_len)
Definition dot11decrypt.c:1162
int Dot11DecryptSetKeys(PDOT11DECRYPT_CONTEXT ctx, DOT11DECRYPT_KEY_ITEM keys[], const size_t keys_nr)
Definition dot11decrypt.c:1082
WS_DLL_PUBLIC int Dot11DecryptInitContext(PDOT11DECRYPT_CONTEXT ctx)
Definition dot11decrypt.c:1191
int Dot11DecryptScanTdlsForKeys(PDOT11DECRYPT_CONTEXT ctx, const uint8_t *data, const unsigned tot_len)
Definition dot11decrypt.c:618
int Dot11DecryptScanFtAssocForKeys(const PDOT11DECRYPT_CONTEXT ctx, const PDOT11DECRYPT_ASSOC_PARSED assoc_parsed, uint8_t *decrypted_gtk, size_t *decrypted_len, DOT11DECRYPT_KEY_ITEM *used_key)
Definition dot11decrypt.c:1920
Definition dot11decrypt_system.h:209
Definition dot11decrypt_system.h:142
Definition dot11decrypt_system.h:197
Definition dot11decrypt_system.h:191
Definition dot11decrypt_system.h:171
Definition dot11decrypt_system.h:160
Definition dot11decrypt_user.h:87
Definition dot11decrypt_system.h:95
Definition dot11decrypt_system.h:100
Definition packet-isakmp.c:1941