2013-07-29 28 views
6

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?

Odpowiedz

10

Jaka jest różnica między plikiem PCAP a magiczną liczbą "0x4d3cb2a1" i "0xd4c3b2a1"?

Plik pcap z liczbą magiczną 0xa1b23c4d lub 0x4d3cb2a1 plik jest pcap w którym znaczniki czasowe pakietów jest w sekundach i nanosekund.

Plik pcap z magicznej liczby 0xa1b2c3d4 lub 0xd4c3b2a1 jest „normalne”, w którym plik pcap znaczniki czasu pakietów są w sekundach i mikrosekund.

Skąd otrzymałeś plik B? Jedyną standardową wersją biblioteki libpcap, która zapisuje pliki w formacie "nanosekundowej rozdzielczości", jest wersja na pniu drzewa Git libpcap, a dzieje się tak tylko wtedy, gdy program używający libpcap czyta inny format "nanosekundy" lub wyraźnie żąda nanosekundowe znaczniki czasu z karty sieciowej (obecnie obsługiwane tylko w Linuksie i prawdopodobnie wymagają dostatecznie aktualnego jądra). To także jedyna wersja, która może je przeczytać. Wireshark nie tworzy ich domyślnie, chociaż najnowsze wersje Wireshark mogą je czytać.

+0

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

+1

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ł? –

+0

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