Skip to main content

Tcpdump: primeri, možnosti in še več

Anonim

Tcpdump je ukaz, ki se uporablja v različnih Linux operacijskih sistemih (OS), ki zbira pakete TCP / IP, ki prehajajo prek omrežnega vmesnika. Podobno kot orodje za prenašanje paketov, lahko tcpdump analizira samo omrežni promet, ampak ga tudi shrani v datoteko.

Za razliko od nekaterih ukazov, ki jih privzeto ponuja operacijski sistem, boste morda ugotovili, da ne morete uporabiti tcpdump, ker ni nameščen. Če želite namestiti tcpdump, izvršite apt-get install tcpdump ali yum namestite tcpdump, odvisno od vašega operacijskega sistema.

Kako deluje Tcpdump

Tcpdump natisne glave paketov v omrežnem vmesniku, ki se ujema z Boolovim izraz . Prav tako se lahko izvaja z-w zastave, zaradi česar lahko paketne podatke shranite v datoteko za poznejšo analizo in / ali z-r zastave, zaradi česar lahko beremo iz shranjene paketne datoteke, namesto da beremo pakete iz omrežnega vmesnika. V vseh primerih se samo ujemajo izraz bodo obdelane s strani tcpdump .

Tcpdump bo, če ne bo tekel z-c flag, nadaljujte s snemanjem paketov, dokler ga ne prekine s signalom SIGINT (ustvarjen, na primer, tako, da vnesete svoj prekinitveni znak, običajno Ctrl + C) ali signal SIGTERM (ponavadi generiran zubiti(1) ukaz); če teče z-c zastave, bo zajemal pakete, dokler jih ne prekine s signalom SIGINT ali SIGTERM ali če je bilo obdelano določeno število paketov.

Stikala, navedena zgoraj, so podrobneje razložena kasneje v tem članku.

Kdaj tcpdump zaključi snemanje paketov, bo poročal o številu:

  • Paketi ", ki jih prejme filter."
    • 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-jih šteje pakete, ne glede na to, ali jih je ujemal izraz s filtriranjem, pri drugih pa šteje samo pakete, ki so se ujemali s filtrirnim izrazom in so jih obdelali tcpdump.
  • Paketi "padli z jedrom."
    • To je število paketov, ki so zaradi pomanjkanja vmesnega pomnilnika padli z mehanizmom za zajemanje paketov v OS, na katerem tcpdump se izvaja, če OS sporoča te informacije aplikacijam. Če ne, se bo prijavilo kot 0.

Na platformah, ki podpirajo signal SIGINFO, kot je večina BSD-jev (Berkeley Software Distributions), bo sporočil tista števila, ko prejme signal SIGINFO (ustvarjen, na primer, s tipkanjem znaka »status«) Ctrl + T) in bo še naprej zajela pakete.

Združljivost Tcpdump

Branje paketov iz omrežnega vmesnika s ukazom tcpdump lahko zahteva, da imate posebne privilegije ( branje shranjena paketna datoteka ne potrebuje takih privilegijev):

  • SunOS 3.x ali 4.x z NIT ali BPF: Prebrati morate dostop do / dev / nit ali dev / bpf * .
  • Solaris z DLPI: Morate imeti dostop do branja / pisanja omrežni pseudo napravo, npr / dev / le . Vendar pa to vsaj na nekaterih različicah Solaris to ne zadostuje tcpdump zajeti v nespametnem načinu; na tistih različicah sistema Solaris morate biti root ali tcpdump mora biti nameščen v setuid, da bi ga lahko zajemal v nespametnem 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.
  • HP-UX z DLPI: Morate biti root ali tcpdump mora biti nameščen setuid za koren.
  • IRIX s snoop: Morate biti root ali tcpdump mora biti nameščen setuid za koren.
  • Linux: Morate biti root ali tcpdump mora biti nameščen setuid za koren.
  • Ultrix in Digital UNIX / Tru64 UNIX: Vsak uporabnik lahko zajema omrežni promet z tcpdump . Vendar noben uporabnik (niti super-uporabnik) ne more zajamčiti v brezobzirnem načinu v vmesniku, razen če je superuporabnik omogočil delovanje brez motenj v tem vmesniku z uporabo pfconfig (8) in noben uporabnik (niti super-uporabnik) ne more zajeti enojnega prometa, ki ga naprava prejme ali pošlje na vmesniku, razen če je superuporabnik v tem vmesniku omogočil operacijo kopiranja v vse načine pfconfig , tako da koristno zajemanje paketov na vmesniku verjetno zahteva, da se v tem vmesniku omogoči obojestranski način ali način kopiranja v vse načine ali oba načina delovanja.
  • BSD: Prebrati morate dostop do / dev / bpf * .

Sintaksa za ukazno vrstico Tcpdump

Kot vsi računalniški ukazi, ukaz tcpdump deluje pravilno le, če je skladnja pravilna:

tcpdump -adeflnNOpqRStuvxX -c šteje

-C velikost datoteke -F mapa

-jaz vmesnik -m modul -r mapa

-s snaplen -T tip -U uporabnik -w mapa

-E algo: skrivnost izraz

Možnosti ukazne vrstice Tcpdump

