Python 使用scapy实现更高的时间戳精度

Python 使用scapy实现更高的时间戳精度,python,vmware,scapy,tcpdump,Python,Vmware,Scapy,Tcpdump,我有两个pcap文件,它们是我用vmnet sniffer和tcpdump创建的。这些文件来自在虚拟机中发送和发送的数据包。我正在用scapy读取pcap文件,并试图找到数据包之间的到达时间,但我无法获得高于微秒的分辨率。scapy是否可以提供更好/更准确的信息 我的代码: a = rdpcap("test.pcap") for A in a: print A.header 在上述示例中,小数点后6位是任意的。精度要高得多(至少在我的机器上生成了pcap文件): scapy是否可以提供

我有两个pcap文件,它们是我用vmnet sniffer和tcpdump创建的。这些文件来自在虚拟机中发送和发送的数据包。我正在用scapy读取pcap文件,并试图找到数据包之间的到达时间,但我无法获得高于微秒的分辨率。scapy是否可以提供更好/更准确的信息

我的代码:

a = rdpcap("test.pcap")
for A in a:
    print A.header
在上述示例中,小数点后6位是任意的。精度要高得多(至少在我的机器上生成了pcap文件):

scapy是否可以提供更好/更准确的信息

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

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

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

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

>>> 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
>>> for A in a:
...     print('%.30f' % A.time)
... 
1429659651.461177110671997070312500000000
1429659651.461443901062011718750000000000
1429659651.461519956588745117187500000000
1429659651.461971998214721679687500000000
1429659651.462229967117309570312500000000
1429659651.465090990066528320312500000000
1429659651.465318918228149414062500000000
1429659651.465837955474853515625000000000
1429659651.466114997863769531250000000000
1429659651.466378927230834960937500000000