我在Scapy中编写了这样的代码以进行简单的ping-没什么特别的,但是看起来很有希望。
def ping(ip):
answer = sr1(IP(dst=ip) / ICMP())
我如何测量从头到尾从发送到接收的旅行时间。问题很简单,但学习起来也必不可少。我在Internet和文档中搜索了一些解决方案,但没有效果。
您能帮上忙吗?
完整的代码看起来像这样,但是测量ping太长。
import time
from scapy.layers.inet import ICMP, IP
from scapy.sendrecv import sr1, sr
def ping(ip):
packet = IP(dst=ip) / ICMP()
t0 = time.perf_counter()
answer = sr1(packet)
t1 = time.perf_counter()
print(t1 - t0)
answer.show()
answer[ICMP].show()
ping('192.168.1.1')
t1 - t0 = 0.12669169999999985s
的结果。ping.exe = 4ms
出了点问题。
您应该使用sent_time
参数。例如,如果您使用的是sr
,则可以执行以下操作:
ans, unans = sr(IP(dst="www.google.com")/ICMP())
timestamp = ans[0][1].time - a[0][0].sent_time
在您的示例中:
packet = IP(dst=ip)/ICMP()
a = sr1(packet)
timestamp = a.time - packet.sent_time
也可以使用