To so vse možnosti, ki jih lahko uporabite z ukazom tcpdump:

  • -a: Poskus pretvorbe omrežnih in oddajnih naslovov v imena.
  • -c: Izhod po prejemu šteje paketi.
  • -C: Preden napišete surovi paket v shrani datoteko, preverite, ali je datoteka trenutno večja od velikost datoteke in če je tako, zaprite trenutni shranjevalnik in odprite novega.Shrani datoteke po prvem shranjevalnem priponku bodo imeli ime, navedeno v-w zastava, s številko za njim, začenši z 2 in nadaljuj navzgor. Enote v Ljubljani velikost datoteke so milijoni bajtov (1.000.000 bajtov, ne pa 1.048.576 bajtov).
  • -d: Sklonite prevedeno kodo za ujemanje paketov v človeško berljivo obliko na standardni izhod in ustavite.
  • -dd: Kodo za ujemanje paketa kot aC programski fragment.
  • -dd: Dump paket za ujemanje kot decimalna števila (pred številko).
  • -e: Natisnite glavo na ravni povezave na vsaki liniji.
  • -E: Uporaba algo: skrivnost za dešifriranje paketov IPsec ESP. Algoritmi so lahkodes-cbc, 3des-cbc, blowfish-cbc, rc3-cbc, cast128-cbc, alinič. Privzeto jedes-cbc. Sposobnost dekodiranja paketov je prisotna le, če tcpdump je bil zbrisan s kriptografijo. skrivnost ascii besedilo 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 skrivnim ključem IPsec na ukazni vrstici jo vidimo drugim, prek ps (1) in druge priložnosti.
  • -f: Natisne "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 nelokalnimi internetnimi številkami).
  • -F: Uporaba mapa kot vhod za filtrirni izraz. Dodaten izraz, ki je naveden v ukazni vrstici, je prezrt.
  • -jaz: Poslušaj vmesnik . Če ni natančno opredeljeno, tcpdump išče seznam sistemskih vmesnikov za najmanjše oštevilčene, konfigurirane vmesnike (brez povratne zanke). Vezi se prekinejo z izbiro najzgodnejše tekme. V sistemih Linux z jedrci 2.2 ali novejšimi, a vmesnik argument za "vse" lahko uporabite za zajemanje paketov iz vseh vmesnikov. Upoštevajte, da zajemanja na "katerikoli" napravi ne bodo izvedena v nespremenljivem načinu.
  • -l: Naredite stdout vrstico puferno. Uporabno, če si želite ogledati podatke med hrambo. Na primer: "tcpdump -l | tee dat" ali "tcpdump -l> dat & tail -f dat".
  • -m: V datoteko naložite definicije modula SMI MIB modul . To možnost lahko uporabite večkrat, da naložite več MIB modulov v tcpdump .
  • -n: Ne pretvorite 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 imejte imena domenskega imena domene. Če na primer navedete to zastavo, potem tcpdump bo 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 postavite vmesnik v promiskuni 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: Hiter (tih) 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 bodo natisnili 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: Preberi pakete iz mapa (ki je bila ustvarjena z možnostjo -w). Standardni vhod se uporablja, če mapa je "-".
  • -S: Natisnite absolutne, ne pa relativne, zaporedne številke TCP.
  • -s: Snarf snaplen bajtov podatkov iz vsakega paketa namesto privzete vrednosti 68; s SunOS-jevim NIT-jem, je najmanj 96. Za IP, ICMP, TCP in UDP je lahko osem-osem bajtov, vendar lahko odreza informacije o protokolu iz strežnika za imena in NFS (glejte spodaj). Paketi, okrnjeni zaradi omejenega posnetka, so navedeni v izhodu z "| proto '', kje proto je 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 snaplen do najmanjše številke, ki bo zajela informacije o protokolu, ki vas zanima. Nastavitev snaplen na 0 pomeni uporabiti zahtevano dolžino za ujemanje celih paketov.
  • -T: Force pakete, ki jih izbere " izraz "razlagati podano tip . Trenutno znane vrste socnfp (Protokol Cisco NetFlow),rpc (Oddaljeni postopek),rtp (Protokol za aplikacije v realnem času),rtcp (Protokol za nadzor aplikacij v realnem času),snmp (Simple Network Management Protocol),kad (Visual Audio Tool) inwb (distribuirani beli odbor).
  • -t: Ne natisnite časovni žig na vsaki odlagalni liniji.
  • -tt: Natisnite neformatiran časovni žig na vsaki odlagalni liniji.
  • -U: Prilagaja privilegije in spremeni uporabniško ime uporabnik in ID skupine v primarno skupino uporabnik .
  • Opomba: Red Hat Linux samodejno spusti privilegije na uporabnika "pcap", če nič drugega ni določeno.
  • -ttt: Natisnite delte (v mikrosekundah) med sedanjo in prejšnjo vrstico 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, identifikacija, skupna dolžina in možnosti v IP-paketu. Omogoča tudi dodatne kontrole integritete paketov, kot je preverjanje kontrolne vsote naslova IP in ICMP.
  • -vv: Še bolj natančen izhod. Na primer, dodatna polja se natisnejo iz paketov za odgovor NFS, paketi SMB pa so v celoti dekodirani.
  • -vvv: Še bolj natančen izhod. Na primer telnetSBSE možnosti so natisnjene v celoti. S -X Možnosti telneta so natisnjene tudi v hex.
  • -w: Napišite surove pakete v mapa namesto razkrivanja in tiskanja. Kasneje lahko natisnete z možnostjo -r. Standardni izhod se uporablja, če mapa je "-".
  • -x: Natisnite vsak paket (minus njen naslov glave povezave) v hex. Manjši od celotnega paketa ali snaplen bajti bodo natisnjeni. Upoštevajte, da je to celoten paket povezavnih slojev, tako da se za sloje povezav, da bo pad (npr. Ethernet), natisnjeni bajtni tudi natisnjeni, ko bo paket paketov višje plasti krajši od zahtevane oblike.
  • -X: Ko tiskate hex, natisnite tudi ascii. Če torej-x je nastavljen tudi, paket je natisnjen v hex / ascii. To je zelo priročno za analiziranje novih protokolov. Tudi če-x ni nastavljen, nekateri deli nekaterih paketov so lahko natisnjeni v hex / ascii.
  • izraz : Izbere, kateri paketi bodo dampinški. Če ne izraz je podan, bodo vsi paketi v omrežju dampinški. V nasprotnem primeru samo za pakete izraz je "res" bo dampinški. The izraz sestoji iz enega ali več primitivi. Primitivi običajno sestavljajo id (ime ali številka), pred katerim je eden ali več kvalifikatorjev. Obstajajo tri različne vrste kvalifikacij:
  • tip : Kvalifikatorji pravijo, na kaj se nanaša id ali številka id. Možni tipi sogostitelj, mreža, inpristanišče- na primer "gostitelj foo", "neto 128.3", "pristanišče 20". Če ni nobenega tipskega kvalifikanta,gostitelj predpostavlja.
  • dir : Kvalifikatorji določajo določeno smer prenosa na in / ali iz id . Možna navodila sosrc, dst, src ali dst insrc in dst (npr. "src foo", "dst net 128.3", "src ali dst port ftp-data"). Če ni nobenega kvalifikacijskega reda,src ali dst predpostavlja. Za "nične" sloje povezav (tj. Protokole točka-točka kot je drsenje) vhodni in odhod kvalifikatorje lahko uporabite za določitev želene smeri.
  • proto : Kvalifikatorji omejujejo tekmo na določen protokol. Možni protokoli so: eter, fddi, tr, ip, ip6, arp, rarp, decet, tcp, inudp- npr. 'Ether src foo', 'arp net 128.3', 'tcp port 21'. Če ni proto-kvalifikanta, se predpostavljajo vsi protokoli, ki so skladni s tipom. Na primer, "src foo" pomeni "(ip ali arp ali rarp) src foo" (razen ta ni pravna sintaksa), "net vrstica" pomeni "(ip ali arp ali rarp) net bar" in "vrata 53" pomeni "vrata 53 (tcp ali udp)".
    • "fddi" je pravzaprav vzdevek za "eter"; razčlenjevalnik jih enako obravnava kot "raven podatkovne zveze, 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 področjih samo tako kot pri analognih poljih Ethernet. Glave FDDI vsebujejo tudi druga polja, vendar jih ne morete izrecno navesti 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 je nekaj posebnih "primitivnih" ključnih besed, ki ne sledijo vzorcu:prehod, oddaja, manj, večje, in aritmetično izrazi. Vse so opisane spodaj.

