1

我需要嗅探接口 BPDU(网桥协议数据单元)数据包,这些数据包封装在带有 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 字段?

谢谢你们!

4

1 回答 1

1

抱歉,我不确定您的问题是关于ETH_P_ALL标志还是您的嗅探器根本不起作用。

我建议您ETH_P_ALL自己使用和解码标头。

如果您的嗅探器无法正常工作,请确保您开启了混杂模式?从命令行,您可以使用ifconfig eth0 promisc,假设您的以太网设备是eth0. 或者,您可以IFF_PROMISC使用在您的设备上设置标志ioctl

综上所述,除非您有充分的理由不这样做,否则不要重新发明轮子并简单地使用libpcap可能非常值得。

于 2011-06-23T17:07:43.723 回答