我正在测试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"
答案 0 :(得分:0)
您可以执行以下操作(Scapy 2.2.0)
1)使用Scapy的ICMP数据包(好像你的数据包不正确)
from scapy.layers import inet, inet6
icmpPacket = inet.ICMP()
然后像往常一样与运算符/
连接。 ICMP在IPv4上运行。
2)除了上一点之外,您还需要使用Scapy修改数据包中的Ethernet
部分。您可能需要发送方和接收方的正确MAC地址才能获得正确的回复。
示例: