2017-03-16 9 views
7

Je développe un programme d'analyseur de trame IEEE802.11 en utilisant libpcap sous Linux avec C brut. Je peux facilement analyser les en-têtes RadioTap et IEEE802.11, mais je ne trouve pas le nom du protocole qui est encapsulé dans la MPDU IEEE802.11. Malheureusement, il n'y a aucun champ dans l'en-tête IEEE802.11 indiquant le protocole encapsulé (comme le champ dans l'en-tête Ethernet).Comment trouver le protocole encapsulé dans le cadre IEEE802.11?

Une solution?

+0

Que voulez-vous dire par nom? b/g/n ... peut être récupéré sur la sous-couche PLCP – LPs

+0

@LPs: b/g/n fait partie de l'en-tête 'IEEE802.11'. Je veux dire "802.11X" dans le cas des paquets "EAPOL" dans l'authentification WPA ou tout autre protocole encapsulé dans le paquet. – SuB

+0

Je ne suis pas un expert, mais en regardant dans wireshark [exemples captures] (https://wiki.wireshark.org/SampleCaptures#Wifi_.2F_Wireless_LAN_captures_.2F_802.11) révèle, qu'il peut y avoir un en-tête Logical-Link-Control avec SNAP extensions (comme indiqué par 0xAA) qui peut contenir [ettertype] (https://en.wikipedia.org/wiki/EtherType) lorsque OID == 0x000000 (voir [ici] (https://en.wikipedia.org/wiki /Subnetwork_Access_Protocol))... Bonne chance! – vlp

Répondre

0

données de IEEE802.11 paquets de données sont encapsulées dans un en-tête LLC (Voir here):

Un cadre 802,11 doit contenir un en-tête LLC si, et seulement si, il est un cadre de données . Le type et le sous-type de trame font partie du champ Frame Control dans l'en-tête MAC; Les données sont l'une des valeurs de type de trame (les sont Control et Management). Le sous-type n'a pas d'importance - tous les champs doivent contenir un en-tête LLC et aucun autre cadre ne doit l'être.

Il existe deux types de LLC en-tête: 3 octets, 8 octets. IEEE 802.11 utilise le second (Voir here). Dans celui-là, les deux derniers octets de l'en-tête LLC est équivalent au champ Ether Type dans le protocole Ethernet. Donc 0x800 pour ce champ signifie IPv4 par exemple.

2

Pour 802.11 cadres qui sont encapsulant des données, le type/sous-type d'en-tête seront entre 0x20 et 0x2F (bien que le cadre est généralement 0x20 (données) ou 0x28 (QoS-Data)). Il y aura un en-tête SNAP de 5 octets qui contiendra le type de charge utile (comme mentionné dans this answer). Si l'OID (les trois premiers octets de l'en-tête SNAP) est 0x000000, les deux octets suivants sont le type Ethernet.

Le type Ethernet serait 0x888e pour EAPoL (source). C'est le champ que vous devez inspecter pour connaître le protocole encapsulé (0x0800 pour IP, 0x0806 pour ARP, etc.).

Voici un bon Cisco doc sur Ethernet types et comment vous pouvez les utiliser pour filtrer certains protocoles: http://www.cisco.com/c/en/us/td/docs/ios/12_2/ibm/vol1/command/reference/fibm_r1/br1fethc.pdf.

Voici un bon document Cisco sur les traces de renifleurs sans fil qui incluent une description des champs de type/sous-type 802.11: https://supportforums.cisco.com/document/52391/80211-frames-starter-guide-learn-wireless-sniffer-traces.