Tcpdump - ukaz Linux Linux - Unix

NAME

tcpdump - odvoz prometa v omrežju

POVZETEK

tcpdump [ -adeflnNOpqRStuvxX ] [ -c štetje ]

[ -C file_size ] [ -F datoteka ]

[ -i vmesnik ] [ -m modul ] [ -r datoteka ]

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

[ -E algo: skrivnost ] [ izraz ]

OPIS

Tcpdump natisne glave paketov v omrežnem vmesniku, ki se ujema z boolovskim izrazom . Prav tako se lahko zažene z oznako -w , zaradi česar lahko paketne podatke shranite v datoteko za poznejšo analizo in / ali z zastavico -r , zaradi česar lahko berete iz shranjene paketne datoteke in ne berejo paketov iz omrežnega vmesnika. V vseh primerih bo tcpdump obdelal samo pakete, ki ustrezajo izrazu .

Tcpdump bo, če ne bo zagnan z oznako -c , nadaljeval s snemanjem paketov, dokler ga ne prekine s signalom SIGINT (ustvarjen, na primer, s tipkanjem znaka prekinitve, običajno nadzor-C) ali s signalom SIGTERM (običajno ustvarjen z ubijanjem (1) ukaz); če teče z oznako -c , bo zajemal pakete, dokler jih ne prekine s signalom SIGINT ali SIGTERM ali če je bilo obdelano določeno število paketov.

Ko bo tcpdump končal snemanje paketov, bo poročal o:

paketi `` prejeti s filtrom '' (pomen tega je odvisen od operacijskega sistema, na katerem delate tcpdump , in morda na način, kako je bil OS nastavljen - če je bil v ukazni vrstici določen filter, na nekaterih OS-ih pakete, ne glede na to, ali so bili ujemati z izrazom filtriranja, pri drugih OS pa šteje samo pakete, ki so se ujemali s filtrirnim izrazom in jih je obdelal tcpdump );

paketi `` padli po jedru '' (to je število paketov, ki so zaradi pomanjkanja vmesnega pomnilnika padli s mehanizmom za zajemanje paketov v OS, na katerem se izvaja tcpdump , če OS sporoča te informacije aplikacijam; če ne, se poroča kot 0).

Na platformah, ki podpirajo signal SIGINFO, kot je večina BSD-jev, bo poročalo o tistih štetjih, ko prejme signal SIGINFO (ki se ustvari, na primer s tipkanjem znaka »status«, običajno control-T) in bo nadaljeval z zajemanjem paketov .

Branje paketov iz omrežnega vmesnika lahko zahteva, da imate posebne pravice:

Pod SunOS 3.x ali 4.x z NIT ali BPF:

Prebrati morate dostop do / dev / nit ali / dev / bpf * .

Pod Solarisom z DLPI:

Imeti morate dostop do branja / pisanja v omrežni pseudo napravo, npr. / Dev / le . Vendar pa to vsaj na nekaterih različicah Solaris ni dovolj, da bi tcpdump omogočil zajemanje v nesmiselnem načinu; na tistih različicah Solaris-a, morate biti root ali tcpdump mora biti nameščen na root, da bi ga lahko posneli v nesmiselnem načinu. Upoštevajte, da na mnogih (morda vseh) vmesnikih, če ne zajamete v promiskuitnem načinu, ne boste videli nobenega odhodnega paketa, zato zajem, ki ni bil opravljen v nespremenjenem načinu, morda ni zelo uporaben.

Pod HP-UX z DLPI:

Morate biti root ali tcpdump mora biti nameščen kot root.

Pod IRIX s snoop:

Morate biti root ali tcpdump mora biti nameščen kot root.

Pod Linuxom:

Morate biti root ali tcpdump mora biti nameščen kot root.

Pod Ultrix in Digital UNIX / Tru64 UNIX:

Vsak uporabnik lahko zajema omrežni promet s tcpdump . Vendar noben uporabnik (niti super-uporabnik) v vmesniku ne more zajamčiti v vmesniku, razen če je super-uporabnik v tem vmesniku omogočil delovanje brez skrbi z uporabo pfconfig (8) in nobenega uporabnika (niti super-uporabnik ) lahko zajema enopodatkovni promet, ki ga naprava prejme ali pošlje v vmesniku, razen če je super-uporabnik omogočil operacijo kopiranja v vsej vmesniku z uporabo pfconfig , tako da je koristno zajemanje paketov na vmesniku verjetno zahtevalo, da bodisi promiskuni način ali kopijo v tem vmesniku je omogočeno delovanje v načinu delovanja ali oba načina delovanja.

Pod BSD:

Prebrati morate dostop do / dev / bpf * .

Branje shranjene paketne datoteke ne zahteva posebnih privilegijev.

OPCIJE

-a

Poskus pretvorbe omrežnih in oddajnih naslovov v imena.

-c

Izhod po prejemu šteje pakete.

-C

Preden napišete surovi paket v shrambo, preverite, ali je datoteka trenutno večja od datoteke_size, in če je tako, zaprite trenutni shranjevalnik in odprite novega. Shrani datoteke po prvem shranjevalnem priponku bodo imele ime, navedeno z oznako -w , s številko za njim, ki se začne z 2 in se nadaljuje navzgor. Enote File_size so na milijone bajtov (1.000.000 bajtov, ne pa 1.048.576 bajtov).

-d

Svojo kodo za ujemanje paketov v človeško berljivo obliko odložite na standardni izhod in ustavite.

-dd

Kodo ujemanja paketov za ujemanje kot programski fragment C.

-dd

Kodo za ujemanje paketa za nabavo kot decimalna števila (pred katero se šteje število).

-e

Natisnite glavo na ravni povezave na vsaki liniji za odvoz.

-E

Uporabite algo: skrivnost za dešifriranje paketov IPsec ESP. Algoritmi so lahko des-cbc , 3des-cbc , blowfish-cbc , rc3-cbc , cast128-cbc ali nič . Privzeta vrednost je des-cbc . Sposobnost dešifriranja paketov je prisotna le, če je bil tcpdump zbran z omogočeno kriptografijo. skrivajte besedilo ascii za tajni ključ ESP. V tem trenutku ne moremo vzeti samovoljne binarne vrednosti. Možnost prevzema RFC2406 ESP, ne pa RFC1827 ESP. Možnost je samo za namene odpravljanja napak, zato je uporaba te možnosti z resnično "skrivnim" ključem onemogočena. S predstavitvijo tajnega ključa IPsec na ukazno vrstico jo vidimo drugim, prek ps (1) in drugih priložnostih.

-f

Natisnejo "tuje" internetne naslove številčno in ne simbolično (ta možnost je namenjena za resno okužbo možganov na Sunovem yp strežniku - ponavadi vedno visi za prevajanjem neločenih internetnih številk).

-F

Uporabite datoteko kot vhod za filtrirni izraz. Dodaten izraz, ki je naveden v ukazni vrstici, je prezrt.

-jaz

Poslušajte na vmesniku . Če ni določen, tcpdump išče seznam sistemskih vmesnikov za najnižji oštevilčeni konfiguracijski vmesnik (brez zanke). Vezi se prekinejo z izbiro najzgodnejše tekme.

V sistemih Linux z 2.2 ali novimi jedrci se lahko za zajemanje paketov iz vseh vmesnikov uporabi vmesniški argument »katerikoli«. Upoštevajte, da zajemanja na napravi "katerikoli" ne bodo izvedena v brezobzirnem načinu.

-l

Naredite stdout vrstico. Uporabno, če si želite ogledati podatke med hrambo. Npr.
`` tcpdump -l | tee dat '' ali `` tcpdump -l> dat & tail -f dat ''.

-m

Naložite SMI MIB definicije modula iz datotečnega modula . To možnost lahko uporabite večkrat, da naložite več MIB modulov v tcpdump .

