Skip to main content

Tcpdump: pavyzdžiai, parinktys ir dar daugiau

Anonim

Tcpdump - tai komanda, naudojama įvairiose "Linux" operacinėse sistemose (OS), kurios renka TCP / IP paketus per tinklo plokštę. Panašiai kaip paketų šnipinėjimo įrankis, tcpdump gali ne tik analizuoti tinklo srautą, bet ir išsaugoti jį failo atmintyje.

Skirtingai nuo kai kurių operacinės sistemos numatytųjų komandų, galite pastebėti, kad negalite naudoti tcpdump, nes ji nėra įdiegta. Norėdami įdiegti tcpdump, vykdykite apt-get install tcpdump arba yum įdiegti tcpdump, priklausomai nuo jūsų OS.

Kaip veikia Tcpdump

Tcpdump spausdina paketų antraštes tinklo sąsajoje, kuri atitinka Būlio išraiška . Jis taip pat gali būti paleistas su-w vėliavėlę, dėl kurios jis gali išsaugoti paketinių duomenų failą vėlesnei analizei ir (arba) su-r vėliavėlę, todėl ją galima nuskaityti iš išsaugotos paketų failo, o ne skaityti paketus iš tinklo sąsajos. Visais atvejais tik paketai atitinka išraiška bus apdorota tcpdump .

Tcpdump bus, jei nebus paleisti su-c vėliavą, toliau užfiksuoti paketus, kol jis bus pertrauktas SIGINT signalu (sugeneruoto, pavyzdžiui, įvedus pertraukimo simbolį, paprastai Ctrl + C) arba SIGTERM signalas (paprastai generuojamas sunužudyti(1) komanda); jei paleisti su-c vėliava, ji užfiksuoja paketus, kol jis bus pertrauktas SIGINT ar SIGTERM signalu arba nurodytas paketų skaičius buvo apdorotas.

Pirmiau minėti jungikliai išsamiau paaiškinti šiame straipsnyje.

Kada tcpdump baigia fiksuoti paketus, praneša apie:

  • Paketai, "gauti pagal filtrą".
    • Šios reikšmės priklauso nuo OS, kuriame veikia tcpdump , o galbūt taip, kaip OS buvo sukonfigūruotas. Jei komandų eilutėje buvo nurodytas filtras, kai kuriose operacinėse sistemose jis priskiriamas paketams, neatsižvelgiant į tai, ar jie buvo suderinti su filtro išraiškomis, ir kitose programose skaičiuojami tik paketai, kurie buvo suderinti su filtro išraiškos ir kurie buvo apdoroti tcpdump.
  • Paketai "sumažėjo branduolio".
    • Tai yra paketų, kurie buvo nutrūkę dėl buferinės erdvės stokos, skaičius paketų surinkimo mechanizme OS, kuriame tcpdump veikia, jei OS praneša šią informaciją programoms. Jei ne, tai bus nurodyta kaip 0.

SIGINFO signalą palaikančiose platformose, tokiose kaip dauguma BSD (Berkeley programinės įrangos paskirstymo), ji praneša apie šiuos skaičius, kai gauna SIGINFO signalą (sugeneruotą, pavyzdžiui, įvesdami simbolį "statusas", paprastai Ctrl + T) ir toliau užfiksuoti paketus.

Tcpdump suderinamumas

Skaitydami paketus iš tinklo sąsajos su komanda tcpdump, gali tekti turėti tam tikras privilegijas ( skaitymas išsaugotam paketiniam failui tokios privilegijos nereikalingos):

  • SunOS 3.x arba 4.x su NIT arba BPF: Turite skaityti prieigą prie / dev / nit arba dev / bpf * .
  • Solaris su DLPI: Turite turėti skaitymo / rašymo prieigą prie tinklo pseudo įrenginio, pvz., / dev / le . Vis dėlto bent jau kai kuriose "Solaris" versijose to nepakanka tcpdump sugauti promiscuous režimu; tuose Solaris versijose turite būti root, arba tcpdump turi būti įdiegta setuid root, kad būtų galima užfiksuoti promiscuous režimu. Atkreipkite dėmesį, kad daugelyje (galbūt visose) sąsajose, jei neužfiksuosite beprotišku režimu, nematysite jokių išeinančių paketų, taigi surinkimas nebus atliktas nuoseklaus režimo metu, gali būti labai nepatogus.
  • HP-UX su DLPI: Jūs turite būti šaknis arba tcpdump turi būti įdiegta setuid root.
  • IRIX su snoop: Jūs turite būti šaknis arba tcpdump turi būti įdiegta setuid root.
  • Linux: Jūs turite būti šaknis arba tcpdump turi būti įdiegta setuid root.
  • Ultrix ir Digital UNIX / Tru64 UNIX: Bet kuris vartotojas gali užfiksuoti tinklo srautą su tcpdump . Tačiau nė vienas vartotojas (netgi net super vartotojas) negali fiksuoti sąveikaujančioje sąsajos režime, nebent super vartotojas įjungė šiam sąsajui veikiantį nesąmoningą režimą, naudodamas pfconfig (8), o nė vienas vartotojas (netgi net super vartotojas) negali užfiksuoti vieno langelio srauto, gauto ar išsiųstas į sąsają, išskyrus atvejus, kai super vartotojas įjungė šios sąsajos kopijavimo režimą, naudodamas pfconfig , taip naudinga paketų surinkimas ant sąsajos tikriausiai reikalauja, kad toje sąsajoje būtų įjungtas arba režimas "promiscuous", "copy-all-mode" arba abiejų operacijų režimai.
  • BSD: Turite skaityti prieigą prie / dev / bpf * .

Tcpdump komandos sintaksė

Kaip ir visos kompiuterio komandos, komanda tcpdump tinkamai veikia tik tuomet, jei sintaksė yra teisinga:

tcpdump -adflnNOpqRStuvxX -c suskaičiuoti

-C failo dydis -F failas

-i sąsaja -m modulis -r failas

-s snaplen -T tipo -U Vartotojas -w failas

-E algo: paslaptis išraiška

Tcpdump komandų parinktys

