使用原始套接字嗅探 802.3 eth 数据包

Posted

技术标签:

【中文标题】使用原始套接字嗅探 802.3 eth 数据包【英文标题】:Sniffing 802.3 eth packets with socket raw 【发布时间】: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 字段?

谢谢大家!

【问题讨论】:

你是在本地嗅探还是分段嗅探? 【参考方案1】:

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

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

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

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

【讨论】:

感谢 Edward 的回复...是的,使用 ETH_P_ALL 一切正常,我可以看到捕获的 BPDU 数据包,但使用 ETH_P_802_3 没有捕获数据包,可能是因为没有实现。

以上是关于使用原始套接字嗅探 802.3 eth 数据包的主要内容,如果未能解决你的问题,请参考以下文章

Python 原始套接字 (Windows):嗅探以太网帧

Windows 主机操作系统似乎忽略了通过 linux sendto 使用原始套接字注入的数据包

python 原始套接字和嗅探

第四周学习进展

《Python黑帽子:黑客与渗透测试编程之道》读书笔记:原始套接字和流量嗅探

《Python黑帽子:黑客与渗透测试编程之道》读书笔记:原始套接字和流量嗅探