我需要嗅探接口BPDU(网桥协议数据单元)数据包,这些数据包封装在带有LLC头的802.3类型的eth帧中。我试着打开socket raw:
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
。或者,您可以使用IFF_PROMISC
在设备上设置ioctl
标记。
所有这一切,除非你有充分的理由不这样做,否则你可能非常值得重新发明轮子,只需使用libpcap。