Mam dwa pliki PCAP, A
i B
.Jaka jest różnica między plikiem PCAP a magiczną liczbą "0x4d3cb2a1" i "0xd4c3b2a1"?
A
ma „magiczna liczba” w nagłówku d4 c3 b2 a1
, B
ma „magiczna liczba” w nagłówku 4d 3c b2 a1
. Zgodnie z dokumentacją wireshark (http://wiki.wireshark.org/Development/LibpcapFileFormat) tylko 0xd4c3b2a1
i 0xa1b2c3d4
są poprawnymi liczbami magicznymi, co prowadzi mnie do myślenia, że B nie jest prawidłową liczbą magiczną.
Running file
na linux poparcie tego, z wyjściem file A
samopoczucie:
tcpdump capture file (little-endian) - version 2.4 (Ethernet, capture length 65535)
file B
prostu daje:
data
wygląda na to, że cokolwiek napisał B
napisał w „zamienione "(little-endian), ale napisał dwanaście bajtów, z tym, że przykrywa w niewłaściwy sposób. Biorąc pod uwagę, że spodziewałbym się, że system big-endian będzie zapisywał całe int32 na odwrót, a nie poszczególne bajty, dając magiczną liczbę 1a 2b 3c 4d
.
Czy B
jest prawidłowym plikiem? Jeśli tak, dlaczego? Czy różne systemy mogą zapisywać zarówno 32-bitowe inty, jak i poszczególne nibbles w bajcie w dowolnej kolejności?
Patrząc w wireshark, rzeczywiście widzę, że wyświetla znacznik czasu ramki do 9dp dla 'B', ale skutecznie tylko 6dp dla' A' (ostatnie trzy są zawsze 0). 'B' został wygenerowany przez wyspecjalizowaną kartę sieciową, wygląda na to, że obsługuje rozdzielczość ns. :) – growse
Potrzebowałbyś wyspecjalizowanej karty sieciowej lub systemu operacyjnego z mechanizmem przechwytywania, który obsługuje rozdzielczość nanosekundową, aby uzyskać znaczniki czasu o rozdzielczości nanosekund. Potrzebujesz * także * programu i/lub biblioteki, która może uzyskać te znaczniki czasu o wysokiej rozdzielczości z NIC/OS i może tworzyć znaczniki czasu o rozdzielczości nanosekundowej; jaki pomysł, jaki program to napisał? –
Zrobiłem więcej kopania. Najprawdopodobniej jeden z tych http://www.napatech.com/products/network_adapters.html - uważają, że sterowniki wspierają pisanie PCAP w rozdzielczości 1ns. – growse