我正在尝试发送一个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下完成 *
1条答案
按热度按时间cygmwpex1#
你知道是什么问题吗?是的,第二层目的地址不是单播发送时,与netcat,它的id全零。这是什么意思?