如何捕获您在 Scapy 中发送的数据包?

How to capture the packets that you send in Scapy?

我正在使用以下方式发送数据包:

     send(IP(dst="192.168.1.114")/fuzz(UDP()/NTP(version=4)), loop=1)

但是我无法在同一网络上的任何其他附近机器(包括 IP 为 192.168.1.114 的机器)中捕获这些数据包。我正在使用 wlan 作为我的接口。

我也尝试使用 scapy 嗅探然后重放,但我仍然无法捕获这些数据包。

我会在执行您的程序时首先尝试使用 tcpdump 捕获发送方机器上的流量:

 tcpdump -i any udp dst 192.168.1.114

如果您可以看到离开源主机的流量,则可能是它没有到​​达目标主机。 UDP 数据包是第一个被任何网络设备丢弃的数据包,因为它是 UDP 的性质,它不会被重新传输。如果您确定数据包离开源,请验证它是否到达目标:

tcpdump -i any upd dst 192.168.1.114

要检查的另一点是您的防火墙设置。您的防火墙可能在源系统或目标系统上阻止了这些请求。

我终于解决了这个问题。这是我制作的清单,在使用 scapy 处理 replaying/fuzzing 时可能会对其他人有所帮助。

  1. 检查您正在处理的所有 IP 地址是否在
    网络(使用 ping)
  2. 了解 send()(第 3 层)和 sendp()(第 2 层)之间的区别
  3. 如果改变现有数据包,请确保 删除校验和(使用 'del')并重新计算校验和 使用 show2() 或使用 str 将数据包转换为字符串 然后将它们转换回数据包

你应该使用 Wireshark,或者 Scapy 中的嗅探功能,让它在屏幕上漂亮地打印内容:

sniff(lambda x:x.show())