Более высокая точность отметок времени с scapy
У меня есть пара файлов pcap, которые я создал с помощью vmnet-sniffer и tcpdump. Файлы создаются из пакетов, отправляемых в виртуальную машину и из нее. Я читаю файлы pcap с помощью scapy и пытаюсь найти время прибытия между пакетами, но не могу получить разрешения выше микросекунд. Есть ли в любом случае для scapy, чтобы дать лучшую / более точную информацию?
Мой код:
a = rdpcap("test.pcap")
for A in a:
print A.header
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, созданным на моей машине):
>>> 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
Есть ли в любом случае для scapy, чтобы дать лучшую / более точную информацию?
Только в том случае, если файлы pcap, которые Вы читаете , имеют более точные временные метки.
Для файла захвата, созданного с помощью tcpdump, он должен был быть захвачен с помощью tcpdump 4.6 или более поздней версии, связан с libpcap 1.5 или более поздней версии и захвачен с помощью
--time-stamp-precision nano
в качестве опции для tcpdump. В противном случае временные метки в файле будут иметь только микросекундную точность.Вам придется посмотреть на первые 4 байта файла захвата из vmnet-sniffer, чтобы увидеть, имеют ли его временные метки наносекундную точность (тот же тест будет работать на захвате из tcpdump). Если первые 4 байта - A1 B2 C3 D4 или D4 C3 B2 A1, временные метки в файле не имеют наносекундной точности; если они A1 B2 3C 4D или 4D 3C B2 A1, они имеют.
Если scapy использует libpcap для чтения файлов pcap (существуют Python-оболочки для libpcap), то для запроса libpcap ему также придется использовать специальные API поставьте метки времени с наносекундным разрешением (для обратной совместимости libpcap по умолчанию откажется от более высокого разрешения и поставит метки времени с секундным и наносекундным разрешением даже при чтении файлов с метками времени с наносекундным разрешением). Если он использует свой собственный код для их чтения, то этот код должен знать о временных метках с наносекундным разрешением.