2017-07-17 103 views
4

我正在使用dpkt來解析一些ieee80211封包。
我看到ieee80211創建的對象有錯誤的值。
挖掘更深入我發現ieee80211將數據視爲大端,而實際上我提供的數據包是小端。Little Endian封包被dpkt處理爲big endian

有沒有一種方法來檢測運行系統中的數據包的字節順序,所以我也許可以將其提供它dpkt.ieee80211前切換到大端?

回答

1

你將能夠檢測字節序,當你不知道的一種方式或其他會注入一個有效載荷,並有分析以同樣的方式的唯一途徑。

然後,您可以通過檢查您注入的有效負載的身份來檢查字節順序。

2

不應該有任何檢測或猜測。 IEEE 802.11是一個標準協議,其規範說明了幀的每個部分都有正確的端點。它的局部性顛倒了,然後框架變得格格不入。您可以獲取標準here的最新版本。

縱觀3500+頁PDF(感謝上帝,按Ctrl + F),似乎大多數值是大端,就像在TCP/IP。但顯然,小端在這裏和那裏使用。例如,在一些TKIP領域。坦率地說,這有點令人驚訝。

你沒有提到你想創建/解碼幀/場,所以很難說什麼更具體的,而不是看它。

+0

字段答案是幀控制。 IEEE802.11的第一個字節是02,第二個字節是08. Wireshark以某種方式知道交換這兩個字節並確定這是一個數據幀(0000 ** 10 ** 00的10部分,即08這是第二個字節,但我期望成爲第一個)。 – kroiz

+0

這有幫助嗎? https://stackoverflow.com/questions/12407145/interpreting-frame-control-bytes-in-802-11-wireshark-trace – Malt

+0

在這個問題Wireshark的截圖中,你鏈接到你可以看到Wireshark的說** (正常)**在「幀控制」行上。在我的pcap Wireshark說**(交換)**。在這個問題上的第一個字節是08,而在我的PCAP 08是第二個字節。所以,我想一些Wireshark如何理解,在我的IEEE80211中,第一個和第二個字節需要交換。我只是不明白。 – kroiz

0

事實證明,對於CAPWAP下的IEEE80211,幀控制字節只是交換。
這可能是一個初始錯誤已經不存在的事實標準的情況。
看到Wireshark Q&A