Skip to main content

Tcpdump: Príklady, možnosti a ďalšie

Anonim

Tcpdump je príkaz používaný na rôznych operačných systémoch Linux (OS), ktoré zhromažďujú pakety TCP / IP, ktoré prechádzajú cez sieťový adaptér. Podobne ako nástroj na vytváranie paketov, tcpdump môže nielen analyzovať sieťový prenos, ale aj uložiť ho do súboru.

Na rozdiel od niektorých príkazov, ktoré štandardne poskytuje operačný systém, možno zistíte, že tcpdump nemôžete používať, pretože nie je nainštalovaný. Ak chcete nainštalovať tcpdump, spustite apt-get install tcpdump alebo inštalovať tcpdump, v závislosti od operačného systému.

Ako funguje Tcpdump

Tcpdump vytlačí hlavičky paketov na sieťovom rozhraní, ktoré sa zhoduje s Booleanom vyjadrenie , Môže byť spustená aj s-w príznak, ktorý spôsobí uloženie paketových dát do súboru pre neskoršiu analýzu a / alebo-r príznak, ktorý spôsobuje čítanie z uloženého paketového súboru a nie čítanie paketov zo sieťového rozhrania. Vo všetkých prípadoch sa používajú iba pakety, ktoré sa zhodujú vyjadrenie budú spracované tcpdump .

tcpdump ak nie je spustená s-c pokračujte v zachytení paketov, kým ich nepreruší signál SIGINT (generovaný napríklad napísaním znaku prerušenia, typicky Ctrl + C) alebo signál SIGTERM (typicky generovaný szabiť(1) príkaz); ak beží s-c flag, bude zachytiť pakety, kým nebude prerušený signálom SIGINT alebo SIGTERM alebo nebol spracovaný špecifikovaný počet paketov.

Spomenuté spínače sú podrobne vysvetlené neskôr v tomto článku.

Kedy tcpdump ukončí zachytenie paketov, bude hlásiť počet:

  • Pakety "získané filtrom."
    • Význam toho závisí od operačného systému, na ktorom bežíte tcpdump , a možno aj na spôsob konfigurácie operačného systému. Ak bol na príkazovom riadku zadaný filter, na niektorých operačných systémoch sa počítajú pakety bez ohľadu na to, či sa zhodujú s výrazom filtra, a na iných sa počítajú iba pakety, ktoré zodpovedali výrazu filtra a boli spracované tcpdump.
  • Packets "klesol o jadro."
    • Toto je počet paketov, ktoré boli kvôli nedostatku vyrovnávacieho priestoru odstránené mechanizmom zachytávania paketov v operačnom systéme, na ktorom tcpdump je spustený, ak OS hlási tieto informácie aplikáciám. Ak nie, bude hlásený ako 0.

Na platformách, ktoré podporujú signál SIGINFO, ako napríklad väčšina BSD (Berkeley Software Distributions), oznámi tieto počty, keď dostane signál SIGINFO (generovaný napríklad zadaním znaku "status", typicky Ctrl + T) a bude pokračovať v zachytení paketov.

Kompatibilita Tcpdump

Čítanie paketov zo sieťového rozhrania pomocou príkazu tcpdump môže vyžadovať špeciálne privilégiá ( čítanie uložený paketový súbor nevyžaduje takéto oprávnenia):

  • SunOS 3.x alebo 4.x s NIT alebo BPF: Musíte mať prístup na čítanie / Dev / niť alebo dev / BPF * .
  • Solaris s DLPI: Musíte mať prístup k čítaniu alebo zápisu do sieťového pseudo zariadenia, napríklad / Dev / le , Prinajmenšom na niektorých verziách Solarisu to však nestačí tcpdump zachytiť v promiskuitnom režime; na tých verziách Solaris, musíte byť koreň, alebo tcpdump musí byť nainštalovaný nastavený na root, aby sa zachytil v promiskuitnom režime. Všimnite si, že na mnohých (možno všetkých) rozhraniach, ak nezaznamenávate v promiskuitnom režime, neuvidíte žiadne odchádzajúce pakety, takže zachytenie, ktoré sa nevykonáva v promiskuitnom režime, nemusí byť veľmi užitočné.
  • HP-UX s DLPI: Musíte byť root alebo tcpdump musí byť nainštalovaný nastavený na root.
  • IRIX s snoopom: Musíte byť root alebo tcpdump musí byť nainštalovaný nastavený na root.
  • linux: Musíte byť root alebo tcpdump musí byť nainštalovaný nastavený na root.
  • Ultrix a digitálny systém UNIX / Tru64 UNIX: Každý používateľ môže zachytiť sieťovú komunikáciu pomocou tcpdump , Avšak žiadny používateľ (dokonca ani superužívateľ) nemôže zachytiť v promiskuitnom režime na rozhraní, pokiaľ superužívateľ neumožnil v tomto rozhraní používanie promiskuitného režimu pfconfig (8) a žiadny užívateľ (dokonca ani superužívateľ) nemôže zachytiť návštevnosť s jednosmernou komunikáciou prijatú alebo odoslanú strojom na rozhraní, pokiaľ superperián neumožnil na tomto rozhraní zapnúť kopírovanie celého režimu pfconfig , tak užitočný zachytávanie paketov na rozhraní pravdepodobne vyžaduje, aby v tomto rozhraní bola aktivovaná buď operácia promiskuitného režimu alebo kopírovanie v režime všetkého režimu, alebo obidva spôsoby prevádzky.
  • BSD: Musíte mať prístup na čítanie / Dev / BPF * .

Syntax príkazu Tcpdump

Rovnako ako všetky príkazy počítača, príkaz tcpdump funguje správne iba vtedy, ak je správna syntax:

tcpdump -adeflnNOpqRStuvxX -c počítať

-C veľkosť súboru -F súbor

-i rozhranie -m modul -r súbor

-s snaplen -T typ -U užívateľ -w súbor

-E Algo: tajomstvo vyjadrenie

Možnosti príkazu Tcpdump