-n

Ne pretvarjajte naslovov gostiteljev v imena. To se lahko uporabi za preprečevanje poizvedb DNS.

-nn

Ne pretvarjajte številk protokola in vrat itd. V imena.

-N

Ne natisnite imena domenskih imen gostiteljev. Npr., Če daste to zastavo, bo tcpdump natisnil `` nic '' namesto `` nic.ddn.mil ''.

-O

Ne zaženite optimizatorja kode za ujemanje paketov. To je uporabno samo, če sumite na hrošč v optimizatorju.

-p

Ne postavljajte vmesnika v brezpotjujoči način. Upoštevajte, da je vmesnik lahko v drugačnem razlogu nespameten; zato `-p 'ni mogoče uporabiti kot okrajšavo za` ether host {local-hw-addr} ali ether broadcast'.

-q

Hitri (tihi?) Izhod. Tiskanje manj protokolov, zato so izhodne črte krajše.

-R

Predpostavimo, da bodo paketi ESP / AH temeljili na starih specifikacijah (RFC1825 do RFC1829). Če je določeno, tcpdump ne bo natisnil polja za preprečevanje ponovitve. Ker v specifikaciji ESP / AH ni polja za različico protokola, tcpdump ne more izpeljati različice protokola ESP / AH.

-r

Branje paketov iz datoteke (ki je bila ustvarjena z možnostjo -w). Standardni vnos se uporablja, če je datoteka "` - ".

-S

Natisnite absolutne, ne pa relativne, zaporedne številke TCP.

-s

Snarf pojačuje bajte podatkov iz vsakega paketa namesto privzeto 68 (z NOS-om SunOS-a, najnižji je dejansko 96). 68 bajtov je primernih za IP, ICMP, TCP in UDP, vendar lahko odreza podatke o protokolu iz strežnika za ime in NFS (glejte spodaj). Paketi, okrnjeni zaradi omejenega posnetka, so označeni v izhodu z `` [| proto ] '', kjer je proto ime protokola, na katerem je prišlo do okvare. Upoštevajte, da ob obsežnejših posnetkih oba povečata čas, potreben za obdelavo paketov, in dejansko zmanjša količino paketnega pufra. To lahko povzroči izgubo paketov. Morate omejiti zvonjenje na najmanjše število, ki bo zajelo informacije o protokolu, ki vas zanima. Nastavitev strmoglavja na 0 pomeni, da uporabite zahtevano dolžino za ujemanje celih paketov.

-T

Pakete sile, ki jih izbere izraz " izraz ", ki jih je treba razlagati za določeno vrsto . Trenutno znane vrste so cnfp (protokol Cisco NetFlow), rpc (Remote Procedure Call), rtp (protokol Real-Time Applications), rtcp (protokol za nadzor aplikacij v realnem času), snmp (Simple Network Management Protocol) ), in wb (razdeljeno White Board).

-t

Na vsaki odlagalni liniji ne natisnite časovne oznake.

-tt

Natisnite neformatiran časovni žig na vsaki liniji za odlaganje.

-U

Prilagodi pravice korenine in spremeni ID uporabnika v ID uporabnika in skupine v primarno skupino uporabnikov .

Opomba! Red Hat Linux samodejno spusti privilegije na uporabnika `` pcap '', če nič drugega ni določeno.

-ttt

Natisnite delto (v mikro-sekundah) med sedanjo in prejšnjo črto na vsaki odlagalni liniji.

-tttt

Natisnite časovni žig v privzetem formatu, ki se nadaljuje po datumu na vsaki odlagališči.

-u

Tiskanje nerodkodovanih ročic NFS.

-v

(Nekoliko več) verbose izhod. Na primer, natisne se čas za življenje, identifikacijo, skupno dolžino in možnosti v paketu IP. Omogoča tudi dodatne kontrole integritete paketov, kot je preverjanje kontrolne vsote naslova IP in ICMP.

-vv

Še bolj poglobljen izhod. Na primer, dodatna polja se natisnejo iz paketov za odgovor NFS, paketi SMB pa so v celoti dekodirani.

-vvv

Še bolj poglobljen izhod. Na primer, možnosti telnet SB ... SE so natisnjene v celoti. Možnosti -X telnet so natisnjene tudi v hex.

-w

Napišite surove pakete v datoteko in ne razkrijte in jih natisnite. Kasneje lahko natisnete z možnostjo -r. Standardni izhod se uporablja, če je datoteka "` - ".

-x

Tiskanje vsakega paketa (minus njen naslov glave povezave) v hex. Natisnili se bodo manjši od celotnega paketa ali bajta za zvonjenje . Upoštevajte, da je to celoten paket povezavnih slojev, tako da bodo za povezovalne plasti, ki jih podpira (npr. Ethernet), natisnjene bajtne tudi natisnjene, ko bo paket paketov višjih plasti krajši od zahtevane oblike.

-X

Ko tiskate hex, natisnite tudi ascii. Tako, če je nastavljen tudi -x , je paket natisnjen v hex / ascii. To je zelo priročno za analiziranje novih protokolov. Tudi če -x ni nastavljen, so lahko nekateri deli nekaterih paketov natisnjeni v hex / ascii.

izraz

izbere, kateri paketi bodo dampinški. Če ni podan noben izraz , bodo vsi paketi v omrežju dampinški. V nasprotnem primeru bodo samo paketi, za katere je izraz "true", dampinški.

Izraz je sestavljen iz enega ali več primitivov. Primitivi običajno sestavljajo id (ime ali številka), ki jim sledi eden ali več kvalifikacij. Obstajajo tri različne vrste kvalifikacij:

tip

kvalifikatorji pravijo, na kaj se nanaša id ali številka id. Možni tipi so gostitelj , mreža in vrata . Npr. `Host foo ',` net 128.3', `port 20 '. Če ni vrste kvalifikatorja, se domneva gostitelj .

dir

kvalifikatorji določajo določeno smer prenosa na in / ali iz ID-ja . Možne smernice so src , dst , src ali dst ter src in dst . Npr, `src foo ',` dst net 128.3', 'src or dst port ftp-data'. Če ni kvalifikatora za dir, se predpostavlja src ali dst . Za ničelne sloje povezav (npr. Protokole od točke do točke, kot je drsenje) se lahko za določitev želene smeri uporabijo vhodni in odhodni kvalifikatorji.

proto

kvalifikatorji omejujejo tekmo na določen protokol. Možni protoci so: eter , fddi , tr , ip , ip6 , arp , rarp , decnet , tcp in udp . Npr. `Ether src foo ',` arp net 128.3', `tcp port 21 '. Če ni proto-kvalifikanta, se predpostavljajo vsi protokoli, ki so skladni s tipom. Npr, `src foo 'pomeni` (ip ali arp ali rarp) src foo' (razen ta ni pravna sintaksa), `net vrstica` pomeni` mrežna vrstica (ip ali arp ali rarp) 'in' vrata 53 'pomeni `(tcp ali udp) pristanišče 53 '.

["fddi" je pravzaprav vzdevek za "eter"; razčlenjevalnik jih obravnava enako kot pomen "raven podatkovne povezave, ki se uporablja na določenem omrežnem vmesniku." Glave FDDI vsebujejo izvorne in ciljne naslove, podobne Ethernetu, in pogosto vsebujejo vrste Ethernet podobnih paketov, tako da lahko filtrirate na teh FDDI poljih tako kot pri analognih poljih Ethernet. Glave FDDI vsebujejo tudi druga polja, vendar jih ne morete izrecno navajati v izrazu filtra.

Podobno je "tr" vzdevek za "eter"; izjave prejšnjega odstavka o glavi FDDI veljajo tudi za glave Token Ring.]

Poleg zgoraj navedenega obstajajo tudi nekatere posebne »primitivne« ključne besede, ki ne sledijo vzorcu: prehodu , oddajanju , manj , večjemu in aritmetičnemu izrazu. Vse so opisane spodaj.

Zapleteni izrazi filtra so zgrajeni z uporabo besed in , ali in ne za združevanje primitivov. Npr. `Host foo in ne pristaniški ftp in ne pristaniški ftp-podatki '. Če želite shraniti tipkanje, se lahko isti seznami kvalifikacij izpustijo. Npr. `Tcp dst port ftp ali ftp-data ali domena 'je povsem enak kot tcp dst port ftp ali tcp dst port ftp-data ali tcp dst port domena'.

