我在使用MacBook的Python3上使用Scapy发送自定义UDP数据包时遇到麻烦。
想要将自定义源IP为192.168.1.11
的UDP数据包发送到我的当前计算机,其IP为192.168.1.17
,该IP在端口UDP
上托管6789
服务器。我想使用Scapy发送一条消息,说“嗨”,所以我编写了以下代码,
from scapy.all import *
from random import randrange
sendp(IP(src="192.168.11",dst="192.168.1.17")/UDP(sport=randrange(80,65535),dport=6789)/"Hi",iface="en0",count=10)
然后,我有一个服务器等待接收到数据后响应,并将接收到的消息打印到屏幕上。但是,当以提升的特权执行此代码时,scapy说
the packets were sent but the server didn't receive the response.
所以我去了en0
Mac上的无线接口进行调试。这是我发现的:
Wireshark说
the source is Applicon_11:f8:61, the destination is 45:00:00:1e:00:01, the protocol is 0xc0a8(Unknown) and the data is 16 bytes of Hex: 0000 45 00 00 1e 00 01 00 00 40 11 f8 61 c0 a8 00 0b ASCII Dump: E.......@.øaÀ¨..
0010 c0 a8 01 11 67 18 1a 85 00 0a b3 66 48 69 À¨..g.....³fHi
我不知道这是什么意思,或者我做错了什么,在这里谁能帮助我指出正确的方向?
答案 0 :(得分:1)
sendp
用于在第2层发送
send
用于在第3层发送
在您的情况下,您应该使用
在第2层:sendp(Ether()/IP(..)....)
。 (如果需要,将Ether
替换为Loopback
)
第3层:send(IP(...))