Toto sú všetky možnosti, ktoré môžete použiť s príkazom tcpdump:

  • -a: Pokus o prevod sieťových a vysielaných adries na mená.
  • -c: Ukončite po prijatí počítať pakety.
  • -C: Pred zapísaním nespracovaného paketu do súboru uloženia skontrolujte, či je súbor v súčasnosti väčší ako veľkosť súboru a ak áno, zatvorte aktuálny súbor uloženia a otvorte nový.Po prvom súbore ukladania súborov uložte súbor s menom zadaným-w vlajka s číslom po ňom začínajúc od 2 a pokračuje nahor. Jednotky veľkosť súboru sú milióny bajtov (1 000 000 bajtov, nie 1 048 576 bajtov).
  • -d: Vypusťte zostavený kód zodpovedajúci paketom v ľudskej čitateľnej forme na štandardný výstup a zastavenie.
  • -DD: Kopírovať kód zodpovedajúceho paketu ako aC fragment programu.
  • -DDD: Kód pre odpísanie paketu ako desatinné čísla (pred ktorým je počet).
  • -e: Vytlačte hlavičku úrovne odkazu na každom výpisovom línii.
  • -E: Použite Algo: tajomstvo na dešifrovanie balíkov protokolu IPsec ESP. Algoritmy môžu byťdes-CBC, 3DES-CBC, blowfish-CBC, RC3-CBC, cast128-CBC, alebonikto, Predvolená hodnota jedes-CBC, Schopnosť dešifrovať pakety je prítomná len vtedy, ak tcpdump bola kompilovaná s povolenou kryptografiou. tajomstvo text ascii pre tajný kľúč ESP. V tejto chvíli nemôžeme brať ľubovoľnú binárnu hodnotu. Voľba predpokladá RFC2406 ESP, nie RFC1827 ESP. Táto možnosť je určená len na účely ladenia a použitie tejto možnosti s skutočne "tajným" kľúčom je odradené. Predstavením tajného kľúča IPsec na príkazový riadok ho môžete vidieť aj pre ostatných ps (1) a inými príležitosťami.
  • -f: Vytlačte "cudzie" internetové adresy skôr numericky ako symbolicky (táto možnosť je určená na získanie vážneho poškodenia mozgu na serveri servera spoločnosti Sun - zvyčajne to visí naveky prekladaním nelokálnych internetových čísel).
  • -F: Použite súbor ako vstup pre výraz filtra. Ďalší príkaz uvedený na príkazovom riadku sa ignoruje.
  • -i: Počúvajte rozhranie , Ak nie je uvedené, tcpdump vyhľadá zoznam systémových rozhraní pre najnižšie očíslované a nakonfigurované rozhranie (okrem slučky). Väzby sa prerušujú výberom najskoršieho zápasu. V systémoch Linux s 2.2 alebo novšími jadrami rozhranie argument "any" môže byť použitý na zachytenie paketov zo všetkých rozhraní. Všimnite si, že zachytenie na "nejakom" zariadení nebude vykonané v promiskuitnom režime.
  • -l: Vytvorte buffered stdout line. Užitočné, ak chcete zobraziť údaje počas ich zachytenia. Napríklad "tcpdump -l | tee dat" alebo "tcpdump -l> dat & tail -f dat".
  • -m: Načítať definície modulov SMI MIB zo súboru modul , Táto možnosť sa môže použiť niekoľkokrát na vloženie viacerých MIB modulov tcpdump .
  • -n: Neprevádzať hostiteľské adresy na mená. To sa môže použiť na vyhnutie vyhľadávaniu DNS.
  • -NN: Neprekonvertujte čísla protokolov a portov atď.
  • -N: Nevytlačte názvy hostiteľských názvov domén. Napríklad, ak dáte tento príznak, potom tcpdump bude tlačiť "nic" namiesto "nic.ddn.mil".
  • -O: Nepoužívajte optimalizátor kódov zodpovedajúci paketom. Toto je užitočné iba vtedy, ak máte podozrenie na chybu v optimalizátore.
  • -p: nenechajte vložte rozhranie do promiskuitného režimu. Všimnite si, že rozhranie môže byť z iného dôvodu v promiskuitnom režime; preto "-p" nemôže byť použitý ako skratka pre "éter hostiteľa {local-hw-addr} alebo éterické vysielanie".
  • -q: Rýchly (tichý) výstup. Tlačte menej protokolových informácií, takže výstupné riadky sú kratšie.
  • -R: Predpokladajme, že pakety ESP / AH budú založené na starých špecifikáciách: RFC1825 až RFC1829. Ak je uvedené, tcpdump nebude tlačiť oblasť prevencie opakovania. Pretože v špecifikácii ESP / AH neexistuje pole verzie protokolu, tcpdump nemôže odvodiť verziu protokolu ESP / AH.
  • -r: Prečítajte si pakety z súbor (ktorý bol vytvorený s voľbou -w). Štandardný vstup sa používa, ak súbor je "-''.
  • -S: Tlačte absolútne, skôr než relatívne, poradové čísla TCP.
  • -s: Snarf snaplen bajtov údajov z každého paketu namiesto predvolenej hodnoty 68; so systémom NIT od SunOS je minimálne 96. Šesťdesiatosem bajtov je primerané pre protokoly IP, ICMP, TCP a UDP, ale môže skrátiť protokolové informácie z paketov mena servera a NFS (pozri nižšie). Pakety zrezané z dôvodu obmedzenej snímky sú na výstupe označené znakom " preto '', kde preto je názov úrovne protokolu, na ktorej došlo ku skráteniu. Upozorňujeme, že pri snímaní väčších snímok sa zvyšuje čas potrebný na spracovanie paketov a efektívne znižuje množstvo vyrovnávacej pamäte paketov. To môže spôsobiť stratu paketov. Mali by ste obmedziť snaplen na najmenšie číslo, ktoré bude zachytiť informácie o protokole, ktoré vás zaujímajú snaplen na 0 znamená použiť požadovanú dĺžku na zachytenie celých paketov.
  • -T: Force pakety vybraté podľa " vyjadrenie "vykladať špecifikované typ , V súčasnosti sú známe typycnfp (Protokol Cisco NetFlow),rpc (Remote Procedure Call),RTP (Protokol aplikácií v reálnom čase),RTCP (Riadiaci protokol aplikácií v reálnom čase),snmp (Protokol Simple Network Management Protocol),kaďa (Nástroj Visual Audio) awb (distribuovaná biela tabuľa).
  • -t: nenechajte vytlačte časovú pečiatku na každom výpisovom línii.
  • -TT: Vytlačte neformátovanú časovú pečiatku na každom výpisovom línii.
  • -U: Uplatní práva root a zmení ID používateľa na užívateľ a ID skupiny k primárnej skupine užívateľ .
  • Poznámka: Red Hat Linux automaticky odoberie privilégiá používateľovi "pcap", ak nie je zadané nič iné.
  • -ttt: Vytlačte delta (v mikrosekundách) medzi aktuálnym a predchádzajúcim riadkom na každom výpisovom línii.
  • -tttt: Vytlačiť časovú pečiatku v predvolenom formáte, ktoré sa uskutočňuje podľa dátumu na každom výpisovom línii.
  • -u: Tlačte nekódované úchyty NFS.
  • -v: (Mierne viac) podrobný výstup. Napríklad sa vytlačí čas na prežitie, identifikácia, celková dĺžka a možnosti balíka IP. Tiež umožňuje ďalšie kontroly integrity paketov, ako napríklad overenie kontrolného súčtu hlavičky IP a ICMP.
  • -vv: Ešte podrobnejší výstup. Napríklad sú vytlačené ďalšie polia z paketov odpovede NFS a pakety SMB sú plne dekódované.
  • -vvv: Ešte podrobnejší výstup. Napríklad telnetSBSE možnosti sú vytlačené úplne. s -X Možnosti telnet sú vytlačené aj v šestnástke.
  • -w: Napíšte surové pakety na súbor skôr než ich analyzovať a vytlačiť. Neskôr sa môžu vytlačiť pomocou možnosti -r. Štandardný výstup sa používa, ak súbor je "-''.
  • -X: Vytlačte každý paket (mínus jeho záhlavie úrovne odkazu) v šestnástke. Menší z celého paketu alebo snaplen bajty budú vytlačené. Všimnite si, že ide o celý paket s odkazovou vrstvou, takže pre vrstvy odkazov, ktoré sa nachádzajú v podložke (napr. Ethernet), sa vytlačia aj bajty výplne, keď je paket s vyššou vrstvou kratší ako požadované polstrovanie.
  • -X: Pri tlači hex sa vytlačí aj ascii. Ak teda-X je tiež nastavený, paket je vytlačený v hex / ascii. To je veľmi užitočné pri analýze nových protokolov. Aj keď-X nie je nastavená, niektoré časti niektorých paketov môžu byť vytlačené v hex / ascii.
  • vyjadrenie : Vyberie, ktoré pakety budú zaťažené. Ak nie vyjadrenie je daný, všetky pakety na sieti budú zaťažené. V opačnom prípade iba pakety, pre ktoré vyjadrenie je "pravda", bude zlikvidovaná. vyjadrenie pozostáva z jedného alebo viacerých primitíva. Primitivy sa zvyčajne skladajú z id (názov alebo číslo), ktorému predchádza jedna alebo viacero kvalifikátorov. Existujú tri rôzne druhy kvalifikácie:
  • typ : Kvalifikátory hovoria, na akú vec sa uvádza meno alebo číslo id. Možné typy súhostiteľ, netto, aprístavNapríklad "host foo", "net 128.3", "port 20". Ak neexistuje typový kvalifikátor,hostiteľ sa predpokladá.
  • dir : Kvalifikátory špecifikujú konkrétny smer prechodu do a / alebo od id , Možné smerovaniesrc, dst, src alebo dst asrc a dst (napr. 'src foo', 'dst net 128.3', 'src alebo dst port ftp-data'). Ak neexistuje žiadny kvalifikátor dir,src alebo dst sa predpokladá. Pre "nulové" vrstvy spojov (t.j. protokoly typu point-to-point ako skĺznutie) prichádzajúci a odchádzajúce Kvalifikátory môžu byť použité na špecifikáciu požadovaného smeru.
  • preto : Kvalifikátory obmedzujú zápas na konkrétny protokol. Možné protósy sú: éter, FDDI, tr, ip, IP6, arp, rarp, decnet, tcp, audp- napríklad "ether src foo", "arp net 128.3", "tcp port 21". Ak neexistuje žiadna kvalifikácia proto, predpokladajú sa všetky protokoly v súlade s typom. Napríklad "src foo" znamená "(ip alebo arp alebo rarp) src foo" (okrem toho, že táto nie je právna syntax), "net bar" znamená " znamená (tcp alebo udp) port 53 '.
    • 'fddi' je vlastne alias pre "éter"; analyzátor ich zaobchádza identicky s významom "úroveň dátového spojenia použitého na špecifikovanom sieťovom rozhraní." Záhlavia FDDI obsahujú zdrojové a cieľové adresy typu Ethernet a často obsahujú typy paketov typu Ethernet, takže môžete filter týchto FDDI polí len rovnako ako pri podobných poliach Ethernet.FDDI hlavičky obsahujú aj iné polia, ale nemôžete ich výslovne uviesť vo výraze filtra.
    • Podobne, "tr" je alias pre "éter"; vyhlásenia predchádzajúceho odseku o hlavičkách FDDI sa vzťahujú aj na hlavičky Token Ring.