Dovoljeni primitivi so:

gostitelj dst gostitelja

Res je, če je ciljno polje paketa IPv4 / v6 gostitelja , ki je lahko naslov ali ime.

gostitelj gostitelja src

Res je, če je vir vira vira IPv4 / v6 gostitelja .

Gostitelj gostitelj

Res je, ali je izvor ali cilj paketa gostiteljica IPv4 / v6. Vsak od zgornjih izrazov gostiteljev je mogoče napolniti s ključnimi besedami, ip , arp , rarp ali ip6 kot v:

ip gostitelja

kar je enako:

eter proto \ ip in gostitelj gostiteljice

Če je gostitelj ime z več naslovi IP, bo vsak naslov preverjen za tekmo.

ether dst ehost

Res je, če je naslov ciljne ethernet ehost . Ehost je lahko ime iz / etc / eters ali številko (glej etre (3N) za numerični format).

ether src ehost

Res je, če je naslov vira ethernet ehost .

eter gostitelj ehost

Res je, če je izvor e- pošte ali ciljni naslov ehost .

prehodni gostitelj

Res je, če je paket uporabil gostitelja kot prehod. Torej, vir ethernet ali ciljni naslov je bil gostitelj, vendar noben vir IP niti cilj IP ni bil gostitelj . Gostitelj mora biti ime in ga je treba najti tako z mehanizmi za ločevanje gostitelja-imena do IP-naslova (ime datoteke gostitelja, DNS, NIS itd.) In z ločljivostjo naslova gostitelja-ime-na-ethernet-naslov mehanizem (/ etc / ethers, itd.). (Enakovreden izraz je

eter gostitelj ehost in ne gostitelj

ki se lahko uporablja z imeni ali številkami za gostitelja / ehost .) Ta sintaksa trenutno ne deluje v konfiguraciji, ki podpira IPv6.

dst neto mreža

Res je, če ima ciljni naslov paketa IPv4 / v6 omrežno številko omrežja . Mreža je lahko tudi ime iz / etc / omrežij ali omrežna številka (glej omrežja (4) za podrobnosti).

src neto mreža

Res je, če ima izvorni naslov paketa IPv4 / v6 mrežno številko omrežja .

neto neto

Res je, ali ima izvor vira ali ciljni naslov paketa mrežno številko omrežja .

mrežna maska ​​za net masko

Res je, če se naslov IP ujema s spletno mrežo. Lahko se kvalificira s src ali dst . Upoštevajte, da ta sintaksa ni veljavna za omrežje IPv6.

neto neto / len

Res je, če se naslov IPv4 / v6 ujema z mrežo s širokimi lenskimi bitji. Lahko se kvalificira s src ali dst .

pristanišče dst pristanišča

Res je, ali je paket ip / tcp, ip / udp, ip6 / tcp ali ip6 / udp in ima pristaniško vrednost pristanišča . Pristanišče je lahko številka ali ime, ki se uporablja v / etc / services (glej tcp (4P) in udp (4P)). Če se uporablja ime, se preverita število vrat in protokol. Če uporabljate številko ali dvoumno ime, se preveri le številka vrat (npr. Dst pristanišče 513 bo natisnilo tako tcp / login promet, kot tudi udp / kdo bo promet, domena domene pa bo tiskala tcp / domain in udp / domenski promet).

src port pristanišče

Res je, če ima paket izvorno vratno vrednost vrat .

vrata pristanišča

Res je, če je vira ali ciljno pristanišče paketa vrata . Katera koli od zgornjih izrazov pristanišč je mogoče napolniti s ključnimi besedami, tcp ali udp , kot v:

Vrata tcp src port

ki se ujema le s tcp paketi, katerih izvorno pristanišče je pristanišče .

manj dolžine

Res je, če ima paket manj kot ali enako dolžini . To je enakovredno:

len <= dolžina .

večja dolžina

Res je, če ima paket dolžina večja ali enaka dolžini . To je enakovredno:

len> = dolžina .

protokol protokola IP

Res je, ali je paket paket IP (glej ip (4P)) protokola protokola . Protokol je lahko številka ali ena od imen icmp , icmp6 , igmp , igrp , pim , ah , esp , vrrp , udp ali tcp . Upoštevajte, da so identifikatorji tcp , udp in icmp tudi ključne besede in jih je treba uničiti s poševnico (\), ki je \\ v C-lupini. Upoštevajte, da ta primitiv ne zapelje verige glave protokola.

protokol protokola ip6

Res je, ali je paket paket IPv6 protokola protokola . Upoštevajte, da ta primitiv ne zapelje verige glave protokola.

Protokol protokola ip6

Res je, če je paket paket IPv6 in vsebuje glavo glave protokola s protokolom tipa v verigi glave protokola. Na primer,

ip6 protochain 6

se ujema z vsemi paketi IPv6 s protokolom TCP protokola v verigi glave protokola. Paket lahko med glavo IPv6 in glavo TCP vsebuje na primer glavo glave pristnosti, glavo usmerjevalnika ali opcijsko glavo hmelja. BPF-kodo, ki jo oddaja ta primitiv, je zapletena in ga ni mogoče optimizirati z optimizacijsko kodo BPF v tcpdump , zato je to lahko nekoliko počasno.

ip protochain protokol

Enakovreden protokolu protokola ip6 , vendar je to za IPv4.

eter oddaja

Res je, če je paket ethernet oddaja paket. Ključna beseda eterja ni obvezna.

ip oddaja

Res je, ali je paket paketni prenos IP. Preveri vse konvencije o radijskih frekvencah, ki so vse ničelne in vse druge, in išče lokalno masko podomrežja.

eter multicast

Res je, ali je paket ethernet multicast paket. Ključna beseda eterja ni obvezna. To je skrajšano za ` ether [0] & 1! = 0 '.

ip multicast

Res je, če je paket paket multicast IP.

ip6 multicast

Res je, ali je paket paketni paket IPv6.

eter proto protokol

Res je, ali je paket etrskega tipa protokola . Protokol je lahko številka ali eno od imen, ip , ip6 , arp , rarp , atalk , aarp , decnet , sca , lat , mopdl , moprc , iso , stp , ipx ali netbeui . Upoštevajte, da so ti identifikatorji tudi ključne besede in jih je treba uničiti s poševnico (\).

[V primeru FDDI (npr. " Protokol fddi protocol arp ") in token ring (npr. " Tr protocol arp ") za večino teh protokolov identifikacija protokola izhaja iz naslova 802.2 Logical Link Control (LLC), ki je navadno layered na vrhu FDDI ali Token Ring glave.

Pri filtriranju za večino identifikatorjev protokola na FDDI ali Token Ring tcpdump preveri le polje ID protokola naslova LLC v tako imenovanem formatu SNAP z identifikatorjem organizacijske enote (OUI) 0x000000 za inkapsulirani Ethernet; ne preverja, ali je paket v formatu SNAP z OUI v višini 0x000000.

Izjeme so iso , za katere preverja polja polja Access Point Point (DSAP) in SSAP (Source Service Access Point) v naslovu LLC, stp in netbeui , kjer preveri DSAP naslova LLC in atalk , kjer je preveri paket paketov SNAP z OUI 0x080007 in Appletalk etype.

V primeru Ethernet-a, tcpdump preveri polje Ethernet tipa za večino teh protokolov; izjeme so iso , sap in netbeui , za katere preverja okvir 802.3 in nato preverja glavo glave LLC tako kot za FDDI in Token Ring, atalk , kjer preveri tako za Appletalk etype v eternetnem okvirju kot za SNAP format paketa, kot to velja za FDDI in Token Ring, aarp , kjer preveri za Appletalk ARP etype bodisi v ethernetnem okviru ali 802.2 SNAP okviru z OUI 0x000000, in ipx , kjer preveri IPX etype v ethernetov okvir, IPX DSAP v naslovu LLC, 802,3 brez enkapsulacije glave LLC IPX z LLC in IPX etipa v okviru SNAP-ja.]

host decnet src

Res je, če je izvorni vir DECNET gostitelj , ki je lahko naslov obrazca `` 10.123 '' ali ime gostitelja DECNET. [Podpora za ime gostitelja DECNET je na voljo samo v sistemih Ultrix, ki so konfigurirani za zagon DECNET.]

decnet dst gostitelj

Res je, če je ciljni naslov DECNET gostitelj .

gostitelj gostiteljice

Res je, če je vir izvorja DECNET ali ciljni naslov gostitelj .

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

Okrajšave za:

eter proto p

kjer je p eden od zgornjih protokolov.

lat , moprc , mopdl

Okrajšave za:

eter proto p

kjer je p eden od zgornjih protokolov. Tcpdump trenutno ne ve, kako razčleniti te protokole.

vlan [vlan_id]

Res je, ali je paket paket IEEE 802.1Q VLAN. Če je [vlan_id] podan, je samo res, da ima paket podan vlan_id . Upoštevajte, da prva vlanova ključna beseda, ki se pojavlja v izrazu, spremeni odmike dekodiranja za preostanek izraza ob predpostavki, da je paket paket VLAN.

tcp , udp , icmp

Okrajšave za:

ip proto p ali ip6 proto p

kjer je p eden od zgornjih protokolov.

izo proto protokol

Res je, ali je paket paket OSI protokola protokola . Protokol je lahko število ali eno od imen clnp , esis ali isis .

clnp , esis , isis

Okrajšave za:

izo proto p

kjer je p eden od zgornjih protokolov. Upoštevajte, da tcpdump opravlja nepopolno opravilo razčlenjevanja teh protokolov.

expr relop expr

Res je, če velja relacija, če je relop eden od>, <,> =, <=, = ,! =, In expr je aritmetična izraz, sestavljen iz celih konstant (izraženih v standardni sintaksi C), normalni binarni operatorji [+ , -, *, /, &, |], operaterja dolžine in posebne dostopnike za paketne podatke. Za dostop do podatkov znotraj paketa uporabite naslednjo sintakso:

proto [ izpis : velikost ]

Proto je eden od ether, fddi, tr, ppp, slip, link, ip, arp, rarp, tcp, udp, icmp ali ip6 in označuje protokolni sloj za indeksno operacijo. ( ether, fddi, tr, ppp, slip in link se nanašajo na povezavo.) Upoštevajte, da tcp, udp in drugi tipi protokolov zgornjega sloja veljajo samo za IPv4, ne za IPv6 (to se bo določilo v prihodnosti). Izravnava bajtov, glede na navedeno protokolno plast, je podana z izrazom expr . Velikost je neobvezna in označuje število bajtov na področju zanimanja; lahko je ena, dva ali štiri in privzeto ene. Operator dolžine, ki ga označuje ključna beseda len , določa dolžino paketa.

Na primer, ` ether [0] & 1! = 0 'ulovi vse multicast promet. Izraz ` ip [0] & 0xf! = 5 'ulovi vse IP pakete z možnostmi. Izraz ` ip [6: 2] & 0x1fff = 0 'ulovi samo nefragmentirane datagrame in frag ničelnih fragmentiranih datagramov. Ta pregled se implicitno uporablja za operacije indeksa tcp in udp . Na primer, tcp [0] vedno pomeni prvi bajt naslova TCP in nikoli ne pomeni prvega bajta vmesnega fragmenta.

Nekateri odmiki in poljske vrednosti se lahko izrazijo kot imena in ne kot številske vrednosti. Na voljo so naslednje zamenjave polj glave protokola: icmptype (polje ICMP tipa), icmpcode (polje ICMP koda) in tcpflags (polje TCP zastave).

Na voljo so naslednje vrednosti polja tipa ICMP : icmp-echoreply , icmp-unreach , icmp -sourcequench , icmp -redirect , icmp-echo , icmp -routeradvert , icmp -routersolicit , icmp-timxceed , icmp-paramprob , icmp-tstamp , icmp -tstampreply , icmp -ireq , icmp -ireqreply , icmp-maskreq , icmp-maskreply .

Na voljo so naslednje vrednosti polj TCP zastavice: tcp-fin , tcp-syn , tcp-rst , tcp-push , tcp-push , tcp-ack , tcp-urg .

Primitivi se lahko kombinirajo z uporabo:

Oklepna skupina primitivov in operaterjev (oklepaje so posebne za Shell in jih je treba ubežati).

Negacija (" ! " Ali " ne ").

Pripenjanje (" && " ali " in ").

Nadomestitev (` || 'ali' ali ').

Negacija ima največjo prednost. Nadomestitev in združitev sta enaka prednost in povezava levo na desno. Upoštevajte, da so zdaj eksplicitni in žetoni, ne pa juxtaposition, potrebni za združitev.

Če je identifikator podan brez ključne besede, se predpostavlja najnovejša ključna beseda. Na primer,

ne gostitelj vs in as

je kratka za

ne gostujoči vs gostiteljski as

s čimer se ne sme zamenjevati

ne (gostitelj vs ali ace)

Argumente za izražanje se lahko prenesejo na tcpdump kot enega samega argumenta ali kot več argumentov, kar je bolj priročno. Na splošno, če izraz vsebuje Shell metacharacters, ga je lažje prenesti kot en sam citiran argument. Več argumentov je združenih s presledki, preden jih razčlenimo.

PRIMERI

Če želite natisniti vse pakete, ki prihajajo ali zapuščajo zaprto :

tcpdump gostiteljski sončni zahod

Če želite natisniti promet med helijem in vročo ali ace :

tcpdump gostiteljski helios in \ (vroče ali ace \)

Če želite natisniti vse IP pakete med asom in katerikoli gostitelj, razen helija :

tcpdump ip host ace in ne helios

Če želite natisniti ves promet med lokalnimi gostitelji in gostitelji v Berkeleyju:

tcpdump net ucb-eter

Če želite natisniti ves promet prek omrežja ftp preko internetnega prehoda snup : (upoštevajte, da je naveden izraz, ki preprečuje, da bi lupina (napačno) razlagala oklepaje):

tcpdump 'gateway snup in (port ftp ali ftp-data)'

Če želite tiskati promet, ki ni niti izvor niti namenjen lokalnim gostiteljem (če prelazite v drugo mrežo, te stvari nikoli ne bodo na vaši lokalni mreži).

tcpdump ip in ne net localnet

Za tiskanje začetnih in končnih paketov (SYN in FIN paketov) vsakega TCP pogovora, ki vključuje ne-lokalni gostitelj.

tcpdump 'tcp [tcpflags] & (tcp-syn | tcp-fin)! = 0 in ne src in dst net localnet '

Če želite natisniti IP-pakete, daljše od 576 bajtov, poslanih prek prenosa prehoda:

tcpdump 'gateway snup in ip [2: 2]> 576'

Za tiskanje oddajnih ali večstranskih paketov, ki niso bili poslani prek oddajanja ethernet ali multicast:

