bitlvl
SR

Dekoder paketa

Nalepite heks jednog paketa (tcpdump -xx, Wireshark hex dump, string oblika \x45\x00) ili prevucite datoteku snimka. Svako zaglavlje se rastavlja bit po bit, checksumi se ponovo računaju, a svako polje osvetljava svoje bajtove u dumpu.

Rezultati i poruke ovog alata prikazuju se na engleskom.

Čitanje paketa

Paket na žici je gomila zaglavlja, od kojih svako kaže šta sledi: Ethernet polje type imenuje IPv4, IP polje protocol imenuje TCP, TCP port nagoveštava DNS ili HTTP. Dekoder prolazi kroz taj lanac. Svako zaglavlje je prikazano sa svojim poljima, njihovim bajt ofsetima i, za upakovana polja kao što su IP flagovi ili TCP data offset, tačnim bitovima. Pređite mišem preko polja da vidite gde se nalazi u hex dumpu na dnu.

Kako doći do bajtova

IzvorKomanda / radnjaSloj veze
tcpdump, jedan paket sa Ethernet zaglavljemtcpdump -c1 -xx -ni eth0 port 53Ethernet
tcpdump bez sloja vezetcpdump -c1 -x -ni eth0 …Sirovi IPv4/IPv6 (prepoznaje se)
tcpdump na „any“tcpdump -c1 -xx -ni any …Linux cooked (SLL)
WiresharkDesni klik na paket → Copy → …as a Hex Dump, ili File → Export Packet DissectionsEthernet
Ceo snimaktcpdump -c100 -w out.pcap port 53Čita se iz datoteke
Scapy / Pythonbytes(pkt).hex()Zavisi od prvog sloja

Checksumi

IPv4 pokriva samo svoje zaglavlje; TCP, UDP i ICMPv6 pokrivaju svoje zaglavlje, svoje podatke i pseudo-zaglavlje sa IP adresama, protokolom i dužinom, zbog čega NAT koji prepisuje adrese mora da prepiše i transportne checksume. Pogrešan checksum u snimku napravljenom na mašini koja šalje gotovo je uvek checksum offloading: kernel ostavlja polje mrežnoj kartici da ga popuni posle tačke snimanja. Na snimku sa druge mašine ili mirror porta, pogrešan checksum znači stvarno oštećenje. UDP preko IPv4 legalno može da nosi 0 u značenju „nije izračunat“.

Na šta dekoder ukazuje

  • TTL vrednosti koje otkrivaju OS pošiljaoca (64 Linux/macOS, 128 Windows, 255 mrežna oprema) i koliko je skokova udaljen.
  • Privatne, link-local, multicast i dokumentacione adrese; lokalno administrirane MAC adrese (virtuelne mašine, nasumične Wi-Fi adrese).
  • Stanje TCP handshake-a iz flagova, window scaling i MSS iz opcija, SACK blokovi, timestamps.
  • Fragmentirani IP paketi, na kojima se dekoder zaustavlja (transportno zaglavlje je samo u prvom fragmentu).
  • U ICMP greškama dekodira se i citirani originalni datagram, pa vidite na koju konekciju se odnosi „port unreachable“ ili „TTL exceeded“.
  • U TLS ClientHello, SNI ime hosta, ponuđene verzije, grupe i ALPN protokoli — sve što je još vidljivo u čistom tekstu.

Pitanja

Zašto dekoder kaže da je moj TCP checksum pogrešan?

Ako je snimak napravljen na mašini koja je poslala paket, checksum je trebalo da popuni mrežna kartica posle snimanja (checksum offloading); Wireshark pokazuje isto. Isključite ga sa ethtool -K eth0 tx off kada su vam potrebne prave vrednosti u snimcima, ili snimajte na prijemnoj strani.

Može li da pročita celu pcap datoteku?

Da, prevucite .pcap ili .pcapng (do 8 MB, izlistano 5000 paketa). Kliknite na paket u listi da ga dekodirate. Datoteka nikad ne napušta vaš pregledač.

Šta je sa 802.11 Wi-Fi okvirima ili radiotap-om?

Još se ne dekodiraju; snimci sa tim tipovima veze izlistavaju pakete, ali bajtove prikazuju kao payload. Ethernet, Linux cooked, sirovi IP i BSD loopback su podržani.

Da li sastavlja TCP tokove ili prati konverzacije?

Ne. Dekodira jedan po jedan paket. Za analizu tokova koristite Wireshark; za razumevanje šta tačno jedno zaglavlje kaže, ovo je brže.

Moj payload se prikazuje kao „TCP payload“ iako je HTTP.

HTTP se prepoznaje po prvim bajtovima (metoda ili HTTP/1.x) bez obzira na port. Šifrovani saobraćaj na 443 prikazuje se kao TLS zapisi, a sve ostalo kao sirovi bajtovi sa ASCII kolonom.