Tcpdump er en kommando som brukes på forskjellige Linux operativsystemer (OS) som samler TCP / IP-pakker som går gjennom et nettverkskort. I likhet med et pakkesnifferverktøy kan tcpdump ikke bare analysere nettverkstrafikken, men lagre den også i en fil.
I motsetning til noen kommandoer som leveres av operativsystemet som standard, kan det hende du finner ut at du ikke kan bruke tcpdump fordi den ikke er installert. For å installere tcpdump, kjør ut apt-get installasjon tcpdump eller Du installerer tcpdump, avhengig av ditt operativsystem.
Slik fungerer Tcpdump
Tcpdump skriver ut toppene av pakker på et nettverksgrensesnitt som samsvarer med det boolske uttrykk . Det kan også kjøres med-w flagg, noe som fører til at den lagrer pakkedata til en fil for senere analyse og / eller med-r flagg, som får det til å lese fra en lagret pakkefil i stedet for å lese pakker fra et nettverksgrensesnitt. I alle tilfeller er det bare pakker som samsvarer med uttrykk vil bli behandlet av tcpdump .
tcpdump vil, hvis ikke kjøre med-c flagg, fortsett å fange pakker til det er avbrutt av et SIGINT-signal (generert for eksempel ved å skrive avbrytelse karakteren, typisk Ctrl + C) eller et SIGTERM-signal (vanligvis generert meddrepe(1) kommando); hvis du kjører med-c flagg, vil det ta opp pakker til det blir avbrutt av et SIGINT- eller SIGTERM-signal eller det angitte antallet pakker er behandlet.
Brytere nevnt ovenfor er forklart i detalj senere i denne artikkelen.
Når tcpdump fullfører fange pakker, vil det rapportere teller av:
- Pakker "mottatt av filter."
- Betydningen av dette avhenger av operativsystemet du kjører på tcpdump , og muligens på den måten operativsystemet ble konfigurert. Hvis et filter ble spesifisert på kommandolinjen, teller det på noen OSer pakker, uavhengig av om de ble matchet av filteruttrykket, og på andre teller det bare pakker som ble matchet av filteruttrykket og behandlet av tcpdump.
- Pakker "droppet av kjernen."
- Dette er antall pakker som ble tapt, på grunn av mangel på bufferplass, ved pakkefangstmekanismen i operativsystemet på hvilket tcpdump kjører, hvis operativsystemet rapporterer denne informasjonen til applikasjoner. Hvis ikke, vil det bli rapportert som 0.
På plattformer som støtter SIGINFO-signalet, for eksempel de fleste BSD-er (Berkeley Software Distributions), vil det rapportere de tellerne når det mottar et SIGINFO-signal (generert for eksempel ved å skrive inn "status" -tegnet, typisk Ctrl + T) og vil fortsette å fange pakker.
Tcpdump Kompatibilitet
Å lese pakker fra et nettverksgrensesnitt med tcpdump-kommandoen kan kreve at du har spesielle rettigheter ( lesning en lagret pakkefil krever ikke slike privilegier):
- SunOS 3.x eller 4.x med NIT eller BPF: Du må ha lese tilgang til / Dev / nit eller dev / BPF * .
- Solaris med DLPI: Du må ha lese / skrive tilgang til nettverket pseudo enheten, som / Dev / le . På minst noen versjoner av Solaris er dette imidlertid ikke tilstrekkelig til å tillate tcpdump å fange i promiskuøs modus; På disse versjonene av Solaris må du være rot, eller tcpdump må installeres setuid til root, for å fange i promiscuous modus. Vær oppmerksom på at i mange (kanskje alle) grensesnitt, hvis du ikke fanger i promiskuøs modus, vil du ikke se noen utgående pakker, så en opptak som ikke er gjort i promiskuøs modus, kan ikke være veldig nyttig.
- HP-UX med DLPI: Du må være rot eller tcpdump må installeres setuid til root.
- IRIX med snoop: Du må være rot eller tcpdump må installeres setuid til root.
- Linux: Du må være rot eller tcpdump må installeres setuid til root.
- Ultrix og Digital UNIX / Tru64 UNIX: Enhver bruker kan fange nettverkstrafikk med tcpdump . Imidlertid kan ingen bruker (ikke engang superbrukeren) fange i promiskuøs modus på et grensesnitt, med mindre superbrukeren har aktivert promiskuøs-modus-operasjon på det grensesnittet ved bruk av pfconfig (8), og ingen bruker (ikke engang superbrukeren) kan fange unicast-trafikk mottatt av eller sendt av maskinen på et grensesnitt, med mindre superbrukeren har aktivert kopi-all-modus-operasjonen på det grensesnittet ved bruk av pfconfig , så nyttig pakkeopptak på et grensesnitt krever sannsynligvis at enten promiskuøsmodus eller kopi-all-modus-operasjon, eller begge operasjonsmodi, er aktivert på dette grensesnittet.
- BSD: Du må ha lese tilgang til / Dev / BPF * .
Tcpdump Command Syntax
I likhet med alle datakommandoer fungerer tcpdump-kommandoen bare hvis syntaksen er riktig:
tcpdump -adeflnNOpqRStuvxX -c telle
-C filstørrelse -F fil
-Jeg grensesnitt -m modul -r fil
-s snaplen -T type -U bruker -w fil
-E algo: hemmelig uttrykk
Tcpdump kommandoalternativer
Dette er alle alternativene du kan bruke med tcpdump-kommandoen:
- -en: Forsøk å konvertere nettverks- og kringkastingsadresser til navn.
- -c: Utgang etter mottak telle pakker.
- -C: Før du skriver en rå pakke til en lagringsfil, kontroller du om filen er større enn filstørrelse og i så fall lukk gjeldende lagringsfil og åpne en ny.Lagre filer etter den første lagringsfilen vil ha navnet angitt med-w flagg, med et nummer etter det, starter ved 2 og fortsetter oppover. Enhetene til filstørrelse er millioner av byte (1.000.000 byte, ikke 1.048.576 byte).
- -d: Dump kompilert pakke-matching kode i et menneskelig lesbart skjema til standard utgang og stopp.
- -DD: Dump pakke-matchende kode som enC programfragment.
- -DDD: Dump pakke-matchende kode som desimaltall (foran med en telling).
- -e: Skriv ut topplinjen på hver dumpelinje.
- -E: Bruk algo: hemmelig for dekryptering av IPsec ESP-pakker. Algoritmer kan væredes-CBC, 3DES-CBC, Blowfish-CBC, RC3-CBC, cast128-CBC, elleringen. Standard erdes-CBC. Evnen til å dekryptere pakker er kun til stede hvis tcpdump ble kompilert med kryptografi aktivert. hemmelig ASCI-teksten for ESP-hemmelig nøkkel. Vi kan ikke ta vilkårlig binær verdi for øyeblikket. Alternativet antar RFC2406 ESP, ikke RFC1827 ESP. Alternativet er bare for feilsøkingsformål, og bruken av dette alternativet med virkelig "hemmelig" nøkkel er motet. Ved å presentere IPsec hemmelig nøkkel på kommandolinjen gjør du den synlig for andre, via ps (1) og andre anledninger.
- -f: Skriv ut 'utenlandske' Internett-adresser numerisk snarere enn symbolsk (dette alternativet er ment å skje alvorlig hjerneskade i Suns yp-server - vanligvis henger det for alltid å oversette ikke-lokale Internett-numre).
- -F: Bruk fil som inngang for filteruttrykket. Et ekstra uttrykk som er gitt på kommandolinjen, ignoreres.
- -Jeg: Hør på grensesnitt . Hvis uspesifisert, tcpdump søker i systemgrensesnittlisten for det laveste nummererte konfigurerte grensesnittet (unntatt loopback). Slipsene er ødelagte ved å velge den tidligste kampen. På Linux-systemer med 2.2 eller nyere kjerner, an grensesnitt argument for "noen" kan brukes til å fange pakker fra alle grensesnitt. Merk at fanger på "noen" enheten ikke vil bli gjort i promiskuøs modus.
- l: Gjør stdout line buffered. Nyttig hvis du vil se dataene mens du fanger den. For eksempel, "tcpdump -l | tee dat '' eller 'tcpdump -l> dat & tail -f dat' '.
- -m: Legg inn SMI MIB-moduldefinisjoner fra fil modul . Dette alternativet kan brukes flere ganger for å laste flere MIB-moduler inn tcpdump .
- -n: Konverter ikke vertsadresser til navn. Dette kan brukes til å unngå DNS-oppslag.
- -NN: Konverter ikke protokoll- og portnumre etc. til navn heller.
- N: Ikke skriv ut domenenavnekvalifikasjon av vertsnavn. For eksempel, hvis du gir dette flagget, da tcpdump vil skrive ut "nic" i stedet for "nic.ddn.mil".
- -O: Ikke kjør pakke-matching kode optimizer. Dette er bare nyttig hvis du mistenker en feil i optimalisatoren.
- -p: ikke sett grensesnittet i promiskuøs modus. Legg merke til at grensesnittet kan være i promiskuøs modus av en annen grunn; Derfor kan '-p' ikke brukes som en forkortelse for 'eterverten {local-hw-addr} eller eter-kringkasting'.
- -q: Hurtig (stille) utgang. Skriv ut mindre protokollinformasjon, slik at utgangslinjene er kortere.
- -R: Anta at ESP / AH-pakker skal være basert på gammel spesifikasjon: RFC1825 til RFC1829. Hvis spesifisert, tcpdump vil ikke skrive ut replay forebyggingsfelt. Siden det ikke er noen protokollversjonsfelt i ESP / AH-spesifikasjon, tcpdump kan ikke utlede versjonen av ESP / AH-protokollen.
- -r: Les pakker fra fil (som ble opprettet med -w alternativet). Standardinngang brukes hvis fil er "-''.
- -S: Skriv ut absolutt, i stedet for relative, TCP-sekvensnumre.
- -s: Snarf snaplen bytes data fra hver pakke i stedet for standard på 68; med SunOS NIT, er minimumet faktisk 96. Seksio åtte byte er tilstrekkelig for IP, ICMP, TCP og UDP, men kan avkorte protokollinformasjon fra navneserver og NFS-pakker (se nedenfor). Pakker avkortet på grunn av et begrenset øyeblikksbilde er angitt i utgangen med "| proto '', hvor proto er navnet på protokollnivået hvor avkortingen har skjedd. Legg merke til at det å ta større øyeblikksbilder øker hvor mye tid det tar å behandle pakker og effektivt reduserer mengden pakkebuffer. Dette kan føre til at pakkene går tapt. Du bør begrense snaplen til det minste nummeret som vil fange protokollinformasjonen du er interessert i. Innstilling snaplen til 0 betyr bruk den nødvendige lengden for å fange hele pakker.
- -T: Kraftpakker valgt av " uttrykk "å bli tolket den angitte type . For tiden kjente typer ercnfp (Cisco NetFlow-protokoll),rpc (Remote Procedure Call),RTP (Protokoll i sanntidsprogrammer),RTCP (Real-Time Applications kontroll protokoll),snmp (Simple Network Management Protocol),mva (Visual Audio Tool), ogwb (distribuert White Board).
- -t: ikke skriv ut en tidsstempel på hver dumpelinje.
- -tt: Skriv ut et uformatert tidsstempel på hver dumpelinje.
- -U: Dråper rotasjonsrettigheter og endrer bruker ID til bruker og gruppe ID til den primære gruppen av bruker .
- Merk: Red Hat Linux slipper automatisk privilegiene til brukeren "PCAP" hvis ingenting annet er angitt.
- -ttt: Skriv ut delta (i mikrosekunder) mellom nåværende og forrige linje på hver dumpelinje.
- -tttt: Skriv ut en tidsstempel i standardformat fremført med dato på hver dumpelinje.
- -u: Skriv ut undecoded NFS-håndtak.
- -V: (Litt mer) verbose utgang. For eksempel skrives tiden for å leve, identifikasjon, total lengde og alternativer i en IP-pakke. Også muliggjør ekstra pakkeintegritetskontroller som for eksempel verifisering av IP og ICMP header sjekksum.
- -vv: Enda mer verbose output. For eksempel skrives flere felt fra NFS-svarpakker, og SMB-pakker er fullt dekodet.
- -vvv: Enda mer verbose output. For eksempel, telnetSB … SE Alternativene skrives ut i sin helhet. Med -X Telnet-alternativer er også trykt i heks.
- -w: Skriv de røde pakkene til fil heller enn å analysere og skrive ut dem. De kan senere skrives ut med -r alternativet. Standard utgang brukes hvis fil er "-''.
- -x: Skriv ut hver pakke (minus koblingsnivåhodet) i heks. Den minste av hele pakken eller snaplen bytes vil bli skrevet ut. Merk at dette er hele lenkepakken, så for koblingslag som puter (f.eks. Ethernet), vil polstringsbytesene også skrives ut når pakken med høyere lag er kortere enn nødvendig polstring.
- -X: Når du skriver ut heks, skriv ut ascii også. Dermed hvis-x er også satt, pakken er trykt i hex / ascii. Dette er veldig nyttig for å analysere nye protokoller. Selv om-x er ikke også satt, noen deler av noen pakker kan skrives ut i hex / ascii.
- uttrykk : Velger hvilke pakker som skal dumpes. Hvis nei uttrykk er gitt, vil alle pakker på nettet bli dumpet. Ellers bare pakker som uttrykk er "sant" vil bli dumpet. De uttrykk består av en eller flere primitiver. Primitiver består vanligvis av en id (navn eller nummer) på forhånd av en eller flere kvalifiserere. Det er tre forskjellige typer kvalifiseringer:
- type : Kvalifisere si hva slags ting navnet eller nummeret refererer til. Mulige typer ervert, nett, oghavnFor eksempel, "host foo", "net 128.3", "port 20". Hvis det ikke er noen type kvalifikator,vert er antatt.
- dir : Kvalifikatorer angir en bestemt overføringsretning til og / eller fra id . Mulige retninger ersrc, dst, src eller dst ogsrc og dst (for eksempel 'src foo', 'dst net 128.3', 'src eller dst port ftp-data'). Hvis det ikke er noen dir-kvalifiserer,src eller dst er antatt. For "null" link lag (dvs. punkt-til-punkt protokoller som slip) inngående og utgående kvalifisere kan brukes til å angi ønsket retning.
- proto : Qualifiers begrenser kampen til en bestemt protokoll. Mulige protoer er: eter, FDDI, tr, ip, IP6, arp, RARP, decnet, tcp, ogudpFor eksempel 'ether src foo', 'arp net 128.3', 'tcp port 21'. Hvis det ikke er noen proto-kvalifisering, antas alle protokoller som er i samsvar med typen. For eksempel betyr 'src bar' '(ip eller arp eller rarp) src foo' (bortsett fra at sistnevnte ikke er lovlig syntaks), betyr "bar" ("ip eller arp eller rarp)" og "port 53" betyr '(tcp eller utp) port 53'.
- 'fddi' er faktisk et alias for 'eter'; parseren behandler dem identisk som "datalinknivået som brukes på det angitte nettverksgrensesnittet." FDDI-overskrifter inneholder Ethernet-lignende kilde- og destinasjonsadresser, og inneholder ofte Ethernet-lignende pakktyper, slik at du kan filtrere på disse FDDI-feltene bare som med de analoge Ethernet-feltene. FDDI-overskrifter inneholder også andre felt, men du kan ikke nevne dem eksplisitt i et filteruttrykk.
- Tilsvarende er 'tr' et alias for 'eter'; De forrige avsnittets uttalelser om FDDI-overskrifter gjelder også for Token Ring-overskrifter.
I tillegg til det ovenfor er det noen spesielle "primitive" søkeord som ikke følger mønsteret:inngangsport, kringkaste, mindre, større, og aritmetikk uttrykkene. Alle disse er beskrevet nedenfor.
Mer komplekse filteruttrykk oppbygges ved å bruke ordeneog, eller, ogikke å kombinere primitiver-for eksempel, "host foo og ikke port ftp og ikke port ftp-data". For å lagre skrive kan identiske kvalifiseringslister utelates (f.eks. "Tcp dst port ftp eller ftp-data eller domene" er nøyaktig det samme som "tcp dst port ftp eller tcp dst port ftp-data eller tcp dst port domain".)
Disse er primitiver tillatt med tcpdump-kommandoen:
- dst vert vert
- Sant om IPv4 / v6-destinasjonsfeltet i pakken er vert , som kan være enten en adresse eller et navn.
- src-vert vert
- Sant om IPv4 / v6-kildefeltet til pakken er vert .
- vert vert
- Sant om enten IPv4 / v6-kilden eller destinasjonen til pakken er vert . Noen av de ovennevnte vertsuttrykkene kan bli prepended med søkeordene,ip, arp, RARP, ellerIP6, som i IP-vert vert (som tilsvarer eter proto ip og vert vert).
- Hvis vert er et navn med flere IP-adresser, vil hver adresse bli sjekket for en kamp.
- eter dst ehost
- Sant om Ethernet-destinasjonsadressen er ehost . Ehost kan enten være et navn fra / etc / ethers eller et nummer (se etere (3N) for numerisk format).
- eter src ehost
- Tenk om Ethernet-kildeadressen er ehost .
- eter vert ehost
- Det er sant hvis enten Ethernet-kilden eller destinasjonsadressen er ehost .
- inngangsport vert
- Sant om pakken brukes vert som en gateway (dvs. Ethernet-kilden eller destinasjonsadressen var vert men verken IP-kilden eller IP-destinasjonen var vert ).
- Vert må være et navn og må finnes både av maskinens vertsnavn-til-IP-adresseoppløsningsmekanismer (vertsnavn-fil, DNS, NIS, etc.) og av maskinens vertsnavn-til-Ethernet-adresseoppløsningsmekanisme (/ etc / ethers, etc.).
- Et ekvivalent uttrykk er eter vert ehost og nå vert vert , som kan brukes med enten navn eller tall for vert / ehost .) Denne syntaksen fungerer ikke i IPv6-aktivert konfigurasjon for øyeblikket.
- dst net nett
- Sann hvis IPv4 / v6-destinasjonsadressen til pakken har et nettverksnummer på nett . Nett kan enten være et navn fra / etc / nettverk eller et nettverksnummer (se nett (4) for detaljer).
- src net nett
- True hvis IPv4 / v6-kilden til pakken har et nettverksnummer på nett .
- nett nett
- Det er sant om enten IPv4 / v6-kilden eller destinasjonsadressen til pakken har et nettverksnummer på nett .
- nett nett maske netmask
- Sant om IP-adressen stemmer overens nett med det spesifikke netmask . Kan være kvalifisert medsrc ellerdst. Merk at denne syntaksen ikke er gyldig for IPv6 nett .
- nett nett / len
- Sant om IPv4 / v6-adressen stemmer overens nett med en nettmaske len biter bredt. Kan være kvalifisert medsrc ellerdst.
- dst port havn
- True hvis pakken er ip / tcp, ip / udp, ip6 / tcp eller ip6 / udp og har en destinasjonsport verdi av havn . De havn kan være et nummer eller et navn som brukes i / etc / services (se tcp (4P) og udp (4P)). Hvis et navn blir brukt, blir både portnummer og protokoll sjekket. Hvis et nummer eller tvetydig navn brukes, blir bare portnummeret kontrollert (f.eks.dst port 513 vil skrive ut både tcp / login trafikk og UDP / hvem trafikk, ogportdomene vil skrive ut både tcp / domain og udp / domain traffic).
- src port havn
- True hvis pakken har en kildeport verdi på havn .
- havn havn
- Sant om enten kilden eller destinasjonsporten til pakken er havn . Noen av de ovennevnte portuttrykkene kan bli prepended med søkeordene,tcp ellerudp, som i tcp src port havn , som bare samsvarer med tcp-pakker hvis kildeport er havn .
- mindre lengde
- Sann hvis pakken har en lengde mindre enn eller lik lengde . Dette tilsvarer len <= Lengde .
- større lengde
- Sann hvis pakken har en lengde større enn eller lik lengde . Dette tilsvarer len> = Lengde .
- ip proto protokollen
- Sant om pakken er en IP-pakke (se ip (4P)) av protokolltype protokollen . protokoll kan være et nummer eller et av navnene ICMP , icmp6 , IGMP , igrp , pim , ah , esp , VRRP , udp , eller tcp . Merk at identifikatorene tcp , udp , og ICMP er også nøkkelord og må rømmes via backslash (), som er i C-shell. Vær oppmerksom på at denne primitive ikke jager protokollens hovedkjede.
- ip6 proto protokollen
- Sant om pakken er en IPv6-pakke med protokolltype protokollen . Vær oppmerksom på at denne primitive ikke jager protokollens hovedkjede.
- ip6 protochain protokollen
- Sann om pakken er IPv6-pakke, og inneholder protokollhode med type protokollen i sin protokollheaderkjede. For eksempel, ipv6 protochain 6 samsvarer med en hvilken som helst IPv6-pakke med TCP-protokollhoved i protokollhovedkjeden. Pakken kan inneholde for eksempel autentiseringsoverskrift, rutingsoverskrift, eller hop-for-hop-alternativhoved, mellom IPv6-header og TCP-header. BPF-koden som sendes ut av denne primitive, er kompleks og kan ikke optimaliseres av BPF-optimeringskoden i tcpdump , så dette kan være litt tregt.
- ip protochain protokollen
- Tilsvarendeip6 protochain protokollen , men dette er for IPv4.
- eter kringkasting
- Sant om pakken er en Ethernet-kringkastingspakke. De eter Søkeord er valgfritt.
- ip kringkasting
- Sann hvis pakken er en IP-sendingspakke. Den kontrollerer både all-zeroes og all-one-kringkastingskonvensjonene, og ser opp den lokale undernettmasken.
- eter multicast
- Det er sant hvis pakken er en Ethernet multicast-pakke. De eter Søkeord er valgfritt. Dette er shorthand for 'eter 0 & 1! = 0'.
- ip multicast
- Sann hvis pakken er en IP multicast-pakke.
- ip6 multicast
- Sant om pakken er en IPv6 multicast-pakke.
- eter proto protokollen
- Sant om pakken er av eter type protokollen . protokoll kan være et nummer eller et av navnene ip , IP6 , arp , RARP , en prat , AARP , decnet , SCA , lat , mopdl , moprc , iso , stp , ipx , eller NetBEUI . Merk at disse identifikatorene også er nøkkelord og må rømmes via backslash ().
- I tilfelle av FDDI (for eksempel 'fddi protokoll arp') og Token Ring (for eksempel'tr protokoll arp'), for de fleste av disse protokollene kommer protokollidentifikasjonen fra overskriften 802.2 Logical Link Control (LLC), som vanligvis er lagret på toppen av FDDI- eller Token Ring-header.
- Når du filtrerer for de fleste protokollidentifikatorer på FDDI eller Token Ring, tcpdump kontrollerer bare protokoll-ID-feltet i en LLC-overskrift i såkalt SNAP-format med en organisasjonsenhetsidentifikator (OUI) på 0x000000, for innkapslet Ethernet; Det kontrollerer ikke om pakken er i SNAP-format med en OUI på 0x000000.
- Unntakene er iso , for hvilket den kontrollerer DSAP-destinasjonens (Access Point Access Point) og SSAP (Source Service Access Point) -feltene i LLC-overskriften, stp og NetBEUI , der den sjekker DSAP av LLC-overskriften, og en prat , der den sjekker etter en SNAP-formatpakke med en OUI på 0x080007 og Appletalk-etypen.
- I tilfelle av Ethernet, tcpdump kontrollerer Ethernet-typen feltet for de fleste av disse protokollene; unntakene er iso , sevje , og NetBEUI , som den sjekker for en 802.3-ramme og deretter sjekker LLC-overskriften som den gjør for FDDI og Token Ring; en prat , der den sjekker både for Appletalk-etikken i en Ethernet-ramme og for en SNAP-formatpakke som den gjør for FDDI og Token Ring; AARP , der den sjekker for Appletalk ARP etype i enten en Ethernet-ramme eller en 802.2 SNAP-ramme med en OUI på 0x000000; og ipx , hvor den sjekker for IPX-etikken i en Ethernet-ramme, IPX DSAP i LLC-overskriften, 802.3 uten LLC-headerinnkapsling av IPX og IPX-etikken i en SNAP-ramme.
- decnet src vert
- True hvis DECNET-kilden adressen er vert , som kan være en adresse på skjemaet "10.123" eller et DECNET-vertsnavn. DECNET-vertsnavnstøtte er bare tilgjengelig på Ultrix-systemer som er konfigurert til å kjøre DECNET.
- decnet dst vert
- Sann hvis DECNET-destinasjonsadressen er vert .
- desnet verten vert
- Sant om enten DECNET-kilden eller destinasjonsadressen er vert .
- ip, IP6, arp, RARP, en prat, AARP, decnet, iso, stp, ipx, NetBEUI
- Forkortelser for eter proto p hvor p er en av de ovennevnte protokollene.
- lat, moprc, mopdl
- Forkortelser for eter proto p hvor p er en av de ovennevnte protokollene. Noter det tcpdump vet for øyeblikket ikke hvordan man skal analysere disse protokollene.
- vlan Vlan_id
- Sant om pakken er en IEEE 802.1Q VLAN-pakke. Hvis Vlan_id er spesifisert, bare sant hvis pakken har det angitte vlan_id . Legg merke til at den førstevlan søkeord oppdaget i uttrykk endrer dekoding avvik for resten av uttrykk på forutsetning av at pakken er en VLAN-pakke.
- tcp, udp, ICMP
- Forkortelser for ip proto p eller ip6 proto p hvor p er en av de ovennevnte protokollene.
- iso proto protokollen
- Sant om pakken er en OSI-pakke med protokolltype protokollen . protokoll kan være et nummer eller et av navnene CLNP , ESIS , eller isis .
- CLNP, ESIS, isis
- Forkortelser for iso proto p hvor p er en av de ovennevnte protokollene. Noter det tcpdump gjør en ufullstendig jobb med å analysere disse protokollene.
- expr relop expr
- Sant om forholdet holder, hvor relop er en av>, <,> =, <=, =,! =, og expr er et aritmetisk uttrykk sammensatt av heltallkonstanter (uttrykt i standard C-syntaks), de normale binære operatørene +, -, *, /, &, |, en lengdeoperatør og spesielle pakkedatatilbehør. For å få tilgang til data i pakken, bruk følgende syntaks: proto ekspr: størrelse .
Proto er en aveter, FDDI, tr, ppp, slip, link, ip, arp, RARP, tcp, udp, ICMP, eller IP6, og angir protokolllaget for indeksoperasjonen (eter, FDDI, tr, ppp, slip, oglink alle refererer til lenke laget). Noter det tcp, utp , og andre overlags protokolltyper gjelder bare for IPv4, ikke IPv6 (dette vil bli løst i fremtiden). Byteforskyvningen, i forhold til det angitte protokollaget, er gitt av expr . Størrelse er valgfritt og angir antall byte i feltet av interesse; Det kan være enten en, to eller fire, og standardene til en. Lengdeoperatøren, angitt av søkeordetlen, gir lengden på pakken.
For eksempel, 'eter 0 & 1! = 0'fanger all multicast trafikk. Uttrykket 'ip 0 og 0xf! = 5'fanger alle IP-pakker med alternativer. Uttrykket 'ip 6: 2 og 0x1fff = 0'fanger bare ufragmenterte datagrammer og frag null av fragmenterte datagrammer. Denne sjekken er implisitt brukt tiltcp ogudp indeksoperasjoner. For eksempel, tcp 0 betyr alltid den første byte av TCP Overskrift , og betyr aldri den første byten til et mellomliggende fragment.
Noen forskyvninger og feltverdier kan uttrykkes som navn i stedet for som numeriske verdier. Følgende protokollhodefeltforskyvninger er tilgjengelige: icmptype (ICMP type felt),icmpcode (ICMP kodefelt), ogtcp-flagg (TCP flagg felt).
Følgende feltverdier for ICMP-type er tilgjengelige:ICMP-echoreply, ICMP-unreach, ICMP-sourcequench, ICMP-redirect, ICMP-ekko, ICMP-routeradvert, ICMP-routersolicit, ICMP-timxceed, ICMP-paramprob, ICMP-tstamp, ICMP-tstampreply, ICMP-ireq, ICMP-ireqreply, ICMP-maskreq, ICMP-maskreply.
Følgende TCP flagg feltverdier er tilgjengelige:tcp-finne, tcp-syn, tcp-rst, tcp-trykk, tcp-trykk, tcp-ack, tcp-urg.
Primitiver kan kombineres ved hjelp av ett av følgende:
- En parentesgruppe av primitiver og operatører (parenteser er spesielle for Shell og må bli rømt)
- Negasjon ('!'eller `ikke')
- Sammenkobling ('&&'eller'og')
- Alternasjon ('||'eller'eller')
Negasjon har høyest prioritet. Alternasjon og sammenkobling har samme forrang og assosierer fra venstre til høyre. Merk det eksplisitteog tokens, ikke sammenstilling, kreves for sammenkobling.
Hvis en identifikator er gitt uten et søkeord, antas det nyeste søkeordet. For eksempel, ikke vert vs og ess er kort for ikke vert vs og vert ess. Dette bør imidlertid ikke forveksles med ikke (vert vs eller ess).
Ekspressionsargumenter kan sendes til tcpdump som enten et enkelt argument eller som flere argumenter, avhengig av hva som er mer praktisk. Generelt, hvis uttrykket inneholder Shell-metategn, er det lettere å sende det som et enkelt, sitert argument. Flere argumenter er sammenkoblet med mellomrom før de analyseres.
Tcpdump Eksempler
tcpdump vert solnedgang
Ovennevnte tcpdump-kommando brukes til å skrive ut alle pakker som kommer til eller avgår fra solnedgang. tcpdump host helios og (hot or ace )
Dette tcpdump-eksemplet skriver ut trafikk mellom helios og heller ikke varmt eller ess. tcpdump ip host ess og ikke helios
Du kan bruke denne tcpdump-kommandoen til å skrive ut alle IP-pakker mellom ess og alle verter unntatt helios. tcpdump netto ucb-eter
I eksemplet ovenfor skriver tcpdump all trafikk mellom lokale verter og verter på Berkeley. tcpdump 'gateway snup og (port ftp eller ftp-data)'
Dette neste tcpdump-kommandoeksemplet brukes til å skrive ut all FTP-trafikk via internettgateway snup . Vær oppmerksom på at uttrykket er sitert for å forhindre at skallet mislærer parentesene. tcpdump ip og ikke nett localnet
I det ovennevnte tcpdump-eksemplet skriver kommandoen ikke trafikken hverken hentet fra eller bestemt for lokale verter. tcpdump 'tcp tcpflags & (tcp-syn | tcp-fin)! = 0 og ikke src og dst net localnet '
For eksemplet ovenfor om tcpdump, brukes kommandoen til å skrive ut start- og sluttpakker (SYN- og FIN-pakker) for hver TCP-samtale som involverer en ikke-lokalt vert. tcpdump 'gateway snup og ip 2: 2> 576'
Kommandoen ovenfor vil skrive ut IP-pakker som er lengre enn 576 byte sendt via gateway snup. tcpdump 'eter 0 & 1 = 0 og ip 16> = 224'
Tcpdump-kommandoen som vises ovenfor, skriver ut IP-sendinger eller multicast-pakker som var ikke sendt via Ethernet-kringkasting eller multicast. tcpdump 'icmp icmptype! = icmp-echo og icmp icmptype! = icmp-echoreply'
I dette siste eksempelet på tcpdump skriver kommandoen alle ICMP-pakker som ikke er ekkoforespørsler eller svar (dvs. ikke pingpakker). Utgangen av tcpdump er protokollavhengig. Følgende gir en kort beskrivelse og eksempler på de fleste formater. Koblingsnivåhoder. Hvis alternativet '-e' er gitt, blir koblingsnivåhodet skrevet ut. På Ethernet-nettverk skrives kilden og destinasjonsadressene, protokollen og pakkelengden. På FDDI-nettverk forårsaker alternativet '-e' tcpdump å skrive ut 'rammekontroll' -feltet, kilden og destinasjonsadressene og pakkelengden. ("Rammekontroll" -feltet styrer tolkningen av resten av pakken. Normale pakker (som de som inneholder IP datagrammer) er "async" -pakker med en prioritetsverdi mellom 0 og 7: for eksempel `async4'. Slike pakker antas å inneholde en 802.2 Logical Link Control (LLC) pakke; LLC-overskriften skrives ut hvis den er ikke et ISO datagram eller en såkalt SNAP-pakke. På Token Ring-nettverk forårsaker alternativet '-e' tcpdump å skrive ut 'tilgangskontroll' og 'rammekontroll' -felt, kilden og destinasjonsadressene og pakkelengden. Som på FDDI-nettverk antas pakker å inneholde en LLC-pakke. Uansett om alternativet '-e' er angitt eller ikke, blir kildedireksjonsinformasjonen skrevet ut for kildedirekte pakker. (NB: Den følgende beskrivelsen forutsetter kjennskap til SLIP-komprimeringsalgoritmen beskrevet i RFC-1144.) På SLIP-koblinger skrives en retningsindikator ("I" for innkommende, "O" for utgående), pakktype og komprimeringsinformasjon ut. Pakketypen skrives ut først. De tre typene er ip , utcp , og ctcp . Ingen videre lenkeinformasjon skrives ut for ip pakker. For TCP-pakker skrives tilkoblingsidentifikatoren ut etter typen. Hvis pakken komprimeres, skrives den kodede overskriften ut. De spesielle tilfellene skrives ut som* S + n og* SA + n , hvor n er hvor mye sekvensnummeret (eller sekvensnummer og akk) er endret. Hvis det ikke er et spesielt tilfelle, skrives null eller flere endringer. En endring er angitt av U (hasterpeker), W (vindu), A (ack), S (sekvensnummer) og I (pakke-ID), etterfulgt av et delta (+ n eller -n) eller en ny verdi (= n). Endelig blir mengden data i pakken og komprimert topplengde trykt. For eksempel viser følgende linje en utgående komprimert TCP-pakke, med en implisitt tilkoblingsidentifikator; Akk har endret seg med 6, sekvensnummeret med 49, og pakke-ID med 6; Det er 3 byte med data og 6 byte komprimert overskrift: O ctcp * A + 6 S + 49 I + 6 3 (6)
Arp / rarp pakker. Arp / rarp-utgang viser typen forespørsel og dens argumenter. Formatet er ment å være selvforklarende. Her er en kort prøve tatt fra starten av en 'rlogin' fra verten rtsg å være vert for CSAM : arp som har csam fortell rtsgarp svar csam er på CSAM
Den første linjen sier at rtsg sendte en arp-pakke og ba om Ethernet-adressen til internettverten csam. Csam svarer med sin Ethernet-adresse (i dette eksemplet er Ethernet-adresser i caps og internettadresser i små bokstaver). Dette ville se mindre overflødig hvis vi hadde gjort det tcpdump -n : arp som har 128.3.254.6, forteller 128.3.254.68arp svar 128.3.254.6 er kl 02: 07: 01: 00: 01: c4
Hvis vi hadde gjort det tcpdump -e , det faktum at den første pakken sendes og den andre er punkt-til-punkt, vil være synlig: RTSG Broadcast 0806 64: arp som har csam fortell rtsgCSAM RTSG 0806 64: arp svar csam er-på CSAM
For den første pakken sier dette at Ethernet-kildeadressen er RTSG, destinasjonen er Ethernet-sendingsadressen, typefeltet inneholdt hex 0806 (type ETHER_ARP), og den totale lengden var 64 byte. TCP-pakker (NB: Den følgende beskrivelsen forutsetter at TCP-protokollen er beskrevet i RFC-793. Hvis du ikke er kjent med protokollen, vil ikke denne beskrivelsen eller tcpdump være til stor nytte for deg) . Det generelle formatet for en TCP-protokolllinje er: src> dst: flagg data-seqno ack vinduet haster alternativer
src og dst er kilde- og destinasjons-IP-adresser og porter. Flags er noen kombinasjon av S (SYN), F (FIN), P (PUSH) eller R (RST) eller en enkelt '.' (ingen flagg). Data seqno beskriver delen av sekvensplass som dekkes av dataene i denne pakken (se eksempel nedenfor). Ack er sekvensnummeret til de neste dataene forventet den andre retningen på denne forbindelsen. Vindu er antall byte av mottatt bufferplass tilgjengelig i den andre retningen på denne forbindelsen. Urg indikerer at det er "haster" data i pakken. alternativer er tcp-alternativer innelukket i vinkelbeslag (f.eks. Src, dst, og flagg er alltid til stede. De andre feltene er avhengig av innholdet i pakkenes tcp-protokollhode og utføres kun hvis det er hensiktsmessig. Her er åpningsdelen av en rlogin fra verten rtsg å være vert for CSAM . rtsg.1023> csam.login: S 768512: 768512 (0) vinn 4096 Den første linjen sier at tcp port 1023 på rtsg sendte en pakke til port Logg Inn på csam. DeS indikerer at SYN flagget ble satt. Pakksekvensnummeret var 768512 og det inneholdt ingen data. (Notasjonen er 'første: siste (nbytes)', som betyr 'sekvensnumre' først opp til men ikke inkludert siste som er nbytes bytes av brukerdata '.) Det var ingen piggy-backed ack, det tilgjengelige mottaksvinduet var 4096 bytes, og det var et maks-segmentstørrelsesalternativ som ber om en mss på 1024 byte. Csam svarer med en lignende pakke, bortsett fra at den inneholder en piggybacked ack for rtsgs SYN. Rtsg da acks csam sin SYN. '.' betyr at ingen flagg ble satt. Pakken inneholdt ingen data, så det er ikke noe datasekvensnummer. Merk at ack sekvensnummeret er et lite heltall (1). Den første gangen tcpdump ser en tcp 'samtale', den skriver ut sekvensnummeret fra pakken. På etterfølgende pakker i samtalen skrives forskjellen mellom den nåværende pakkeens sekvensnummer og dette innledende sekvensnummeret. Dette betyr at sekvensnumre etter den første kan tolkes som relative byteposisjoner i samtalens datastrøm (med den første databyte hver retning er '1'). '-S' vil overstyre denne funksjonen, slik at de opprinnelige sekvensnumrene blir utgitt. På den sjette linjen sender rtsg csam 19 bytes data (byte 2 til 20 i rtsg -> csam siden av samtalen). PUSH-flagget er satt i pakken. På den syvende linjen, sier csam at det er mottatt data sendt av rtsg opp til, men ikke inkludert byte 21. De fleste av disse dataene ser tydeligvis ut i sokkelbufferen siden csam mottar vinduet har fått 19 byte mindre. Csam sender også en byte med data til rtsg i denne pakken. På den åttende og niende linjen sender csam to byte med haster, presset data til rtsg. Hvis stillbildet var lite nok det tcpdump fanget ikke hele TCP-overskriften, det tolker så mye av overskriften som det kan og da rapporterer "| tcp '' for å indikere at resten ikke kunne tolkes. Hvis toppteksten inneholder et falskt alternativ (en med en lengde som er enten for liten eller utover slutten av toppteksten), tcpdump rapporterer det som " dårlig opt '' og tolker ikke flere alternativer (siden det er umulig å fortelle hvor de starter). Hvis topplengden angir alternativer er tilstede, men IP datagramlengden er ikke lang nok til at alternativene faktisk skal være der, tcpdump rapporterer det som " dårlig hdr lengde ''. Capture-pakker med spesielle flaggkombinasjoner. Det er åtte biter i kontrollbitene i TCP-overskriften: CWR | ECE | URG | ACK | PSH | RST | SYN | FIN La oss anta at vi ønsker å se pakker som brukes til å etablere en TCP-tilkobling. Husk at TCP bruker en treveis håndskriftsprotokoll når den initialiserer en ny tilkobling; Tilkoblingssekvensen med hensyn til TCP-kontrollbitene er: Nå er vi interessert i å fange pakker som bare har SYN-bitsettet (trinn 1). Legg merke til at vi ikke vil ha pakker fra trinn 2 (SYN-ACK), bare en vanlig innledende SYN. Det vi trenger er et korrekt filteruttrykk for tcpdump . Husk strukturen til en TCP-header uten alternativer: 0 15 31-----------------------------------------------------------------| kildeport | destinasjonshavn |-----------------------------------------------------------------| sekvensnummer |-----------------------------------------------------------------| bekreftelsesnummer |-----------------------------------------------------------------| HL | rsvd | C | E | U | A | P | R | S | F | vindu størrelse |-----------------------------------------------------------------| TCP checksum | haster peker |-----------------------------------------------------------------
En TCP-header inneholder vanligvis 20 oktetter med data, med mindre alternativene er til stede. Den første linjen i grafen inneholder oktetter 0-3, den andre linjen viser oktetter 4-7, etc. Begynner å telle med 0, er de relevante TCP kontrollbitene inneholdt i oktet 13: 0 7| 15| 23| 31----------------|---------------|---------------|----------------| HL | rsvd | C | E | U | A | P | R | S | F | vindu størrelse |----------------|---------------|---------------|----------------| | 13. oktet | | |
La oss se nærmere på octet nr. 1. 3: | | |---------------| | C | E | U | A | P | R | S | F | |---------------| |7 5 3 0|
Dette er TCP kontrollbiter som vi er interessert i. Vi har nummerert biter i denne oktetten fra 0 til 7, høyre til venstre, så PSH-biten er bit nummer 3, mens URG-biten er nummer 5. Husk at vi ønsker å fange pakker med bare SYN-sett. La oss se hva som skjer med oktet 13 hvis et TCP datagram kommer med SYN-bittet i hovedteksten: | C | E | U | A | P | R | S | F | |---------------| |0 0 0 0 0 0 1 0| |---------------| |7 6 5 4 3 2 1 0|
Når vi ser på kontrollbitseksjonen ser vi at bare bitnummer 1 (SYN) er satt. Forutsatt at oktet nummer 13 er et 8-bit usignert heltall i nettverksbyte rekkefølge, er den binære verdien av denne oktetten: 00000010 Dens desimalrepresentasjon er: 7 6 5 4 3 2 1 00*2 + 0*2 + 0*2 + 0*2 + 0*2 + 0*2 + 1*2 + 0*2 = 2
Vi er nesten ferdige, fordi nå vet vi at hvis bare SYN er satt, må verdien av den 13. oktetten i TCP-overskriften, når den tolkes som et 8-bit usignert heltall i nettverksbyte rekkefølge, være nøyaktig 2. Dette forholdet kan uttrykkes som tcp 13 == 2 Vi kan bruke dette uttrykket som filteret for tcpdump for å se pakker som bare har SYN sett: tcpdump -i xl0 tcp 13 == 2 Uttrykket sier "la den 13. oktetten til et TCP datagram ha desimalverdien 2," som er akkurat det vi ønsker. La oss nå anta at vi trenger å fange SYN-pakker, men det bryr oss ikke om ACK eller annen TCP-kontrollbit er satt samtidig. Se på hva som skjer med oktet 13 når et TCP datagram med SYN-ACK sett kommer: | C | E | U | A | P | R | S | F | |---------------| |0 0 0 1 0 0 1 0| |---------------| |7 6 5 4 3 2 1 0|
Bits 1 og 4 er nå satt i 13. oktet. Den binære verdien av oktet 13 er: 00010010 som oversetter til desimal: 7 6 5 4 3 2 1 00*2 + 0*2 + 0*2 + 1*2 + 0*2 + 0*2 + 1*2 + 0*2 = 18
Vi kan ikke bare bruke 'tcp 13 == 18' i tcpdump filter uttrykk, fordi det ville bare velge de pakker som har SYN-ACK sett, men ikke de med bare SYN sett. Husk at vi ikke bryr oss om ACK eller noen annen kontrollbit er satt så lenge SYN er satt. For å oppnå vårt mål, må vi logisk OG den binære verdien av oktet 13 med en annen verdi for å bevare SYN-biten. Vi vet at vi vil at SYN skal settes i alle fall, så logger vi logisk og verdien i 13. oktet med binærverdien til en SYN: 00010010 SYN-ACK 00000010 SYN OG 00000010 (vi vil SYN) OG 00000010 (vi vil SYN) -------- -------- = 00000010 = 00000010
Vi ser at denne AND-operasjonen gir det samme resultatet, uansett om ACK eller en annen TCP-kontrollbit er satt. Desimalrepresentasjonen av AND-verdien samt resultatet av denne operasjonen er 2 (binær 00000010), så vi vet at for pakker med SYN-sett må følgende forhold være troverdig: ((verdi av oktet 13) OG (2)) == (2) Dette peker oss til tcpdump filteruttrykk tcpdump -i xl0 'tcp 13 & 2 == 2' Vær oppmerksom på at du skal bruke enkle anførselstegn eller et tilbakeslag i uttrykket for å gjemme AND ('&') spesialtegnet fra skallet. UDP pakker. UDP-format er illustrert av denne rwho-pakken: actinide.who> broadcast.who: udp 84
Dette sier at porten hvem på vert actinide sendte et utp datagram til porten hvem på vert kringkaste , Internett-sendingsadressen. Pakken inneholdt 84 byte brukerdata. Enkelte UDP-tjenester blir gjenkjent (fra kilde- eller destinasjonsportnummer) og protokollinformasjonen på høyere nivå som er skrevet ut, spesielt Domenenavn-tjenesteforespørsler (RFC-1034/1035) og Sun RPC-samtaler (RFC-1050) til NFS. UDP navn server forespørsler (NB: Den følgende beskrivelsen forutsetter kjennskap til Domain Service-protokollen som er beskrevet i RFC-1035. Hvis du ikke er kjent med protokollen, vil følgende beskrivelse ikke gi mening.) Navnsserverforespørsler er formatert som: src> dst: id op? flagg qtype qclass navn (len) h2opolo.1538> helios.domain: 3+ A? ucbvax.berkeley.edu. (37)
Vert h2opolo spurte domeneserveren på helios for en adressepost (qtype = A) knyttet til navnet ucbvax.berkeley.edu. Forespørsels-ID'et var '3'. '+' Indikerer ønsket rekursjon flagget ble satt. Spørringslengden var 37 byte, ikke inkludert UDP- og IP-protokollhodene. Søkeoperasjonen var den normale, Spørsmål , så op-feltet ble utelatt. Hvis open hadde vært noe annet, hadde det blitt skrevet ut mellom '3' og '+'. På samme måte var qclassen den normale, C_IN , og utelatt. Enhver annen qclass ville ha blitt skrevet ut umiddelbart etter 'A'. Noen få uregelmessigheter blir sjekket og kan resultere i ekstra felter vedlagt i firkantede parenteser: Hvis en spørring inneholder et svar, autorisasjonsoppføringer eller tilleggsavsnitt, ancount , nscount , eller arcount er skrevet ut som " n a ',' n eller ' n au 'hvor n er den riktige tellingen. Hvis noen av svarbitene er satt (AA, RA eller Rcode) eller noe av `må være null ', settes biter i to og tre,` b2 & 3 = x 'er skrevet ut, hvor x er hex-verdien av topptekstene to og tre. UDP navneserver responser. Navneserversvar er formatert som: src> dst: id op rcode flagg a / n / au type klassedata (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)
I det første eksemplet, helios reagerer på spørre id 3 fra h2opolo med tre svar poster, tre navn server poster og syv ekstra poster. Den første svarrekorden er type A (adresse), og dens data er nettadressen 128.32.137.3. Den totale størrelsen på svaret var 273 byte, unntatt UDP- og IP-overskrifter. Op-spørringen og svarkoden (NoError) ble utelatt, som var klassen (C_IN) av A-posten. I det andre eksemplet, helios svarer på spørring 2 med en svarkode for ikke-eksisterende domene (NXDomain) uten svar, en navneserver og ingen autorisasjonsrekord. '*' Indikerer at autoritativt svar bit ble satt. Siden det ikke var noen svar, ble det ikke skrevet noen type, klasse eller data. Andre flaggfigurer som kan vises er '-' (rekursjon tilgjengelig, RA, ikke sett) og '|' (avkortet melding, TC, sett). Hvis "Spørsmål" -delen ikke inneholder nøyaktig en oppføring, " n q 'er skrevet ut. Vær oppmerksom på at navneserverforespørsler og svar pleier å være store og standard snaplen av 68 byte kan ikke fange nok av pakken som skal skrives ut. Bruke-s flagg for å øke snaplen hvis du må seriøst undersøke navneservertrafikk. '-s 128'har jobbet bra for meg. SMB / CIFS-dekoding. tcpdump Inkluderer ganske omfattende SMB / CIFS / NBT-dekoder for data på UDP / 137, UDP / 138 og TCP / 139. Noen primitive dekoding av IPX og NetBEUI SMB data er også gjort. Som standard gjøres en ganske minimal dekodering, med en mye mer detaljert dekodering gjort hvis -v brukes. Vær advart om at -v en enkelt SMB-pakke kan ta opp en side eller mer, så bruk bare -v hvis du virkelig vil ha alle de gore detaljene. Hvis du dekoder SMB-økter som inneholder unicode-strenger, kan det hende du ønsker å angi miljøvariabelen USE_UNICODE til 1. En oppdatering for automatisk oppdagelse av unicode-strenger ville være velkommen. For informasjon om SMB-pakkeformater og hva alle feltene betyr, se www.cifs.org eller pub / samba / specs / katalog på ditt favoritt samba.org-speilsted. SMB-oppdateringene ble skrevet av Andrew Tridgell ([email protected]). NFS-forespørsler og svar. Sun NFS (Network File System) forespørsler og svar skrives ut som: src.xid> dst.nfs: len op args src.nfs> dst.xid: svar på resultater sushi.6709> wrl.nfs: 112 readlink fh 21,24 / 10,73165wrl.nfs> sushi.6709: svar ok 40 leseliste "../var"sushi.201b> wrl.nfs: 144 oppslag fh 9,74 / 4096,6878 "xcolors"wrl.nfs> sushi.201b: svar ok 128 oppslag fh 9,74 / 4134.3150
I første linje, vert sushi sender en transaksjon med id 6709 til WRL (Merk at tallet som følger src-verten er et transaksjons-ID, ikke kildeporten). Forespørselen var 112 byte, unntatt UDP- og IP-overskriftene. Operasjonen var a readlink (les symbolsk lenke) på filhåndtaket ( fh ) 21,24 / 10,731657119. (Hvis man er heldig, så kan filhåndtaket tolkes som et stort, mindre enhetstall, etterfulgt av inodenummer og generasjonsnummer.) WRL svarer 'ok' med innholdet i lenken. I den tredje linjen, sushi spør WRL å slå opp navnet ' xcolors 'i katalogen fil 9,74 / 4096,6878. Merk at datautskriften er avhengig av operasjonstypen. Formatet er ment å være selvforklarende hvis det leses sammen med en NFS-protokollspesifikasjon. Hvis -v (verbose) -flagget er gitt, skrives ytterligere informasjon ut. For eksempel: sushi.1372a> wrl.nfs: 148 lese fh 21,11 / 12,195 8192 byte @ 24576wrl.nfs> sushi.1372a: svar ok 1472 les REG 100664 ids 417/0 sz 29388
(-v skriver også IP-header TTL, ID, lengde og fragmenteringsfelt, som er utelatt fra dette eksempelet.) I første linje, sushi spør WRL å lese 8192 byte fra fil 21,11 / 12,195, ved byte offset 24576. WRL svarene 'ok'; pakken vist på den andre linjen er det første fragmentet av svaret, og er derfor bare 1472 byte lang (de andre bytes vil følge i etterfølgende fragmenter, men disse fragmentene har ikke NFS eller UDP-overskrifter og kan derfor ikke skrives ut, avhengig av filteruttrykket som brukes). Siden -v-flagget er gitt, blir noen av filattributtene (som returneres i tillegg til fildataene) skrevet ut: filtypen ("REG", for vanlig fil), filmodusen (i oktal), den uid og gid, og filstørrelsen. Hvis -v-flagget er gitt mer enn en gang, skrives enda flere detaljer ut. Merk at NFS-forespørsler er veldig store og mye av detaljene vil ikke bli skrevet ut med mindre snaplen er økt. Prøv å bruke '-s 192'for å se NFS-trafikk. NFS-svarpakker identifiserer ikke RPC-operasjonen eksplisitt. I stedet, tcpdump holder styr på "siste" forespørsler, og samsvarer med dem i svarene ved hjelp av transaksjons-ID. Hvis et svar ikke følger nøyaktig den tilsvarende forespørselen, kan det være at det ikke kan analyseres. Transarc AFS (Andrew File System) forespørsler og svar. src.sport> dst.dport: rx pakke-type src.sport> dst.dport: rx pakke-type serviceanrop call-name args src.sport> dst.dport: rx pakke-type service svar call-name args elvis.7001> pike.afsfs: rx data fs call gi nytt navn til old fid 536876964/1/1 ".newsrc.new" ny fid 536876964/1/1 ".newsrc"pike.afsfs> elvis.7001: rx data fs svare omdøpe
I første linje sender verten Elvis en RX-pakke til gjedde. Dette var en RX datapakke til fs (fileserver) tjenesten, og er starten på et RPC-anrop.RPC-anropet ble et nytt navn, med det gamle katalogfil-IDet på 536876964/1/1 og et gammelt filnavn for '.newsrc.new' og et nytt katalogfil-ID på 536876964/1/1 og et nytt filnavn for '. newsrc'. Verts gjengen reagerer med et RPC svar på omdøpet samtalen (som var vellykket, fordi det var en datapakke og ikke en abortpakke). Generelt avkodes alle AFS RPCs i hvert fall ved RPC-anropsnavn. De fleste AFS RPCer har minst noen av argumentene dekodert (generelt bare de "interessante" argumentene, for noen definisjon av interessant). Formatet er ment å være selvbeskrivende, men det vil nok ikke være nyttig for folk som ikke er kjent med AFS og RXs arbeid. Hvis -v (verbose) -flagget blir gitt to ganger, blir bekreftelsespakker og ytterligere headerinformasjon skrevet ut, for eksempel RX-anrops-ID, anropsnummer, sekvensnummer, serienummer og RX-pakkeflaggene. Hvis -v-flagget blir gitt to ganger, skrives ytterligere informasjon, for eksempel RX-anrops-ID, serienummer og RX-pakkeflaggene. MTU-forhandlingsinformasjonen skrives også ut fra RX ack pakker. Hvis -v-flagget blir gitt tre ganger, skrives sikkerhetsindeksen og service-IDen. Feilkoder skrives ut for abortpakker, med unntak av Ubik-beaconpakker (fordi abortpakker brukes til å betegne ja-stemmer for Ubik-protokollen). Merk at AFS-forespørsler er svært store, og mange argumenter skrives ikke ut med mindre snaplen er økt. Prøv å bruke `-s 256'å se AFS-trafikk. AFS-svarpakker identifiserer ikke RPC-operasjonen eksplisitt. I stedet, tcpdump holder styr på "siste" forespørsler, og samsvarer med dem i svarene ved hjelp av anropsnummer og service-ID. Hvis et svar ikke følger nøyaktig den tilsvarende forespørselen, kan det hende at det ikke er analysert. KIP Appletalk (DDP i UDP). Appletalk DDP-pakker som er innkapslet i UDP-datagrammer, er de-innkapslet og dumpet som DDP-pakker (dvs. alle UDP-headerinformasjonene blir kassert). Filen /etc/atalk.names brukes til å oversette appletalk nett og node tall til navn. Linjer i denne filen har dette skjemaet: Nummernavn 1,254 eter16.1 icsd-net1.254.110 ess
De to første linjene gir navnene på appletalk-nettverk. Den tredje linjen gir navnet til en bestemt vert (en vert skilles fra et nett med den tredje oktetten i nummeret - et nettnummer må har to oktetter og et vertsnummer må har tre oktetter). Nummeret og navnet skal skilles av hvitt mellomrom (emner eller faner). De /etc/atalk.names Filen kan inneholde tomme linjer eller kommentarlinjer (linjer som starter med en `# '). Appletalk-adresser skrives ut i skjemaet: net.host.port 144.1.209.2> icsd-net.112.220office.2> icsd-net.112.220jssmag.149.235> icsd-net.2
(Hvis /etc/atalk.names finnes ikke eller inneholder ikke en oppføring for noen appletalk-vert / nettnummer, adressene skrives ut i numerisk form.) I det første eksemplet sender NBP (DDP port 2) på nett 144.1 node 209 til det som lytter på port 220 av netto icsd node
Tcpdump Output Format




