5

背景:

我正在使用 scapy 测试一个网络设备,该设备可以通过交换源/目标 MAC、IP 地址和第 4 层端口号来选择性地环回数据包。可以为layer_2_onlylayers_2_and_3、选择交换layers_2_3_and_4。我在服务器上运行 scapy,将数据包传输到设备并验证发回的数据包是否根据设置交换了适当的源/目标字段。

问题:

发送数据包和接收匹配的 scapysrploop()方法适用于 PING 和 ARP 等消息类型。我发现如果我传输一个 UDP 数据包并且源/目标端口没有被环回设备反转,那么 scapy 不会将环回数据包视为匹配项。当环回设备反转端口号时,数据包被检测为匹配。

问题:

  1. 有没有办法覆盖或以其他方式影响 scapy 的数据包匹配逻辑?例如,能够在第 4 层禁用匹配会很有用。我查看了文档,没有发现任何表明这是可能的。

  2. 有没有另一种方法可以在 scapy 中实现这一点。我已经尝试过 using send()sniff()但我没有成功使用该方法捕获回复。

4

1 回答 1

2

对于问题的第二部分,您可能想尝试我在Scapy 中提到的方法在使用多个线程时无法嗅探数据包

基本上,在单独的线程上运行嗅探器并将返回的流量过滤到队列中,然后可以从正在执行send(). 因此,您可以同时进行发送和接收(在两个线程上)。

唯一的问题是,在我的特定设置中,我在嗅探器中遇到了一些奇怪的行为,在单独的线程上运行时它无法应用过滤器。希望你会有更好的运气。

更新:嗅探器的问题已解决(请参阅上面链接的我的问题)。

希望这可以帮助!

于 2013-04-29T17:14:14.730 回答