Zapleteni izrazi filtra so zgrajeni z uporabo besedin, ali, inne za združevanje primitiv, na primer "host foo in ne vrata ftp in ne vrata ftp-podatkov". Če želite shraniti tipkanje, se lahko isti seznami kvalifikacij izpustijo (npr. "Tcp dst port ftp ali ftp-podatki ali domena" je popolnoma enak kot "tcp dst port ftp ali tcp dst port ftp-data ali tcp dst port domene".)

To so primitivi, dovoljeni z ukazom tcpdump:

  • dst gostitelj gostitelj
    • Res je, če je ciljno polje paketa IPv4 / v6 gostitelj , ki je lahko naslov ali ime.
  • src gostitelj gostitelj
    • Res je, če je polje vira vira IPv4 / v6 gostitelj .
  • gostitelj gostitelj
    • Res je, ali je izvor ali cilj paketa IPv4 / v6 gostitelj . Vsak od zgornjih izrazov gostiteljev je mogoče napolniti s ključnimi besedami,ip, arp, rarp, aliip6, kot v ip host gostitelj (kar je enako eter proto ip in gostitelj gostitelj).
    • Če gostitelj je ime z več naslovi IP, vsak naslov bo preverjen za tekmo.
  • eter dst ehost
    • Res je, če je ciljni naslov Ethernet ehost . Ehost je lahko ime iz / etc / eters ali številko (glej etri (3N) za numerično obliko).
  • ether src ehost
    • Res je, če je naslov vira Ethernet ehost .
  • eter gostitelj ehost
    • Res je, če je izvor Ethernet ali ciljni naslov ehost .
  • prehod gostitelj
    • Res je, če je paket uporabljal gostitelj kot prehod (tj. vir vira Ethernet ali ciljni naslov je bil gostitelj vendar ni bil niti vir IP niti cilj IP gostitelj ).
    • Host 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 mehanizmom za ločevanje naslova gostitelja-ime-v-ethernet-naslov (/ etc / ethers, itd.).
    • Enakovreden izraz je eter gostitelj ehost in zdaj gostitelj gostitelj , ki se lahko uporablja z imeni ali številkami za gostitelj / ehost .) Ta sintaksa trenutno ne deluje v konfiguraciji, ki podpira IPv6.
  • dst net mreža
    • Res je, če ima ciljni naslov paketa IPv4 / v6 omrežno številko mreža . Mreža je lahko ime iz / etc / omrežij ali omrežna številka (glej omrežja (4) za podrobnosti).
  • src net mreža
    • Res je, če ima izvorni naslov paketa IPv4 / v6 omrežno številko mreža .
  • mreža mreža
    • Res je, če ima bodisi izvor IPv4 / v6 ali ciljni naslov paketa omrežno številko mreža .
  • mreža mreža maska netmask
    • Res je, če se IP naslov ujema mreža s specifičnim netmask . Lahko se kvalificirasrc alidst. Upoštevajte, da ta sintaksa ni veljavna za IPv6 mreža .
  • mreža mreža / len
    • Res je, ali se naslov IPv4 / v6 ujema z mreža z mrežno masko len bitov široko. Lahko se kvalificirasrc alidst.
  • dst pristanišče pristanišče
    • Res je, ali je paket ip / tcp, ip / udp, ip6 / tcp ali ip6 / udp in ima vrednost ciljnega pristanišča pristanišče . The pristanišče je lahko številka ali ime, uporabljeno v / etc / services (glejte 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 natisnil tako tcp / prijavni promet, kot tudi udp / kdo je promet, inpristaniška domena bo tiskal tkp / domene in udp / domene prometa).
  • src pristanišče pristanišče
    • Res je, če ima paket vrednost vira vira pristanišče .
  • pristanišče pristanišče
    • Res je, če je izvorno ali namembno pristanišče paketa pristanišče . Vsak od zgoraj omenjenih pristaniških izrazov je mogoče napolniti s ključnimi besedami,tcp aliudp, kot v tcp src pristanišče pristanišče , ki se ujema samo z tcp paketi, katerih izvorna vrata so pristanišče .
  • manj dolžina
    • Res je, če ima paket manj kot ali enako dolžina . To je enako len <= Dolžina .
  • večje dolžina
    • Res je, če je paket večji ali enak dolžina . To je enako len> = Dolžina .
  • ip proto protokol
    • Res je, ali je paket paket IP (glejte ip (4P)) tipa protokola protokol . Protokol je lahko število ali eno od imen icmp , icmp6 , igmp , igrp , pim , ah , esp , vrrp , udp , ali tcp . Upoštevajte, da so identifikatorji tcp , udp , in icmp so tudi ključne besede in jih je treba ubežati s poševnico (), ki je v C-lupini. Upoštevajte, da ta primitiv ne zapelje verige glave protokola.
  • ip6 proto protokol
    • Res je, ali je paket paket IPv6 tipa protokola protokol . Upoštevajte, da ta primitiv ne zapelje verige glave protokola.
  • ip6 protochain protokol
    • Res je, če je paket paket IPv6 in vsebuje glavo glave s tipom protokol v svoji verigi protokolov glave. Na primer, ipv6 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. Kodo BPF, ki ga oddaja ta primitiv, je zapleteno in ga ni mogoče optimizirati z optimizacijsko kodo BPF v tcpdump , zato je to lahko nekoliko počasno.
  • ip protochain protokol
    • Enakovredenip6 protochain protokol , vendar je to za IPv4.
  • eter oddaja
    • Res je, če je paket ethernetni oddajni paket. The eter ključna beseda je neobvezna.
  • 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 paket Ethernet multicast. The eter ključna beseda je neobvezna. To je skrajšano besedilo za "eter 0 in 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, če je paket etrske vrste protokol . Protokol je lahko število ali eno od imen ip , ip6 , arp , rarp , atalk , aarp , decet , sca , lat , mopdl , moprc , izo , 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. "fddi protokol arp') in Token Ring (npr. "tr protokol arp'), za večino teh protokolov identifikacija protokola izhaja iz glave 802.2 Logical Link Control (LLC), ki je navadno layered nad zgornjim delom FDDI ali Token Ring.
    • Če filtrirate večino identifikatorjev protokola na FDDI ali Token Ring, tcpdump preveri samo 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 izo , za katero preverja polja naslova Access Point Point (Destination Point Access Point) in SSAP (Source Service Access Point) naslova LLC, stp in netbeui , kjer preveri DSAP naslova LLC in atalk , kjer preveri paket paketov SNAP z OUI 0x080007 in Appletalk etype.
    • V primeru Ethernet, tcpdump preveri polje Ethernet tipa za večino teh protokolov; izjeme so izo , sap , in netbeui , za katerega preverja okvir 802,3 in nato preveri glavo glave LLC tako kot za FDDI in Token Ring; atalk , kjer preveri tako za Appletalk etype v ethernetnem okviru kot za SNAP formatni paket kot za FDDI in Token Ring; aarp , kjer preveri etype Appletalk ARP bodisi v ethernetnem okviru ali 802.2 SNAP okviru z OUI 0x000000; in ipx , kjer preveri IPX etype v ethernetnem okviru, IPX DSAP v naslovu LLC, 802,3 brez enkapsulacije glave LLC IPX-a in IPX-etipa v okviru SNAP-ja.
  • decnet src gostitelj
    • 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 destinacijski naslov DECNET gostitelj .
  • decnet gostitelj gostitelj
    • Res je, če je vir DECNET ali ciljni naslov gostitelj .
  • ip, ip6, arp, rarp, atalk, aarp, decet, izo, stp, ipx, netbeui
    • Okrajšave za eter proto str kje str je eden od zgornjih protokolov.
  • lat, moprc, mopdl
    • Okrajšave za eter proto str kje str je eden od zgornjih protokolov. Upoštevajte, da tcpdump trenutno ne ve, kako razčleniti te protokole.
  • vlan vlan_id
    • Res je, ali je paket paket IEEE 802.1Q VLAN. Če vlan_id je podan, samo če je paket označen vlan_id . Upoštevajte, da prvivlan ključna beseda, s katero se srečujete v izraz spremeni odmike za dekodiranje za preostanek izraz ob predpostavki, da je paket paket VLAN.
  • tcp, udp, icmp
    • Okrajšave za ip proto str ali ip6 proto str kje str je eden od zgornjih protokolov.
  • iso proto protokol
    • Res je, ali je paket paket OSI tipa protokola protokol . Protokol je lahko število ali eno od imen clnp , esis , ali isis .
  • clnp, esis, isis
    • Okrajšave za iso proto str kje str je eden od zgornjih protokolov. Upoštevajte, da tcpdump nepopolno opravilo razčlenjevanja teh protokolov.
  • expr relop expr
    • Res je, če drži razmerje, kje relop je eden od>, <,> =, <=, =,! =, in expr je aritmetični izraz, sestavljen iz celih konstant (izraženih v standardni C-sintaksi), običajnih binarnih operaterjev +, -, *, /, &, |, operaterja dolžine in posebnih dostopov za paketne podatke. Za dostop do podatkov znotraj paketa uporabite naslednjo sintakso: proto izpis: velikost .

