无法收到碎片化的 ICMP 回应请求的答复
unable to receive the answer of a fragmented ICMP Echo Request
我正在尝试手动发送一个大的 ICMP Echo 请求,因此我编写了以下 scapy 代码:
frags = fragment(IP(dst=dst)/ICMP()/Raw(load=('x')*50000))
s = conf.L3socket(iface=iface) #improve Sending performance (https://byt3bl33d3r.github.io/mad-max-scapy-improving-scapys-packet-sending-performance.html)
count = len(frags) #Count fragments
i = 0
maximum = count - 1
print "maximum: " + str(maximum)
#Send all Frags but the last
while i < maximum:
print "i: " + str(i)
s.send(frags[i])
i = i + 1
answer = s.sr(frags[i]) # using sr(), to receive an answer
print(ans[0])
无法接收 ICMP Echo 响应。
我得到的答案总是类似于
Received 9 packets, got 0 answers, remaining 1 packets
有人知道吗,我的代码有什么问题?
这行不通的原因有很多:
sr()
代表“发送接收”。此函数已经发送数据包,所以您不需要之前发送它
sr()
returns 多个答案,意思是你不^C它或者它超时它不会停止。您正在寻找第一个答案 上的 sr1()
哪个 returns
- scapy 不能(还)对“流中”的数据包进行碎片整理。当您调用
sr/sr1
时,它会检查每个数据包是否有可能的答案,但不会有任何答案,因为它不会对流进行碎片整理。对于这个答案,你需要自己实现所有的“答案检查”,或者另辟蹊径。
反正不知道很多服务器会不会回答这样的ICMP
我正在尝试手动发送一个大的 ICMP Echo 请求,因此我编写了以下 scapy 代码:
frags = fragment(IP(dst=dst)/ICMP()/Raw(load=('x')*50000))
s = conf.L3socket(iface=iface) #improve Sending performance (https://byt3bl33d3r.github.io/mad-max-scapy-improving-scapys-packet-sending-performance.html)
count = len(frags) #Count fragments
i = 0
maximum = count - 1
print "maximum: " + str(maximum)
#Send all Frags but the last
while i < maximum:
print "i: " + str(i)
s.send(frags[i])
i = i + 1
answer = s.sr(frags[i]) # using sr(), to receive an answer
print(ans[0])
无法接收 ICMP Echo 响应。 我得到的答案总是类似于
Received 9 packets, got 0 answers, remaining 1 packets
有人知道吗,我的代码有什么问题?
这行不通的原因有很多:
sr()
代表“发送接收”。此函数已经发送数据包,所以您不需要之前发送它sr()
returns 多个答案,意思是你不^C它或者它超时它不会停止。您正在寻找第一个答案 上的 - scapy 不能(还)对“流中”的数据包进行碎片整理。当您调用
sr/sr1
时,它会检查每个数据包是否有可能的答案,但不会有任何答案,因为它不会对流进行碎片整理。对于这个答案,你需要自己实现所有的“答案检查”,或者另辟蹊径。
sr1()
哪个 returns
反正不知道很多服务器会不会回答这样的ICMP