【问题标题】:Is it possible to inject on a raw socket while sniffing in promiscous mode?是否可以在混杂模式下嗅探时注入原始套接字?
【发布时间】:2012-10-27 21:59:06
【问题描述】:

我正在编写一个程序,它使用 libpcap 嗅探流量,只是取出数据包进行修改并使用原始套接字重新注入网络。我知道,对于无线网卡的正常混杂模式操作,您不认为能够与网络交互,但是可以使用原始套接字来实现吗?

【问题讨论】:

    标签: c linux network-programming libpcap packet-sniffers


    【解决方案1】:

    简短的回答是肯定的。下面是较长的...

    我知道对于无线网卡的正常混杂模式操作,您不应该能够与网络交互

    我不确定您从哪里获得这些知识,但上述陈述是错误的。混杂模式不会限制您可以做什么以及如何与网络交互。默认情况下,网络接口卡只是试图减少它们传递给主机的数据量以提高效率。例如,如果目标 MAC 地址与接收媒体访问控制器的地址不匹配,则 NIC 不会将以太网帧传递给主机。混杂模式唯一要做的就是告诉设备将它获得的所有内容传递给主机,无论该帧是否为主机寻址。换句话说,无论你在正常操作模式下对 NIC 能做什么,在混杂模式下你仍然可以做。此外,NIC 不再为您过滤任何内容,因此您可以获得更多(只要主机可以处理负载)。

    但是可以使用原始套接字来做到这一点吗?

    是的,这是可能的。只要您有足够的权限,您就可以使用“原始”套接字 API 从用户空间发送和接收以太网帧。设备是否处于混杂模式没有任何区别。

    还要注意,如今的路由器非常智能,即使您将主机的 NIC 设置为混杂模式,它们也不会将数据包转发到您的主机。因此,在正确的网络中,您不太可能收到实际上不适合您的主机的任何内容,并且混杂模式不会产生任何影响。

    如果有帮助,here 是与通过以太网连接到 PC 的 FPGA 板交换自定义数据包的简单示例。它使用原始套接字 API 并在 Linux 上的用户空间中运行。

    【讨论】:

    • 谢谢,这实际上是一个要在 wifi 网络或任何集线器之类的环境中实现的程序。所以我并不担心这是一个问题。
    猜你喜欢
    • 2012-08-24
    • 2014-01-02
    • 2014-02-14
    • 1970-01-01
    • 2013-09-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多