我使用以下代码生成ICMP请求,获取结果并获得每个请求的往返时间。
除非我将icmp_type
添加到数据包标头,否则它工作正常。只要我通过icmp_type
,代码就会停止工作。
我很感激你的帮助。
def icmp_ping(host, icmp_code, icmp_type=None, count=2):
packet = Ether() / IP(dst=host, proto=1) / ICMP(code=icmp_code)
t = 0.0
for x in range(count):
ans, unans = srp(packet, iface="h1-eth0", verbose=0)
rx = ans[0][1]
tx = ans[0][0]
delta = rx.time - tx.sent_time
print "Ping:", delta * 1000
print packet.summary()
t += (delta * 1000)
return (t / count)
if __name__ == "__main__":
for i in range(6):
total = icmp_ping('10.0.0.3', i)
print "TOTAL", total
答案 0 :(得分:0)
对于ICMP请求,代码必须为0且类型必须为8.在程序中,您为代码分配了错误的值。以下代码足以制作ICMP请求,因为scapy的默认ICMP数据包是icmp请求。
packet = Ether() / IP(dst=host, proto=1) / ICMP()