Okrem uvedených skutočností existujú aj niektoré špeciálne "primitívne" kľúčové slová, ktoré nevyhovujú vzoru:brána, vysielania, menej, väčšia, a aritmetika výrazy. Všetky tieto sú popísané nižšie.

Zložitejšie výrazy filtrov sa vytvárajú pomocou slova, alebo, anie skombinovať primitívne prvky - napríklad "hostiteľa foo a nie port ftp a nie port ftp-data". Ak chcete uložiť písanie, môžu sa vynechať rovnaké zoznamy kvalifikátorov (napr. "Tcp dst port ftp alebo ftp-data alebo doména" je presne to isté ako "tcp dst port ftp alebo tcp dst port ftp-data alebo tcp dst port domain"

Toto sú primitívne prípustné príkazy tcpdump:

  • dst hostiteľ hostiteľ
    • Je to pravda, ak je cieľové pole paketu IPv4 / v6 hostiteľ , čo môže byť buď adresa, alebo názov.
  • src hostiteľa hostiteľ
    • Skutočné, ak je zdrojové pole paketu IPv4 / v6 hostiteľ .
  • hostiteľ hostiteľ
    • Je pravda, či je zdrojom alebo určením paketu IPv4 / v6 hostiteľ , Ktorýkoľvek z vyššie uvedených výrazov hostiteľa môže byť predbežný s kľúčovými slovami,ip, arp, rarp, aleboIP6, ako v ip hostiteľa hostiteľ (čo je ekvivalentné éterová látka ip a hostiteľa hostiteľ).
    • ak hostiteľ je názov s viacerými adresami IP, každá adresa sa skontroluje na zhodu.
  • éter dst ehost
    • Je pravda, ak je adresa určenia siete Ethernet ehost . Ehost môže byť buď názov z / etc / ethers alebo číslo (pozri étery (3N) pre číselný formát).
  • éter src ehost
    • Je pravda, ak je zdrojová adresa siete Ethernet ehost .
  • éterového hostiteľa ehost
    • Je to pravda, ak je zdroj Ethernet alebo cieľová adresa ehost .
  • brána hostiteľ
    • Je pravda, ak bol použitý paket hostiteľ ako brána (t.j. zdrojová alebo cieľová adresa siete Ethernet bola hostiteľ ale ani zdroj IP, ani cieľ IP neboli hostiteľ ).
    • Hostiteľ musí byť názov a musí ho nájsť mechanizmus rozlíšenia adresy hostiteľa-meno-IP-IP (názov súboru hostiteľa, DNS, NIS atď.) a mechanizmus rozlíšenia adresy hostiteľa-na-Ethernet (/ etc / ethers atď.).
    • Ekvivalentný výraz je éterového hostiteľa ehost a teraz hostiteľ hostiteľ , ktoré je možné použiť buď s menami alebo číslami host / ehost .) Táto syntax v tejto chvíli nefunguje v konfigurácii s podporou protokolu IPv6.
  • dst net netto
    • Je pravda, ak má cieľová adresa paketu IPv4 / v6 číslo siete netto . netto môže byť buď názov z / etc / networks alebo číslo siete (pozri siete (4) pre podrobnosti).
  • src net netto
    • Je pravda, ak zdrojová adresa paketu IPv4 / v6 má číslo siete netto .
  • netto netto
    • Je pravda, či má zdrojová alebo cieľová adresa paketu IPv4 / v6 sieťové číslo netto .
  • netto netto maskovať Netmask
    • Skutočné, ak sa zhoduje IP adresa netto s konkrétnymi Netmask , Môžu byť kvalifikovanísrc alebodst, Všimnite si, že táto syntax nie je platná pre protokol IPv6 netto .
  • netto netto / ľan
    • Skutočné, ak sa zhoduje adresa IPv4 / v6 netto so sieťovou maskou ľan bits wide. Môžu byť kvalifikovanísrc alebodst.
  • dst port prístav
    • Je pravda, ak je paket ip / tcp, ip / udp, ip6 / tcp alebo ip6 / udp a má hodnotu cieľového portu prístav , prístav môže byť číslo alebo názov používaný v / etc / services (pozri tcp (4P) a udp (4P)). Ak sa používa názov, skontroluje sa číslo portu aj protokol. Ak sa používa číselný alebo nejednoznačný názov, je začiarknuté iba číslo portu (napr.dst port 513 bude tlačiť návštevnosť tcp / login a udp / who traffic aportová doména bude tlačiť ako tcp / doména a udp / doména).
  • src port prístav
    • Je pravda, ak má paket hodnotu zdrojového portu prístav .
  • prístav prístav
    • Je pravda, či je zdrojový alebo cieľový port paketu prístav , Ktorýkoľvek z vyššie uvedených výrazov portov môže byť predbežný s kľúčovými slovami,tcp aleboudp, ako v tcp port src prístav , ktorý zodpovedá iba paketom tcp, ktorých zdrojový port je prístav .
  • menej dĺžka
    • Je pravda, ak má paket dĺžku menšiu alebo rovnú dĺžka , Toto je ekvivalentné len <= dĺžka .
  • väčšia dĺžka
    • Je pravda, ak má paket dĺžku väčšiu alebo rovnú dĺžka , Toto je ekvivalentné len> = dĺžka .
  • ip proto protokol
    • Je pravda, ak je paket IP paketom (pozri ip (4P)) typu protokolu protokol . Protokol môže byť číslo alebo jedno z mien ICMP , icmp6 , IGMP , IGRP , pim , ah , esp , VRRP , udp , alebo tcp , Všimnite si, že identifikátory tcp , udp , a ICMP sú tiež kľúčové slová a musia uniknúť pomocou spätného lomka (), ktorý je v C-shelle. Všimnite si, že tento primitív nesleduje reťazec hlavičky protokolu.
  • ip6 proto protokol
    • Je pravda, ak je paketom paket IPv6 typu protokolu protokol , Všimnite si, že tento primitív nesleduje reťazec hlavičky protokolu.
  • protokol ip6 protokol
    • Je pravda, ak je paket paketom IPv6 a obsahuje hlavičku protokolu s typom protokol v protokole hlavičky reťazca. Napríklad, ipch6 protchain 6 zodpovedá akémukoľvek paketu protokolu IPv6 s hlavičkou protokolu TCP v reťazci hlavičky protokolu. Paket môže obsahovať napríklad záhlavie autentifikácie, záhlavie smerovania alebo záhlavie voľby hop-by-hop medzi záhlavím IPv6 a hlavičkou TCP. BPF kód vysielaný týmto primitívom je zložitý a nedá sa optimalizovať kódom optimalizácie BPF tcpdump , takže to môže byť trochu pomalé.
  • ip protochain protokol
    • Rovnocenné sprotokol ip6 protokol , ale je to pre IPv4.
  • éterového vysielania
    • Je pravda, ak je paket Ethernetový vysielací paket. éter kľúčové slovo je voliteľné.
  • ip vysielanie
    • Je pravda, ak je paket vysielaný paketom IP. Kontroluje tak konvencie vysielania všetkých núl a all-one a vyhľadáva lokálnu masku podsiete.
  • éter multicast
    • Je pravda, ak je paket paketom rozosielania siete Ethernet. éter kľúčové slovo je voliteľné. Toto je skratka pre "éter 0 & 1! = 0'.
  • IP multicast
    • Je pravda, ak je paket IP paketom multicast.
  • IP6 multicast
    • Je pravda, ak je paket paketom multicast IPv6.
  • éterová látka protokol
    • Je pravda, ak je paket typu éteru protokol . Protokol môže byť číslo alebo jedno z mien ip , IP6 , arp , rarp , rozhovor , AARP , decnet , sca , lat , mopdl , moprc , iso , stp , IPX , alebo NetBEUI , Upozorňujeme, že tieto identifikátory sú tiež kľúčové slová a musia uniknúť spätným lomikom ().
    • V prípade FDDI (napr.fddi protokol arp') a Token Ring (napr.tr protokol arp'), pre väčšinu protokolov je identifikácia protokolu z 802.2 hlavičky logického riadenia (LLC), ktorá je zvyčajne navrstvená nad hlavičkou FDDI alebo Token Ring.
    • Pri filtrovaní väčšiny identifikátorov protokolu na FDDI alebo Token Ring, tcpdump kontroluje len pole ID protokolu v hlavičke LLC v tzv. SNAP formáte s identifikátorom organizačnej jednotky (OUI) 0x000000 pre zapuzdrený Ethernet; nekontroluje, či je paket vo formáte SNAP s OUI 0x000000.
    • Výnimky sú iso , pre ktoré kontroluje polia DSAP (Access Point Access Point) a SSAP (Source Service Access Point) políčka hlavičky LLC, stp a NetBEUI , kde kontroluje DSAP hlavičky LLC a rozhovor , kde kontroluje balík SNAP s OUI 0x080007 a typom Appletalk.
    • V prípade siete Ethernet, tcpdump kontroluje pole typu Ethernet pre väčšinu týchto protokolov; výnimky sú iso , miazga , a NetBEUI , pre ktoré kontroluje rámček 802,3 a potom kontroluje záhlavie LLC tak, ako to robí pre FDDI a Token Ring; rozhovor , kde kontroluje oba príkazy typu Appletalk v rámčeku Ethernet a pre paket formátu SNAP, ako to robia pre FDDI a Token Ring; AARP , kde kontroluje typ príkazu Appletalk ARP v rámčeku Ethernet alebo 802.2 rám SNAP s OUI 0x000000; a IPX , kde kontroluje typ IPX v rámčeku Ethernet, IPX DSAP v hlavičke LLC, 802.3 bez zapuzdrenia hlavičky LLC IPX a IPX etype v ráme SNAP.
  • decnet src hostiteľ
    • Je pravda, ak je zdrojová adresa DECNET hostiteľ , čo môže byť adresa formulára "10.123" alebo názov hostiteľa DECNET. Podpora názvu hostiteľa DECNET je k dispozícii iba v systémoch Ultrix, ktoré sú nakonfigurované na spustenie programu DECNET.
  • decnet dst hostiteľ
    • Je pravda, ak je cieľová adresa DECNET hostiteľ .
  • deknet hostiteľa hostiteľ
    • Je to pravda, ak je buď zdrojom DECNET alebo cieľovou adresou hostiteľ .
  • ip, IP6, arp, rarp, rozhovor, AARP, decnet, iso, stp, IPX, NetBEUI
    • Skratky pre éterová látka p kde p je jedným z vyššie uvedených protokolov.
  • lat, moprc, mopdl
    • Skratky pre éterová látka p kde p je jedným z vyššie uvedených protokolov. Poznač si to tcpdump momentálne nevie, ako analyzovať tieto protokoly.
  • vlan Vlan_id
    • Je pravda, ak je paket VLAN paketom IEEE 802.1Q. ak Vlan_id je zadané, platí iba vtedy, ak má daný paket vlan_id , Všimnite si, že prvývlan kľúčové slovo sa vyskytlo v vyjadrenie zmení dekódovacie offsety na zostávajúci vyjadrenie za predpokladu, že paket je paket VLAN.
  • tcp, udp, ICMP
    • Skratky pre ip proto p alebo ip6 proto p kde p je jedným z vyššie uvedených protokolov.
  • iso proto protokol
    • Je pravda, ak je paket OSI paketom typu protokolu protokol . Protokol môže byť číslo alebo jedno z mien CLNP , ESIS , alebo isis .
  • CLNP, ESIS, isis
    • Skratky pre iso proto p kde p je jedným z vyššie uvedených protokolov. Poznač si to tcpdump robí neúplnú prácu pri analýze týchto protokolov.
  • expr relop expr
    • Je pravda, ak existuje vzťah, kde relop je jedna z>, <,> =, <=, =,! =, a expr je aritmetický výraz zložený z celočíselných konštánt (vyjadrených v štandardnej syntaxe C), normálnych binárnych operátorov +, -, *, /, &, |, operátorov s dĺžkou a špeciálnych paketových dát. Ak chcete pristupovať k dátam v pakte, použite nasledujúcu syntax: proto expr: veľkosť .

preto je jeden zéter, FDDI, tr, ppp, pošmyknutia, odkaz, ip, arp, rarp, tcp, udp, ICMP, alebo IP6, a označuje vrstvu protokolu pre operáciu indexu (éter, FDDI, tr, ppp, pošmyknutia, aodkaz všetky odkazujú na vrstvu odkazu). Poznač si to tcp, udp a ostatné typy protokolov vyššieho typu sa vzťahujú iba na protokol IPv4, nie na protokol IPv6 (v budúcnosti to bude opravené). Odsadenie bajtov vzhľadom na označenú vrstvu protokolu je dané hodnotou expr . veľkosť je nepovinné a označuje počet bajtov v oblasti záujmu; môže to byť jeden, dva alebo štyri a predvolené na jeden. Operátor dĺžky označený kľúčovým slovomľan, udáva dĺžku paketu.

Napríklad, 'éter 0 & 1! = 0'úlovky všetky multicast prevádzky. Výraz 'ip 0 & 0xf! = 5'chytí všetky IP pakety s možnosťami. Výraz 'ip 6: 2 & 0x1fff = 0"chytí iba nefragmentované datagramy a nulovú fragmentáciu fragmentovaných datagramov. Táto kontrola sa implicitne uplatňuje natcp audp indexové operácie. Napríklad, tcp 0 vždy znamená prvý bajt TCP hlavička , a nikdy neznamená prvý bajt fragmentu zasahujúceho.

