2011-06-23 71 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