Tcpdump - Linux Command - Unix naredba

IME

tcpdump - dump promet na mreži

SINOPSIS

tcpdump [ -adeflnNOpqRStuvxX ] [ -c count ]

[ -C datoteka_size ] [ -F datoteka ]

[ -i sučelje ] [ -m modul ] [ -r datoteka ]

[ -s snaplen ] [ -T tip ] [ -U korisnik ] [ -w datoteka ]

[ -E algo: tajna ] [ izraz ]

OPIS

Tcpdump ispisuje zaglavlja paketa na mrežnom sučelju koji odgovaraju booleovskom izrazu . Također se može pokrenuti pomoću -w zastavice, što uzrokuje spremanje paketa podataka u datoteku za kasniju analizu i / ili s oznakom -r , što uzrokuje očitanje iz spremljene pakete, a ne čitanje paketa iz mrežnog sučelja. U svim slučajevima, samo paketi koji odgovaraju izrazu bit će obradeni pomoću tcpdump .

Tcpdump će, ako se ne pokrene s oznakom -c , nastaviti bilježiti pakete sve dok se ne prekine signal SIGINT (generiran, na primjer, upisivanjem znaka za prekid, obično kontrolno C) ili SIGTERM signalom (obično generiran sa ubijanjem (1) naredba); ako se pokrene sa -c zastavom, uhvatit će pakete sve dok se ne prekine SIGINT ili SIGTERM signal ili određeni broj paketa je obrađen.

Kada tcpdump dovrši hvatanje paketa, izvješćit će sljedeće brojeve:

paketi `` primljeni od filtera '' (to znači da ovisi o operacijskom sustavu na kojemu ste pokrenuli tcpdump , a možda i na način konfiguriranja OS-a - ako je filtar naveden u naredbenom retku, na nekim operacijskim sustavima broji pakete bez obzira na to jesu li ih podudarali izrazom filtra, a na drugim OS-ima broji samo one pakete koji su podudarali izrazom filtra i obrađeni su pomoću tcpdump );

paketi `` ispuštaju po jezgri '' (to je broj paketa koji su zbog nedostatka prostora za međuspremnike odbačeni mehanizmom za sakupljanje paketa u operacijskom sustavu na kojem se tcpdump pokreće, ako OS izvješćuje te podatke aplikacijama; ako ne, bit će prijavljen kao 0).

Na platformama koje podržavaju signal SIGINFO, kao što je većina BSD-ova, izvješćuje one brojeve kada prima signal SIGINFO (generiran, na primjer, upisivanjem znaka "statusa", tipično kontrole-T) i nastavit će snimanje paketa ,

Čitanje paketa s mrežnog sučelja može zahtijevati da imate posebne ovlasti:

Pod SunOS 3.x ili 4.x uz NIT ili BPF:

Morate imati pristup za čitanje / dev / nit ili / dev / bpf * .

Pod Solarisom s DLPI:

Morate imati pristup za čitanje / pisanje na pseudo uređaju mreže, npr. / Dev / le . Na barem nekim verzijama sustava Solaris, međutim, to nije dovoljno za dopuštanje tcpdump snimanja u promiskuitetnom načinu rada; na tim verzijama sustava Solaris, morate biti root ili tcpdump mora biti instaliran setuid u korijen, kako bi se uhvatio u promiskuitetnom modu. Imajte na umu da, na mnogim (možda i svim) sučeljima, ako ne uhvatite u promiskuitetnom načinu, nećete vidjeti nikakav odlazni paket, tako da hvatanje nije učinjeno u promiskuitetnom načinu rada možda neće biti korisno.

Pod HP-UX s DLPI:

Morate biti root ili tcpdump mora biti instaliran setuid na root.

Pod IRIXom s noktom:

Morate biti root ili tcpdump mora biti instaliran setuid na root.

Pod Linuxom:

Morate biti root ili tcpdump mora biti instaliran setuid na root.

Pod Ultrix i Digital UNIX / Tru64 UNIX:

Svaki korisnik može uhvatiti mrežni promet s tcpdumpom . Međutim, niti jedan korisnik (čak ni super-korisnik) ne može snimiti u promisljatnom načinu rada na sučelju osim ako super-korisnik nije omogućio promiskujući način rada na tom sučelju koristeći pfconfig (8), a niti jedan korisnik (čak ni super-korisnik ) može uhvatiti unicast promet koji je primio ili poslan od strane stroja na sučelju, osim ako super-korisnik nije omogućio operaciju kopiranja na svim sučeljem na tom sučelju pomoću pfconfig , pa je korisno hvatanje paketa na sučelju vjerojatno zahtijevati da bilo promiskujalno ili kopirano - na tom sučelju omogućeni su svi načini rada ili oba načina rada.

Pod BSD-om:

Morate imati pristup za čitanje / dev / bpf * .

Čitanje spremljene pakete ne zahtijeva posebne povlastice.

OPCIJE

-a

Pokušajte pretvoriti adrese mreže i emitiranja u nazive.

c

Izađite nakon primanja brojnih paketa.

-C

Prije pisanja sirovog paketa u datoteku za spremanje, provjerite je li datoteka trenutno veća od datotečne veličine i ako je tako, zatvori trenutni spremni zapis i otvorite novu datoteku. Savefiles nakon prvog savefile imat će ime navedeno sa -w zastavicom, s brojem nakon njega, s početkom u 2 i nastavlja prema gore. Jedinice datoteke su milijuni bajtova (1.000.000 bajtova, a ne 1.048.576 bajtova).

-D

Dohvatite kompilirani kod za podudaranje paketa u ljudski čitljiv oblik na standardni izlaz i zaustavljanje.

-dd

Kôd za podudaranje paketnih paketa kao fragment C programa.

-ddd

Kôd za podudaranje paketa s dvojnom kutijom kao decimalni brojevi (prethodi brojem).

-e

Ispišite zaglavlje na razini veza na svakoj liniji s dumpima.

-E

Koristite algo: tajnu za dešifriranje IPsec ESP paketa. Algoritmi mogu biti des- cbc , 3des- cbc , blowfish-cbc , rc3-cbc , cast128-cbc ili none . Zadana je des-cbc . Sposobnost dekriptiranja paketa prisutna je samo ako je tcpdump kompiliran s omogućenim kriptografijom. tajni ASCII tekst za ESP tajni ključ. U ovom trenutku ne možemo uzeti arbitrarnu binarnu vrijednost. Opcija preuzima RFC2406 ESP, a ne RFC1827 ESP. Opcija je namijenjena samo za svrhe uklanjanja pogrešaka, a uporaba ove opcije s istinskim "tajnim" ključem je obeshrabrena. Prikazivanjem tajnog ključa IPsec-a na naredbeni redak učinite ga vidljivima drugima, putem ps (1) i drugih prilika.

f

Ispis "stranih" internetskih adresa numerički, a ne simbolički (ova je opcija namijenjena za ozbiljnu oštećenja mozga u Sunovom yp poslužitelju --- obično visi vječno prevođenje internetskih brojeva koji nisu lokalni).

-F

Upotrijebite datoteku kao unos za izraz filtra. Dodatni izraz naveden u naredbenom retku zanemaruje se.

-i

Slušajte na sučelju . Ako nije navedeno, tcpdump traži popis sučelja sustava za najniže, konfigurirano sučelje (bez petlje). Veze su slomljene odabirom najranije utakmice.

Na Linux sustavima s 2.2 ili novijim jezgrama, argument sučelja `` bilo '' može se koristiti za snimanje paketa sa svih sučelja. Imajte na umu da snimke na "` bilo kojem "" uređaju neće biti učinjene u promiskuitetnom načinu rada.

-l

Izvršite puštanje u stdout liniju. Korisno je ako želite vidjeti podatke tijekom snimanja. npr,
`` tcpdump -l | tee dat "ili" tcpdump -l "dat i rep -f dat".

-m

Učitajte definicije SMI MIB modula iz datoteke modula . Ova se opcija može koristiti nekoliko puta za učitavanje nekoliko MIB modula u tcpdump .

-n

Ne pretvarajte adrese hostova u nazive. To se može koristiti za izbjegavanje pretraživanja DNS-a.

-nn

