2024-10-03 11:15:47 发布
网友
我用vmnet sniffer和tcpdump创建了几个pcap文件。这些文件来自进出虚拟机的数据包。我正在和scapy一起读取pcap文件,并试图找出数据包之间的到达时间,但是我无法获得比微秒更高的分辨率。有没有什么办法让斯卡比提供更好/更准确的信息?在
我的代码:
a = rdpcap("test.pcap") for A in a: print A.header
>>> 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文件):
Is there anyway for scapy to give better/more precise information?
仅当您正在读取的pcap文件具有更高精度的时间戳时。在
对于使用tcpdump创建的捕获文件,它必须使用tcpdump 4.6或更高版本捕获,并与libpcap 1.5或更高版本链接,并使用 time-stamp-precision nano作为tcpdump的选项进行捕获。否则,文件中的时间戳的精度只有微秒。在
time-stamp-precision nano
您必须从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将,纳秒级和纳秒级的时间戳读取文件时,甚至放弃纳秒级的时间戳)。如果它使用自己的代码来读取它们,那么代码必须知道纳秒级的时间戳。在
在上面的例子中,小数点后6位是任意的。精度更高(至少在我的机器上生成了pcap文件):
^{pr2}$仅当您正在读取的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将,纳秒级和纳秒级的时间戳读取文件时,甚至放弃纳秒级的时间戳)。如果它使用自己的代码来读取它们,那么代码必须知道纳秒级的时间戳。在
相关问题 更多 >
编程相关推荐