Scapy中的ICMP目标不可达错误
我在测试ICMP响应的时候遇到了一些问题:
当我使用Scapy发送一个UDP数据包到某个端口时,目标设备收到后显示这个数据包格式不正确(未知操作),然后目标设备回复了一个正确的ICMP端口不可达的消息。
有人能帮我解释一下这个情况吗?还是说我在这里犯了什么低级错误?
这是我用来测试的脚本:
# Generate packet
pkts3 = IP(dst="10.0.0.2")/UDP()/Raw(RandString(size=120))
#print pkts
pkts3[UDP].flags = "S"
pktList3 = []
for pktNum3 in range(0,5):
pktList3.extend(pkts3)
pktList3[pktNum3][UDP].dport = 520 # Pkt has Ran PortNo.
print pktList3[pktNum3].summary()
#print len(pktList[pktNum])
#wrpcap('tcp-packets.pcap',pktList[pktNum])
# Send the list of packets send(pktList)
start_time3=time.time()
send(pktList3)
totalTime = time.time()-start_time3
totalBytes=(5*120)/totalTime
#print pktList3[0].show()
print pktList3[0].show2()
print totalBytes,"Seconds"
1 个回答
0
你可以按照以下步骤操作(Scapy 2.2.0)
1) 使用Scapy中的ICMP数据包(看起来你的数据包不太正确)
from scapy.layers import inet, inet6
icmpPacket = inet.ICMP()
然后像往常一样用/
这个符号连接。ICMP是在IPv4上运行的。
2) 除了上面提到的,你还需要在Scapy中修改数据包的Ethernet
部分。你可能需要正确的发送方和接收方的MAC地址,以便能收到正确的回复。
示例: