【问题标题】:preventing libpcap to capture the packets injected with pcap_inject()防止 libpcap 捕获使用 pcap_inject() 注入的数据包
【发布时间】:2010-12-08 23:31:05
【问题描述】:

目前正在考虑仅使用 pcap 嗅探同一接口并使用 pcap_inject 注入数据包的可能性。

使用以下任一方法都可以轻松解决问题:

  • 持久校验和跟踪/大慢图/,
  • 校验和跟踪 - 直到注入所有数据,例如第一个 http 请求;
  • 破解 bpf/libipq/Netfilter 为每个真实 PHY 数据包携带附加参数

但是:

pcap 监听 eth0 /realworld 情况更接近“pcap 通过源魔法监听和丢弃”/,pcap 通过 eth0 的句柄发送数据包,因此它们可以被路由出去。 libpcap 不捕获使用相同库注入到相同接口的数据包的理论基础是什么 - 例如,注入的数据包没有通过所有伯克利的数据包过滤器代码?

实际测试待定。

【问题讨论】:

    标签: code-injection libpcap spoofing


    【解决方案1】:

    您的问题很难解析,但如果我理解正确,您正在寻找一种方法来捕获不包括您注入的数据包的数据包。您可以使用捕获过滤器来完成此操作,该过滤器仅查看发送到您机器上相关接口的内容...

    ether dst aa:bb:cc:dd:ee:ff 
    

    ... 或者捕获除在相关接口上发送的所有内容之外的所有内容:

    not ether src aa:bb:cc:dd:ee:ff
    

    这将影响来自您机器的流量,而不是您注入的流量,但如果您捕获并注入,那么您可能无论如何都不关心您自己机器的数据包。如果您需要更自定义的内容,在捕获的数据包中识别您刚刚发送的数据包应该不难。 (我想这就是校验和的意思,但我没有看到直接的表问题。)

    【讨论】:

    • 这非常简单:) 有你的赏金。其他人再次提到了 skbuff 子系统,现在还没有走到这一步..
    • 如果你想在接口上只看到received的数据包,你也可以使用pcap_setdirection(p, PCAP_D_IN)。但是请注意,这不仅意味着您不会看到您注入的数据包,还意味着您不会看到您的机器通过正常网络堆栈传输的数据包 - 但如果您在以太网源地址。
    【解决方案2】:

    可能只是忽略接收路径中具有属性skb->pkt_type == PACKET_OUTGOING 的数据包。

    【讨论】:

    • ...如果您运行的是 Linux。如果您没有运行 Linux,则必须使用其他机制。
    猜你喜欢
    • 2014-03-12
    • 2015-10-23
    • 1970-01-01
    • 1970-01-01
    • 2012-02-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多