Proto je ena odeter, fddi, tr, ppp, zdrs, povezavo, ip, arp, rarp, tcp, udp, icmp, ali ip6, in označuje protokolno plast za indeksno operacijo (eter, fddi, tr, ppp, zdrs, inpovezavo vsi se nanašajo na povezavo plast). Upoštevajte, da tcp, udp , in druge vrste 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 expr . Velikost je neobvezno 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 besedalen, dolžina paketa.

Na primer, "eter 0 in 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 nič od fragmentiranih datagramov. Ta pregled se implicitno uporablja zatcp inudp indeksne operacije. Na primer, tcp 0 vedno pomeni prvi bajt TCP glava , nikoli pa ne pomeni prvega bajta vmesnega fragmenta.

Nekateri odmiki in poljske vrednosti se lahko izrazijo kot imena in ne kot številske vrednosti. Na voljo so naslednji izravnalni polji naslovov protokola: icmptype (Polje tipa ICMP),icmpcode (Polje ICMP kode) intcpflags (Polje TCP zastavice).

Na voljo so naslednje vrednosti polja tipa ICMP:icmp-echoreply, icmp-unreach, icmp-sourcequench, icmp-preusmeritev, 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 zastavic:tcp-fin, tcp-syn, tcp-rst, tcp-push, tcp-push, tcp-ack, tcp-urg.

