2011-06-23 70 views
1

我需要在接口BPDU(網橋協議數據單元)數據包上進行嗅探,這些數據包封裝在類型爲802.3的eth幀的LLC頭中。我試圖打開一個套接字原料:嗅探原始套接字的802.3 eth數據包

skd = socket(AF_PACKET, SOCK_RAW, htons(ETH_P_802_3))

而是試圖嗅探包我不能抓住他們。看看include/linux/if_ether.h似乎ETH_P_802_3是一個虛擬類型......有沒有解決方案,或者我應該使用ETH_P_ALL和分析以太網頭的EtherType字段?

謝謝大家!

+0

你是嗅探本地還是細分? –

回答

1

對不起,我不確定你的問題是關於ETH_P_ALL標誌還是你的嗅探器根本不起作用。

我會推薦使用ETH_P_ALL並自己解碼標題。

如果你的嗅探器不工作,確保你有混雜模式?從命令行,您可以使用ifconfig eth0 promisc,假設您的以太網設備是eth0。或者,您可以使用ioctl在您的設備上設置IFF_PROMISC標誌。所有這些說法,除非你有充分的理由不這樣做,它可能是強有力的值得你一邊不重新發明輪子,並且簡單地使用libpcap

+0

謝謝愛德華的回覆......是的,ETH_P_ALL都能很好地工作,我可以看到捕獲到我的BPDU數據包,但是ETH_P_802_3沒有捕獲數據包,可能是因爲沒有實現這個功能。 – MirkoBanchi