使用scapy提高时间戳精度

2024-10-03 11:15:47 发布

您现在位置:Python中文网/ 问答频道 /正文

我用vmnet sniffer和tcpdump创建了几个pcap文件。这些文件来自进出虚拟机的数据包。我正在和scapy一起读取pcap文件,并试图找出数据包之间的到达时间,但是我无法获得比微秒更高的分辨率。有没有什么办法让斯卡比提供更好/更准确的信息?在

我的代码:

a = rdpcap("test.pcap")
for A in a:
    print A.header

Tags: 文件代码test信息for时间分辨率pcap
2条回答
>>> a = rdpcap('/tmp/tmp.pcap')
>>> for A in a:
...     print('%.6f' % A.time)
... 
1429659651.461177
1429659651.461444
1429659651.461520
1429659651.461972
1429659651.462230
1429659651.465091
1429659651.465319
1429659651.465838
1429659651.466115
1429659651.466379

在上面的例子中,小数点后6位是任意的。精度更高(至少在我的机器上生成了pcap文件):

^{pr2}$

Is there anyway for scapy to give better/more precise information?

仅当您正在读取的pcap文件具有更高精度的时间戳时。在

对于使用tcpdump创建的捕获文件,它必须使用tcpdump 4.6或更高版本捕获,并与libpcap 1.5或更高版本链接,并使用 time-stamp-precision nano作为tcpdump的选项进行捕获。否则,文件中的时间戳的精度只有微秒。在

您必须从vmnet sniffer查看捕获文件的前4个字节,以查看其时间戳是否具有纳秒精度(相同的测试将对tcpdump的捕获起作用)。如果前4个字节是A1 B2 C3 D4或D4 C3 B2 A1,则文件中的时间戳没有纳秒精度;如果它们是A1 B2 3C 4D或4D 3C B2 A1,则它们有。在

如果scapy使用libpcap读取pcap文件(libpcap有Python包装器),那么它还必须使用特殊的api来请求libpcap提供纳秒分辨率的时间戳(为了向后兼容,默认情况下libpcap将,纳秒级和纳秒级的时间戳读取文件时,甚至放弃纳秒级的时间戳)。如果它使用自己的代码来读取它们,那么代码必须知道纳秒级的时间戳。在

相关问题 更多 >