Primitivi se lahko kombinirajo z uporabo katerega koli od naslednjega:

  • 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 to eksplicitnoin žetoni, ki niso združeni, so potrebni za konku- renčenje.

Č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. Vendar tega ne smemo zamenjati ne (gostitelj vs ali ace).

Argumenti za izražanje se lahko prenesejo na tcpdump bodisi kot en argument bodisi 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.

Tcpdump Primeri

tcpdump gostiteljski sončni zahod

Zgornji ukaz tcpdump se uporablja za tiskanje vseh paketov, ki prihajajo ali odhajajo iz sončni zahod.

tcpdump gostiteljski helios in (vroče ali ace )

Ta primer tcpdump natisne promet med helios in bodisi vroče ali As.

tcpdump ip host ace in ne helios

Ta ukaz tcpdump lahko uporabite za tiskanje vseh IP-paketov med As in kateri koli gostitelj, razen helios.

tcpdump net ucb-eter

V zgornjem primeru tcpdump natisne ves promet med lokalnimi gostitelji in gostitelji v Berkeleyju.

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

Ta naslednji ukazni ukaz tcpdump se uporablja za tiskanje vseh FTP prometa prek internetnega prehoda snup . Upoštevajte, da je naveden citat, da lupini ne bi napačno razlagali oklepajev.

tcpdump ip in ne neto localnet

V zgornjem primeru tcpdump ukaz natisne promet, ki ni niti izvor niti namenjen lokalnim gostiteljem.

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