Tai visos galimybės, kurias galite naudoti su komanda tcpdump:

  • -a: Bando konvertuoti tinklo ir transliacijų adresus į vardus.
  • -c: Išeikite po jo gavimo suskaičiuoti paketai.
  • -C: Prieš rašydami žaliavinį paketą į failą, patikrinkite, ar šiuo metu failas yra didesnis nei failo dydis ir jei taip, uždarykite esamą išsaugojimo failą ir atidarykite naują.Išsaugoti failai po pirmojo išsaugojimo failo turės pavadinimą, nurodytą su-w vėliava su skaičiumi po jo, pradedant nuo 2 ir tęsiant aukštyn. Vienetai failo dydis yra milijonai baitų (1 000 000 baitų, o ne 1,048,576 baitų).
  • -d: Išmeskite surinktą paketų atitikimo kodą į skaitomą formą į standartinę išvesties ir sustojimo funkciją.
  • -dd: Nukopijuokite paketų atitikimo kodą kaipC programos fragmentas.
  • -ddd: Nukopijuokite paketų atitikimo kodą dešimtainiais skaičiais (prieš tai skaičiuojant).
  • -e: Spausdinkite nuorodų lygio antraštę kiekvienoje iškelties eilutėje.
  • -E: Naudoti algo: paslaptis iššifruoti IPsec ESP paketus. Galimi algoritmaides-cbc, 3des-cbc, Blowfish-CBC, rc3-cbc, cast128-cbc, arbanė vienas. Numatytasis yrades-cbc. Gebėjimas iššifruoti paketus yra tik tada, jei tcpdump buvo sudaryta su įjungta kriptografija. paslaptis Ascii tekstas ESP slaptam raktui. Šiuo metu negalime imtis savavališkos dvejetainės vertės. Ši parinktis priima RFC2406 ESP, o ne RFC1827 ESP. Ši parinktis yra tik derinimo tikslams, o šio pasirinkimo naudojimas su tikrai "slaptu" raktu yra atgrasomas. Pateikdami IPsec slaptą raktą į komandų eilutę, galite jį matyti kitiems, per Ps (1) ir kitomis progomis.
  • -f: Spausdinti "užsienio" internetinius adresus skaičiais, o ne simboliškai (ši galimybė yra skirta rimtai sugadinti smegenis "Sun" serverio serveryje - paprastai ji nuolat kyla iš nevietinių interneto numerių vertimo).
  • -F: Naudoti failas kaip filtro išraiškos įvestis. Papildoma išraiška komandinėje eilutėje ignoruojama.
  • -i: Klausykis sąsaja . Jei nenurodyta, tcpdump ieško sistemos sąsajos sąrašo mažiausiai sunumeruotoje, sukonfigūruotoje sąsajoje (išskyrus kilpą). Kaklaraiščiai sulaužomi, pasirenkant kuo anksčiau. Linux sistemose, turinčiose 2.2 arba vėlesnius branduolius, an sąsaja "bet kurio" argumentas gali būti naudojamas paketų užfiksavimui iš visų sąsajų. Atkreipkite dėmesį, kad "bet kokio" įrenginio fiksavimas nebus atliekamas promiscuous režimu.
  • -l: Padarykite stdout line buffered. Naudinga, jei norėsite matyti duomenis, kai ją užfiksuosite. Pavyzdžiui, "tcpdump -l | tee dat" "arba" tcpdump -l> dat and tail -f dat "".
  • -m: Įkelkite SMI MIB modulio apibrėžimus iš failo modulis . Ši parinktis gali būti naudojama keletą kartų, norint įkelti kelis MIB modulius tcpdump .
  • -n: Negalima konvertuoti priimančiosios adresus į vardus. Tai gali būti naudojama siekiant išvengti DNS paieškos.
  • -nn: Negalima konvertuoti protokolų ir prievadų numerių ir tt prie pavadinimų.
  • -N: Nenaudokite kompiuterio pavadinimų domeno vardo kvalifikacijos. Pavyzdžiui, jei jūs suteikiate šią vėliavą, tada tcpdump bus spausdinti "nic" vietoj "nic.ddn.mil".
  • -O: Negalima paleisti paketų atitikimo kodo optimizavimo. Tai naudinga tik tuomet, kai įtariate optimizatoriaus klaidą.
  • -p: Ne įdėti sąsają į promiscuous režimą. Atkreipkite dėmesį, kad sąsaja gali būti nesąžiningo režimo dėl kitos priežasties; taigi "-p" negali būti naudojamas kaip "eterio šeimininko {local-hw-addr}" arba eterio transliacijos santrumpa.
  • -q: Greitas (tylus) išėjimas. Spausdinkite mažiau protokolo informacijos, kad išvesties linijos būtų trumpesnės.
  • -R: Turime, kad ESP / AH paketai būtų pagrįsti senomis specifikacijomis: RFC1825 - RFC1829. Jei nurodyta, tcpdump nebus spausdinamas atkūrimo prevencijos laukas. Kadangi ESP / AH specifikacijoje nėra protokolo versijos lauko, tcpdump negali išsiaiškinti ESP / AH protokolo versijos.
  • -r: Skaitykite paketus iš failas (kuri buvo sukurta su -w parinktimi). Standartinė įvestis naudojama, jei failas yra "-" ".
  • -S: Spausdinkite nebereikalingus TCP sekos numerius, o ne santykinius.
  • -s: Snarf snaplen kiekvieno paketo duomenų baitai, o ne pagal nutylėjimą - 68; su SunOS NIT, mažiausias iš tikrųjų yra 96. Šešiasdešimt aštuoni baitai yra tinkami IP, ICMP, TCP ir UDP, tačiau gali sutrumpinti protokolo informaciją iš vardų serverio ir NFS paketų (žr. toliau). Paketai, sutrumpinti dėl ribotos fotografijos, pateikiami su "| proto '', kur proto yra protokolo lygio, kuriuo įvyko sutrumpinimas, pavadinimas. Atkreipkite dėmesį, kad didesnių vaizdų priėmimas padidina tiek laiko, kiek reikia paketų apdorojimui, ir iš tikrųjų sumažina paketų buferio kiekį. Tai gali sukelti paketų praradimą. Turėtumėte riboti snaplen iki mažiausio skaičiaus, kuris užfiksuos jus dominančią protokolo informaciją. Nustatymas snaplen 0 reiškia, kad reikia naudoti visą paketą norint sugauti ilgį.
  • -T: Priversti paketus pasirinkti " išraiška "turi būti aiškinama nurodyta tipo . Šiuo metu žinomi tipai yracnfp (Cisco NetFlow protokolas),RPC (Nuotolinis procedūrinis kvietimas),rtp ("Real-Time Applications" protokolas),rtcp (Realaus laiko programų valdymo protokolas),snmp (Paprastas tinklo valdymo protokolas),vat (Visual Audio Tool) irwb (platinta balta valdyba).
  • -t: Ne atspausdinkite laiko žymelę ant kiekvienos iškrovimo linijos.
  • -tt: Atspausdinkite neformuoto laikmačio žymeklį ant kiekvienos iškrovimo eilutės.
  • -U: Nuleidžia root privilegijas ir pakeičia vartotojo ID Vartotojas ir grupės ID pagrindinei grupei Vartotojas .
  • Pastaba: Red Hat Linux automatiškai panaikina naudotojo teises "pcap", jei nieko nenurodyta.
  • -ttt: Atspausdinkite delta (mikrosekundėmis) tarp dabartinės ir ankstesnės eilutės kiekvienoje iškelties eilutėje.
  • -tttt: Atspausdinkite laiko formato numatytąjį formatą, kuris tęsiasi pagal datą kiekvienoje iškelties eilutėje.
  • -u: Necoduotų NFS rankenų spausdinimas.
  • -v: (Šiek tiek daugiau) verbose produkcija. Pavyzdžiui, atspausdinamas laikas, kuriuo gyventi, identifikavimas, bendras ilgis ir galimybės IP paketui. Taip pat leidžia atlikti papildomus paketų vientisumo patikrinimus, pvz., Patvirtinti IP ir ICMP antraštės kontrolinę sumą.
  • -vv: Net daugiau verbų išvesties. Pavyzdžiui, iš NFS atsakymų paketų išspausdinami papildomi laukai, o SMB paketai yra visiškai iššifruoti.
  • -vvv: Net daugiau verbų išvesties. Pavyzdžiui, TelnetSBSE parinktys išspausdintos pilnai. Su -X "telnet" parinktys išspausdintos ir "hex" formatu.
  • -w: Parašykite neapdorotus paketus failas o ne analizuoti ir spausdinti. Vėliau jie gali būti atspausdinti su parinktimi -r. Standartinė išvestis naudojama, jei failas yra "-" ".
  • -x: Spausdinkite kiekvieną paketą (atmetus jo nuorodų lygio antraštę) į hex. Mažesni iš viso paketo arba snaplen baitai bus atspausdinti. Atkreipkite dėmesį, kad tai yra visas nuorodų sluoksnio paketas, taigi ir nuorodų sluoksniai, pvz., "Ethernet", taip pat bus atspausdinti, kai aukštesnio sluoksnio paketas yra trumpesnis už reikalaujamą užpildymą.
  • -X: Spausdinant hex, spausdinkite ascii. Taigi, jei-x taip pat yra nustatytas, paketas spausdinamas hex / ascii. Tai labai patogu analizuoti naujus protokolus. Net jei-x taip pat nenustatytas, kai kurios paketų dalys gali būti atspausdintos hex / ascii.
  • išraiška : Pasirenka, kokie paketai bus išmesti. Jei ne išraiška visi tinkle esantys paketai bus išmesti. Priešingu atveju, tik paketai, kuriems išraiška yra "tiesa", bus dempingas. The išraiška susideda iš vieno ar daugiau primityviai. Primityviai paprastai susideda iš id (vardas arba numeris), prieš kurį yra vienas ar daugiau kvalifikacinių padalinių. Yra trys skirtingi kvalifikacijos tipai:
  • tipo : Kvalifikatoriai sako, kokio tipo idėjas nurodo id arba pavadinimas. Galimi tipaipriimančioji, neto, iruostasPvz., "Host foo", "net 128.3", "port 20". Jei nėra tipo kvalifikatoriaus,priimančioji yra prielaida.
  • dir : Kvalifikatoriai nurodo konkrečią perėjimo kryptį į ir / arba iš id . Galimi nurodymai yrasrc, dst, src arba dst irsrc ir dst (pvz., "src foo", "dst net 128.3", "src arba dst port ftp-data"). Jei nėra parinktojo sąrašosrc arba dst yra prielaida. "NULL" nuorodų sluoksniai (t.y., nuo taško iki taško protokolai, pvz., Slydimas) atvykstamasis ir išvykstamasis Kvalifikatoriai gali būti naudojami norint nurodyti norimą kryptį.
  • proto : Kvalifikatoriai riboja rungtynę prie tam tikro protokolo. Galimi protos yra: eteris, fddi, tr, ip, ip6, arp, rarp, decnet, tcp, irudpPvz., "Eterio src foo", "arp net 128.3", "tcp port 21". Jei nėra proto kvalifikatoriaus, laikoma, kad visi protokolai atitinka tipą. Pavyzdžiui, "src foo" reiškia "ip arba arp arba rarp" src foo "(išskyrus tai, kad ji nėra teisinė sintaksė)," net bar "reiškia" (ip arba arp arba rarp) neto juosta "ir" 53 uostas " reiškia "(tcp arba udp) uostas 53".
    • "fddi" iš tikrųjų yra "etiero" slapyvardis; "Parametras" FDDI antraštėse turi Ethernet tipo šaltinio ir paskirties adresus ir dažnai turi Ethernet tipo tipo paketų, todėl galite filtruoti šiose FDDI laukuose tik kaip ir analogiškų Ethernet laukų. FDDI antraštėse taip pat yra kitų laukų, tačiau jų negalima aiškiai įvardyti filtro išraiškoje.
    • Panašiai "tr" yra "etiero" slapyvardis; ankstesnio straipsnio teiginiai apie FDDI antraštes taip pat taikomi "Token Ring" antraštes.

