我正在编写一个程序,它使用 libpcap 嗅探流量,只是取出数据包以修改并使用原始套接字重新注入网络。我知道对于无线网卡的正常混杂模式操作,您不应该能够与网络交互,但是可以使用原始套接字来实现吗?
问问题
457 次
1 回答
1
简短的回答是肯定的。下面是较长的...
我知道对于无线网卡的正常混杂模式操作,您不应该能够与网络交互
我不确定您从哪里获得这些知识,但上述陈述是错误的。混杂模式不会限制您可以做什么以及如何与网络交互。默认情况下,网络接口卡只是试图减少它们传递给主机的数据量以提高效率。例如,如果目标 MAC 地址与接收媒体访问控制器的地址不匹配,则 NIC 不会将以太网帧传递给主机。混杂模式唯一要做的就是告诉设备将它获得的所有内容传递给主机,无论该帧是否为主机寻址。换句话说,无论你在正常操作模式下对 NIC 做什么,在混杂模式下你仍然可以做。另外,NIC 不再为您过滤任何内容,
但是可以用原始套接字来做吗?
是的,有可能。只要您有足够的权限,您就可以使用“原始”套接字 API 从用户空间发送和接收以太网帧。设备是否处于混杂模式没有任何区别。
另请注意,如今的路由器非常智能,即使您将主机的 NIC 置于混杂模式,它们也不会将数据包转发到您的主机。因此,在正确的网络中,您不太可能收到实际上不适合您的主机的任何内容,并且混杂模式不会产生任何影响。
如果这有帮助,这里有一个简单的例子,它与通过以太网连接到 PC 的 FPGA 板交换自定义数据包。它使用原始套接字 API 并在 Linux 上的用户空间中运行。
于 2012-10-27T22:18:11.887 回答