Nemojte pretvoriti protokol i brojeve porta itd.

N

Ne ispisujte kvalifikaciju naziva domene naziva glavnog računala. Na primjer, ako navedete tu zastavicu, tcpdump će ispisati `` nic '' umjesto `` nic.ddn.mil ''.

-O

Ne pokrećite optimizaciju koda za podudaranje paketa. Ovo je korisno samo ako sumnjate na grešku u optimizatoru.

-p

Ne stavljajte sučelje u promiskujući način. Imajte na umu da sučelje može biti u promiskuitetnom načinu rada iz nekog drugog razloga; Dakle, `-p 'ne može se koristiti kao kratica za` ether host {local-hw-addr} ili etersku emisiju'.

Q

Brzo (tiho?) Izlaz. Ispišite manje informacija o protokolu, tako da su izlazne linije kraće.

-R

Pretpostavimo da se ESP / AH paketi temelje na starim specifikacijama (RFC1825 do RFC1829). Ako je navedeno, tcpdump neće ispisati polje za preuzimanje preponiranja. Budući da u ESP / AH specifikaciji nema polja verzije protokola, tcpdump ne može zaključiti verziju ESP / AH protokola.

-r

Pročitajte pakete iz datoteke (koja je izrađena pomoću opcije -w). Standardni unos se koristi ako je datoteka `` - ''.

-S

Ispišite apsolutne, a ne relativne brojeve slijeda TCP-a.

-s

Snarf snaplen bajtova podataka iz svakog paketa, a ne zadani od 68 (s SunOS-ovim NIT, minimalno je zapravo 96). 68 bajta je prikladno za IP, ICMP, TCP i UDP, ali može skratiti podatke protokola s poslužitelja imena i NFS paketa (vidi dolje). Paketi skraćeni zbog ograničene snimke označeni su u izlazu s `` [| proto ] ", gdje je proto ime protokola na kojoj je došlo do prekidanja. Imajte na umu da uzimanje većih snimaka povećava vrijeme potrebno za procesiranje paketa i učinkovito smanjuje količinu paketa. To može uzrokovati gubitak paketa. Snaplen treba ograničiti na najmanji broj koji će obuhvatiti informacije o protokolima koje ste zainteresirani. Postavljanje snaplen na 0 znači da upotrijebite potrebnu duljinu da biste uhvatili cijele pakete.

-T

Paketi snage odabrani " izrazom " za tumačenje navedene vrste . Trenutno poznate vrste su cnfp (Cisco NetFlow protokol), rpc (Remote Procedure Call), rtp (protokol za realtime aplikacije), rtcp (protokol kontrole u stvarnom vremenu), snmp (Simple Network Management Protocol) ) i wb (Distribucija bijelog odbora).

-t

Nemojte ispisati vremensku oznaku na svakoj liniji za odlaganje.

-tt

Ispišite neformatiranu vremensku oznaku na svakoj liniji s dumpima.

-U

Odbacuje povlastice root i mijenja ID korisnika na ID korisnika i grupe primarnoj skupini korisnika .

Bilješka! Red Hat Linux automatski baca privilegije korisniku `` pcap '' ako ništa drugo nije specificirano.

-ttt

Ispišite deltu (u mikro sekundama) između trenutne i prethodne linije na svakoj liniji s dumpima.

-tttt

Ispišite vremensku oznaku u zadanom formatu prema datumu na svakoj liniji s dumpima.

-u

Ispišite neodređene NFS ručke.

-v

(Nešto više) izraženi output. Primjerice, ispisuju se vrijeme za život, identifikaciju, ukupnu duljinu i opcije u IP paketu. Omogućuje i dodatne provjere integriteta paketa kao što je potvrda provjere IP i ICMP zaglavlja.

-vv

Još izraženiji output. Na primjer, dodatna su polja ispisana iz NFS paketa za odgovor i SMB paketi su u potpunosti dekodirani.

-vvv

Još izraženiji output. Na primjer, telnet SB ... SE mogućnosti ispisuju se u cijelosti. Uz -X telnet opcije su tiskane u hex kao dobro.

-w

Napišite neobrađene pakete u datoteku umjesto da ih analiziraju i ispišu. Kasnije se mogu tiskati s opcijom -r. Standardni izlaz se koristi ako je datoteka `` - ''.

-x

Ispišite svaki paket (minus njegov zaglavlje razine veze) u hex. Manja od cjelokupnog paketa ili snaplen bajtova bit će tiskana. Imajte na umu da je to cijeli paket veznog sloja, tako da za slojeve veza (npr., Ethernet) bitovi za ispune bit će ispisani i kada je paket višeg sloja kraći od potrebnog padanja.

-X

Kada ispisujete šesterokute, ispišite ascii. Tako ako je i -x postavljen, paket se tiska u hex / ascii. Ovo je vrlo korisno za analizu novih protokola. Čak i ako -x nije postavljen, neki dijelovi nekih paketa mogu se ispisati u hex / ascii.

izraz

odabire koji će paketi biti odbačeni. Ako nema izraza , bit će izbačeni svi paketi na mreži. U suprotnom, bit će izbačeni samo paketi za koje je izraz "istinit".

Izraz se sastoji od jednog ili više primitiva. Primitivi se obično sastoje od id (ime ili broj) koji prethodi jedan ili više kvalifikatora. Postoje tri različite vrste kvalifikacija:

tip

kvalificatori kažu kakva se stvar odnosi na ime ili broj id. Moguće vrste su domaćin , neto i priključak . Npr., 'Host foo', 'net 128.3', 'port 20'. Ako nema kvalifikatora tipa, pretpostavlja se domaćin .

dir

kvalifikatori navode određeni smjer prijenosa i / ili od id . Mogući smjerovi su src , dst , src ili dst i src i dst . Na primjer, `src foo ',` dst net 128.3', `src ili dst port ftp-data '. Ako nema dir qualifier, pretpostavlja se src ili dst . Za `null 'vezne slojeve (to jest, točke do točke protokola kao što je slanje), ulazni i izlazni kvalifikatori mogu se koristiti za određivanje željenog smjera.

proto

kvalifikatori ograničavaju utakmicu određenom protokolu. Mogući protos su: eter , fddi , tr , ip , ip6 , arp , rarp , decnet , tcp i udp . Npr. "Ether src foo", "arp net 128.3", "tcp port 21". Ako nema proto qualifier, svi protokoli koji su u skladu s vrstom se pretpostavljaju. Npr. `Src foo 'znači' (ip ili arp ili rarp) src foo '(osim što drugi nije pravna sintaksa),` net bar' znači '(ip ili arp ili rarp) net bar' i 'port 53' `(tcp ili udp) priključak 53 '.

[`fddi 'je zapravo pseudonim za' eter '; parser ih jednako tretira kao značenje "razina podatkovnih veza koja se koristi na određenom mrežnom sučelju." FDDI zaglavlja sadrže Ethernet-slične izvorne i odredišne ​​adrese, a često sadrže Ethernet-slične vrste paketa, tako da možete filtrirati na tim FDDI poljem baš kao i kod analognih Ethernet polja. Zaglavlja FDDI sadrže i druga polja, ali ih ne možete imenovati eksplicitno u izrazu filtra.

Slično tome, 'tr' je pseudonim za 'eter'; izjave iz prethodnog odlomka o zaglavljima FDDI također se primjenjuju na zaglavlja Token Ringa.]

Pored gore navedenih, postoje neke posebne "primitivne" ključne riječi koje ne slijede obrasce: gateway , emitiranje , manje , veće i aritmetičke izraze. Sve su opisane u nastavku.

Složenije filtarske izraze izgrađuju se korištenjem riječi i , ili, i ne kombinirajući primitive. Npr. `Domaćin foo, a ne port ftp, a ne port ftp-data '. Da biste spremili tipkanje, identični popisi kvalifikacija mogu se izostaviti. Npr. `Tcp dst port ftp ili ftp-data ili domena 'je točno isto kao` tcp dst port ftp ili tcp dst port ftp-data ili tcp dst port domena'.

Dopuštene primitive su:

dst domaćin

Istina je da je IPv4 / v6 odredišno polje paketa host , što može biti adresa ili naziv.

src host

Istina je da je IPv4 / v6 izvorno polje paketa domaćin .