Za zgornji primer tcpdump se ukaz uporablja za tiskanje začetnih in končnih paketov (SYN in FIN paketov) vsakega pogovora TCP, ki vključuje neokaljen gostitelj.

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

Zgornji ukaz natisne IP-pakete, daljše od 576 bajtov, poslanih prek prehoda snup.

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

Ukaz tcpdump, prikazan zgoraj, natisne IP oddajne ali multicast pakete, ki so bili ne poslano prek oddajanja Ethernet ali multicast.

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

V tem zadnjem primeru tcpdump ukaz ukaz natisne vse pakete ICMP, ki niso eho zahteve ali odgovori (npr. Ne ping paketi).

Tcpdump Output Format

Proizvodnja tcpdump 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 omrežjih Ethernet se natisnejo izvorni in ciljni naslovi, protokol in dolžina paketa.

V omrežjih FDDI povzroča možnost »-e« tcpdump natisniti polje »nadzor okvirja«, izvorni in ciljni naslov ter dolžino paketa. Normalni paketi (kot so tisti, ki vsebujejo IP datagrame) so paketi "async" s prednostno vrednostjo med 0 in 7: npr. "Polje za nadzor nad okvirjem" ureja razlago preostalega paketa.async4". Predpostavlja se, da taki paketi vsebujejo paket 802.2 Logical Link Control (LLC); glava LLC je natisnjena, če je ne datagram ISO ali tako imenovani SNAP paket.

V omrežjih Token Ring lahko povzroči možnost »-e« tcpdump za tiskanje polj »nadzor dostopa« in »nadzor nad nadzorom«, 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.

(N .: V naslednjem opisu se pozna poznavanje algoritma za stiskanje SLIP, opisanega v RFC-1144.)

Na povezavah SLIP se natisne smerni kazalnik ("I" za vhodne, "O" za odhodne), vrsto paketa in informacije o stiskanju. Vrsta paketa se najprej natisne. Tri vrste so ip , utcp , in ctcp . Za nadaljnje tiskanje ni nobenih dodatnih informacij o povezavi ip paketi. 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 , kje n je znesek, s katerim se je spremenila zaporedna številka (ali zaporedna številka in ack). Č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)

Arp / rarp paketi. 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 gostiti csam :

Arp, ki ima csam reči rtsgarp odgovor csam je-na CSAM

Prva vrstica pravi, da je rtsg poslal arp paket, ki prosi za ethernet naslov internetnega gostitelja csam. Csam odgovarja z naslovom Ethernet (v tem primeru so naslovi ethernetov v zgornji in spodnji vrstici).

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

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

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

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

Za prvi paket, ki pravi, da je izvorni naslov Ethernet RTSG, je cilj naslov Ethernet oddajanja, polje tipa hex 0806 (tip ETHER_ARP), skupna dolžina pa 64 bajtov.

TCP paketi (N.B.: Naslednji opis prevzame poznavanje TCP protokola, opisanega v RFC-793. Če niste seznanjeni s protokolom, vam niti ta opis niti tcpdump ne bodo zelo koristni za vas) . Splošni format protokola TCP je:

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

