Bonjour à tous,

Je voudrais récuperer la structure "wifi_header" dans une trame wifi IEEE 802.11 crypté en Wep. Je n'ai aucun problème pour récuperer les différentes couches de TCP/IP avec winpcap lors que les paquets ne sont pas cryptés.

Voila ma structure wifi_header (lorsque c'est du WIFI_DATA) stocké dans un .h :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
 
typedef struct wifi_header {
   u_int8_t   type;
      #define WIFI_DATA    0x08
      #define WIFI_BACON   0x80
      #define WIFI_ACK     0xd4
   u_int8_t   control;
      #define WIFI_STA_TO_STA 0x00
      #define WIFI_STA_TO_AP  0x01
      #define WIFI_AP_TO_STA  0x02
      #define WIFI_AP_TO_AP   0x03
      #define WIFI_WEP        0x40
   u_int16_t  duration;
   u_int32_t   ha1[ETHER_ADDR_LEN];
   u_int32_t   ha2[ETHER_ADDR_LEN];
   u_int32_t   ha3[ETHER_ADDR_LEN];
   u_int16_t  seq;
}wifi_header;
Et voilà ma fonction pour récuperer la structure :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
 
char* decryptPacket(const u_char *pkt_data){
 
	//Variables//
	struct wifi_header *wifi;
	int decodeLength;
 
	//on est interressé si c'est un paquet Wifi
	decodeLength=sizeof(struct wifi_header);
	wifi=(struct wifi_header *)pkt_data;
	if (wifi->type!=WIFI_DATA) {
		printf("Ce n'est pas du WIFI_DATA\n");
		return NULL;
	}
	printf("C''est du WIFI_DATA\n");
	return NULL;
}
et j'ai récuperé mes paquets dans un fichier .pcap (Wireshark) avec :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
 
pcap_next_ex(fp, &header, &pkt_data)
decryptPacket(pkt_data);
Je n'arrive pas a savoir si c'est du WIFI_DATA ou pas alors que les paquets y sont bien. Est ce que quelqu'un sait d'ou vient mon problème? Peut être de la structure elle même...

Je vous remercie par avance.
Bonne soirée à tous.