domaćin domaćin

Istina, ako je izvor IPv4 / v6 ili odredište paketa domaćin . Bilo koji od navedenih izraza domaćina može se dodati ključnim riječima, ip , arp , rarp ili ip6 kao u:

domaćin domaćina

što je ekvivalentno:

ether proto \ ip i domaćin

Ako je domaćin naziv s više IP adresa, svaka adresa bit će provjerena za utakmicu.

eter dst ehost

Istina je ako adresa ethernet odredišta je ehost . Ehost može biti naziv iz / etc / ethers ili broj (vidi etere (3N) za numerički format).

eter src ehost

Istina je da adresa ethernet source eHost .

eter domaćin ehost

Istina, ako je bilo ethernet izvor ili odredišna adresa je ehost .

domaćin pristupnika

Istina je da paket koristi host kao pristupnika. Naime, ethernet izvor ili odredišna adresa bila su domaćin, ali niti IP izvor niti IP odredište nisu bili domaćini . Domaćin mora biti naziv i mora ga pronaći i mehanizmi razlučivanja host-name-to-IP adresa (datoteka glavnog računala, DNS, NIS itd.) I razlučivosti adrese host-name-to-Ethernet mehanizam (/ etc / ethers, itd.). (Ekvivalentni izraz je

ether domaćin ehost, a ne domaćin domaćin

koji se može koristiti s bilo imenima ili brojevima za host / ehost .) Ova sintaksa u ovom trenutku ne funkcionira u konfiguraciji koja je omogućena za IPv6.

neto neto neto

Istina je da odredišna adresa IPv4 / v6 paketa ima mrežni broj mreže . Mreža može biti naziv iz / etc / networks ili mrežni broj (za detalje pogledajte mrežu (4) ).

neto neto mreža

Istina je da IPv4 / v6 izvorna adresa paketa ima mrežni broj mreže .

neto neto

Istina je ako izvor IPv4 / v6 ili odredišna adresa paketa ima mrežni broj mreže .

net net maska netmask

Istina, ako se IP adresa podudara s određenom mrežom . Može se kvalificirati s src ili dst . Napominjemo da ova sintaksa nije valjana za IPv6 mrežu .

neto neto / len

Istina je da se IPv4 / v6 adresa podudara s mrežom široke mreže bez maske . Može se kvalificirati s src ili dst .

dst port

Istina je da je paket ip / tcp, ip / udp, ip6 / tcp ili ip6 / udp i ima odredišnu luku portova . Luka može biti broj ili naziv koji se koristi u / etc / services (vidi tcp (4P) i udp (4P)). Ako se koristi naziv, provjeravaju se i broj porta i protokol. Ako se koristi broj ili dvosmisleno ime, provjerit će se samo broj porta (npr. Dst port 513 će ispisati promet tcp / login i udp / koji promet, a domena portova ispisuje promet tcp / domain i udp / domain).

src porta

Istina je da paket ima vrijednost luke portova .

port

Istina, ako je izvor ili odredišna luka paketa priključena . Bilo koji od gore navedenih izraza luka može se dodati ključnim riječima, tcp ili udp , kao u:

port portova tcp src

koji odgovara samo TCP paketa čiji je izvorni ulazni port .

manje duljine

Istina je da paket ima duljinu manju ili jednaku duljini . Ovo je ekvivalentno:

len <= dužina .

veću duljinu

Istina je da paket ima duljinu veću ili jednaku duljini . Ovo je ekvivalentno:

len> = duljina .

ip proto protokol

Istina je da je paket IP paket (vidi ip (4P)) protokolskog protokola tipa. Protokol može biti broj ili jedno od imena icmp , icmp6 , igmp , igrp , pim , ah , esp , vrrp , udp ili tcp . Imajte na umu da su identifikatori tcp , udp i icmp također ključne riječi i moraju se izbjeći putem obrnute linije (\), što je \\ u C-ljusci. Imajte na umu da ovaj primitiv ne potiče lanac zaglavlja protokola.

protok protokol ip6

Istina je da je paket IPv6 paket protokola protokolskog tipa. Imajte na umu da ovaj primitiv ne potiče lanac zaglavlja protokola.

IP6 protokotski protokol

Istina je da je paket IPv6 paket i sadrži zaglavlje protokol s tipskim protokolom u svom lancu zaglavlja protokola. Na primjer,

ip6 protokol 6

odgovara bilo kojem IPv6 paketu s zaglavljem TCP protokola u lancu zaglavlja protokola. Paket može sadržavati, na primjer, zaglavlje za autentifikaciju, zaglavlje usmjeravanja ili zaglavlje opcije hop-by-hop između IPv6 zaglavlja i TCP zaglavlja. BPF kôd koji emitira ovaj primitiv je složen i ne može se optimizirati pomoću BPF optimizacijskog koda u tcpdumpu , tako da to može biti pomalo sporo.

ip protochain protokol

Odgovara protokolu ip6 protokola , ali to je za IPv4.

eterskim emitiranjem

Istina, ako je paket ethernet broadcast packet. Eterska ključna riječ nije obavezna.

ip emitirati

Istina je da je paket paket za IP prijenos. Provjerava i sve nulte i sve one koji emitiraju konvencije, i pregleda lokalnu masku podmreže.

eter multicast

Istina je da je paket ethernet multicast paket. Eterska ključna riječ nije obavezna. Ovo je skraćeno za eter [0] & 1! = 0 '.

ip multicast

Istina je da je paket IP multicast paket.

ip6 multicast

Istina je da je paket IPv6 multicast paket.

eter proto protokol

Istina je da paket ima eter tip protokol . Protokol može biti broj ili jedan od naziva ip , ip6 , arp , rarp , atalk , aarp , decnet , sca , lat , mopdl , moprc , iso , stp , ipx ili netbeui . Imajte na umu da su ti identifikatori i ključne riječi i moraju se izbjeći putem obrnute strane (\).

