在Scapy中添加icmp-type会阻止代码工作

时间:2017-11-30 10:00:58

标签: python scapy icmp

我使用以下代码生成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

1 个答案:

答案 0 :(得分:0)

对于ICMP请求,代码必须为0且类型必须为8.在程序中,您为代码分配了错误的值。以下代码足以制作ICMP请求,因为scapy的默认ICMP数据包是icmp请求。

packet = Ether() / IP(dst=host, proto=1) / ICMP()