tcpdump 'ether [0] & 1 = 0 in ip [16]> = 224'

Če želite natisniti vse pakete ICMP, ki niso eho zahteve / odgovori (tj. Ne ping paketi):

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

IZHODNI FORMAT

Izhod tcpdump je odvisen od protokola. V nadaljevanju so kratek opis in primeri večine formatov.

Glave ravni povezav

Če je podana možnost »-e«, se natisne glava povezave. Na ethernetah se natisnejo izvorni in ciljni naslovi, protokol in dolžina paketa.

V omrežjih FDDI možnost "-e" povzroči, da tcpdump natisne polje polja "okvir", izvorni in ciljni naslov ter dolžino paketa. (Polje "nadzor nad nadzorom" ureja razlago preostalega paketa. Običajni paketi (na primer tisti, ki vsebujejo IP datagrame) so paketi " asinhc " s prednostno vrednostjo med 0 in 7, na primer " async4 ". predpostavlja se, da imajo paketi 802.2 paket za upravljanje z logično povezavo (LLC), glava LLC je natisnjena, če ni datagram ISO ali tako imenovani SNAP paket.

V omrežjih Token Ring možnost "-e" povzroči tcpdump, da natisne polja za nadzor dostopa in kontrole okvirja, izvorni in ciljni naslov ter dolžino paketa. Kot v omrežjih FDDI se domneva, da paket vsebuje LLC paket. Ne glede na to, ali je opcija "-e" določena ali ne, se izvorni usmerjevalni podatki natisnejo za izvorne usmerjene pakete.

(Opomba: Naslednji opis predvideva poznavanje algoritma za stiskanje SLIP, opisanega v RFC-1144.)

Na povezavah SLIP so natisnjeni smerni kazalci ("I" za vhodne, "O" za odhodne), vrsto paketa in podatki o stiskanju. Vrsta paketa se najprej natisne. Tri vrste so ip , utcp in ctcp . Za ip pakete niso natisnjene nobene dodatne informacije o povezavi. Za TCP pakete se po vrsti natisne identifikator povezave. Če je paket stisnjen, je natisnjena njegova kodirana glava. Posebni primeri so natisnjeni kot * S + n in * SA + n , kjer je n količina, po kateri se je zaporedna številka (ali zaporedna številka in ack) spremenila. Če ni poseben primer, se natisne nič ali več sprememb. Sprememba označuje U (hitri kazalec), W (okno), A (ack), S (zaporedna številka) in I (ID paketa), ki ji sledi delta (+ n ali -n) ali nova vrednost (= n). Nazadnje je natisnjena količina podatkov v paketu in dolžini stisnjene glave.

Na primer, v naslednji vrstici je prikazan izhodni stiskani paket TCP z implicitnim identifikatorjem povezave; ack se je spremenil za 6, zaporedna številka za 49 in ID paketa za 6; obstaja 3 bajta podatkov in 6 bajtov stisnjenega glave:

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

Paketi ARP / RARP

Arp / rarp izhod prikazuje vrsto zahteve in njegove argumente. Oblika naj bi bila samoumevna. Tukaj je kratek vzorec, vzet iz začetka ` rlogin` od gostitelja rtsg do gostitelja csam :

arp, ki ima csam reči rtsg arp odgovor csam je-na CSAM

Prva vrstica pravi, da je rtsg poslal arp paket, ki prosi za ethernet naslov internetnega gostitelja csam. Csam odgovori s svojim ethernet naslovom (v tem primeru so ethernetovi naslovi v zgornji sliki).

To bi bilo manj odveč, če bi naredili tcpdump -n :

arp, ki ima 128.3.254.6 povedati 128.3.254.68 arp odgovor 128.3.254.6 je-ob 02: 07: 01: 00: 01: c4

Če smo naredili tcpdump-e , bi bil viden dejstvo, da se prvi paket odda, drugi pa točen do točke:

RTSG Broadcast 0806 64: arp, ki ima csam povedal rtsg CSAM RTSG 0806 64: arp odgovor csam je-na CSAM

Za prvi paket, ki pravi, da je naslov izvornega etherneta RTSG, je cilj naslova ethernet broadcast, vrsto polja vsebuje hex 0806 (tip ETHER_ARP) in skupna dolžina je 64 bajtov.

Paketi TCP

(NAPOTILO: Naslednji opis prevzame poznavanje TCP protokola, opisanega v RFC-793. Če niste seznanjeni s protokolom, vam niti ta opis niti tcpdump ne bodo koristili.)

Splošni format protokola TCP je:

src> dst: zastave podatkov-seqno ack okno nujne možnosti

Src in dst sta vir in ciljni naslovi IP in vrata. Zastave so nekatere kombinacije S (SYN), F (FIN), P (PUSH) ali R (RST) ali ene "." (brez zastavic). Data-seqno opisuje del zaporednega prostora, ki ga pokrivajo podatki v tem paketu (glej primer spodaj). Ack je zaporedna številka naslednjih podatkov, ki pričakujejo drugo smer na tej povezavi. Okno je število bajtov sprejemnega vmesnega prostora, ki je na voljo v drugi smeri na tej povezavi. Urg kaže, da so v paketu nujni podatki. Možnosti so tcp možnosti, ki so priložene v kotnih oklepajih (npr. ).

Src, dst in zastave so vedno prisotni. Druga polja so odvisna od vsebine glave protokola TCP paketa in se oddajajo le, če je to primerno.

Tukaj je začetni del rlogina od gostitelja rtsg do gostitelja csam .

rtsg.1023> csam.login: S 768512: 768512 (0) win 4096 csam.login> rtsg.1023: S 947648: 947648 (0) ack 768513 win 4096 rtsg.1023> csam. Vpiši se: . ack 1 win 4096 rtsg.1023> csam.login: P 1: 2 (1) ack 1 win 4096 csam.login> rtsg.1023:. ack 2 win 4096 rtsg.1023> csam.login: P 2:21 (19) ack 1 win 4096 csam.login> rtsg.1023: P 1: 2 (1) ack 21 win 4077 csam.login> rtsg.1023: P 2: 3 (1) ack 21 win 4077 urg 1 csam.login> rtsg.1023: P 3: 4 (1) ack 21 win 4077 urg 1

Prva vrstica pravi, da je tcp port 1023 na rtsg poslal paket za prijavo v pristanišče na csam. S označuje, da je bila postavljena zastavica SYN . Številka zaporedja paketov je bila 768512 in ni vsebovala nobenih podatkov. (Oznaka je "prva: zadnja (nbytes)", kar pomeni, "zaporedje številk najprej do vključno ne nazadnje, kar je nbytes bajtov uporabniških podatkov.") Ni bilo prašičev ack, razpoložljivo okno je bilo 4096 bajtov in je bila izbrana možnost velikosti velikosti segmenta, ki zahteva mss 1024 bajtov.

Csam odgovarja s podobnim paketom, razen če vsebuje prašičje podprto za rtsg SYN. Rtsg nato ACS csam SYN. "." pomeni, da niso bile določene zastavice. Paket ni vseboval podatkov, tako da ni številke zaporedja podatkov. Upoštevajte, da je ack zaporedna številka majhno celo število (1). Prvič, ko tcpdump vidi tcp `pogovor ', natisne zaporedno številko iz paketa. V naslednjih paketih pogovora je natisnjena razlika med zaporedno številko trenutnega paketa in to začetno zaporedno številko. To pomeni, da se lahko zaporedne številke po prvem razlagajo kot relativne položaje bajtov v podatkovnem toku pogovora (pri prvem podatkovnem bajtu je vsaka smer "1"). `-S 'bo preglasila to funkcijo, kar bo povzročilo izvirne zaporedne številke.

V 6. vrstici rtsg pošilja csam 19 bajtov podatkov (bajtov 2 do 20 v rtsg -> csam strani pogovora). Zastava PUSH je nastavljena v paketu. V 7. vrstici csam pravi, da so prejeli podatki, poslani z rtsg, vendar ne vključno z bajtom 21. Večina teh podatkov očitno sedi v vmesnem pufru, saj je csamovo okno za prejemanje prejelo 19 bajtov. Csam pošlje tudi en bajt podatkov rtsg v tem paketu. V 8. in 9. vrstici csam pošilja dva bajta urgentnih, potiskanih podatkov v rtsg.

Če je bil posnetek dovolj majhen, da tcpdump ni zajela celotnega glava TCP, tolmači toliko glave, kolikor je mogoče, nato pa poročila `` [| tcp ] '', da navedete, da ostanka ni mogoče razlagati. Če glava vsebuje lažno možnost (ena z dolžino, ki je bodisi premajhna bodisi nad koncem glave), jo tcpdump sporoči kot `` [ slaba možnost ] '' in ne razlaga nadaljnjih možnosti (ker je nemogoče povedati kjer se začnejo). Če dolžina glave kaže, da so možnosti prisotne, vendar dolžina datagrama IP ni dovolj dolga, da bi možnosti dejansko obstajale, tcpdump ga prikaže kot ,, `[ slaba dolžina hdr ] ''.

Zajemanje paketov TCP s posameznimi kombinacijami zastavic (SYN-ACK, URG-ACK itd.)

V razdelku kontrolnih bitov v glavi TCP je 8 bitov:

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

Predpostavimo, da želimo gledati pakete, uporabljene pri vzpostavljanju povezave TCP. Spomnimo se, da TCP uporablja tristopenjski protokol za rokovanje, ko inicializira novo povezavo; je povezovalno zaporedje v zvezi z kontrolnimi bitji TCP

1) Klicatelj pošlje SYN

2) Prejemnik se odzove s SYN, ACK

3) Klicatelj pošlje ACK

Zdaj nas zanima zajemanje paketov, ki imajo samo nastavljen bit SYN (1. korak). Upoštevajte, da ne želimo paketov iz koraka 2 (SYN-ACK), le navaden začetni SYN. Potrebujemo pravilen filterski izraz za tcpdump .

Recimo strukturo glave TCP brez možnosti:

0 15 31 ----------------------------------------------- ------------------ | izvorna vrata | ciljno pristanišče | -------------------------------------------------- --------------- | zaporedna številka | -------------------------------------------------- --------------- | številka potrditve | -------------------------------------------------- --------------- | HL | rsvd | C | E | U | A | P | R | S | F | velikost okna | -------------------------------------------------- --------------- | Kontrolna vsota TCP | nujni kazalec | -------------------------------------------------- ---------------

Glava TCP običajno vsebuje 20 octet podatkov, razen če obstajajo možnosti. Prva vrstica grafa vsebuje oktete od 0 do 3, druga vrstica pa prikazuje okte 4 - 7 itd.

Odštevajoč se z 0, so ustrezni kontrolni bitji TCP vsebovani v oktetu 13:

0 7 | 15 | 23 | 31 ---------------- | --------------- | --------------- | ---------------- | HL | rsvd | C | E | U | A | P | R | S | F | velikost okna | ---------------- | --------------- | --------------- | - --------------- | | 13. oktet | | |

Poglejmo si še oktet št. 13:

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

To so kontrolni bitji TCP, ki jih zanima. V tem oktetu smo oštevilčili od 0 do 7, desno proti levi, zato je PSH bit bit 3, medtem ko je bit URG številka 5.

Spomnimo se, da želimo zajeti pakete samo s SYN-jem. Poglejmo, kaj se zgodi z oktetom 13, če datagram TCP pride z bitom SYN, ki je nastavljena v njegovem glavi:

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

Če pogledamo razdelek kontrolne bite, vidimo, da je nastavljen samo bitni broj 1 (SYN).

Ob predpostavki, da je številka okteta 13 8-bitno nepotno celo število v vrstnem redu omrežja, je binarna vrednost tega okteta

00000010

in njegova decimalna predstavitev 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

Skoraj smo končali, ker zdaj vemo, da je vrednost 13-ih oktetov v glavi TCP, če jo razlagamo kot 8-bitno nepotno celo število v omrežnem vrstnem redu, natančno 2.

Ta odnos je lahko izražen kot

tcp [13] == 2

Ta izraz lahko uporabimo kot filter za tcpdump, da bi gledali pakete, ki imajo samo SYN nastavljeno:

tcpdump -i xl0 tcp [13] == 2

Izraz pravi: "Naj 13. oktet datagrama TCP ima decimalno vrednost 2", kar je točno tisto, kar želimo.

Predpostavimo, da moramo zajemati SYN pakete, vendar nam ni všeč, če je hkrati ACK ali katerikoli drug kontrolni bit TCP. Poglejmo, kaj se zgodi z oktetom 13, ko pride danagram TCP s SYN-ACK:

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

Sedaj sta 1 in 4 nastavljeni v 13. oktetu. Binarna vrednost okteta 13 je


00010010

ki prevaja decimalko

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

Zdaj ne moremo uporabiti "tcp [13] == 18" v izrazu tcpdump filter, ker bi to izbralo samo tiste pakete, ki imajo nastavljeno SYN-ACK, ne pa tiste s samo nastavljenim SYN. Ne pozabite, da nam ni všeč, ali je ACK ali kateri koli drug kontrolni bit nastavljen, dokler je nastavljen SYN.

Da bi dosegli naš cilj, moramo logično IN binarno vrednost okteta 13 z neko drugo vrednostjo, da ohranimo SYN bit. Vemo, da želimo v vsakem primeru nastaviti SYN, zato bomo logično IN vrednost v 13. oktetu z binarno vrednostjo SYN:

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

Vidimo, da ta operacija AND zagotavlja enak rezultat, ne glede na to, ali je ACK ali drug kontrolni bit TCP nastavljen. Decimalna predstavitev vrednosti AND in rezultata te operacije je 2 (binarna 00000010), zato vemo, da mora biti za pakete s SYN nastavljeno naslednje razmerje:

((vrednost okteta 13) IN (2)) == (2)

To nas usmeri v izraz tcpdump filter

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

Upoštevajte, da morate v izrazu uporabiti enojne narekovaje ali poševnico v ozadju, da skrijete poseben znak IN ('&') iz lupine.

Paketi UDP

UDP format ponazarja ta paket rwho:

actinide.who> broadcast.who: udp 84

To govori, da je pristanišče, ki je na hostinskem aktinidu poslalo udp datagram, da prikaže, kdo je na gostiteljskem oddajanju , internetni naslov. Paket je vseboval 84 bajtov uporabniških podatkov.

Nekatere storitve UDP so prepoznane (od številke vira ali cilja vrat) in natisnjene informacije o protokolu višje ravni. Zlasti zahtevki storitve Domain Name (RFC-1034/1035) in klici Sun RPC (RFC-1050) na NFS.

Zahteve za ime strežnika UDP

(NAPOTILO: Naslednji opis predpostavlja seznanjenost s protokolom Domain Service, opisanim v RFC-1035. Če niste seznanjeni s protokolom, se zdi, da je naslednji opis napisan v grškem jeziku.)

Zahteve strežnika za ime so oblikovane kot

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

Host h2opolo je zahteval strežnik domene v heliju za naslovni zapis (qtype = A), povezan z imenom ucbvax.berkeley.edu. ID za poizvedbo je bil `3 '. "+" Označuje, da je bila nastavljena želena zastava v rekurziji . Dolžina poizvedbe je bila 37 bajtov, ne pa tudi glave protokola UDP in IP. Operacija poizvedbe je bila normalna, poizvedba , zato je bilo polje op opušeno. Če bi bilo op bilo kaj drugega, bi bilo natisnjeno med '3' in '+'. Podobno je bil qclass normalen, C_IN in izpuščen. Vsak drug qclass bi bil natisnjen takoj po "A".

Nekaj ​​anomalij se preveri in lahko povzroči dodatna polja, ki so priložena v oglatih oklepajih: če poizvedba vsebuje odgovor, zapisnik organov ali dodatni del zapisa, ancount , nscount ali arcount natisnejo kot "[ n a]", "[ n n ] "ali" [ n au] ", kjer je n ustrezno število. Če sta v bajtih dva in tri nastavljeni kateri od odzivnih bitov (AA, RA ali rcode) ali kateri koli od "must must" bitov, se natisne "[b2 & 3 = x ]", pri čemer je x šestnajstična vrednost glave dva in tri baze.

UDP Ime Server Responses

Odzivi strežnika za imena so oblikovani kot

src> dst: id op rcode zastave a / n / au tip razreda podatkov (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)

V prvem primeru se helios odziva na id poizvedbe 3 iz h2opola s tremi zapisi odgovorov, 3 zapisi z imenom strežnika in 7 dodatnih zapisov. Prvi odgovor je tipa A (naslov), njegovi podatki pa internetni naslov 128.32.137.3. Skupna velikost odziva je bila 273 bajtov, brez UDP in IP glave. Op (poizvedba) in odzivna koda (NoError) sta bila izpuščena, prav tako kot razred (C_IN) zapisa A.

V drugem primeru se helios odziva na poizvedbo 2 z odzivno kodo neobstoječe domene (NXDomain) brez odgovorov, enega imena strežnika in nobenih avtorskih zapisov. `* 'Označuje, da je bil nastavljen avtoritativni odgovorni bit. Ker ni bilo odgovorov, ni bilo natisnjenih nobenih tipov, razredov ali podatkov.

Drugi znaki znakov, ki se lahko pojavijo, so `- '(razpoložljiva rekurzija, RA, ni nastavljena) in` |' (okrnjeno sporočilo, TC, nastavljeno). Če razdelek "vprašanje" ne vsebuje natančno enega vnosa, se natisne "[ n q]".

Upoštevajte, da so zahtevi in ​​odgovori na strežniku za imenik ponavadi veliki in privzeto strmoglavje 68 bajtov morda ne bo dovolj zajemalo paketa za tiskanje. Uporabite oznako -s, da povečate zvonjenje, če morate resno preiskovati promet strežnika imen. ` -s 128 'je dobro delal zame.

SMB / CIFS dekodiranje

tcpdump zdaj vključuje dokaj razširjeno dekodiranje SMB / CIFS / NBT za podatke o UDP / 137, UDP / 138 in TCP / 139. Izvaja se tudi nekaj primitivnega dekodiranja podatkov IPX in NetBEUI SMB.

Po privzeti se naredi dokaj minimalna dekodiranje, pri čemer se naredi veliko podrobnejša dekodiranje, če se uporabi -v. Bodite opozorjeni, da lahko pri -ve en SMB paket zasede stran ali več, tako da uporabite samo -v, če zares želite vse podatke o krovi.

Če dekodirate seje SMB, ki vsebujejo unicode, potem boste morda želeli nastaviti spremenljivko okolja USE_UNICODE na 1. Popravek za samodejno zaznavanje unicode serij bi bil dobrodošel.

Za informacije o paketnih formatih SMB in o tem, kaj pomenijo vsa ta polja, si oglejte spletno stran www.cifs.org ali imenik pub / samba / specs / na svojem priljubljenem spletnem mestu zrcala samba.org. Obliž SMB je napisal Andrew Tridgell (tridge@samba.org).

Zahteve in odgovori NFS

NFS (omrežni datotečni sistem) NFS in odgovori so natisnjeni kot:

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

V prvi vrstici gostiteljska suši pošlje transakcijo z ID-jem 6709 na wrl (upoštevajte, da je številka, ki sledi gostitelju src, ID transakcije, in ne izvorna vrata). Zahteva je bila 112 bajtov, brez UDP in IP glave. Operacija je bila berljiva povezava (berljiva simbolična povezava) na držalu datoteke ( fh ) 21,24 / 10,731657119. (Če je eden srečen, se lahko v tem primeru ročaj datoteke tolmači kot glavni, manjši par številk naprave, ki mu sledi številka inode in številka generacije.) Wrl odgovori z »ok« z vsebino povezave.

V tretji vrstici suši prosi wrl, da v imeniški datoteki 9,74 / 4096,6878 poišče ime `xcolors`. Upoštevajte, da so natisnjeni podatki odvisni od vrste delovanja. Oblika naj bi bila samoumevna, če jo berete v povezavi s specifikacijami protokola NFS.

Če je podana oznaka -v (verbose), se natisnejo dodatne informacije. Na primer:

suši.1372a> wrl.nfs: 148 prebrati fh 21,11 / 12,195 8192 bajtov @ 24576 wrl.nfs> suši.1372a: odgovor ok 1472 prebrati REG 100664 ids 417/0 sz 29388

(-v natisne tudi polja TTL, ID, dolžino in drobljenje naslovov IP, ki so bili iz tega primera izpuščeni.) V prvi vrstici suši prosi wrl, da bere 8192 bajtov iz datoteke 21,11 / 12,195, pri bajtnem pomiku 24576. Wrl odgovori "ok"; je paket, prikazan v drugi vrstici, prvi del odziva in zato je dolg le 1472 bajtov (drugi bajti bodo sledili v nadaljnjih fragmentih, vendar ti fragmenti nimajo NFS ali celo UDP glave in zato morda ne bodo natisnjeni, odvisno od uporabljenega izraza filtra). Ker je podana oznaka -v, se natisnejo nekateri atributi datoteke (ki se vrnejo poleg podatkov o datoteki): vrsto datoteke (»REG« za redno datoteko), datotečni način (v osmih), uid in gid ter velikost datoteke.

Če je oznaka -v podana več kot enkrat, se natisnejo še več podrobnosti.

Upoštevajte, da so zahtevi NFS zelo veliki in da se večina podrobnosti ne bo natisnila, razen če se zvišanje moči poveča. Poskusite uporabiti ` -s 192 'za ogled prometa NFS.

Paketi odgovora NFS ne izrecno opredeljujejo operacije RPC. Namesto tega tcpdump sledi najnovejšim zahtevam in jih ujema z odgovori z uporabo ID transakcije. Če odgovor ne sledi ustrezno zahtevi, morda ne bo mogoč.

Zahteve in odgovori AFS

Transarc AFS (Andrew File System) zahteve in odgovori so natisnjeni kot:

src.sport> dst.dport: rx paketni tip src.sport> dst.dport: rx vrsta storitve paketnega tipa klicnega imena klicnega imena src.sport> dst.dport: ime klicnega tipa za storitev paketa tipa argvis elvis. 7001> pike.afsfs: rx podatkov fs preimenovanje starega fid 536876964/1/1 ".newsrc.new" nov fid 536876964/1/1 ".newsrc" pike.afsfs> elvis.7001: rx podatkov fs odgovor preimenovati

V prvi vrstici gostiteljica Elvis pošilja paket RX do ščuka. To je bil paket podatkov RX za storitev fs (fileserver) in je začetek klica RPC. Klic RPC je bil preimenovan, s starim imenikom z ID-jem 536876964/1/1 in starim imenom ».newsrc.new« in z novo imeniksko datoteko 536876964/1/1 in z novim imenom `. newsrc '. Gostiteljska šoka se odzove z odgovorom RPC na klic preimenovanja (kar je bilo uspešno, ker je bil paket podatkov in ne prekinitveni paket).

Na splošno so vsi RPC-ji AFS dekodirani vsaj z RPC ime klica. Večina RPC-jev AFS ima vsaj nekaj od dekodiranih argumentov (ponavadi samo "zanimive" argumente, za nekatere opredelitve zanimivih).

Oblika je namenjena samo-opisovanju, vendar verjetno ne bo koristna za ljudi, ki niso seznanjeni z delovanjem AFS in RX.

Če je podana oznaka -v (verbose) dvakrat, se natisne potrditveni paketi in dodatne informacije o glavi, na primer ID klicev RX, številka klicne številke, zaporedna številka, serijska številka in zastave paketa RX.

Če je oznaka -v podana dvakrat, se natisnejo dodatne informacije, kot so identifikacijska številka klica RX, serijska številka in zastavice za pakete RX. Informacije o pogajanjih MTU so natisnjene tudi iz paketov RX ack.

Če je oznaka -v dodeljena trikrat, se natisne varnostni indeks in ID storitve.

Kode napak so natisnjene za prekinitev paketov, z izjemo paketov Ubik beacon (ker se prekinitveni paketi uporabljajo za označitev glasu "da" za protokol Ubik).

Upoštevajte, da so zahteve za AFS zelo velike, številni argumenti pa ne bodo natisnjeni, razen če se zvišate. Poskusite uporabiti ` -s 256 'za ogled prometa AFS.

Paketi odgovorov AFS ne izrecno prepoznajo operacije RPC. Namesto tega tcpdump sledi najnovejšim zahtevam in jih odgovarja z odgovori z uporabo številke klicne številke in ID storitve. Če odgovor ne sledi ustrezno zahtevi, morda ne bo mogoč.

KIP Appletalk (DDP v UDP)

Paketi Appletalk DDP, vključeni v datagramih UDP, so dekapsulirani in dampinirani kot DDP paketi (tj. Vsi podatki o zaglavju UDP so zavrženi). Datoteka /etc/atalk.names se uporablja za prevajanje številk neto in vozlišč appletalk v imena. Vrstice v tej datoteki imajo obliko

ime številke 1.254 eter 16.1 icsd-net 1.254.110 as

V prvih dveh vrsticah so podane imena mrež za appletalk. Tretja vrstica podaja ime določenega gostitelja (gostitelj od omrežja je ločen od tretjega okteta v številki - neto številka mora imeti dva okteta in številka gostitelja mora imeti tri oktete.) Številko in ime je treba ločiti s presledki (praznine ali zavihki). Datoteka /etc/atalk.names lahko vsebuje prazne črte ali vrstice za komentiranje (vrstice, ki se začnejo z '#').

Naslovi Appletalk-a so natisnjeni v obliki:

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

(Če /etc/atalk.names ne obstaja ali ne vsebuje vnosa za neko gostiteljsko / mrežno številko appletalk, so naslove natisnjene v številčni obliki.) V prvem primeru NBP (DDP port 2) na net 144.1 vozlišče 209 pošilja na tisto, kar posluša na pristanišču 220 neto icsd vozlišča 112. Druga vrstica je ista, razen če je znano polno ime izvornega vozlišča ("urad"). Tretja vrstica je pošiljanje iz pristanišča 235 na neto jssmag vozlišče 149, da se odda na icsd-net NBP port (upoštevajte, da je naslov oddaje (255) označen z neto številko brez gostiteljske številke - zato je dobra zamisel da so imena vozlišč in imena omrežja ločena v /etc/atalk.names).

NBP (protokol za zavezujočo ime) in paketi ATP (Appletalk transakcijski posel) vsebujejo njihovo vsebino. Drugi protokoli šele odlagajo ime protokola (ali številko, če ni nobenega imena registrirano za protokol) in velikost paketa.

Paketi NBP so oblikovani kot naslednji primeri:

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> icsd -net.112.220: nbp-odgovor 190: "techpit: LaserWriter @ *" 186

Prva vrstica je zahtevek za iskanje po imenu za laserska pisala, ki jih posreduje omrežje icsd host 112 in se odda na net jssmag. ID nbp za iskanje je 190. V drugi vrstici je odgovor za to zahtevo (upoštevajte, da ima isti ID) od gostitelja jssmag.209, ki pravi, da ima v pristanišču 250 registriran vir laserskega imenika z imenom »RM1140«. line je še en odgovor na isto zahtevo, ki pravi, da gostiteljica techpit ima v pisarni 186 pristanišče "techpit".

Formatiranje paketov ATP dokazuje naslednji primer:

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 sproži ID transakcije 12266 s heliosom gostitelja tako, da zahteva do 8 paketov (»<0-7> '). Šestnajstiško število na koncu vrstice je vrednost polja "userdata" v zahtevku.

Helios odgovarja z 8 512-bajtnimi paketi. Številka `:: 'po ID-ju transakcije daje številko zaporedja paketov v transakciji, številka pa je količina podatkov v paketu, z izjemo glave atp. `* 'V paketu 7 označuje, da je bil nastavljen EOM bit.

Jssmag.209 nato zahteva, da se paketi 3 in 5 prenašajo. Helios jih ponovi, potem jssmag.209 sprosti transakcijo. Nazadnje, jssmag.209 sproži naslednjo zahtevo. `* 'Na zahtevo označuje, da XO (" točno enkrat ") ni bil nastavljen.

Razdrobljenost IP

Razdrobljeni internetni datagrami so natisnjeni kot

(frag id : velikost @ offset +) (frag id : velikost @ offset )

(Prva oblika označuje, da je več fragmentov. Drugi kaže, da je to zadnji fragment.)

Id je id fragmenta. Velikost je velikost fragmenta (v bajtih) brez glave IP. Offset je odmik tega fragmenta (v bajtih) v prvotnem datagramu.

Podatki o fragmentu so prikazani za vsak fragment. Prvi fragment vsebuje glavno poglavje protokola višje ravni in informacije o fragmentih se natisnejo po informacijah o protokolu. Fragmenti po prvem ne vsebujejo višjega nivoja glave protokola in podatki o fragcih se natisnejo po izvornih in ciljnih naslovih. Na primer, tukaj je del ftp od arizona.edu do lbl-rtsg.arpa prek povezave CSNET, ki ne deluje kot 576 bajtnih datagramov:

arizona.ftp-podatki> rtsg.1170:. 1024: 1332 (308) ack 1 win 4096 (frag 595a: 328 @ 0 +) arizona> rtsg: (frag 595a: 204 @ 328) rtsg.1170> arizona.ftp-podatki:. zmaga 1536 zmaga 2560

Tukaj je nekaj stvari, ki jih je treba zabeležiti: Prvič, naslovi v 2. vrstici ne vključujejo številk vrat. To je zato, ker so informacije o protokolu TCP vse v prvem fragmentu in nimamo pojma, kaj so vrata ali zaporedne številke, ko natisnemo kasnejše fragmente. Drugič, podatki o zaporedju tcp v prvi vrstici so natisnjeni tako, kot da bi bilo 308 bajtov uporabniških podatkov, ko je v resnici 512 bajtov (308 v prvem fragmentu in 204 v drugem). Če iščete luknje v sekvenčnem prostoru ali se poskušate ujemati s paketi, vas to lahko zavede.

Paket z IP- jem ni označen z odlomkom (DF) .

Časovni žigi

Privzeto je za vse izhodne linije pred časovnim žigom. Časovni žig je trenutni čas ura v obliki

hh: mm: ss.frac

in je točen kot ura jedra. Časovni žig odraža čas, ko je jedro prvič videlo paket. Nobenega poskusa ni bilo, da bi upoštevali časovni zamik med tem, ko je ethernet vmesnik odstranil paket iz žice in ko je jedro servisiral prekinitev "nove pakete".

POGLEJ TUDI

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

Pomembno: Uporabite ukaz man ( % man ), da vidite, kako se na vašem računalniku uporablja ukaz.