使用python和scapy向本地地址发送数据包不起作用

laawzig2  于 2023-02-02  发布在  Python
关注(0)|答案(1)|浏览(336)

我正在尝试发送一个UDP数据包到一个本地IP地址。这是我的示例代码:

from scapy.all import *

if __name__ == "__main__":

    send(IP(dst="127.0.0.1")/UDP(sport=19600,dport=39600)/"abc")

我已经启动netcat来捕获我要发送的内容:

nc -ul 39600

然后我执行代码:

python3 example_scapy_send.py

侦听的netcat没有收到任何东西。同时我已经启动wireshark,我可以看到数据包已发送。x1c 0d1x
如果我使用netcat发送一个数据包,它将到达侦听的netcat。

usr@dev:/home/usr# nc -u 127.0.0.1 39600
test

有线广播:

我能看到的唯一区别是,在第2层-目的地址是多播/广播时,发送与scapy和单播时,发送与netcat。但这不是我可以控制的。
如果我用scapy把同一个数据包发送到网络上的另一个ip(另一台主机),数据包会被接收(通过netcat)。所以这个问题只适用于我发送到一个本地地址的情况。测试了任何本地ip。不仅仅是127.0.0.1。我也测试了sendp和sr scapy函数,但结果是一样的。
还有:如果我启动了另一个scapy脚本来侦听UDP/39600(而不是netcat),我可以看到/我正在接收我发送的数据包。
知道出什么事了吗?

  • 测试在ubuntu/scapy 2.5/python 3.8下完成 *
cygmwpex

cygmwpex1#

你知道是什么问题吗?是的,第二层目的地址不是单播发送时,与netcat,它的id全零。这是什么意思?

相关问题