我試圖獲取每個在網絡上轉儲的數據包的源MAC地址,排除了涉及主機的任何數據包。我期望爲了實現這個目標,我應該在混雜模式下使用主機的網絡接口從tcpdump獲取數據。從tcpdump獲取源MAC地址
請注意,我是而不是有興趣獲得完整的標題或甚至鏈接級別標題。 -e
選項不是我想要的。我只是想要每個數據包的源MAC地址,而沒有其他。
這是我目前在做什麼現在:
sudo tcpdump -I -elt -i wlan0 not host 127.0.0.1 2>> /dev/null | sed 's/ .*//'
與127.0.0.1
替換爲本地網絡接口的實際IP地址。
這在一些網絡中很有用,其中源MAC地址是tcpdump輸出的第一條信息。不幸的是,這並不總是我的經驗。看來,輸出到tcpdump is protocol-dependent等一些網絡,它有所不同。
我想,使其輸出相匹配的正則表達式的MAC地址的第一個項目,我可以重寫我的sed命令:
(?:[0-9a-fA-F]{2}:){5}[0-9a-fA-F]{2}
,但我不能確定,如果在該行的第一個MAC地址將永遠是源MAC地址。
如果沒有辦法讓tcpdump直接輸出源MAC地址,有什麼辦法可以讓它從鏈路層頭輸出原始位?從那裏我應該能夠拼湊源MAC地址。
你有沒有考慮使用'tshark'? – Yoel 2014-09-28 09:15:25