[U slučaju FDDI-a (npr. ` Fddi protokol arp ') i Token Ring (npr.' Tr protocol arp ') za većinu tih protokola, identifikacija protokola dolazi od zaglavlja 802.2 Logical Link Control (LLC) obično se složi na vrh FDDI ili Token Ring zaglavlja.

Kada filtrira većinu identifikatora protokola na FDDI ili Token Ringu, tcpdump provjerava samo polje ID protokola LLC zaglavlja u tzv. SNAP formatu s identifikatorom organizacijske jedinice (OUI) od 0x000000 za enkapsuliranu Ethernet; ne provjerava je li paket u SNAP formatu s OUI od 0x000000.

Izuzeci su iso , za koji provjerava DSAP (pristupnu službu za pristupnu točku) i polja SSAP (Access Point Izvor), LLC zaglavlja, stp i netbeui , gdje provjerava DSAP zaglavlja LLC, a atalk , gdje je provjerava paket SNAP-formata s OUI od 0x080007 i tipkom Appletalk.

U slučaju Ethernet, tcpdump provjerava polje Ethernet tipa za većinu tih protokola; iznimke su iso , sap i netbeui , za koje provjerava okvir 802.3, a zatim provjerava LLC zaglavlje kao i za FDDI i Token Ring, atalk , gdje provjerava i za Appletalk etype u Ethernet okviru i za Paket SNAP-formata kao i za FDDI i Token Ring, aarp , gdje provjerava Appletalk ARP etype u bilo kojem Ethernet okviru ili 802.2 SNAP okviru s OUI od 0x000000 i ipx gdje provjerava IPX etype u Ethernet okvira, IPX DSAP u zaglavlju LLC, 802.3 bez inkapsulacije IP zaglavlja LLC i IPX etype u SNAP okviru.]

domaćin decnet src

Istina je da je izvorna adresa DECNET domaćin , što može biti adresa obrasca "` 10.123 '' ili naziv računala DECNET. [Podrška za naziv hostova DECNET dostupna je samo na sustavima tvrtke Ultrix koji su konfigurirani za pokretanje programa DECNET.]

decnet dst host

Istina je da je odredišna adresa DECNET domaćin .

decnet domaćin domaćin

Istina, ako je izvor DECNET ili odredišna adresa domaćin .

ip , ip6 , arp , rarp , atalk , aarp , decnet , iso , stp , ipx , netbeui

Kratice za:

eter proto p

gdje je p jedan od gore navedenih protokola.

lat , moprc , mopdl

Kratice za:

eter proto p

gdje je p jedan od gore navedenih protokola. Napominjemo da tcpdump trenutno ne zna kako analizirati te protokole.

vlan [vlan_id]

Istina je da je paket IEEE 802.1Q VLAN paket. Ako je navedeno [vlan_id] , samo je točno da paket ima navedeni vlan_id . Imajte na umu da se prva ključna riječ vlan koja se susreće u izrazu mijenja offseta dekodiranja za ostatak izraza na pretpostavci da je paket VLAN paket.

tcp , udp , icmp

Kratice za:

ip proto p ili ip6 proto p

gdje je p jedan od gore navedenih protokola.

iso proto protokol

Istina je da paket predstavlja OSI paket protokolskog protokola . Protokol može biti broj ili jedan od naziva clnp , esis ili isis .

clnp , esis , isis

Kratice za:

iso proto p

gdje je p jedan od gore navedenih protokola. Napominjemo da tcpdump radi nepotpuni posao raščlanjivanja tih protokola.

expr relop expr

Točno ako se odnosi, gdje je relop jedan od>, <,> =, <=, = ,! = I expr je aritmetički izraz sastavljen od cjelobrojnih konstanti (izražen u standardnoj sintaksi C), normalni binarni operatori [+ , -, *, /, &, |], operatera duljine i posebnih pristupnika paketnih podataka. Za pristup podacima unutar paketa upotrijebite sljedeću sintaksu:

proto [ expr : veličina ]

Proto je jedan od etera, fddi, tr, ppp, slip, veza, ip, arp, rarp, tcp, udp, icmp ili ip6 i označava protokoli za operaciju indeksa. ( eter, fddi, tr, ppp, slip i link svi se odnose na sloj veze.) Imajte na umu da se tcp, udp i ostali tipovi gornjeg sloja primjenjuju samo na IPv4, a ne na IPv6 (to će biti fiksirano u budućnosti). Offset bajtova, u odnosu na naznačeni sloj protokola, je dano ekspr . Veličina je neobavezna i označava broj bajtova na području interesa; može biti jedan, dva ili četiri, a zadani na jedan. Operator duljine, označen ključem len , daje duljinu paketa.

Na primjer, ` eter [0] & 1! = 0 'hvata sve multicast promet. Izraz ` ip [0] & 0xf! = 5 'hvata sve IP pakete s opcijama. Izraz ` ip [6: 2] & 0x1fff = 0 'ulovi samo nefragmentirane datagrame i fragment nula fragmentiranih datagrama. Ova se provjera implicitno primjenjuje na operacije tcp i udp indeksa. Na primjer, tcp [0] uvijek znači prvi bajt TCP zaglavlja , i nikada ne znači prvi bajt intervenirajućeg fragmenta.

Neka odstupanja i vrijednosti polja mogu se izraziti kao imena, a ne kao numeričke vrijednosti. Dostupni su sljedeći offseti polja zaglavlja protokola: icmptype (polje vrste ICMP), ICMP kôd (ICMP kôdsko polje) i tcpflags (polje TCP zastavica).

Dostupne su sljedeće vrijednosti polja tipa ICMP: icmp-echoreply , icmp-unreach , icmp-sourcequench , icmp-redirect , icmp-echo , icmp-routeradvert , icmp-routersolicit , icmp-timxceed , icmp-paramprob , icmp-tstamp , icmp - precizno , icmp-ireq , icmp-ireqreply , icmp-maskreq , icmp-maskreply .

Dostupne su sljedeće vrijednosti polja oznaka TCP : tcp-fin , tcp-syn , tcp-rst , tcp-push , tcp-push , tcp-ack , tcp-urg .

Primitivi se mogu kombinirati pomoću:

Zatvorena grupa primitivaca i operatora (zagrade su posebne za Shell i moraju se pobjeći).

Negacija (` ! 'Ili' ne ').

Spajanje (` && 'ili` i ').

Zamjena (` || ili` ili ').

Negacija ima najveći prioritet. Izmjenjivanje i povezivanje imaju jednaku prednost i pridružuju se s lijeva na desno. Imajte na umu da su eksplicitni tokeni, a ne suprotstavljanje, sada potrebni za spajanje.

Ako se identifikator dodjeljuje bez ključne riječi, pretpostavlja se najnovija ključna riječ. Na primjer,

ne domaćin nas i as

je kratka za

ne domaćin vs i domaćin as

što se ne smije zbuniti

ne (host vs ili as)

Argumenti izraza mogu se prenijeti na tcpdump kao pojedinačni argument ili kao višestruki argument, ovisno što je prikladno. Općenito, ako izraz sadrži Shell metakaraktere, lakše ga je proslijediti kao jedan, citirani argument. Višestruki argumenti povezani su s razmakom prije nego što se raščlanjuju.

PRIMJERI

Ispis svih paketa koji dolaze ili odlaze od zalaska sunca :

tcpdump domaćin zalaska sunca

Za ispis prometa između helioja i vruće ili as :

tcpdump host helios i \ (vruće ili asa \)

Ispis svih IP paketa između Ace i bilo kojeg domaćina osim helios :

tcpdump ip host ace, a ne helios

Ispisujte sav promet između lokalnih domaćina i hostova u tvrtki Berkeley:

tcpdump net ucb-eter

Za ispis svih ftp prometa kroz internet gateway snup : (imajte na umu da se izraz navodi kako bi spriječio ljusku od pogrešnog tumačenja zagrada):

tcpdump 'gateway snup i (port ftp ili ftp-data)'

Za ispisivanje prometa ni izvornih niti namijenjenih lokalnim domaćinima (ako ste pristupnik drugoj mreži, te stvari nikada ne bi smjele učiniti na vašoj lokalnoj mreži).

tcpdump ip, a ne net netnet

Za ispis početnih i završnih paketa (SYN i FIN paketa) svakog TCP razgovora koji uključuje ne-lokalni domaćin.

tcp-syn | tcp-fin)! = 0, a ne src i dst net localnet ' tcpdump' tcp [tcpflags]

Za ispis IP paketa dulje od 576 bajta poslanih preko gateway snup :

tcpdump 'pristupnik snup i ip [2: 2]> 576'

Za ispis IP prijenosnih ili multicast paketa koji nisu poslani putem ethernet emitiranja ili multicasta:

tcpdump 'eter [0] & 1 = 0 i ip [16]> = 224'

Ispišite sve ICMP pakete koji nisu eho zahtjevi / odgovori (tj. Ne ping paketi):

tcpdump 'icmp [icmptype]! = icmp-echo i icmp [icmptype]! = icmp-echoreply'

IZLAZNI FORMAT

Izlaz tcpdump ovisi o protokolu. Slijedi kratak opis i primjeri većine formata.

Headers Razina veze

Ako je navedena opcija "-e", ispisuje se zaglavlje razine veza. Na ethernetsima ispisuju se izvorna i odredišna adresa, protokol i duljina paketa.

Na FDDI mrežama, opcija "-e" uzrokuje tcpdump za ispis polja "frame control", adresu izvora i odredišta i duljinu paketa. Normalni paketi (poput onih koji sadrže IP datagrami) su paketi "async", s prioritetnom vrijednošću između 0 i 7, npr. " Async4 ". pretpostavlja se da paketi sadrže 802.2 Logical Link Control (LLC) paket, LLC zaglavlje se tiska ako nije ISO datagram ili takozvani SNAP paket.

Na Token Ring mrežama, opcija "-e" uzrokuje da tcpdump ispisuje polja "kontrole pristupa" i "kontrola okvira", izvorne i odredišne ​​adrese i duljinu paketa. Kao i na FDDI mrežama, pretpostavlja se da paketi sadrže paket LLC. Bez obzira je li opcija "-e" specificirana ili nije, podaci o izvoru usmjeravanja ispisuju se za izvorno usmjerene pakete.

(NB: sljedeći opis pretpostavlja poznavanje SLIP kompresijskog algoritma opisanog u RFC-1144.)

Na SLIP vezama ispisuju se indikatori smjera ("I" za dolazne, "O" za odlazne), vrstu paketa i informacije o komprimiranju. Vrsta paketa se prvo ispisuje. Tri su vrste ip , utcp i ctcp . Za ip pakete ne ispisuju se daljnje informacije veze. Za TCP pakete, identifikator veze ispisuje se prema vrsti. Ako je paket komprimiran, njegovo kodirano zaglavlje ispisuje se. Posebni slučajevi ispisuju se kao * S + n i * SA + n , gdje je n iznos kojim se promijenio redni broj (ili redni broj i ack). Ako to nije poseban slučaj, ispisuju se nula ili više promjena. Promjena je naznačena pomoću U (hitni pokazivač), W (prozor), A (ack), S (broj slijeda) i I (paketni ID), a zatim delta (+ n ili -n) ili novu vrijednost (= n). Konačno, ispisuju se količine podataka u paketu i komprimiranoj duljini zaglavlja.

Na primjer, sljedeća linija prikazuje izlazni komprimirani TCP paket s implicitnim identifikatorom veze; ack se promijenio za 6, broj slijeda za 49 i ID paketa za 6; postoje 3 bajta podataka i 6 bajta komprimiranog zaglavlja:

O ctcp * A + 6 S + 49 I + 6 3 (6)

ARP / RARP paketi

Arp / rarp izlaz prikazuje vrstu zahtjeva i njegove argumente. Format je namijenjen samo za sebe. Evo kratkog uzorka preuzetog od početka `rlogin 'od domaćina rtsg do domaćina csam :

arp koji-ima csam reći rtsg arp odgovor csam je-at CSAM

Prva linija kaže da je rtsg poslao arp paket tražeći ethernet adresu internet host csam. Csam odgovara sa svojom ethernet adresom (u ovom primjeru, ethernet adrese su u kapicama i internet adresama u malim slovima).

Ovo bi izgledalo manje suvišno ako bismo učinili tcpdump -n :

arp koji-ima 128.3.254.6 reći 128.3.254.68 arp odgovor 128.3.254.6 je-u 02: 07: 01: 00: 01: c4

Ako smo napravili tcpdump -e , bit će vidljiva činjenica da se prva paketa emitira, a druga je točka do točke:

RTSG emitiranje 0806 64: arp koji-ima csam reći rtsg CSAM RTSG 0806 64: arp odgovor csam je-at CSAM

Za prvi paket to kaže da je adresa izvora etherneta RTSG, odredište je ethernet broadcast adresa, polje tipa sadrži hex 0806 (tip ETHER_ARP), a ukupna duljina bila je 64 bajta.

TCP paketi

(NB: Sljedeći opis pretpostavlja poznavanje TCP protokola opisanog u RFC-793. Ako niste upoznati s protokolom, ni ovaj opis ni tcpdump neće vam puno koristiti.)

Opći format tcp protokola linija je:

src> dst: zastavice podataka-seqno ack prozor hitne opcije

Src i dst su izvorne i odredišne ​​IP adrese i portovi. Zastave su neka kombinacija S (SYN), F (FIN), P (PUSH) ili R (RST) ili jedan. (bez zastave). Data-seqno opisuje dio prostora sekvencije pokrivenih podacima u ovom paketu (vidi primjer u nastavku). Ack je slijedni broj sljedećih podataka koji su očekivali drugi smjer na ovoj vezi. Prozor je broj bajtova spremnika za prijam koji su dostupni u drugom smjeru na ovoj vezi. Urg ukazuje da postoji "hitan" podatak u paketu. Opcije su tcp opcije zatvorene u kutnim zagradama (npr. ).

Src, dst i zastave uvijek su prisutni. Ostala polja ovise o sadržaju zaglavlja tcp protokola paketa i izlaze se samo ako je to prikladno.

Ovdje je početni dio rlogina od domaćina rtsg do domaćina csam .

rtsg.1023> csam.login: S 768512: 768512 (0) win 4096 csam.login> rtsg.1023: S 947648: 947648 (0) ack 768513 pobjeda 4096 rtsg.1023> csam. prijaviti se: . ack 1 pobjeda 4096 rtsg.1023> csam.login: P 1: 2 (1) ack 1 pobjeda 4096 csam.login> rtsg.1023:. ack 2 pobjeda 4096 rtsg.1023> csam.login: P 2:21 (19) ack 1 pobjeda 4096 csam.login> rtsg.1023: P 1: 2 (1) ack 21 pobjeda 4077 csam.login> rtsg.1023: P 2: 3 (1) ack 21 pobijediti 4077 poticaj 1 csam.login> rtsg.1023: P 3: 4 (1) ack 21 pobijediti 4077 urg 1

Prva linija kaže da je tcp port 1023 na rtsg poslao paket za prijavu portova na csam. S označava da je zastava SYN postavljena. Broj sekvence paketa bio je 768512 i nije sadržavao podatke. (Zapis je "prvi: zadnji (nbytes)", što znači "brojevi sekvenci prvi do, ali ne uključujući zadnji, koji je nbytes bajtova korisničkih podataka".) Nije bilo praćke s podlogama , dostupan je prijemni prozor 4096 bajta postojala je opcija maksimalne veličine segmenta koja traži mss od 1024 bajta.

Csam odgovara sa sličnim paketom, osim što uključuje prašinu podlogom za rtsg's SYN. Rtsg onda acks csam's SYN. "." znači da nisu postavljene zastave. Paket nije sadržavao podatke pa nema broja slijeda podataka. Imajte na umu da je broj slijeda ack mali cijeli broj (1). Prvi put tcpdump vidi tcp `conversation ', ispisuje broj sekvence iz paketa. Na naknadnim paketima razgovora, ispisuje se razlika između broja slijednog broja trenutnog paketa i tog početnog broja slijeda. To znači da se brojevi sekvenci nakon prvog mogu interpretirati kao relativni položaji bajtova u streamu konverzacije (s prvim bajtom podataka koji je svaki smjer "1"). `-S 'će nadjačati ovu značajku, uzrokujući da se izvodi izvorni slijedni brojevi.

Na šestoj liniji, rtsg šalje 19 bajta podataka (bajtova 2 do 20 u rtsg -> csam strani razgovora). PUSH zastavica je postavljena u paketu. Na sedmoj liniji csam kaže da su primljeni podaci poslani rtsg do, ali ne uključujući i byte 21. Većina tih podataka očigledno je sjedio u međuspremniku jer je csamov prijemni prozor dobio manje od 19 bajta. Csam također šalje jedan bajt podataka u rtsg u ovom paketu. Na 8. i 9. redak, csam šalje dva bajta hitnih, gurnuti podatke rtsg.

Ako je snimka bila dovoljno mala da tcpdump nije uhvatio puni TCP zaglavlje, on tumači što više zaglavlja, a zatim izvještava "` [| tcp ] "kako bi se naznačilo da ostatak nije moguće tumačiti. Ako zaglavlje sadrži lažnu opciju (jedan s duljinom koja je premalena ili iza kraja zaglavlja), tcpdump ga izvješćuje kao `` [ loše opt ] '' i ne protumači nikakve daljnje mogućnosti (budući da je nemoguće reći gdje počinju). Ako duljina zaglavlja ukazuje da su opcije prisutne, ali duljina IP datagrama nije dovoljno dugo da opcije zapravo budu tamo, tcpdump ga izvješćuje kao `` [ loša HDD dužina ] ''.

Snimanje TCP paketa s posebnim kombinacijama zastave (SYN-ACK, URG-ACK, itd.)

U sekciji kontrolnih bitova TCP zaglavlja ima 8 bita:

CWR | ECE | URG | ACK | PSH | RST | SYN | PERAJE

Pretpostavimo da želimo gledati pakete koji se koriste za uspostavljanje TCP veze. Podsjetimo se da TCP koristi trostruki protokol rukovanja kada inicijalizira novu vezu; slijed povezivanja s obzirom na TCP kontrolne bitove je

1) Pozivatelj šalje SYN

2) Primatelj odgovara sa SYN, ACK