Be pirmiau minėto, yra ir tam tikrų "primityvių" raktinių žodžių, kurie nesilaiko modelio:vartai, transliuoti, mažiau, didesnis, ir aritmetinis išraiškos. Visi jie aprašyti žemiau.

Sudėtingesnės filtro išraiškos sukurtos naudojant žodžiusir, arba, irne sujungti primityvus, pavyzdžiui, "host foo, o ne port ftp, o ne port ftp-data". Kad išsaugotumėte rinkinį, gali būti praleisti identiški kvalifikaciniai sąrašai (pvz., "Tcp dst port ftp arba ftp duomenys ar domenas" yra toks pat kaip "tcp dst port ftp arba tcp dst port ftp data arba tcp dst port domenas").

Tai yra primityvai, leidžiami naudojant komandą tcpdump:

  • dst host priimančioji
    • Tiesa, jei paketinio IPv4 / v6 paskirties laukas yra priimančioji , kuris gali būti adresu arba pavadinimu.
  • src host priimančioji
    • Tiesa, jei paketas yra IPv4 / v6 šaltinio laukas priimančioji .
  • priimančioji priimančioji
    • Teisinga, ar paketas yra IPv4 / v6 šaltinis ar paskirtis priimančioji . Bet kuri iš aukščiau išvardytų serverio išraiškų gali būti pridedama prie raktinių žodžių,ip, arp, rarp, arbaip6, kaip ir ip host priimančioji (kuris yra lygiavertis eterio proto ip ir priimančiosios priimančioji)
    • Jei priimančioji yra pavadinimas su keliais IP adresais, kiekvienas adresas bus pažymėtas kaip atitikmuo.
  • eteris dst ehost
    • Tiesa, jei Ethernet paskirties adresas yra ehost . Ehostas gali būti vardas iš / etc / eters arba numeris (žr eteriai (3N) skaitmeniniu formatu).
  • eteris src ehost
    • Tiesa, jei Ethernet šaltinio adresas yra ehost .
  • eterio priimamasis ehost
    • Tiesa, jei yra eterneto šaltinis arba paskirties adresas ehost .
  • vartai priimančioji
    • Tiesa, jei paketas naudojamas priimančioji kaip vartai (t. y. eterneto šaltinis arba paskirties adresas buvo priimančioji bet nei IP šaltinis, nei IP paskirtis nebuvo priimančioji ).
    • Priimančiosios turi būti pavadinimu, kurį turi rasti ir įrenginio priimančiosios vardo-IP-adreso skiriamieji mechanizmai (kompiuterio vardo failas, DNS, NIS ir kt.), ir kompiuterio priimančiosios vardo-et-eterneto adreso sprendimo mechanizmas (/ etc / eters ir tt).
    • Ekvivalentinė išraiška yra eterio priimamasis ehost ir dabar priimančiosios priimančioji , kuri gali būti naudojama su vardais ar numeriais host / ehost .) Ši sintaksė šiuo metu neveikia konfigūracijos su įgalinta IPv6.
  • dst net neto
    • Tiesa, jei paketo IPv4 / v6 paskirties adresas turi tinklo numerį neto . Tinklas gali būti vardas iš / etc / networks arba tinklo numeris (žr tinklai (4) išsami informacija).
  • src net neto
    • Tiesa, jei paketo IPv4 / v6 šaltinio adresas turi tinklo numerį neto .
  • neto neto
    • Tiesa, jei paketo IPv4 / v6 šaltinis ar paskirties adresas turi tinklo numerį neto .
  • neto neto kaukė neto maskas
    • Tiesa, jei IP adresas atitinka neto su konkrečia neto maskas . Gali būti kvalifikuotassrc arbadst. Atkreipkite dėmesį, kad ši sintaksė negalioja IPv6 neto .
  • neto neto / len
    • Tiesa, jei IPv4 / v6 adresas atitinka neto su tinkleliu len platus bitas. Gali būti kvalifikuotassrc arbadst.
  • dst uostas uostas
    • Tiesa, jei paketas yra ip / tcp, ip / udp, ip6 / tcp arba ip6 / udp ir jo paskirties prievado vertė yra uostas . The uostas gali būti skaičius ar pavadinimas, naudojamas / etc / services (žr tcp (4P) ir udp (4P)). Jei naudojamas vardas, patikrinamas tiek uosto numeris, tiek protokolas. Jei naudojamas numeris arba dviprasmiškas pavadinimas, tikrinamas tik uosto numeris (pvz.,dst port 513 bus spausdinti tiek TCP / prisijungimo srautą, tiek UDP / kas eismas, iruosto domenas bus spausdinti tiek tcp / domain, tiek udp / domain traffic).
  • src uostas uostas
    • Tiesa, jei paketas turi šaltinio prievado reikšmę uostas .
  • uostas uostas
    • Tiesa, jei yra paketo šaltinio arba paskirties uostas uostas . Bet kuri iš pirmiau minėtų uosto išraiškų gali būti pridedama prie raktinių žodžių,tcp arbaudp, kaip ir tcp src prievadas uostas , kuris atitinka tik tcp paketus, kurių šaltinio prievadas yra uostas .
  • mažiau ilgis
    • Tiesa, jei paketo ilgis yra mažesnis arba lygus ilgis . Tai atitinka len <= Ilgis .
  • didesnis ilgis
    • Tiesa, jei paketo ilgis yra didesnis arba lygus ilgis . Tai atitinka len> = Ilgis .
  • ip proto protokolas
    • Tiesa, jei paketas yra IP paketas (žr ip (4P)) protokolo tipo protokolas . Protokolas gali būti numeris arba vienas iš pavadinimų ICMP , icmp6 , igmp , igrp , pim , ah , esp , vrrp , udp , arba tcp . Atkreipkite dėmesį, kad identifikatoriai tcp , udp , ir ICMP taip pat yra raktiniai žodžiai ir jie turi būti ištrinti per "backslash" (), kuris yra C-lange. Atkreipkite dėmesį, kad šis primityvus nepakeičia protokolo antraštės grandinės.
  • ip6 proto protokolas
    • Tiesa, jei paketas yra protokolo tipo IPv6 paketas protokolas . Atkreipkite dėmesį, kad šis primityvus nepakeičia protokolo antraštės grandinės.
  • ip6 protochain protokolas
    • Tiesa, jei paketas yra IPv6 paketas ir yra protokolo antraštė su tipu protokolas savo protokolo antraštės grandinėje. Pavyzdžiui, ipv6 protochain 6 atitinka bet kokį IPv6 paketą su TCP protokolo antrašte protokolo antraštės grandinėje. Paketu gali būti, pavyzdžiui, autentifikavimo antraštė, maršruto antraštė arba "hop-by-hop" parinkčių antraštė tarp IPv6 antraštės ir TCP antraštės. Šis primityvus išskleidžiamas BPF kodas yra sudėtingas, jo negalima optimizuoti naudojant BPF optimizavimo kodą tcpdump , taigi tai gali būti šiek tiek lėta.
  • ip protochain protokolas
    • Lygiavertėip6 protochain protokolas , bet tai yra "IPv4".
  • eterio transliacija
    • Tiesa, jei paketas yra Ethernet transliacijos paketas. The eteris raktažodis yra neprivalomas.
  • ip transliacija
    • Tiesa, jei paketas yra IP transliacijos paketas. Jis patikrina tiek universaliųjų, tiek visuotinių transliuotojų konvencijas ir žiūri vietinę potinklio kaukę.
  • eteris multicast
    • Tiesa, jei paketas yra Ethernet multicast paketas. The eteris raktažodis yra neprivalomas. Tai yra "eteris 0 & 1! = 0'.
  • ip multicast
    • Tiesa, jei paketas yra IP multicast paketas.
  • ip6 multicast
    • Tiesa, jei paketas yra IPv6 multicast paketas.
  • eterio proto protokolas
    • Tiesa, jei paketas yra eterio tipo protokolas . Protokolas gali būti numeris arba vienas iš pavadinimų ip , ip6 , arp , rarp , pokalbis , aarp , decnet , sca , latas , Mopdl , moprc , iso , stp , ipx , arba Netbeui . Atkreipkite dėmesį, kad šie identifikatoriai yra ir raktiniai žodžiai, todėl jie turi būti užblokuoti backslash ().
    • FDDI atveju (pvz., "fddi protokolas arp') ir Token Ring (pvz., "tr protokolas arp'), daugumoje šių protokolų protokolo identifikacija kilęs iš 802.2 Logical Link Control (LLC) antraštės, kuri paprastai yra sluoksninė virš FDDI arba Token Ring antraštės.
    • Kai filtravote daugumą protokolų identifikatorių FDDI ar Token Ring, tcpdump patikrina tik vadinamojo SNAP formato "LLC" antraštės "Protocol ID" lauką su "0x000000" organizacinio vieneto identifikatoriumi (OUI), kuris yra integruotas Ethernet; ji netikrina, ar paketas yra SNAP formatu, o OUI yra 0x000000.
    • Išimtys yra iso , už kurį ji tikrina "DSAP" (paskirties paslaugos prieigos taškas) ir SSAP (šaltinio paslaugos prieigos taško) laukus "LLC" antraštėje, stp ir Netbeui , kur ji tikrina "LLC" antraštės DSAP, ir pokalbis , kur jis patikrina SNAP formato paketą su 0x080007 OUI ir "Appletalk" etatu.
    • Eterneto atveju tcpdump tikrina Eterneto tipo lauką daugumai šių protokolų; išimtys yra iso , sap , ir Netbeui , už kurį jis patikrina 802.3 rėmelį, tada patikrina LLC antraštę, kaip tai daro FDDI ir Token Ring; pokalbis , kur jis patikrina tiek "Appletalk" etape, tiek "Ethernet" rėmuose, tiek SNAP formato paketui, kaip tai daro FDDI ir Token Ring; aarp , kur jis patikrina "Appletalk ARP" etaloną Ethernet rėmo arba 802.2 SNAP rėmelyje, kurio OUI yra 0x000000; ir ipx , kur ji tikrina IPX etytą Ethernet rėmelyje, IPX DSAP "header" LLC, 802.3 be "LLC" antraštės "IPX" ir IPX etape SNAP rėmuose.
  • decnet src priimančioji
    • Tiesa, jei DECNET šaltinio adresas yra priimančioji , kuris gali būti "10.123" formos adresas arba "DECNET" kompiuterio pavadinimas. DECNET prieglobos vardo palaikymas galimas tik Ultrix sistemose, kurios yra sukonfigūruotos paleisti DECNET.
  • decnet dst priimančioji
    • Tiesa, jei DECNET paskirties adresas yra priimančioji .
  • Decnet host priimančioji
    • Teisinga, ar yra DECNET šaltinio arba paskirties adresas priimančioji .
  • ip, ip6, arp, rarp, pokalbis, aarp, decnet, iso, stp, ipx, Netbeui
    • Sutrumpinimai eterio proto p kur p yra vienas iš minėtų protokolų.
  • latas, moprc, Mopdl
    • Sutrumpinimai eterio proto p kur p yra vienas iš minėtų protokolų. Prisimink tai tcpdump šiuo metu nežino, kaip ištirti šiuos protokolus.
  • vlan vlan_id
    • Tiesa, jei paketas yra IEEE 802.1Q VLAN paketas. Jei vlan_id yra nurodytas, tik tiesa, jei paketas nurodytas vlan_id . Atkreipkite dėmesį, kad pirmasisvlan raktinis žodis susidurta išraiška pakeičia dekodavimo kompensacijas iki likusios išraiška darant prielaidą, kad paketas yra VLAN paketas.
  • tcp, udp, ICMP
    • Sutrumpinimai ip proto p arba ip6 proto p kur p yra vienas iš minėtų protokolų.
  • iso proto protokolas
    • Tiesa, jei paketas yra protokolo tipo OSI paketas protokolas . Protokolas gali būti numeris arba vienas iš pavadinimų clnp , esis , arba isis .
  • clnp, esis, isis
    • Sutrumpinimai iso proto p kur p yra vienas iš minėtų protokolų. Prisimink tai tcpdump atlieka nebaigtą darbą analizuojant šiuos protokolus.
  • expr relop expr
    • Tiesa, jei santykis tinka, kur relopas yra vienas iš>, <,> =, <=, =,! =, ir expr yra aritmetinė išraiška, sudaryta iš sveiki skaičių konstantų (išreikšta standartine C sintaksė), įprastais dvejetainiais operatoriais +, -, *, /, &, |, ilgio operatoriumi ir specialiais paketinių duomenų prieigos elementais. Norėdami prisijungti prie duomenų paketą, naudokite šią sintaksę: proto expr: dydis .

Proto yra vienas išeteris, fddi, tr, ppp, paslysti, nuoroda, ip, arp, rarp, tcp, udp, ICMP, arba ip6, ir nurodo protokolo sluoksnį indekso operacijai (eteris, fddi, tr, ppp, paslysti, irnuoroda visi nurodo nuorodos sluoksnį). Prisimink tai tcp, udp , o kiti aukštesnio sluoksnio tipo protokolai taikomi tik IPv4, o ne IPv6 (tai bus nustatoma ateityje). Baitų nuokrypis, palyginti su nurodytu protokolo sluoksniu, yra nurodytas expr . Dydis yra neprivalomas ir nurodo baitų skaičių dominančioje srityje; tai gali būti viena, dvi ar keturios, o pagal nutylėjimą - viena. Ilgis operatorius, nurodyta pagal raktažodįlen, suteikia paketo ilgį.

Pavyzdžiui, 'eteris 0 & 1! = 0"sugauna visą daugialypį srautą. Išsireiškimas 'ip 0 & 0xf! = 5"sugavimus visus IP paketus su parinktimis. Išsireiškimas 'ip 6: 2 & 0x1fff = 0"užfiksuoja tik nesubrupuotus datagramus ir fragmentuotus datagramus. Šis patikrinimas yra netiesiogiai taikomastcp irudp indekso operacijos. Pavyzdžiui, tcp 0 visada reiškia pirmąjį TCP baitą antraštė , ir niekada nereiškia pirmasis įeinančio fragmento baitas.

Kai kurios kompensacijos ir lauko vertės gali būti išreikštos kaip vardai, o ne skaitinės vertės. Galima naudoti tokius sekos protokolų antraštės laukus: icmptype (ICMP tipo laukas),icmpcode (ICMP kodo laukas) irtcpflags (Laukas TCP vėliavos).

Galima naudoti šias ICMP tipo lauko reikšmes:icmp-echoreply, icmp-unreach, icmp-sourcequench, icmp-redirect, ICMP-echo, icmp-routeradvert, icmp-routersolice, ICMP-timxceed, icmp-paramprob, ICMP-tstamp, icmp-tstampreply, icmp-ireq, icmp-ireqreply, icmp-maskreq, icmp-maskreply.

Galima naudoti šias TCP vėliavų lauko reikšmes:tcp-fin, tcp-syn, tcp-rst, tcp-push, tcp-push, tcp-ack, tcp-urg.

Primityviai gali būti derinami naudojant vieną iš šių būdų:

  • Įterptinė primityvių ir operatorių grupė (skliaustuose yra "Shell" ypatinga ir turi būti ištrinta)
  • Negavimas ("!"arba"ne')
  • Concatenation ("&&"arba"ir')
  • Kintamoji ('||"arba"arba')

Neigimas yra aukščiausias prioritetas. Pakaitinimas ir sujungimas turi vienodą pirmenybę ir yra susijęs iš kairės į dešinę. Atkreipkite dėmesį, kad aiškiaiir Žetonai, o ne lygiavimas, yra reikalingi junginimui.

Jei identifikatorius pateikiamas be raktinio žodžio, daroma prielaida, kad yra naujausias raktinis žodis. Pavyzdžiui, ne priimančiosios vs ir ace yra trumpas ne priimančiosios ir priimančiosios ace. Tačiau tai neturėtų būti supainioti ne (priimančiosios vs ar ace).

Išraiškos argumentai gali būti perduodami tcpdump kaip vienintelis argumentas ar kaip daugybė argumentų, priklausomai nuo to, kuris yra patogesnis. Paprastai, jei išraiška yra "Shell" metafores, ją lengviau perduoti kaip vieną cituojamą argumentą. Prieš analizuojant, daugybė argumentų yra susieti su tarpus.

Tcpdump pavyzdžiai

tcpdump host sundown

Pirmiau nurodyta tcpdump komanda naudojama spausdinti visus paketus, atvykstančius arba išvykstančius iš saundown

tcpdump serverio helios ir (karštas arba ace )

Šis tcpdump pavyzdys spausdina srautą tarp heliosas ir arba karštas arba ace

tcpdump ip host ace, o ne helios

Šią tcpdump komandą galite naudoti spausdinti visus IP paketus tarp ace ir bet kuris šeimininkas, išskyrus heliosas.

tcpdump neto ucb-eteris

Pirmiau pateiktame pavyzdyje tcpdump spausdina visą srautą tarp vietinių kompiuterių ir kompiuterių Berkeley.

tcpdump "vartai ir (port ftp arba ftp-data)"

Šis kitas tcpdump komandos pavyzdys naudojamas spausdinti visą FTP srautą per interneto vartai snupas . Atkreipkite dėmesį, kad frazė yra cituota, kad būtų išvengta neteisingai suprastų skliaustų.

tcpdump ip ir ne net vietinis tinklas

Pirmiau nurodytame tcpdump pavyzdyje komanda spausdina srautą nei iš vietinių, nei iš vietinių kompiuterių.

tcpdump 'tcp tcpflags & (tcp-syn | tcp-fin)! = 0, o ne src ir dst net vietinis tinklas '

Pirmiau nurodytam tcpdump pavyzdyje komanda naudojama spausdinti kiekvieno TCP pokalbio pradžios ir pabaigos paketus (SYN ir FIN paketus), kuris apima nevietinį kompiuterį.

Tcpdump "šliuzai snup ir ip 2: 2> 576 '

Pirmiau nurodyta komanda išspausdins IP paketus, kurie yra didesni nei 576 baitai, siunčiami per vartai snupas

tcpdump eteris 0 & 1 = 0 ir ip 16> = 224 '

Pirmiau parodyta tcpdump komanda spausdina IP transliacijas arba daugiapakopius paketus, kurie buvo ne siunčiamas per Ethernet transliaciją arba multicastą.

tcpdump "icmp icmptype! = icmp-echo ir icmp icmptype! = icmp-echoreply"

Šiame paskutiniame tcpdump pavyzdyje komanda atspausdina visus ICMP paketus, kurie nėra echo užklausos ar atsakymai (t.y., ne ping paketai).

Tcpdump išvesties formatas

Išėjimas iš tcpdump priklauso nuo protokolo. Toliau pateikiamas trumpas daugelio formatų aprašymas ir pavyzdžiai.

Link lygio antraštės. Jei nurodyta "-e" parinktis, atspausdinama nuorodų lygio antraštė. Eterneto tinkluose atspausdinami šaltinio ir paskirties adresai, protokolas ir paketų ilgis.

FDDI tinkluose atsiranda "-e" parinktis tcpdump spausdinti "rėmo valdiklio" lauką, šaltinio ir paskirties adresus bei paketo ilgį. ("Frame control" laukas apibrėžia likusio paketo interpretaciją. Paprastieji paketai (pvz., Turintys IP datagramus) yra "async" paketai, kurių prioritetinė reikšmė yra nuo 0 iki 7: pvz., "async4" Manoma, kad tokiuose paketuose yra "Logical Link Control" (LLC) paketo 802.2; jei tai yra, spausdinamas antraštė "LLC" ne ISO datagramą arba vadinamąjį SNAP paketą.

Token Ring tinkluose sukelia "-e" parinktį tcpdump spausdinti "prieigos kontrolės" ir "rėmelio valdymo" laukus, šaltinio ir paskirties adresus bei paketo ilgį. Kalbant apie FDDI tinklus, laikoma, kad paketai turi "LLC" paketą. Nepriklausomai nuo to, ar "-e" parinktis yra nurodyta ar ne, šaltinio maršruto informacija yra atspausdinta šaltinio nukreiptiems paketams.

(N.B .: Toliau pateiktas aprašymas reiškia, kad reikia susipažinti su SLIP suspaudimo algoritmu, aprašytu RFC-1144.)

Ant SLIP nuorodų atspausdinamas krypties indikatorius ("I", skirtos atvykimui, "O", išvykstamasis), paketo tipas ir suspaudimo informacija. Pirmiausia išspausdinamas paketo tipas. Yra trys tipai ip , utcp , ir ctcp . Nereikia spausdinti jokios kitos nuorodos informacijos ip paketai. TCP paketams ryšio tipas yra atspausdintas pagal tipą. Jei paketas suspaustas, atspausdinamas jo užkoduotas antraštė. Specialūs atvejai išspausdinti kaip* S + n ir* SA + n , kur n yra suma, iki kurios pasikeitė sekos numeris (arba eilės numeris ir ack). Jei tai nėra ypatingas atvejis, spausdinami nulis ar daugiau pakeitimų. Pakeitimą nurodo U (skubus žymeklis), W (langas), A (ack), S (eilės numeris) ir I (paketo ID), po kurio seka delta (+ n arba -n) arba nauja vertė (= n). Galiausiai spausdinama duomenų paketo ir suspausto antraštės ilgio suma.

Pavyzdžiui, ši eilutė rodo išsiunčiamą suspaustą TCP paketą su netiesioginiu ryšio identifikatoriumi; ACK pakeitė 6, eilės numeris buvo 49, o paketo ID - 6; yra 3 baitai duomenų ir 6 baitai suspaustos antraštės:

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

Arp / rarp paketai. Arp / rarp išvestis rodo prašymo tipą ir jo argumentus. Formatas yra savaime suprantamas. Štai trumpas pavyzdys, paimtas iš "rlogin" pradžios iš kompiuterio rtsg surengti csam :

arp kas-csam pasakyti rtsgarp atsakymas csam yra ne CSAM

Pirmojoje eilutėje sakoma, kad rtsg atsiuntė ARP paketą, prašydamas "Ethernet" interneto prieglobos csam adreso. "Csam" atsako naudodamas "Ethernet" adresą (šiame pavyzdyje Eterneto adresai yra apatinėje raidėje ir internetiniai adresai).

Tai atrodytų mažiau nereikalinga, jei būtų padaryta tcpdump -n :

arp who-128.3.254.6 sako 128.3.254.68arp atsakymas 128.3.254.6 yra 02: 07: 01: 00: 01: c4

Jei mes padarėme tcpdump-e , tai, kad pirmasis paketas transliuojamas, o antrasis - taškas-taškas, būtų matomas:

RTSG Broadcast 0806 64: arp, kuris turi csam pasakyti rtsgCSAM RTSG 0806 64: arp atsakymas csam yra ne CSAM

Pirmajam paketui sakoma, kad Ethernet šaltinio adresas yra RTSG, paskirties vieta yra Ethernet transliacijos adresas, tipo lauke yra hex 0806 (tipas ETHER_ARP), o bendras ilgis buvo 64 baitai.

TCP paketai (N.B.:Šis aprašymas reiškia, kad reikia susipažinti su TCP protokolu, aprašytu RFC-793. Jei nesate susipažinę su protokolu, nei šis aprašymas, nei tcpdump jums nebus naudingi) . Bendras TCP protokolo linijos formatas yra:

src> dst: flags data-seqno ack lango skubios parinktys

Src ir dst yra šaltinio ir paskirties IP adresai ir uostai. Vėliavos yra kai kurie iš S (SYN), F (FIN), P (PUSH) arba R (RST) arba vieno "." (be vėliavos). Duomenys seqno apibūdina sekos erdvės dalį, kurią apima šios pakuotės duomenys (žr. toliau pateiktą pavyzdį). Ack yra kitų duomenų eilės numeris, kurio tikimasi kitoje šio ryšio kryptėje. Langas yra priimamų buferinių erdvių baitų skaičius kitoje šio ryšio srityje. Urg rodo, kad paketuose yra "skubių" duomenų. Galimybės yra tcp parinktys, pridedamos kampo skliaustuose (pvz., ).

Src, dst ir vėliavos visada yra. Kiti laukai priklauso nuo paketo tcp protokolo antraštės turinio ir išleidžiami tik jei reikia.

Čia yra atidarymo rlogin dalis iš kompiuterio rtsg surengti csam .

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

Pirmoje eilutėje sakoma, kad TCP prievadas 1023 rtsg siunčia paketą į uostą Prisijungti apie csam. TheS rodo, kad SYN vėliava buvo nustatyta. Paketo sekos numeris buvo 768512 ir jame nebuvo duomenų. (Paaiškinimas yra "pirmasis: paskutinė (nbytes)", o tai reiškia "eilės numeriai Pirmas iki, bet neįskaitant paskutinis kuris yra nbytes baitų naudotojo duomenų. "). Nebuvo jokios kiaulytės palaikomos akcijos, galimas gauti langas buvo 4096 baitų, ir buvo galimybė maksimalaus segmento dydžio, reikalaujančio 1024 baitų mss.

Csam atsako su panašiu paketu, išskyrus atvejus, kai jame yra "rtsg" "SYN". Rtsg tada acks csam SYN. "." reiškia, kad nėra nustatytos vėliavos. Pakuotėje nėra duomenų, todėl nėra duomenų sekos numerio. Atkreipkite dėmesį, kad ACK eilės numeris yra mažas sveikasis skaičius (1). Pirmasis kartas tcpdump mato TCP "pokalbį", jis spausdina iš paketo sekos numerį. Vėlesniuose pokalbio paketuose atspausdinamas skirtumas tarp dabartinio paketo sekos numerio ir šio pirminio sekos numerio. Tai reiškia, kad eilės numeriai po pirmojo gali būti interpretuojami kaip santykinės baitų pozicijos pokalbio duomenų sraute (pirmojo duomenų baito kiekviena kryptis yra "1"). "-S" pakeis šią funkciją, todėl pradiniai sekos numeriai bus išvedami.

Šeštojoje eilutėje rtsg siunčia csam 19 baitų duomenų (nuo 2 iki 20 baitų pokalbio rtsg -> csam pusėje). PUSH vėliava nustatoma paketu. Septintoje eilutėje csam sako, kad rtsg siunčiami duomenys yra gaunami, bet neatsižvelgiama į 21 baitą. Daugelis šių duomenų tikriausiai sėdi į lizdo buferį, nes csam gaunamų langų skaičius yra 19 baitų mažesnis. Csam taip pat siunčia vieną duomenų baitą į šį paketą rtsg. Aštuntojoje ir devintoje eilutėje csam siunčia du baitus skubių, išspaustų duomenų į rtsg.

Jei fotografija buvo pakankamai maža, kad tcpdump nepavyko užfiksuoti viso TCP antraštės, jis interpretuoja kiek įmanoma daugiau antraštės, o tada praneša "| tcp '', norint nurodyti likusią dalį, negalima aiškinti. Jei antraštėje yra klaidingos parinkties (viena, kurios ilgis yra per mažas arba virš galerijos pabaigos) tcpdump praneša apie tai kaip " blogas pasirinkimas '' ir neaiškina jokių kitų variantų (nes neįmanoma nustatyti, kur jie prasideda). Jei antraštės ilgis nurodo, kad yra parinkčių, tačiau IP datagramos ilgis nėra pakankamai ilgas, kad galimybės iš tikrųjų būtų ten, tcpdump praneša apie tai kaip " blogas hdr ilgis ''.

Įrašykite paketus su tam tikrais vėliavų deriniais. TCP antraštės kontrolės bitų skiltyje yra aštuoni bitai:

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

Tarkime, kad mes norime žiūrėti paketus, naudojamus nustatant TCP ryšį. Prisiminkite, kad TCP naudoja trijų krypčių rankos tvirtinimo protokolą, kai jis inicijuoja naują ryšį; ryšių seka TCP valdymo bitais yra:

  1. Skambintojas siunčia SYN.
  2. Gavėjas reaguoja su SYN, ACK.
  3. Skambintojas siunčia ACK.

Dabar mes norime užfiksuoti paketus, kurie turi tik SYN bitų nustatymą (1 žingsnis). Atkreipkite dėmesį, kad mes nenorime paketų iš 2 žingsnio (SYN-ACK), tik paprasto pradinio SYN. Ko mums reikia, kad būtų teisinga filtro išraiška tcpdump .

Prisiminkite TCP antraštės struktūrą be parinkčių:

0 15 31-----------------------------------------------------------------| šaltinio uostas | paskirties uostas |-----------------------------------------------------------------| eilės numeris |-----------------------------------------------------------------| patvirtinimo numeris |-----------------------------------------------------------------| HL | rsvd | C | E | U | A | P | R | S | F | lango dydis |-----------------------------------------------------------------| TCP kontrolinė suma | skubus žymeklis |-----------------------------------------------------------------

TCP antraštėje paprastai yra 20 oktetų duomenų, nebent yra parinkčių. Pirmoje grafiko eilutėje yra oktetai 0-3, antroje eilutėje rodomi 4-7 oktetai ir tt

Pradedant skaičiuoti su 0, atitinkami TCP valdymo bitai yra oktete 13:

0 7| 15| 23| 31----------------|---------------|---------------|----------------| HL | rsvd | C | E | U | A | P | R | S | F | lango dydis |----------------|---------------|---------------|----------------| | 13 oktetas | | |

Leiskite atidžiau pažvelgti į oktetą Nr. 13:

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

Tai yra TCP valdymo bitai, kuriais mes esame suinteresuoti. Šiame oktete nuo 0 iki 7 skaitmenys buvo skaitomi iš dešinės į kairę, taigi PSH bitas yra bitų skaičius 3, o URG bitas yra numeris 5.

Prisiminkite, kad norime užfiksuoti paketus tik SYN rinkiniu. Pažiūrėkime, kas nutinka oktetui 13, jei TCP datagrama atvyksta su jo antraštėje nustatyta SYN bitu:

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

Žiūrint į kontrolinių bitų sekciją matome, kad yra nustatytas tik bitų numeris 1 (SYN).

Darant prielaidą, kad 13 oktetas yra 8 bitų neužregistruotas sveikasis skaičius tinklo baitų tvarka, dvejetainė šio okteto vertė yra:

00000010

Jo dešimtainis atstovavimas yra:

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

Mes beveik baigta, nes dabar mes žinome, kad jei nustatytas tik SYN, TCP antraštės 13-os okteto vertė, aiškinama kaip 8 bitų nepasirašytas sveikasis skaičius tinklo baitų tvarka, turi būti lygiai 2.

Šis santykis gali būti išreikštas kaip

tcp 13 == 2

Šią išraišką galime naudoti kaip filtrą tcpdump norėdami žiūrėti paketus, turinčius tik SYN rinkinį:

tcpdump-i xl0 tcp 13 == 2

Sąvoka sako: "tegul TCP datagrams 13-oktetas turi dešimtainę reikšmę 2", kuri yra būtent tai, ko mes norime.

Dabar prielkime, kad mes turime užfiksuoti SYN paketus, bet mes nesvarbu, ar ACK ar bet koks kitas TCP valdymo mazgas nustatomas tuo pačiu metu. Pažvelkite į tai, kas atsitinka su oktetu 13, kai pasirodo TCP datagrama su SYN-ACK rinkiniu:

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

1 ir 4 bitai dabar yra nustatomi 13 oktete. Dvejetainė 13 okteto vertė yra:

00010010

kuris išreiškiamas dešimtainiu:

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

Mes negalime naudoti "tcp 13 == 18" tcpdump filtro išraiška, nes tai parinks tik tuos paketus, kurie turi SYN-ACK, bet ne tik su SYN rinkiniu. Atminkite, kad mes nesvarbu, ar nustatytas ACK ar bet koks kitas kontrolinis bitas, kol nustatytas SYN.

Norint pasiekti savo tikslą, turime logiškai IR dvejetainę 13 okteto vertę su kita verte, kad išsaugotume SYN bitą. Mes žinome, kad norime, kad SYN būtų nustatytas bet kokiu atveju, todėl logiškai IR vertės 13 oktete su dvejetainiu SYN reikšme:

00010010 SYN-ACK 00000010 SYN IR 00000010 (mes norime SYN) IR 00000010 (mes norime SYN) -------- -------- = 00000010 = 00000010

Matome, kad šis "AND" veiksmas duoda tą patį rezultatą, nepriklausomai nuo to, ar nustatytas ACK ar kitas TCP valdymo mazgas. Šios operacijos AND reikšmės dešimtainis formatas ir šios operacijos rezultatas yra 2 (dvejetainis 00000010), todėl mes žinome, kad paketams su SYN nustatytu turi būti toks santykis:

((13 okteto vertė IR (2)) == (2)

Tai nurodo mus į tcpdump filtro išraiška

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

Atkreipkite dėmesį į tai, kad išraiškoje paslėpti specialųjį AND ('&') specialųjį požymį iš apvalkalo turėtų būti naudojamos vienos kabutės arba užpakalinės juostos brūkšnys.

UDP paketai. UDP formatas iliustruoja šį rwho paketą:

actinide.who> broadcast.who: udp 84

Tai sako, kad uostas kas priimančiojoje actinidas išsiuntė udp datagramą prie uosto kas priimančiojoje transliuoti , interneto transliacijos adresas. Pakuotėje buvo 84 baitai naudotojo duomenų.

Kai kurios UDP paslaugos yra atpažįstamos (iš šaltinio arba paskirties prievado numerio) ir aukštesnio lygmens protokolo informacijos, ypač į NFS paslaugų domeno vardo paslaugų prašymus (RFC-1034/1035) ir Sun RPC skambučius (RFC-1050).

UDP vardų serverio užklausos (N.B.:Šis aprašymas reiškia, kad susipažinsite su domeno paslaugų protokolu, aprašytu RFC-1035. Jei nesate susipažinę su protokolu, šis aprašymas neturės prasmės.)

Vardas serverio užklausos yra suformatuotos taip:

src> dst: id op? vėliavos qtype qclass pavadinimas (len) h2opolo.1538> helios.domainas: 3+ A? ucbvax.berkeley.edu. (37)

Priimančiosios h2opolo paklausė domeno serverio heliosas už adreso įrašą (qtype = A), susietą su pavadinimu ucbvax.berkeley.edu. Užklausos ID buvo "3". "+" Žymi rekursija norima vėliava buvo nustatyta. Užklausos ilgis buvo 37 baitai, neįskaitant UDP ir IP protokolo antraščių. Užklausos operacija buvo įprasta, Užklausa , todėl opas laukas buvo praleistas. Jei operas buvo kažkas kito, jis būtų atspausdintas tarp "3" ir "+". Panašiai qclass buvo normalus, C_IN ir praleistas. Bet koks kitas "qclass" būtų atspausdintas iš karto po "A".

Patikrinama keletas anomalijų ir laukuose gali būti papildomų laukų: jei užklausoje yra atsakymo, įgaliojimo įrašų arba papildomų įrašų skilties, ancount , nscount , arba apskaita yra atspausdinami kaip " n a ',' n n "arba" n au 'kur n yra tinkamas skaičius. Jei nustatytas koks nors iš atsakymo bitų (AA, RA ar rcode) arba bet kuris iš "turi būti nulis" bitai yra nustatyti du ir tris bitus, "b2 & 3 = x 'yra spausdinamas, kur x yra šešioliktainė antraštės baitų antra ir trečioji vertės.

UDP vardų serverio atsakymai. Vardas serverio atsakymai yra suformatuojami taip:

src> dst: id op rcode flags a / n / au tipo klasės duomenys (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)

Pirmajame pavyzdyje heliosas atsako į užklausą ID 3 iš h2opolo su trijų atsakymų įrašais, trimis vardų serverio įrašais ir septyniais papildomais įrašais. Pirmasis atsakymo įrašas yra A tipas (adresas), jo duomenys yra interneto adresas 128.32.137.3. Bendras atsakymo dydis buvo 273 baitai, išskyrus UDP ir IP antraštes. Op (užklausa) ir atsakymo kodas (NoError) buvo praleisti, kaip buvo ir įrašo A klasės (C_IN).

Antrame pavyzdyje heliosas atsako į užklausą 2 su neegzistuojančio domeno (NXDomain) atsakymo kodu be atsakymų, vieno vardų serverio ir jokios institucijos įrašų. "*" Nurodo, kad autoritetingas atsakymas bitas buvo nustatytas. Kadangi nebuvo atsakymų, nebuvo spausdinti jokio tipo, klasės ar duomenų.

Kiti vėliavų simboliai, kurie gali pasirodyti, yra "-" (rekursija prieinama, RA, ne rinkinys) ir '|' (sutrumpintas pranešimas, TC, rinkinys). Jei skiltyje "klausimas" nėra tiksliai vieno įrašo, " n q "spausdinamas.

Atkreipkite dėmesį, kad vardų serverio užklausos ir atsakymai dažniausiai yra dideli ir numatytieji snaplen iš 68 baitų gali nepavykti spausdinti pakankamai paketo. Naudoti-s jei norite rimtai ištirti vardų serverio srautą. "-s 128"gerai dirbo man.

SMB / CIFS dekodavimas. tcpdump apima gana plataus SMB / CIFS / NBT dekodavimo duomenis UDP / 137, UDP / 138 ir TCP / 139. Taip pat atliekamas pirminis IPX ir NetBEUI SMB duomenų dekodavimas.

Pagal numatytuosius nustatymus atliekamas gana minimalus dekodavimas, atlikus daug išsamesnį kodavimą, jei naudojamas -v. Būkite įspėjama, kad su-v vienas SMB paketas gali užimti daugiau arba daugiau puslapių, todėl naudokite tik -v, jei tikrai norite, kad visi išsamūs duomenys.

Jei jūs dekoduojate SMB sesijas, kuriose yra unikodų eilučių, galite nustatyti aplinkos kintamąjį USE_UNICODE į 1. Gali būti sveikintinas pataisas, skirtas automatiškai nustatyti unikodų eilutes.

Norėdami gauti informacijos apie SMB paketų formatus ir apie tai, ką reiškia visi laukai, žr. Www.cifs.org arba pub / samba / specs / katalogą savo mėgstamos samba.org veidrodinės svetainės. SMB pleistrus parašė Andrew Tridgell ([email protected]).

NFS užklausos ir atsakymai. Sun NFS (tinklo failų sistema) užklausos ir atsakymai atspausdinami taip:

src.xid> dst.nfs: len op args src.nfs> dst.xid: atsakyti statinis rezultatas sushi.6709> wrl.nfs: 112 readlink fh 21,24 / 10.73165wrl.nfs> sushi.6709: atsakyk ok 40 read link "../var"sushi.201b> wrl.nfs: 144 paieška fh 9,74 / 4096,6878 "xcolors"wrl.nfs> sushi.201b: atsakau ok 128 lookup fh 9,74 / 4134,3150

Pirmoje eilutėje priimančioji sushi siunčia sandorį su id 6709 į wrl (atkreipkite dėmesį, kad numeris, einantis src host, yra sandorio ID ne šaltinio uostas). Prašymas buvo 112 baitų, išskyrus UDP ir IP antraštes. Operacija buvo a "readlink" (skaityti simbolinę nuorodą) failo rankenoje ( fh ) 21,24 / 10,731657119. (Jei pasisekė, kaip šiuo atveju, failų rankena gali būti interpretuojama kaip pagrindinė, smulkesnė įrenginio numerio pora, po kurios nurodomas inode numeris ir generavimo numeris.) Wrl atsako "gerai" su nuorodos turiniu.

Trečioje eilutėje sushi klausia wrl ieškoti pavadinimo " xcolors "kataloge 9,74 / 4096,6878. Atminkite, kad spausdinti duomenys priklauso nuo operacijos tipo. Formatas yra savaime suprantamas, jei jį skaitoma kartu su NFS protokolo specifikacija.

Jei pateikiama -v (verbose) vėliava, atspausdinama papildoma informacija. Pavyzdžiui:

sushi.1372a> wrl.nfs: 148 skaityti fh 21,11 / 12,195 8192 baitų @ 24576wrl.nfs> sushi.1372a: atsakau ok 1472 skaityti REG 100664 ids 417/0 sz 29388

(-v taip pat atspausdina IP-antraštės TTL, ID, ilgio ir fragmentacijos laukus, kurie buvo praleisti šiame pavyzdyje.) Pirmoje eilutėje sushi klausia wrl skaityti 8192 baitų iš failo 21,11 / 12,195, baitų kompensuoti 24576. Wrl atsakymai "gerai"; antroje eilutėje nurodytas paketas yra pirmasis atsakymo fragmentas, taigi jis yra tik 1472 baitai (kitų baitų bus seka vėlesniuose fragmentuose, tačiau šiuose fragmentuose nėra NFS ar net UDP antraščių, todėl jų negalima atspausdinti, priklausomai nuo naudojamos filtro išraiškos). Atsižvelgiant į tai, kad pateikiama "-v" vėliava, spausdinami kai kurie failų atributai (kurie grąžinami be duomenų failų): failo tipas ("REG", skirtas įprastam failui), failo režimas (iš octal), uid ir gid bei failo dydis.

Jei -v vėliava pateikiama daugiau nei vieną kartą, išspausdinama dar daugiau informacijos.

Atkreipkite dėmesį, kad NFS užklausos yra labai didelės, o išsami informacija nebus atspausdinta, nebent snaplen yra padidintas. Pabandykite naudoti "-s 192"žiūrėti NFS srautą".

NFS atsakymo paketuose aiškiai nenustatyta RPC operacija. Vietoj to tcpdump seka "naujausius" užklausimus ir juos suderina su atsakymais naudodama transakcijos ID. Jei atsakymas nėra atidžiai sekti atitinkamu prašymu, jis gali būti neskaidomas.

Transarc AFS (Andrew File System) prašymai ir atsakymai.

src.sport> dst.dport: rx paketinis tipas src.sport> dst.dport: rx paketinio tipo paslaugos skambučio skambučio vardas args src.sport> dst.dport: rx paketinio tipo paslaugos atsakymo skambučio vardas args elvis.7001> pike.afsfs: rx data fs call rename old fid 536876964/1/1 ".newsrc.new" naujas fid 536876964/1/1 ".newsrc"pike.afsfs> elvis.7001: rx data fs atsakymas pervardyti

Pirmoje eilutėje priimančioji elvis siunčia RX paketą į lydeką. Tai buvo RX duomenų paketas fs (failų serverio) paslaugai ir yra RPC skambučio pradžia.RPC skambutis buvo pervardijimas su senojo katalogo failo identifikatoriumi 536876964/1/1 ir senais ".newsrc.new" failo pavadinimais bei naujo failo failo ID 536876964/1/1 ir nauju failo vardu ". newsrc ". Priimančioji plekė reaguoja su RPC atsakymu į pervardijimo skambutį (kuris buvo sėkmingas, nes tai buvo duomenų paketas, o ne nutrauktas paketas).

Paprastai visi AFS RPC yra dekoduojami bent RPC skambučio pavadinimu. Dauguma AFS RPC turi bent kai kuriuos iššifruoti argumentus (dažniausiai tik "įdomūs" argumentai, kai kurie įdomūs apibrėžimai).

Forma turi savęs apibūdinti, tačiau ji tikriausiai nebus naudinga žmonėms, kurie nėra susipažinę su AFS ir RX veikimu.

Jei -v (verbose) vėliava duodama, atspausdinami patvirtinimo paketai ir papildoma antraštės informacija, pvz., RX skambučio ID, skambučio numeris, sekos numeris, serijos numeris ir RX paketų vėliavos.

Jei -v vėliava duodama, spausdinama papildoma informacija, pvz., RX skambučio ID, serijos numeris ir RX paketų vėliavos. MTU derybų informacija taip pat atspausdinama iš RX ack paketų.

Jei -v vėliava yra duodama tris kartus, atspausdinamas saugos indeksas ir paslaugos ID.

Klaidų kodai išspausdinami, norint nutraukti paketus, išskyrus "Ubik" švyturių paketus (nes abortų paketai naudojami "yes" balsavimui dėl Ubik protokolo).

Atkreipkite dėmesį, kad AFS užklausos yra labai didelės, ir daugelis argumentų nebus spausdinami, išskyrus snaplen yra padidintas. Pabandykite naudoti `-256"stebėti AFS srautą".

AFS atsakymo paketai aiškiai neapibrėžia RPC operacijos. Vietoj to tcpdump seka "naujausius" užklausimus ir juos suderina su atsakymais, naudojančiais skambučio numerį ir paslaugos ID. Jei atsakymas neatitinka atitinkamo prašymo, jis gali būti neskaidomas.

KIP Appletalk (DDP per UDP). "Appletalk" DDP paketai, įkeliami UDP datagrams, yra dekapsuliuojami ir išmesti kaip DDP paketai (t. Y. Visa UDP antraštės informacija yra atmestos). Failas /etc/atalk.names yra naudojamas išversti "appletalk" tinklo ir mazgų numerius vardams.

Šios formos eilutės turi šią formą:

numerio pavadinimas 1.254 eteris16.1 icsd-net1.254.110 ace

Pirmosios dvi eilutės pa