Č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
| Izvor | Komanda / radnja | Sloj veze |
|---|---|---|
| tcpdump, jedan paket sa Ethernet zaglavljem | tcpdump -c1 -xx -ni eth0 port 53 | Ethernet |
| tcpdump bez sloja veze | tcpdump -c1 -x -ni eth0 … | Sirovi IPv4/IPv6 (prepoznaje se) |
| tcpdump na „any“ | tcpdump -c1 -xx -ni any … | Linux cooked (SLL) |
| Wireshark | Desni klik na paket → Copy → …as a Hex Dump, ili File → Export Packet Dissections | Ethernet |
| Ceo snimak | tcpdump -c100 -w out.pcap port 53 | Čita se iz datoteke |
| Scapy / Python | bytes(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.