3) Pozivatelj šalje ACK

Sada smo zainteresirani za hvatanje paketa koji imaju samo skup SYN bitova (korak 1). Imajte na umu da ne želimo pakete iz koraka 2 (SYN-ACK), samo običan početni SYN. Ono što nam je potrebno je ispravan izraz filtra za tcpdump .

Sjetite se strukture TCP zaglavlja bez mogućnosti:

0 15 31 ----------------------------------------------- ------------------ | izvorni port | odredišni port | -------------------------------------------------- --------------- | broj sekvence -------------------------------------------------- --------------- | broj priznanja | -------------------------------------------------- --------------- | HL | rsvd | C | E | U | A | P | R | S | F | veličina prozora -------------------------------------------------- --------------- | TCP kontrolni zbroj | hitni pokazivač -------------------------------------------------- ---------------

TCP zaglavlje obično ima 20 okteta podataka, osim ako su opcije prisutne. Prva linija grafikona sadrži oktete 0 do 3, druga linija prikazuje oktete 4 do 7 itd.

Počevši odbrojavanje s 0, relevantni TCP kontrolni bitovi sadržani su u oktetu 13:

0 7 | 15 | 23 | 31 ---------------- | --------------- | --------------- | ---------------- | HL | rsvd | C | E | U | A | P | R | S | F | veličina prozora ---------------- | --------------- | --------------- | - --------------- | | 13. oktet | | |