Src in dst so vir in ciljni naslovi IP in vrata. Zastave so nekatere kombinacije S (SYN), F (FIN), P (PUSH) ali R (RST) ali posamezne '.' (brez zastavic). Podatki seqno opisuje del zaporednega prostora, ki ga pokrivajo podatki v tem paketu (glej primer spodaj). Ack je zaporedna številka naslednjih podatkov pričakovala drugo smer na tej povezavi. Okno je število bajtov sprejemnega medpomnilnika, ki je na voljo v drugi smeri na tej povezavi. Urg kaže, da so v paketu nujni podatki. Opcije so tcp možnosti, zaprti 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 gostiti 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.login:. ack 1 win 4096rtsg.1023> csam.login: P 1: 2 (1) ack 1 win 4096csam.login> rtsg.1023:. ack 2 win 4096rtsg.1023> csam.login: P 2:21 (19) ack 1 win 4096csam.login> rtsg.1023: P 1: 2 (1) ack 21 zmaga 4077csam.login> rtsg.1023: P 2: 3 (1) ack 21 win 4077 urg 1csam.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 v pristanišče Vpiši se na csam. TheS označuje, da SYN zastava je bila nastavljena. Številka zaporedja paketov je bila 768512 in ni vsebovala nobenih podatkov. (Oznaka je "prva: zadnja (nbytes)", kar pomeni "zaporedne številke" najprej do vključno, vendar ne zadnji kateri je nbytes bajtov uporabniških podatkov ".) Ni bilo nobenega prašiča podprtega, razpoložljivo okno za prejemanje je bilo 4096 bajtov, in je bila možnost za velikost segmenta, ki zahteva MSS 1024 bajtov.

Csam odgovori s podobnim paketom, razen če vsebuje piggybacked ack 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č 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 (s prvim podatkovnim bajtom vsaka smer je "1"). '-S' bo preglasila to funkcijo, kar bo povzročilo izvirne zaporedne številke.

V šesti vrstici rtsg pošilja csam 19 bajtov podatkov (bajtov 2 do 20 v rtsg -> csam strani pogovora). Zastava PUSH je nastavljena v paketu. V sedmi 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 osmi in deveti vrstici csam pošilja dva bita nujnih, potisne podatke v rtsg.

Če je bil posnetek dovolj majhen tcpdump ni zajela celotnega zaglavja TCP, tolmači toliko glave, kolikor je mogoče, in nato poroča "| 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), tcpdump poroča kot " slabo opt "in ne razlaga nadaljnjih možnosti (ker je nemogoče povedati, kje se začnejo). Če je dolžina glave označena, so možnosti prisotne, vendar dolžina IP datagrama ni dovolj dolgo, da bi možnosti dejansko obstajale, tcpdump poroča kot " slaba dolžina hdr ''.

Paketi s posebnimi zastavami zajemite pakete. V razdelku kontrolnih bajtov v glavi TCP je osem 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; povezovalno zaporedje glede kontrolnih bitov TCP je:

  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. Kar potrebujemo je pravilen izraz za filtre 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 grafikona vsebuje oktete 0-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, v katerih nas 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, binarna vrednost tega okteta je:

00000010

Njena decimalna predstavitev je:

7 6 5 4 3 2 1 00*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 si ogledate pakete, ki imajo samo SYN:

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. Poglej, kaj se zgodi z oktetom 13, ko prihaja datagram TCP s SYN-ACK nizom:

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

Biti 1 in 4 sta sedaj postavljeni v 13. oktet. Binarna vrednost okteta 13 je:

00010010

ki prevede v decimal:

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

Ne moremo preprosto uporabiti "tcp 13 == 18" v tcpdump filter, ker bi izbral samo tiste pakete, ki imajo nastavljeno SYN-ACK, ne pa tistih, ki imajo samo nastavljeno 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 opozarja na tcpdump izrazi filtra

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.

UDP paketi. UDP format ponazarja ta paket rwho:

actinide.who> broadcast.who: udp 84

To pravi to pristanišče kdo na gostitelju aktinid poslala udp datagram v pristanišče kdo na gostitelju oddaja naslov internetnega prenosa. Paket je vseboval 84 bajtov uporabniških podatkov.

Nekatere storitve UDP so prepoznane (od izvorne ali ciljne številke vrat) in podatki o protokolu na višji stopnji, zlasti na zahteve za storitev domenskega imena (RFC-1034/1035) in klice Sun RPC (RFC-1050) na NFS.

Zahteve strežnika UDP ime (N.B.: Naslednji opis prevzame poznavanje protokola Domain Service, opisanega v RFC-1035. Če niste seznanjeni s protokolom, bo naslednji opis malo smiseln.)

Zahteve strežnika za ime so oblikovane kot:

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

Host h2opolo vprašal strežnik domene helios za zapis podatkov o naslovu (qtype = A), povezan z imenom ucbvax.berkeley.edu. ID poizvedbe je bil '3'. »+« Označuje rekurza želena zastava je bila nastavljena. Dolžina poizvedbe je bila 37 bajtov, ne pa tudi glave protokola UDP in IP. Operacija poizvedbe je bila normalna, Poizvedba , tako da je op field izpuščen. Če bi bilo kaj drugega, bi bilo natisnjeno med '3' in '+'. Podobno je bil qclass normalen, C_IN , in izpustili. 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 razdelek, ancount , nscount , ali arcount natisnjeni kot " n a ',' n n "ali" n au 'kje n je ustrezno štetje. Če sta v odzivih dva in tri nastavljena katera od odzivnih bitov (AA, RA ali rcode) ali kateri koli od "mora biti nič", sta bita "b2 & 3 = x ", kjer je x je hex vrednost glave bajtov dva in tri.

Odzivi strežnika UDP imen. 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, helios odgovori na ID poizvedbe 3 iz h2opolo s tremi zapisi odgovorov, z zapisi treh imen strežnika in sedmimi dodatnimi zapisi. Prvi odgovor je tip 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, helios se 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 avtoritativni odgovor bit je bil nastavljen. Ker ni bilo odgovorov, ni bilo natisnjenih nobenih tipov, razredov ali podatkov.

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

Upoštevajte, da so zahtevi in ​​odgovori na strežniku za ime velikih in privzeti snaplen 68 bajtov morda ne bo zajemalo dovolj paketa za tiskanje. Uporabi-s flag za povečanje snaplen, če morate resno raziskati promet z imenskim strežnikom. "-s 128"je dobro delal zame.

SMB / CIFS dekodiranje. tcpdump vključuje dokaj razširjeno dekodiranje SMB / CIFS / NBT za podatke o UDP / 137, UDP / 138 in TCP / 139. Prav tako se izvajajo nekateri primitivni dekodiranje 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 z -v enim SMB paketom zaženete stran ali več, zato uporabite samo -v, če zares želite vse podatke o krvi.

Če dekodirate seje SMB, ki vsebujejo unicode strune, potem lahko nastavite spremenljivko okolja USE_UNICODE na 1. Popravek za samodejno zaznavanje unicode nizov bi bil dobrodošel.

Za informacije o paketnih formatih SMB in za vsa polja glejte spletno stran www.cifs.org ali imenik pub / samba / specs / na svoji priljubljeni spletni strani zrcala samba.org. Obliž SMB je napisal Andrew Tridgell ([email protected]).

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: odgovorite na rezultate suši.6709> wrl.nfs: 112 readlink fh 21,24 / 10,73165wrl.nfs> sushi.6709: odgovor ok 40 readlink "../var"sushi.201b> wrl.nfs: 144 lookup fh 9,74 / 4096,6878 "xcolors"wrl.nfs> sushi.201b: odgovor ok 128 lookup fh 9,74 / 4134,3150

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

V tretji vrstici, suši vpraša wrl za iskanje imena " xcolors 'v datoteki imenika 9,74 / 4096,6878. 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 @ 24576wrl.nfs> suši.1372a: odgovor ok 1472 preberi 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 vpraša wrl brati 8192 bajtov iz datoteke 21,11 / 12,195, pri bajt offsetu 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 veliko podrobnosti ne bo natisnjeno, razen če snaplen se poveča. Poskusite uporabiti "-s 192'za ogled prometa NFS.

Paketi odgovora NFS ne izrecno opredeljujejo operacije RPC. Namesto tega, tcpdump sledi "nedavnim" zahtevam in jih primerja z odgovori, ki uporabljajo ID transakcije. Če odgovor ne sledi ustrezno zahtevi, morda ne bo mogoč.

Transarc AFS (Andrew File System) zahteva in odgovori.

src.sport> dst.dport: rx paketni tip src.sport> dst.dport: rx vrste storitev za klicni klic storitve call-name args src.sport> dst.dport: rx tipa argumentov tipa odgovora za storitev paketnega tipa elvis.7001> pike.afsfs: rx podatkov fs klic preimenuje stari fid 536876964/1/1 ".newsrc.new" nova 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 starem ID-jem imenika 536876964/1/1 in starim imenom ».newsrc.new« in z novo imeniksko datoteko 536876964/1/1 in novo ime datoteke '. 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 sta ID RX klica, serijska številka in zastavica za paketno pošiljanje. 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 snaplen se poveča. Poskusite uporabiti `-s 256'za ogled prometa AFS.

Paketi odgovorov AFS ne izrecno prepoznajo operacije RPC. Namesto tega, tcpdump sledi "nedavnim" zahtevam in jih odgovarja z odgovori na številki klicne številke in ID storitve. Če odgovor ne sledi ustrezni zahtevi, morda ni mogoče razčleniti.

KIP Appletalk (DDP v UDP). Paketi Appletalk DDP, ki so vključeni v datagramih UDP, so dekapsulirani in dampinirani kot DDP paketi (to pomeni, da so vsi podatki o zaglavju UDP zavrženi). Datoteka /etc/atalk.names se uporablja za prevajanje številk neto in vozlišč appletalk v imena.

Vrstice v tej datoteki imajo to obliko:

ime številke 1.254 eter16.1 icsd-net1.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š imata dva okteta in številko gostitelja moraš imajo tri oktete). Številko in ime morata biti ločeni s presledki (prazno ali zavihki). The /etc/atalk.names datoteka 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.220pisarna.2> icsd-net.112.220jssmag.149.235> icsd-net.2

