嗅探原始套接字的802.3 eth数据包
我需要在接口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字段?
谢谢大家!
对不起,我不确定你的问题是关于ETH_P_ALL
标志还是你的嗅探器根本不起作用。
我会推荐使用ETH_P_ALL
并自己解码标题。
如果你的嗅探器不工作,确保你有混杂模式?从命令行,您可以使用ifconfig eth0 promisc
,假设您的以太网设备是eth0
。或者,您可以使用ioctl
在您的设备上设置IFF_PROMISC
标志。所有这些说法,除非你有充分的理由不这样做,它可能是强有力的值得你一边不重新发明轮子,并且简单地使用libpcap。
谢谢爱德华的回复......是的,ETH_P_ALL都能很好地工作,我可以看到捕获到我的BPDU数据包,但是ETH_P_802_3没有捕获数据包,可能是因为没有实现这个功能。 – MirkoBanchi
你是嗅探本地还是细分? –