Let's imati bliži pogled na oktet br. 13:

| | | --------------- | | C | e | U | A | P | R | S | F | | --------------- | | 7 5 3 0 |

To su TCP kontrolni bitovi za koje smo zainteresirani. Brojni su bitovi u ovom oktetu od 0 do 7, desno na lijevo, pa je PSH bit bitni broj 3, a URG bit je broj 5.

Podsjetimo da želimo uhvatiti pakete sa samo SYN skupom. Pogledajmo što se događa s oktetom 13 ako TCP datagram stigne s SYN bitom postavljenim u zaglavlju:

| C | e | U | A | P | R | S | F | | --------------- | | 0 0 0 0 0 0 1 0 | | --------------- | | 7 6 5 4 3 2 1 0 |

Gledajući odjeljak kontrolnih bitova vidimo da je postavljen samo bitni broj 1 (SYN).

Pretpostavljajući da oktet broj 13 predstavlja 8-bitni nepotpisani integer u redoslijedu mrežnog bajtova, binarna vrijednost tog okteta je

00000010

i njegov decimalni prikaz je

7 6 5 4 3 2 1 0 0 * 2 + 0 * 2 + 0 * 2 + 0 * 2 + 0 * 2 + 0 * 2 + 1 * 2 + 0 * 2 = 2

Gotovo smo gotovi jer sada znamo da ako je samo SYN postavljen, vrijednost 13. okteta u TCP zaglavlju, kada se interpretira kao 8-bitni nepotpisani cijeli broj u mrežnom bajtu, mora biti točno 2.

Taj se odnos može izraziti kao

tcp [13] == 2

Taj izraz možemo koristiti kao filtar za tcpdump kako bismo gledali pakete koji imaju samo SYN skup:

tcpdump -i xl0 tcp [13] == 2

Izraz kaže "neka 13. oktet TCP datagrama ima decimalnu vrijednost 2", što je upravo ono što želimo.

Pretpostavimo da trebamo uhvatiti pakete za SYN, ali nam nije bitno da li ACK ili bilo koji drugi TCP kontrolni bit postavljen u isto vrijeme. Pogledajmo što se događa s oktetom 13 kada dolazi TCP datagram s SYN-ACK skupom:

| C | e | U | A | P | R | S | F | | --------------- | | 0 0 0 1 0 0 1 0 | | --------------- | | 7 6 5 4 3 2 1 0 |

Sad su bitovi 1 i 4 postavljeni u 13. oktetu. Binarna vrijednost okteta 13 je


00010010

što znači decimalni broj

7 6 5 4 3 2 1 0 0 * 2 + 0 * 2 + 0 * 2 + 1 * 2 + 0 * 2 + 0 * 2 + 1 * 2 + 0 * 2 = 18

Sada ne možemo koristiti samo tcp [13] == 18 'u izrazu tcpdump filtra, jer bi se odabrali samo oni paketi koji imaju SYN-ACK set, ali ne i one sa samo SYN skupom. Imajte na umu da nas ne zanima ACK ili bilo koji drugi kontrolni bit postavljen tako dugo dok je SYN postavljen.

Da bismo postigli svoj cilj, moramo logički i binarnu vrijednost okteta 13 s nekom drugom vrijednošću sačuvati SYN bit. Znamo da želimo da SYN bude postavljen u svakom slučaju, tako da ćemo logički i vrijednost u 13. oktetu s binarnom vrijednošću SYN:

00010010 SYN-ACK 00000010 SYN I 00000010 (želimo SYN) I 00000010 (želimo SYN) -------- -------- = 00000010 = 00000010

Vidimo da ova AND operacija donosi isti rezultat bez obzira je li ACK ili neki drugi TCP kontrolni bit postavljen. Decimalni prikaz I vrijednosti kao i rezultat ove operacije je 2 (binarni 00000010), tako da znamo da za pakete sa SYN postavljamo sljedeći odnos mora vrijediti:

((vrijednost okteta 13) I (2)) == (2)

To nas upućuje na tcpdump izraz filtra

tcpdump -i xl0 'tcp [13] & 2 == 2'

Imajte na umu da biste trebali upotrijebiti pojedinačne navodnike ili povratni udarac u izrazu da biste sakrili AND ('&') posebni znak iz ljuske.

UDP paketi

UDP format ilustrira ovaj rwho paket:

actinide.who> broadcast.who: udp 84

To govori da je luka koja je na aktinu domaćina poslala udp datagram u luku koje su na emitiranju domaćina, internetska adresa za emitiranje. Paket sadrži 84 bajta korisničkih podataka.

Neke UDP usluge prepoznate su (od izvora ili odredišnog broja ulaza) i ispisuju se informacije o protokolu viših razina. Konkretno, zahtjevi za uslugom Domene Name (RFC-1034/1035) i Sun RPC pozivi (RFC-1050) u NFS.

Zahtjevi UDP naziva poslužitelja

(Napomena: Sljedeći opis pretpostavlja poznavanje protokola Domain Service opisanog u RFC-1035. Ako niste upoznati s protokolom, izgleda da će sljedeći opis biti napisan na grčkom.)

Zahtjevi za naziv poslužitelja oblikovani su kao

src> dst: id op? flags qtype qclass ime (len) h2opolo.1538> helios.domain: 3+ A? ucbvax.berkeley.edu. (37)

Host h2opolo zatražio je poslužitelja domene na heliosima za adresnu poruku (qtype = A) povezanu s imenom ucbvax.berkeley.edu. ID upita bio je '3'. "+" Označava rekurzivnu željenu zastavicu. Duljina upita bila je 37 bajtova, ne uključujući zaglavlja UDP i IP protokola. Upit je bio normalan, upita , pa je polje op ispušteno. Ako je op bilo nešto drugo, bilo bi tiskano između "3" i "+". Slično tome, qclass je bio normalan, C_IN i izostavljen. Bilo koji drugi qclass tiskan je odmah nakon "A".

Nekoliko anomalija se provjerava i može rezultirati dodatnim poljima zaglavljenima u kvadratnim zagradama: Ako upit sadrži odgovor, zapisi o ovlaštenjima ili dodatni dijelovi zapisa, ancount , nscount ili arcount se ispisuju kao `[ n a] ',` [ n n ] 'ili' [ n au] 'gdje je n odgovarajuće brojanje. Ako je bilo koji od bitova odgovora postavljen (AA, RA ili rcode) ili bilo koji od bitova "mora biti nula" postavljen u bajtovima dva i tri, ispisuje se "b2 & 3 = x ]", gdje je x heksadecimalna vrijednost zaglavlja bajtova dva i tri.

Odgovori UDP naziva poslužitelja

Odgovori poslužitelja imena oblikovani su kao

src> dst: id op rcode označava podatke klase tipa a / n / au (len) helios.domain> h2opolo.1538: 3 3/3/7 A 128.32.137.3 (273) helios.domain> h2opolo.1537: 2 NXDomain * 0/1/0 (97)