(Če je /etc/atalk.names ne obstaja ali ne vsebuje vnosa za neko gostiteljsko / neto številko appletalk-a, naslove so natisnjene v numerični obliki.) V prvem primeru se NBP (DDP port 2) na neto 144.1 vozlišče 209 pošilja kateremu koli posluša na vrata 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, ki se oddaja v pristanišču NBC porta icsd-net (upoštevajte, da je oddajni naslov (255) označen z neto številko brez gostiteljske številke, zato je to dobro ideja, da se imena vozlišč in imena omrežja razlikujejo 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.

NBP paketi 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 @ *" 250techpit.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".

ATP paket oblikovanje prikazuje naslednji primer:

jssmag.209.165> helios.132: atp-req 12266 <0-7> 0xae030001helios.132> jssmag.209.165: atp-resp 12266: 0 (512) 0xae040000helios.132> jssmag.209.165: atp-resp 12266: 1 (512) 0xae040000helios.132> jssmag.209.165: atp-resp 12266: 2 (512) 0xae040000helios.132> jssmag.209.165: atp-resp 12266: 3 (512) 0xae040000helios.132> jssmag.209.165: atp-resp 12266: 4 (512) 0xae040000helios.132> jssmag.209.165: atp-resp 12266: 5 (512) 0xae040000helios.132> jssmag.209.165: atp-resp 12266: 6 (512) 0xae040000helios.132> jssmag.209.165: atp-resp * 12266: 7 (512) 0xae040000jssmag.209.165> helios.132: atp-req 12266 <3,5> 0xae030001helios.132> jssmag.209.165: atp-resp 12266: 3 (512) 0xae040000helios.132> jssmag.209.165: atp-resp 12266: 5 (512) 0xae040000jssmag.209.165> helios.132: atp-rel 12266 <0-7> 0xae030001jssmag.209.133> helios.132: atp-req * 12267 <0-7> 0xae030002

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

Helios odgovarja z osmimi 512-bajtnimi paketi. ": Številka" po ID-ju transakcije daje številko zaporedja paketov v transakciji, številka pa je količina podatkov v paketu, razen 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 pono