我一直在努力讓OpenWRT路由器將一個WiFi探測請求記錄到MySQL數據庫(它爲每個探測請求數據包存儲MAC地址和RSSI信息以及其他特定路由器數據)。解析WiFi數據包(libpcap)
在研究了libpcap之後,我已經能夠湊齊一個基本的小程序,它使用過濾器表達式('wlan subtype probe-req')在監視器接口(mon0)上簡單地嗅探數據包,然後打印在十六進制的原始數據包。通過libpcap上的在線信息,這部分內容非常簡單。
現在這裏是我卡住的地方:如何解析WiFi數據包以檢索我正在查找的信息(RSSI和源MAC地址)?
要說清楚,我並沒有要求代碼去做(儘管如果你想提供一些:D,我不會抱怨)。我只是在尋找一些指導,以便了解哪些字節是 - 哪些是WiFi分組路線圖,如果您願意的話。
有幾個很好的教程來解析通過以太網進入的數據包,但我一直沒有找到任何東西來幫助解析與WiFi有關的頭文件。我認爲這將是一個非常簡單的過程 - 只需獲取RSSI和源MAC的相關字節 - 但我再次無法找到哪個字節是哪個文檔。
我知道這已經做過,但我會老實說:當通過tcpdump的源代碼查看時,我完全失去了。
那麼,有沒有人知道如何解析WiFi數據包的好資源?
乾杯
編輯:更具體回答
RSSI在RadioTap頭(當然,在Linux它是)找到。使用radiotap-parser.c以及它所依賴的文件(可在與鏈接的文件相同的目錄中找到)將RSSI拉出數據包非常簡單。 如果有人在使用radiotap-parser.c函數時遇到問題,請隨時與我聯繫。
由於radiotap頭結構包含可變的無線頭標頭(it_len
)的長度,所以通過無線功能塊功能可以非常輕鬆地拉出源MAC地址。由於我僅解析具有固定長度的探測請求(請查看第here),因此只需將指針指向packet + it_len + 10
(源MAC地址在MAC幀開始後10個字節開始,即開始無線電廣播標頭在哪裏結束)。在該指針處開始的6個字節是802.11幀中的addr2
(同樣,請參閱第17頁here)。
radiotap-parser.c鏈接已損壞。 – haccks