U prvom primjeru, helios odgovara na upit 3 od h2opola s 3 zapisa odgovora, 3 zapisa poslužitelja imena i 7 dodatnih zapisa. Prvi odgovor je tip A (adresa) i njegovi su podaci internetska adresa 128.32.137.3. Ukupna veličina odgovora bila je 273 bajta, isključujući UDP i IP zaglavlja. Propust (Query) i kôd odgovora (NoError) izostavljeni su, kao i klasa (C_IN) rekorda A.

U drugom primjeru helios odgovara na upit 2 s kodom odgovora nepostojeće domene (NXDomain) bez odgovora, jednog poslužitelja imena i bez zapisa o vlasti. '*' Označava da je mjerodavan bit za odgovor postavljen. Budući da nije bilo odgovora, nije ispisana nikakva vrsta, klasa ili podaci.

Drugi znakovi zastave koji se mogu pojaviti su `- '(dostupna rekurzija, RA, nije postavljena) i` |' (skraćena poruka, TC, skup). Ako odjeljak "pitanje" ne sadrži točno jedan unos, ispisuje se "[ n q]".

Imajte na umu da zahtjevi i odgovori poslužitelja imena imaju veliku veličinu, a zadani snaplen od 68 bajta možda neće uhvatiti dovoljno paketa za ispis. Pomoću s oznake s povećajte snaplen ako trebate ozbiljno istražiti promet poslužitelja imena. ` -s 128 'je dobro funkcionirao za mene.

SMB / CIFS dekodiranje

tcpdump sad uključuje prilično opsežno SMB / CIFS / NBT dekodiranje za podatke o UDP / 137, UDP / 138 i TCP / 139. Također je učinjeno neko primitivno dekodiranje IPX i NetBEUI SMB podataka.

Prema zadanim postavkama, obavlja se prilično minimalna dekodiranje, s puno detaljnijom dekodiranjem ako se koristi -v. Budite upozoreni da s jednim SMB paketićem može zauzimati stranicu ili više, stoga samo koristite - ako ste zaista željeli sve krhke detalje.

Ako dekodirate SMB sesije koje sadrže unicode nizove, možda biste htjeli postaviti varijablu okruženja USE_UNICODE na 1. Zakrpa za automatsko otkrivanje unicode srings bilo bi dobrodošla.

Za informacije o formatima SMB paketa i što sve to polje znači pogledajte www.cifs.org ili katalog / pub / samba / specs / na vašem omiljenom mjestu ogledala samba.org. SMB zakrpe napisao je Andrew Tridgell (tridge@samba.org).

NFS zahtjevi i odgovori

Zahtjevi i odgovori Sun NFS (Network File System) tiskani su kao:

src.xid> dst.nfs: len op args src.nfs> dst.xid: odgovor stat len ​​op rezultati sushi.6709> wrl.nfs: 112 readlink fh 21,24 / 10,73165 wrl.nfs> sushi.6709: odgovor u redu 40 readlink "../var" sushi.201b> wrl.nfs: 144 pretraživanje fh 9,74 / 4096,6878 "xcolors" wrl.nfs> sushi.201b: odgovor ok 128 lookup fh 9,74 / 4134,3150

U prvom retku, domaćin sushi šalje transakciju s ID 6709 na wrl (imajte na umu da je broj koji slijedi src host id ID transakcije, a ne izvorni priključak). Zahtjev je bio 112 bajtova, isključujući UDP i IP zaglavlja. Operacija je bila readlink (pročitajte simboličku vezu) na ručici datoteka ( fh ) 21,24 / 10,731657119. (Ako je netko sretan, kao u ovom slučaju, rukovanje datotekom može se tumačiti kao glavni manji broj parova uređaja, nakon čega slijedi broj za inode i broj generiranja.) Wrl odgovara "ok" sa sadržajem veze.

U trećem retku, sushi traži wrl da traži naziv ` xcolors 'u direktorijskoj datoteci 9,74 / 4096,6878. Napominjemo da ispisani podaci ovise o vrsti operacije. Format je namijenjen samoobjasniti ako se pročita zajedno s NFS protokolom.

Ako je navedena zastavica -v (opširan), ispisuju se dodatne informacije. Na primjer:

sushi.1372a> wrl.nfs: 148 čitanje fh 21,11 / 12.195 8192 bytes @ 24576 wrl.nfs> sushi.1372a: odgovor ok 1472 čitaj REG 100664 ids 417/0 sz 29388

(-v također ispisuje polja IP TTL, ID, duljina i fragmentacije koja su izostavljena iz ovog primjera.) U prvom retku, sushi traži wrl da pročita 8192 bajta iz datoteke 21,11 / 12,195, pri offsetu bita 24576. Wrl odgovara "ok"; paket prikazan na drugom retku prvi je fragment odgovora i stoga je dugačak samo 1472 bajta (ostali bajtovi će pratiti u kasnijim fragmentima, ali ti fragmenti nemaju NFS ili čak UDP zaglavlja i stoga ih možda neće ispisivati, ovisno o upotrijebljenom izrazu filtra). Budući da je navedena -v zastavica, ispisuju se neki atributi datoteka (koji se vraćaju uz datoteke podataka): tip datoteke (`` REG '' za redovitu datoteku), način rada datoteka (u oktalnom) uid i gid, i veličina datoteke.

Ako se oznaka -v dade više puta, više se ispisuju detalji.

Imajte na umu da su NFS zahtjevi vrlo veliki, a velik dio detalja neće se ispisati osim ako se povećava snaplen . Pokušajte koristiti ` -s 192 'kako biste gledali NFS promet.

NFS paketi za odgovor ne izričito identificiraju rad RPC-a. Umjesto toga, tcpdump prati zahtjeve "nedavnih" i odgovara im odgovorima pomoću ID-a transakcije. Ako odgovor ne usko slijedi odgovarajući zahtjev, možda neće biti moguće analizirati.

Zahtjevi i odgovori AFS-a

Zahtjevi i odgovori za Transarc AFS (Andrew File System) tiskani su kao:

src.sport> dst.dport: rx tip paketa src.sport> dst.dport: rx paketni tip servisni poziv pozivno ime args src.sport> dst.dport: rx paketa tipa odgovor usluge ime poziva args elvis. 7001> pike.afsfs: rx podaci fs poziv preimenovati stari fid 536876964/1/1 ".newsrc.new" new fid 536876964/1/1 ".newsrc" pike.afsfs> elvis.7001: rx podataka fs odgovor preimenuj

U prvom retku, domaćin elvis šalje RX paket na štuka. To je RX paket podataka za fs (fileerver) uslugu, a početak je RPC poziva. RPC poziv bio je preimenovan, s imenom starog imenika direktorija 536876964/1/1 i starim nazivom naziva `.newsrc.new ', te novim imenom direktorija direktorija 536876964/1/1 i novim nazivom`. newsrc”. Pečat domaćin odgovara RPC odgovorom na preimenovanje poziva (što je bilo uspješno, jer je to bio podatkovni paket, a ne paket za prekid).

Općenito, svi AFS RPC-ovi dekodirani su najmanje nazivom RPC naziva. Većina AFS RPC-ova imaju barem neke od argumenata koji su dekodirani (uglavnom samo "zanimljivi" argumenti, za neku definiciju zanimljive).

Oblik je namijenjen samooblikovanju, ali vjerojatno neće biti korisno ljudima koji nisu upoznati s radom AFS i RX.

Ako se zastavica -v (dvolično) daje dva puta, ispisuju se paketi priznanja i dodatne informacije o zaglavlju, kao što su RX pozivni broj, broj poziva, redni broj, serijski broj i oznake RX paketa.

Ako se -v zastava daje dva puta, ispisuju se dodatne informacije, kao što su ID RX poziva, serijski broj i oznake RX paketa. MTU pregovaračke informacije također se ispisuju iz paketa RX ack.

Ako se oznaka -v dade tri puta, ispisuje se sigurnosni indeks i ID usluge.

Šifre grešaka se ispisuju za abort pakete, s iznimkom paketa Ubik beacon (jer se abort paketi koriste za označavanje broja glasova za Ubik protokol).