Niektoré odchýlky a hodnoty poľa môžu byť vyjadrené skôr ako mená než ako číselné hodnoty. K dispozícii sú nasledujúce posuny polí v hlavičke protokolu: icmptype (Pole typu ICMP),icmpcode (Pole ICMP kód) atcpflags (Pole TCP príznakov).

K dispozícii sú nasledujúce hodnoty polí typu ICMP:ICMP-echoreply, ICMP-unreach, ICMP-sourcequench, ICMP presmerovanie, ICMP echo, ICMP-routeradvert, ICMP-routersolicit, ICMP-timxceed, ICMP-paramprob, ICMP-tstamp, ICMP-tstampreply, ICMP-IREQ, ICMP-ireqreply, ICMP-maskreq, ICMP-maskreply.

K dispozícii sú nasledujúce hodnoty polí TCP príznakov:tcp-fin, tcp-syn, tcp-rst, tcp-Push, tcp-Push, tcp-ack, tcp-URG.

Primitivy sa môžu kombinovať pomocou niektorej z týchto možností:

  • Začiatočná skupina primitivov a operátorov (zátvorky sú špeciálne pre Shell a musia uniknúť)
  • Negation ("!"alebo"nie')
  • Zlučovanie ("&&"alebo"a')
  • Striedanie ("||"alebo"alebo')

Negácia má najvyššiu prioritu. Striedanie a zlúčenie majú rovnakú prioritu a pridružujú sa zľava doprava. Všimnite si to explicitnea žetóny, nie juxtapozícia, sú potrebné pre zlučovanie.

Ak je identifikátor uvedený bez kľúčového slova, predpokladá sa najnovšie kľúčové slovo. Napríklad, nie hostiteľ vs a eso je skratka pre nie hostiteľské a hostiteľské eso, Nemalo by sa to však zamieňať nie (hostiteľské alebo eso).

Argumenty výrazov môžu byť odovzdané tcpdump ako jeden argument alebo ako viacero argumentov, podľa toho, čo je výhodnejšie. Vo všeobecnosti, ak výraz obsahuje Shell metacharacters, je ľahšie ju odovzdať ako jediný, citovaný argument. Viaceré argumenty sú skombinované s medzerami pred analýzou.

Tcpdump Príklady

tcpdump hosťujúci západ slnka

Vyššie uvedený príkaz tcpdump sa používa na vytlačenie všetkých paketov, ktoré prichádzajú z alebo odchádzajú západ slnka.

tcpdump hosť helios a (horúce alebo eso )

Tento príklad tcpdump vytlačí medzi nimi dopravu Helios a buď horúco alebo eso.

tcpdump ip hostiteľa ace a nie helios

Tento príkaz tcpdump môžete použiť na vytlačenie všetkých paketov IP eso a akýkoľvek hostiteľ okrem Helios.

tcpdump net ucb-éter

Vo vyššie uvedenom príklade tcpdump vytlačí všetku návštevnosť medzi miestnymi hostiteľmi a hostiteľmi v Berkeley.

tcpdump 'a (port ftp alebo ftp-data)'

Tento príklad ďalšieho príkazu tcpdump sa používa na tlač celého FTP prenosu cez internetovú bránu šnupe , Všimnite si, že výraz je citovaný, aby sa zabránilo chybnému interpretovaniu zátvoriek.

tcpdump ip a nie čisté LocalNet

Vo vyššie uvedenom príklade tcpdump príkaz vytlačí návštevnosť, ktorá nie je získaná ani určená pre miestne hostiteľské počítače.

tcpdump 'tcp tcpflags & (tcp-syn | tcp-fin)! = 0 a nie src a dst net LocalNet '

Pre vyššie uvedený príklad tcpdump sa príkaz používa na vytlačenie začiatočného a koncového paketu (pakety SYN a FIN) každej konverzácie TCP, ktorá zahŕňa nelineárny hostiteľ.

tcpdump 'snap a ip 2: 2> 576'

Vyššie uvedený príkaz vytlačí IP pakety dlhšie ako 576 bajtov poslaných cez bránu šnupe.

tcpdump éter 0 & 1 = 0 a ip 16> = 224 '

Vyššie uvedený príkaz tcpdump vytlačí pakety IP vysielania alebo multicast, ktoré boli nie odosielané cez vysielanie cez Ethernet alebo multicast.

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

V tomto poslednom príklade príkazu tcpdump príkaz vytlačí všetky pakety ICMP, ktoré nie sú žiadosťami alebo odpoveďami echo (t. J. Nie ping pakety).

Výstupný formát Tcpdump

Výstup z tcpdump je protokol závislý. Nasleduje stručný opis a príklady väčšiny formátov.

Hlavičky úrovne prepojenia, Ak je zadaná voľba "-e", vytlačí sa hlavička úrovne odkazu. V sieťach Ethernet sa vytlačia zdrojové a cieľové adresy, protokol a dĺžka paketu.

Na sieťach FDDI spôsobuje voľba "-e" tcpdump vytlačiť pole "riadenie rámca", zdrojové a cieľové adresy a dĺžku paketu. (Normálne pakety (napríklad tie, ktoré obsahujú IP datagramy) sú pakety "async" s prioritnou hodnotou medzi 0 a 7: napríklad "async4'. Predpokladá sa, že takéto pakety obsahujú paket 802.2 Logic Link Control (LLC); hlavička LLC sa vytlačí, ak je nie dátový paket ISO alebo takzvaný SNAP paket.

Na sieťach Token Ring spôsobuje voľba "-e" tcpdump vytlačiť polia "kontrola prístupu" a "riadenie rámca", zdrojové a cieľové adresy a dĺžku paketu. Podobne ako v prípade sietí FDDI sa predpokladá, že pakety obsahujú paket LLC. Bez ohľadu na to, či je špecifikovaná voľba "-e" alebo nie, informácie o smerovaní zdroja sú vytlačené pre pakety smerované zdrojmi.

(N.B .: Nasledujúci popis predpokladá znalosť SLIP kompresného algoritmu opísaného v RFC-1144.)

Na odkazoch SLIP sa vytlačia smerové svetlá ("I" pre prichádzajúce, "O" pre odchádzajúce), typ paketu a informácie o kompresii. Typ paketu sa vytlačí ako prvý. Tri typy sú ip , utcp , a CTCP , Nie sú vytlačené žiadne ďalšie informácie o prepojení ip pakety. V prípade paketov TCP sa identifikátor spojenia vytlačí podľa typu. Ak je paket komprimovaný, vytiahne sa jeho zakódovaná hlavička. Špeciálne prípady sú vytlačené ako* S + n a* SA + n , kde n je množstvo, ktorým sa zmenilo poradové číslo (alebo poradové číslo a ack). Ak to nie je špeciálny prípad, tlačia sa nula alebo viac zmien. Zmena je označená symbolom U (urgentný ukazovateľ), W (okno), A (ack), S (poradové číslo) a I (ID paketu), za ktorým nasleduje delta (+ n alebo -n) (= N). Nakoniec sa vytlačí množstvo dát v paketovej a stlačenej hlavičke.

Napríklad nasledujúci riadok zobrazuje odchádzajúci komprimovaný paket TCP s implicitným identifikátorom spojenia; akč sa zmenil o 6, poradové číslo o 49 a ID paketu o 6; existujú 3 bajty dát a 6 bajtov komprimovanej hlavičky:

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

Balíky typu Arp / rarp, Výstup Arp / rarp zobrazuje typ požiadavky a jej argumenty. Formát je určený na vysvetlenie. Tu je krátka vzorka odobratá od začiatku 'rlogin' z hostiteľa rtsg hostiť csam :

arp, ktorý má csam tell rtsgarp odpoveď csam je v CSAM

Prvý riadok hovorí, že rtsg poslal arp paket s dotazom na ethernetovú adresu internetového hostiteľa csam. Csam odpovedá adresou Ethernet (v tomto príklade sú ethernetové adresy označené malými písmenami a internetovými adresami).

Toto by vyzeralo menej redundantné, ak by sme to urobili tcpdump -n :

arp who-128.3.254.6 hovorí 128.3.254.68arp odpoveď 128.3.254.6 je na 02: 07: 01: 00: 01: c4

Keby sme to urobili tcpdump -e , skutočnosť, že prvý paket je vysielaný a druhý je bod-to-point by bol viditeľný:

RTSG Broadcast 0806 64: arp, ktorý má csam tell rtsgCSAM RTSG 0806 64: arp odpoveď csam je v CSAM

Pre prvý paket sa hovorí, že zdrojová adresa siete Ethernet je RTSG, cieľová adresa je adresa Ethernet, typové pole obsahuje hex 0806 (typ ETHER_ARP) a celková dĺžka bola 64 bajtov.

TCP pakety (N.B.: Nasledujúci popis predpokladá oboznámenie sa s protokolom TCP popísaným v RFC-793. Ak nie ste oboznámení s protokolom, ani tento popis, ani tcpdump nebudú pre vás veľa dôležité) , Všeobecný formát linky protokolu tcp je:

src> dst: Flags data-seqno ack okno naliehavé možnosti

src a dst sú zdrojové a cieľové adresy IP a porty. flags sú nejakou kombináciou S (SYN), F (FIN), P (PUSH) alebo R (RST) alebo jednej "." (žiadne vlajky). Data-seqno opisuje časť sekvenčného priestoru, na ktorú sa vzťahujú údaje v tomto pakte (pozri príklad nižšie). ack je poradové číslo ďalších údajov, ktoré sa očakávajú v inom smere na tomto pripojení. okno je počet bajtov prijímaného vyrovnávacieho priestoru, ktorý je k dispozícii v druhom smere na tomto pripojení. Urg indikuje, že v pakte sú "naliehavé" dáta. možnosti sú možnosti tcp uzavreté v uhlových zátvorkách (napr. ).

Src, dst, a flags sú vždy prítomné. Ostatné polia závisia od obsahu hlavičky protokolov tcp paketu a sú výstupné len v prípade potreby.

Tu je úvodná časť rloginu z hostiteľa rtsg hostiť csam .

rtsg.1023> csam.login: S 768512: 768512 (0) vyhrať 4096 csam.login> rtsg.1023: S 947648: 947648 (0) ack 768513 vyhrať 4096 rtsg.1023> csam.login:. ack 1 vyhrávať 4096rtsg.1023> csam.login: P 1: 2 (1) 1 víťazstvo 4096csam.login> rtsg.1023:. ack 2 vyhrať 4096rtsg.1023> csam.login: P 2:21 (19) akcia 1 vyhrať 4096csam.login> rtsg.1023: P 1: 2 (1) ack 21 vyhrať 4077csam.login> rtsg.1023: P 2: 3 (1) ack 21 vyhrať 4077 urg 1csam.login> rtsg.1023: P 3: 4 (1) ack 21 vyhrať 4077 urg 1

Prvý riadok hovorí, že tcp port 1023 na rtsg poslal paket do portu Prihlásiť sa na csam.S znamená, že SYN vlajka bola nastavená. Číslo sekvencie paketu bolo 768512 a neobsahovalo žiadne údaje. (Označenie je "prvé: posledné (nbytes)", čo znamená "poradové čísla najprv až po nezahrnutie posledná ktorý je nbytes bajty užívateľských údajov ".) Neexistovala žiadna záložka, ktorú by bolo možné získať, dostupné okienko prijímania bolo 4096 bajtov a voliteľná veľkosť maximálneho segmentu vyžadovala mss 1024 bajtov.

Csam odpovedá s podobným paketom okrem toho, že obsahuje akvizíciu pre SYN pre rtsg. Rtsg potom acks csam SYN. "." znamená, že neboli nastavené žiadne vlajky. Paket neobsahoval žiadne údaje, takže neexistuje žiadne poradové číslo. Všimnite si, že poradové číslo ack je malé celé číslo (1). Prvý krát tcpdump vidí tcp 'konverzáciu', vytlačí poradové číslo z paketu. V nasledujúcich paketoch konverzácie sa vytlačí rozdiel medzi poradovým číslom súčasného paketu a týmto počiatočným poradovým číslom. To znamená, že poradové čísla po prvom môžu byť interpretované ako relativné bajtové pozície v dátovom toku konverzácie (s prvým dátovým bajtom v každom smere je "1"). '-S' túto funkciu prepíše, čo spôsobí výstupné čísla pôvodných sekvencií.

Na šiestom riadku rtsg posiela csam 19 bajtov dát (bajty 2 až 20 v rtsg -> csam strane konverzácie). Príznak PUSH je nastavený v pakte. Na siedmej línii, csam hovorí, že je prijatá dáta odoslaná rtsg až do, ale bez byte 21. Väčšina z týchto dát je zjavne sedí v socket vyrovnávacej pamäte, pretože csam prijímať okno má dostal 19 bajtov menšie. Csam tiež posiela jeden bajt dát do rtsg v tomto balíku. Na ôsmej a deviatej línii csam pošle dva bajty naliehavých, vytlačených dát na rtsg.

Ak bol snímok dostatočne malý tcpdump nezachytila ​​úplnú hlavičku protokolu TCP, interpretuje toľko hlavičky ako je možné a potom hlási " tcp "označiť zvyšok nemožno interpretovať. Ak hlavička obsahuje falošnú možnosť (jedna s dĺžkou, ktorá je buď príliš malá, alebo za koniec záhlavia), tcpdump hlási to ako " zlé opt a nevykladá žiadne ďalšie možnosti (pretože nie je možné povedať, kde začínajú). Ak dĺžka hlavičky naznačuje, že existujú možnosti, ale dĺžka IP datagramu nie je dostatočne dlhá na to, aby sa možnosti skutočne nachádzali, tcpdump hlási to ako " zlá hdr dĺžka ''.

Zachyťte pakety s konkrétnymi kombináciami vlajok, V sekcii riadiacich bitov v hlavičke TCP je osem bitov:

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

Predpokladajme, že chceme sledovať pakety použité pri vytváraní TCP spojenia. Pripomeňme si, že pri inicializácii nového pripojenia protokol TCP používa trojcestný protokol podávania ruky; sekvencia spojenia vzhľadom na riadiace bity TCP je:

  1. Volajúci pošle SYN.
  2. Príjemca odpovie SYN, ACK.
  3. Volajúci vyšle ACK.

Teraz máme záujem o zachytenie paketov, ktoré majú len sadu bitov SYN (krok 1). Všimnite si, že nechceme balíky z kroku 2 (SYN-ACK), len jednoduché počiatočné SYN. Potrebujeme správny výraz filtra tcpdump .

Vyvolanie štruktúry hlavičky TCP bez možností:

0 15 31-----------------------------------------------------------------| zdrojový port | cieľový port |-----------------------------------------------------------------| poradové číslo |-----------------------------------------------------------------| číslo potvrdenia-----------------------------------------------------------------| HL | rsvd | C | E | U | A | P | R | S | F | veľkosť okna-----------------------------------------------------------------| Kontrolný súčet naliehavý ukazovateľ-----------------------------------------------------------------

Záhlavie TCP zvyčajne obsahuje 20 oktetov údajov, pokiaľ nie sú k dispozícii možnosti. Prvý riadok grafu obsahuje oktety 0-3, druhý riadok zobrazuje oktety 4-7 atď.

Začínajúc počítať s 0, príslušné bity riadenia TCP sú obsiahnuté v oktete 13:

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

Pozrime sa bližšie na oktet nie. 13:

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

Toto sú bity riadenia TCP, ktoré nás zaujímajú. Očíslovali sme bit v tomto oktete od 0 do 7, zľava doľava, takže bit PSH je bit číslo 3, zatiaľ čo bit URG je číslo 5.

Pripomeňme si, že chceme zachytiť pakety len so súbormi SYN. Pozrime sa, čo sa stane s oktetou 13, ak príde TCP datagrama s nastaveným bitom SYN v hlavičke:

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

Pri pohľade na sekciu riadiacich bitov vidíme, že je nastavené len číslo 1 (SYN).

Za predpokladu, že oktetové číslo 13 je 8-bitové nepodpísané celé číslo v poradí sieťového bytu, binárna hodnota tohto oktetu je:

00000010

Jeho desatinné vyjadrenie 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

Už sme takmer hotoví, pretože teraz vieme, že ak je nastavený iba SYN, hodnota 13 oktetov v hlavičke TCP, keď je interpretovaná ako 8-bitové nepodpísané celé číslo v poradí sieťového bytu, musí byť presne 2.

Tento vzťah sa môže vyjadriť ako

tcp 13 == 2

Tento výraz môžeme použiť ako filter tcpdump aby ste mohli sledovať pakety, ktoré majú iba SYN nastavenú:

tcpdump -i xl0 tcp 13 == 2

Výraz hovorí "nechajte 13. oktet TCP datagramu desatinnú hodnotu 2", čo je presne to, čo chceme.

Teraz predpokladajme, že potrebujeme zachytiť SYN pakety, ale je nám jedno, či je súčasne nastavený ACK alebo iný riadiaci bit TCP. Pozrite sa, čo sa stane s oktetom 13, keď príde TCP datagram s príkazom SYN-ACK:

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

Bity 1 a 4 sú teraz nastavené v 13. oktete. Binárna hodnota oktetu 13 je:

00010010

ktorý sa prekladá na desatinnú čiarku:

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

Nemôžeme jednoducho použiť 'tcp 13 == 18' v tcpdump filter výraz, pretože to by vybral iba tie pakety, ktoré majú SYN-ACK nastaviť, ale nie tie, ktoré majú len SYN nastaviť. Pamätajte, že je nám jedno, či je ACK alebo iný riadiaci bit nastavený tak dlho, ako je nastavené SYN.

Aby sme dosiahli náš cieľ, potrebujeme logicky a binárnu hodnotu oktetu 13 s nejakou inou hodnotou na zachovanie SYN bitu. Vieme, že chceme, aby bol SYN nastavený v každom prípade, takže logicky A bude hodnota v 13. oktete s binárnou hodnotou SYN:

00010010 SYN-ACK 00000010 SYN A 00000010 (chceme SYN) A 00000010 (chceme SYN) -------- -------- = 00000010 = 00000010

Vidíme, že táto operácia AND prináša rovnaký výsledok bez ohľadu na to, či je nastavený ACK alebo iný riadiaci bit TCP. Desatinné zobrazenie hodnoty AND, ako aj výsledok tejto operácie je 2 (binárne 00000010), takže vieme, že pre pakety s nastavením SYN musí platiť nasledujúci vzťah:

((hodnota octetu 13) A (2)) == (2)

To nás poukazuje na tcpdump filter výraz

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

Všimnite si, že by ste mali používať jednoduché úvodzovky alebo spätné lomítko, aby ste skryli špeciálny znak AND ('&').

UDP pakety. Formát UDP je ilustrovaný týmto paketom rwho:

aktinide.who> vysielanie.who: udp 84

To hovorí, že prístav kto na hostiteľovi aktinidov poslal udg datagram do portu kto na hostiteľovi vysielania , internetovú adresu vysielania. Paket obsahoval 84 bajtov používateľských údajov.

Niektoré služby UDP sa rozpoznávajú (z čísla zdroja alebo cieľového portu) a vytlačia sa informácie o protokole vyššej úrovne, najmä žiadosti o služby doménového mena (RFC-1034/1035) a volania Sun RPC (RFC-1050) na NFS.

Žiadosti o názov servera UDP (N.B.: Nasledujúci popis predpokladá oboznámenie sa s protokolom Domain Service popísaným v RFC-1035.) Ak nie ste oboznámení s protokolom, nasledujúci popis nebude mať zmysel.)

Žiadosti o názvy serverov sú naformátované ako:

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

Hostiteľ h2opolo spýtal sa server domény Helios pre záznam adresy (qtype = A) priradený k názvu ucbvax.berkeley.edu. Identifikátor dotazu bol '3'. Znak "+" označuje znak požadovaná rekurzia vlajka bola nastavená. Dĺžka dotazu bola 37 bajtov, bez záhlaví protokolov UDP a IP. Operácia dotazu bola normálna, Dopyt , takže pole op bolo vynechané. Ak by to bolo niečo iné, bolo by to vytlačené medzi "3" a "+". Podobne, qclass bol normálny, C_IN , a vynechal. Akákoľvek iná trieda by bola vytlačená hneď po "A".

Niektoré anomálie sú skontrolované a môžu mať za následok zaradenie ďalších polí do hranatých zátvoriek: Ak dotaz obsahuje odpoveď, záznamy autority alebo ďalšie záznamy, ancount , nscount , alebo arcount sú vytlačené ako " n a "," n n "alebo" n au kde n je vhodný počet. Ak je nastavený ktorýkoľvek z bitov odpovede (AA, RA alebo rcode) alebo ktorýkoľvek z bitov `musia byť nulové 'sú nastavené v bajtoch dva a tri,` b2 & 3 = X ", kde X je hexadecimálna hodnota záhlavia dvoch a troch.

Odpovede servera názvov servera UDP. Odpovede mena servera sú naformátované ako:

src> dst: id op rcode príznaky a / n / au typ dát triedy (len) helios.domena> h2opolo.1538: 3 3/3/7 A 128.32.137.3 (273)helios.domena> h2opolo.1537: 2 NXDomain * 0/1/0 (97)

V prvom príklade, Helios odpovedá na otázku č. 3 z h2opolo s troma záznamami odpovedí, troma záznamami mena servera a siedmimi ďalšími záznamami. Prvým záznamom odpovedí je typ A (adresa) a jeho údajmi je internetová adresa 128.32.137.3. Celková veľkosť odpovede bola 273 bajtov, s výnimkou hlavičiek UDP a IP. Opis (dotaz) a kód odpovede (NoError) boli vynechané, rovnako ako trieda (C_IN) záznamu A.

V druhom príklade, Helios odpovedá na dotaz 2 s kódom odpovede neexistujúcej domény (NXDomain) bez odpovedí, jedného mena servera a žiadnych záznamov autority. Znak "*" označuje, že autoritatívna odpoveď bit bol nastavený. Keďže neboli k dispozícii žiadne odpovede, nebol vytlačený žiadny typ, trieda ani údaje.

Ďalšie znaky vlajky, ktoré sa môžu zobraziť, sú '-' (k dispozícii rekurzia, RA, nie množina) a '|' (skrátená správa, TC, nastavenie). Ak sekcia "otázka" neobsahuje presne jeden záznam, " n q ".

Upozorňujeme, že žiadosti o názov servera a odpovede majú tendenciu byť veľké a predvolené snaplen 68 bajtov nemusí zachytiť dostatok paketu na tlač. Použi-s flag, aby ste zvýšili rýchlosť, ak potrebujete vážne preskúmať návštevnosť servera s menom. '-s 128"pre mňa dobre funguje.

Dekódovanie SMB / CIFS. tcpdump zahŕňa pomerne rozsiahle dekódovanie SMB / CIFS / NBT pre údaje o UDP / 137, UDP / 138 a TCP / 139. Niektoré primitívne dekódovanie údajov IPX a NetBEUI SMB sa tiež vykonáva.