我正在開發一個IEEE802.11
幀解析器程序,在Linux內部使用libpcap
,使用raw C
。我可以輕鬆解析RadioTap
和IEEE802.11
頭文件,但是我找不到在IEEE802.11
MPDU中封裝的協議名稱。不幸的是,在IEEE802.11
頭中沒有任何字段指示封裝的協議(如Ethernet
頭中的字段)。如何找出IEEE802.11幀內的封裝協議?
任何解決方案?
我正在開發一個IEEE802.11
幀解析器程序,在Linux內部使用libpcap
,使用raw C
。我可以輕鬆解析RadioTap
和IEEE802.11
頭文件,但是我找不到在IEEE802.11
MPDU中封裝的協議名稱。不幸的是,在IEEE802.11
頭中沒有任何字段指示封裝的協議(如Ethernet
頭中的字段)。如何找出IEEE802.11幀內的封裝協議?
任何解決方案?
802.11
對於幀被封裝數據,報頭類型/子類型將是0x20
和0x2F
之間(雖然幀通常是0x20
(數據)或0x28
(QoS的數據))。將會有一個5字節的SNAP頭部,其中包含有效載荷的類型(如this answer所述)。如果OID(SNAP頭的前三個字節)是0x000000
,則接下來的兩個字節是以太網類型。
對於EAPoL,以太網類型將爲0x888e
(source)。這是您將檢查以瞭解封裝協議的域(IP爲0x0800
,ARP爲0x0806
等)。
以下是一個關於以太網類型的好思科文檔,以及如何使用它們來過濾某些協議:http://www.cisco.com/c/en/us/td/docs/ios/12_2/ibm/vol1/command/reference/fibm_r1/br1fethc.pdf。
下面是關於無線嗅探器痕跡的好思科文檔,其中包含802.11
類型/子類型字段的描述:https://supportforums.cisco.com/document/52391/80211-frames-starter-guide-learn-wireless-sniffer-traces。
你的名字是什麼意思? b/g/n ...可以在PLCP子層 – LPs
@LPs上檢索:b/g/n是IEEE802.11標題的一部分。在WPA認證中的EAPOL數據包或封裝在數據包內的任何其他協議的情況下,我的意思是'802.11X'。 – SuB
我不是專家,但是看着wireshark [示例捕獲](https://wiki.wireshark.org/SampleCaptures#Wifi_.2F_Wireless_LAN_captures_.2F_802.11)顯示,可能有一個帶有SNAP的邏輯鏈接控制標頭當OID == 0x000000時可能包含[ettertype](https://en.wikipedia.org/wiki/EtherType)的擴展名(如0xAA所示)(請參見[https://en.wikipedia.org/wiki /Subnetwork_Access_Protocol)).祝你好運! – vlp