Imajte na umu da su zahtjevi za AFS veoma veliki i mnogi se argumenti neće ispisati osim ako se povećava snaplen . Pokušajte koristiti ` -s 256 'za gledanje AFS prometa.

Paketi odgovornih AFS-a ne izričito identificiraju RPC operaciju. Umjesto toga, tcpdump prati zahtjeve "nedavnih" i odgovara im odgovore koristeći pozivni broj i ID usluge. Ako odgovor ne usko slijedi odgovarajući zahtjev, možda neće biti moguće analizirati.

KIP Appletalk (DDP u UDP-u)

Appletalk DDP paketi enkapsulirani u UDP datagramima su de-encapsulated i bačeni kao DDP paketi (tj., Sve UDP zaglavlja informacije odbacuje). Datoteka /etc/atalk.names koristi se za prevođenje mreža apleta i brojeva čvorova u nazive. Redci u ovoj datoteci imaju oblik

broj naziva 1.254 eter 16.1 icsd-net 1.254.110 as

Prve dvije linije daju imena mreža apleta. Treća crta daje naziv određenog domaćina (domaćin se razlikuje od mreže do 3. okteta u broju - neto broj mora imati dva okteta, a broj domaćin mora imati tri okteta.) Broj i ime trebaju biti odvojeni po razmaku (praznine ili kartice). Datoteka /etc/atalk.names može sadržavati prazne retke ili retke komentara (linije koje počinju s "#").

Adresa apleta ispisuju se u obliku:

net.host.port 144.1.209.2> icsd-net.112.220 ured.2> icsd-net.112.220 jssmag.149.235> icsd-net.2

(Ako /etc/atalk.names ne postoji ili ne sadrži unos za neki host / neto broj, adrese se ispisuju u numeričkom obliku.) U prvom primjeru, NBP (DDP port 2) na mreži 144.1 čvor 209 šalje svemu što sluša na priključku 220 neto icsd čvora 112. Druga linija je ista, osim što je poznat cijeli naziv izvora čvora ("ured"). Treća linija je slanje iz luke 235 na neto jssmag čvoru 149 radi emitiranja na icsd-net NBP portu (imajte na umu da je adresa za emitiranje (255) označena neto imenom bez broja domaćina - zbog toga je dobra ideja kako bi se čvorovi nazivi i neto imena razlikovali u /etc/atalk.names).

NBP (naziv obvezujući protokol) i ATP (Appletalk transakcijski protokol) paketi imaju svoj sadržaj tumačiti. Ostali protokoli upisuju samo naziv protokola (ili broj ako nijedan naziv nije registriran za protokol) i veličina paketa.

NBP paketi oblikovani su poput sljedećih primjera:

icsd-net.112.220> jssmag.2: nbp-lkup 190: "=: LaserWriter @ *" jssmag.209.2> icsd-net.112.220: nbp-odgovor 190: "RM1140: LaserWriter @ *" 250 techpit.2> -net.112.220: nbp-odgovor 190: "techpit: LaserWriter @ *" 186

Prva linija je zahtjev za traženje imena za laserske osobe koje šalje net icsd host 112 i emitira se na net jssmag. Nbp ID za pretraživanje je 190. Druga linija prikazuje odgovor za ovaj zahtjev (imajte na umu da ima isti ID) od domaćina jssmag.209 rekavši da ima laserski resurs pod imenom "RM1140" registriran na priključku 250. Treći linija je još jedan odgovor na isti zahtjev koji govori da domaćin techpit ima laserski "techpit" registriran na portu 186.

ATP oblikovanje paketa je prikazano sljedećim primjerom:

jssmag.209.165> helios.132: atp-req 12266 <0-7> 0xae030001 helios.132> jssmag.209.165: atp-resp 12266: 0 (512) 0xae040000 helios.132> jssmag.209.165: atp-resp 12266: 1 (512) 0xae040000 helios.132> jssmag.209.165: atp-resp 12266: 2 (512) 0xae040000 helios.132> jssmag.209.165: atp-resp 12266: 3 (512) 0xae040000 helios.132> jssmag.209.165: atp- resp 12266: 4 (512) 0xae040000 helios.132> jssmag.209.165: atp-resp 12266: 5 (512) 0xae040000 helios.132> jssmag.209.165: atp-resp 12266: 6 (512) 0xae040000 helios.132> jssmag. 209.165: atp-resp * 12266: 7 (512) 0xae040000 jssmag.209.165> helios.132: atp-req 12266 <3.5> 0xae030001 helios.132> jssmag.209.165: atp-resp 12266: 3 (512) 0xae040000 helios .132> jssmag.209.165: atp-resp 12266: 5 (512) 0xae040000 jssmag.209.165> helios.132: atp-rel 12266 <0-7> 0xae030001 jssmag.209.133> helios.132: atp-req * 12267 <0 -7> 0xae030002

Jssmag.209 inicira ID transakcije 12266 s helikopterom domaćinstva tražeći do 8 paketa ('<0-7>'). Hex broj na kraju retka je vrijednost polja "userdata" u zahtjevu.

Helios odgovara s 8 paketa od 512 bajta. `: Znamenka 'koja slijedi id transakcije daje broj sekvence paketa u transakciji, a broj u parenu je količina podataka u paketu, isključujući atp zaglavlje. `* 'Na paketu 7 označava da je bit EOM-a postavljen.

Jssmag.209 zatim zahtijeva da se paketi 3 i 5 ponovno prenesu. Helios ih ponovno šalje, a jssmag.209 oslobađa transakciju. Konačno, jssmag.209 pokreće sljedeći zahtjev. '*' Na zahtjev pokazuje da XO (`točno jednom ') nije postavljen.

Fragmentacija IP-a

Fragmentirani internetski datagrami tiskani su kao

(frag id : veličina @ offset +) (frag id : veličina @ offset )

(Prvi oblik ukazuje da postoji više fragmenata, dok drugi pokazuje da je ovo posljednji fragment.)

Id je fragment id. Veličina je veličina fragmenta (u bajtovima), isključujući IP zaglavlje. Offset je ovaj fragmentov offset (u bajtovima) u izvornom datagramu.

Podaci o fragmentu se emitiraju za svaki fragment. Prvi fragment sadrži zaglavlje protokola višeg nivoa, a podaci o fragmentima ispisuju se nakon informacija o protokolu. Fragmenti nakon prve sadrže zaglavlje protokola višeg nivoa, a informacije o fragmentima ispisuju se nakon adrese izvora i odredišta. Na primjer, ovdje je dio ftp od arizona.edu do lbl-rtsg.arpa preko CSNET veze koja se ne čini da obrađuje 576 bajta datagrama:

arizona.ftp-data> rtsg.1170:. 1024: 1332 (308) ack 1 pobjeda 4096 (fragment 595a: 328 @ 0 +) arizona> rtsg: (fragment 595a: 204 @ 328) rtsg.1170> arizona.ftp-data:. ack 1536 pobijediti 2560

Ovdje treba spomenuti nekoliko stvari: Prvo, adrese u drugom retku ne uključuju brojeve porta. To je zato što su informacije o protokolu TCP-a sve u prvom fragmentu i nemamo pojma o broju porta ili brojeva redoslijeda kada ispisujemo kasnije fragmente. Drugo, podaci o tcp sekvenci u prvom retku otisnuti su kao da postoje 308 bajta korisničkih podataka kada u stvari ima 512 bajtova (308 u prvom fragmentu i 204 u drugom). Ako tražite rupe u prostoru s nizom ili se pokušavate podudarati s paketima, to može vas zavarati.

Paket s IP-om koji ne ulazi u zastavicu označen je zazorom (DF) .

Vremenske oznake

Prema zadanim postavkama, sve linije izlaza prethode vremenskom oznakom. Vremenska oznaka je trenutni sat u obliku

hh: mm: ss.frac

i to je točno kao kernelov sat. Vremenska oznaka odražava vrijeme kada je kernel prvi put vidio paket. Nisu pokušani uzeti u obzir vremenski odmak od kada ethernet sučelje uklonio paket iz žice i kada je jezgra servisirala "novi paket" prekid.

VIDI TAKOĐER

promet (1C), nit (4P), bpf (4), pcap (3)

Važno: Upotrijebite naredbu čovjek ( % man ) kako biste vidjeli kako se naredba koristi na vašem računalu.