【问题标题】:Sniffing 802.3 eth packets with socket raw使用原始套接字嗅探 802.3 eth 数据包
【发布时间】:2011-06-23 13:52:59
【问题描述】:

我需要嗅探接口 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 字段?

谢谢大家!

【问题讨论】:

  • 你是在本地嗅探还是分段嗅探?

标签: linux network-programming sniffing


【解决方案1】:

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

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

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

说了这么多,除非你有充分的理由不这样做,否则不重新发明轮子并简单地使用 libpcap 可能非常值得。

【讨论】:

  • 感谢 Edward 的回复...是的,使用 ETH_P_ALL 一切正常,我可以看到捕获的 BPDU 数据包,但使用 ETH_P_802_3 没有捕获数据包,可能是因为没有实现。
猜你喜欢
  • 1970-01-01
  • 2013-08-24
  • 2014-02-14
  • 1970-01-01
  • 1970-01-01
  • 2010-12-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多