Skip to main content

Tcpdump: piemēri, opcijas un vēl

Anonim

Tcpdump ir komanda, ko izmanto dažādās Linux operētājsistēmās (OS), kas apkopo TCP / IP paketes, kas iet caur tīkla adapteri. Līdzīgi kā pakešu snifera rīks, tcpdump var ne tikai analizēt tīkla trafiku, bet arī saglabāt to failā.

Atšķirībā no dažām komandām, kuras pēc noklusējuma nodrošina operētājsistēma, iespējams, ka jūs nevarat izmantot tcpdump, jo tā nav instalēta. Lai instalētu tcpdump, izpildiet apt-get install tcpdump vai yum instalēt tcpdump, atkarībā no jūsu operētājsistēmas.

Kā darbojas Tcpdump

Tcpdump izdrukā pakešu galvenes uz tīkla saskarnes, kas atbilst Būlajam izteiksme . To var arī palaist ar-w karodziņš, kas liek tai saglabāt pakešdatus failā vēlākai analīzei un / vai ar-r karodziņš, kas liek tai lasīt no saglabātā pakešdatnes, nevis lasīt paketes no tīkla saskarnes. Visos gadījumos ir tikai tie iepakojumi, kas atbilst izteiksme tiks apstrādāts ar tcpdump .

Tcpdump būs, ja ne skrien ar-c karogs turpina sagrābt paketes, līdz to pārtrauc SIGINT signāls (ģenerēts, piemēram, rakstot pārtraucējus, parasti Ctrl + C) vai SIGTERM signāls (parasti izveidots arnogalināt(1) komanda); ja braucat ar-c karogs, tā uztvers paketes, līdz to pārtrauks SIGINT vai SIGTERM signāls vai noteiktais pakešu skaits ir apstrādāts.

Iepriekš minētie slēdži ir sīkāk paskaidroti šajā rakstā.

Kad tcpdump Pabeigt fiksēt paketes, tas ziņos par:

  • Paketi, kas saņemti pēc filtra.
    • Šī nozīme ir atkarīga no OS, kurā jūs izmantojat tcpdump un, iespējams, arī tā, kā operētājsistēma ir konfigurēta. Ja komandrindā ir norādīts filtrs, dažās operētājsistēmās tas ņem vērā pakešus, neatkarīgi no tā, vai tie ir saskaņoti ar filtra izteiksmi, bet uz citiem tas ņem vērā tikai tādus pakotnes, kas tika saskaņotas ar filtra izteiksmi, un tos apstrādāja tcpdump.
  • Pakete "nokrita ar kodolu".
    • Šis ir pakešu skaits, kas tika nokritušies bufera telpas trūkuma dēļ, izmantojot pakešu uztveršanas mehānismu OS, kurā tcpdump darbojas, ja operētājsistēma šo informāciju ziņo lietojumprogrammām. Ja nē, tas tiks paziņots kā 0.

Uz platformām, kas atbalsta SIGINFO signālu, piemēram, lielāko daļu BSD (Berkeley Software Distributions), tas ziņo par šiem rādītājiem, kad saņems SIGINFO signālu (kas ģenerēts, piemēram, ierakstot statusa rakstzīmi, parasti Ctrl + T) un turpinās notveršanā paketes.

Tcpdump saderība

Tīkla pakešu lasīšanai no tīkla saskarnes ar tcpdump komandu var būt nepieciešams, ka jums ir īpašas privilēģijas ( lasīšana saglabātai pakešfailai nav nepieciešamas šādas tiesības):

  • SunOS 3.x vai 4.x ar NIT vai BPF: Jums ir jābūt lasīt piekļuvi / dev / nit vai dev / bpf * .
  • Solaris ar DLPI: Jums ir jābūt lasīšanas / rakstīšanas piekļuvei tīkla pseidoderēmai, piemēram, / dev / le . Tomēr vismaz dažās Solaris versijās to nepietiek, lai atļautu tcpdump lai uztvertu nejaušā režīmā; uz šīm Solaris versijām jums jābūt root vai tcpdump ir jāinstalē setuid root, lai uzņemtu vienkāršā režīmā. Ņemiet vērā, ka daudzās (varbūt visās) saskarnēs, ja jūs neuztverat vienkāršā režīmā, jūs neredzēsit nekādus izejošos paketus, tāpēc uztveršana nav veikta vienkāršā režīmā, iespējams, nav ļoti noderīga.
  • HP-UX ar DLPI: Jums ir jābūt root vai tcpdump jāinstalē setuid root.
  • IRIX ar snoop: Jums ir jābūt root vai tcpdump jāinstalē setuid root.
  • Linux: Jums ir jābūt root vai tcpdump jāinstalē setuid root.
  • Ultrix un Digital UNIX / Tru64 UNIX: Jebkurš lietotājs var uzņemt tīkla trafiku ar tcpdump . Tomēr neviens lietotājs (ne pat super-lietotājs) var uzņemt saskarni režīmā uz interfeisu, ja super lietotājs nav ļāvis ieslēgt nejauša režīma darbību šajā saskarnē, izmantojot pfconfig (8), un neviens lietotājs (ne arī super-lietotājs) var uztvert viencentu datplūsmu, ko ierīce saņēmusi vai nosūtījusi uz interfeisu, ja vien super lietotājs nav ļāvis ieslēgt kopējo visu režīmu šajā saskarnē, izmantojot pfconfig , tāpēc noderīga Iespējams, ka pakešu uztveršana interfeisā prasa, lai šajā saskarnē tiktu iespējota vai nu nejauša režīma, vai kopēšanas jeb režīma darbība, vai abi režīmi.
  • BSD: Jums ir jābūt lasīt piekļuvi / dev / bpf * .

Tcpdump komandu sintakse

Tāpat kā visas datora komandas, tcpdump komanda darbojas pareizi tikai tad, ja sintakse ir pareiza:

tcpdump -adflnNOpqRStuvxX -c skaits

-C faila lielums -F fails

-i interfeiss -m modulis -r fails

-s snaplen -T tips -U lietotājs -w fails

-E algo: noslēpums izteiksme

Tcpdump komandu opcijas

Šīs ir visas opcijas, kuras varat izmantot komandā tcpdump:

  • -a: Mēģinājums pārvērst tīklu un pārraidīt adreses nosaukumiem.
  • -c: Iziet pēc saņemšanas skaits paketes.
  • -C: Pirms izejmateriāla paketes ierakstīšanas saglabāšanas failā pārbaudiet, vai fails pašlaik ir lielāks par faila lielums un, ja jā, aizveriet pašreizējo saglabāšanas failu un atveriet jaunu.Saglabāt failus pēc pirmās saglabāšanas faila būs nosaukums, kas norādīts ar-w karogs ar skaitli pēc tā, sākot no 2 un turpinot augšup. Vienības faila lielums ir miljoniem bitu (1 000 000 baiti, nevis 1,048,576 biti).
  • -d: Izlaist apkopoto pakešu atbilstības kodu cilvēka lasāmā formā standarta izvadam un apturēšanai.
  • -dd: Dump paketes saskaņošanas kodu kāC programmas fragments.
  • -ddd: Dump paketes atbilstības kodu kā decimālskaitļi (iepriekš ar skaitīšanu).
  • -e: Izdrukājiet saites līmeņa virsrakstu katrā dump līnijā.
  • -E: Izmantot algo: noslēpums lai atšifrētu IPsec ESP paketes. Algoritmi var būtdes-cbc, 3des-cbc, blowfish-cbc, rc3-cbc, cast128-cbc, vainav. Noklusējums irdes-cbc. Iespēja atšifrēt paketes ir pieejama tikai tad, ja tcpdump tika apkopota ar iespējotu kriptogrāfiju. noslēpums ASCI slepenā atslēga. Pašlaik nevaram veikt patvaļīgu bināro vērtību. Opcija pieņem RFC2406 ESP, nevis RFC1827 ESP. Šī opcija ir paredzēta tikai atkļūdošanas nolūkiem, un šīs opcijas izmantošana ar patiesi "slepeno" taustiņu tiek noraidīta. Iesniedzot IPsec slepeno atslēgu komandrindā, jūs padarīt to redzamu citiem, izmantojot ps (1) un citos gadījumos.
  • -f: Drukā "svešās" interneta adreses skaitliski, nevis simboliski (šī opcija ir paredzēta, lai apietu nopietnus smadzeņu bojājumus Saule serverī - parasti tas pastāvīgi pārtrauc tulkojumus vietējos interneta numurus).
  • -F: Izmantot fails kā izejvielu filtra izteiksmei. Papildu izteiksme komandrindā tiek ignorēta.
  • -i: Klausieties tālāk interfeiss . Ja nav norādīts, tcpdump meklē sistēmas saskarnes sarakstu ar vismazāko numurēto, konfigurēto saskarni (izņemot loopback). Kaklasaites tiek sadalītas, izvēloties agrāko spēli. Linux sistēmās ar 2.2 vai jaunāku kodolu, an interfeiss "jebkura" argumentu var izmantot, lai fiksētu pakešus no visām saskarnēm. Ievērojiet, ka uz jebkura veida ierīcē uztveršanas netiks veikta izklaidējošā režīmā.
  • -l: Padarīt stdout līniju buferizēt. Noderīgs, ja vēlaties, lai dati tiktu uztverti. Piemēram, "tcpdump -l | tee dat" "vai" tcpdump -l> dat un tail -f dat "".
  • -m: Ielādējiet SMI MIB moduļa definīcijas no faila modulis . Šo iespēju var izmantot vairākas reizes, lai ielādētu vairākus MIB moduļus tcpdump .
  • -n: Nepārveidot uzņēmēja adreses nosaukumiem. To var izmantot, lai izvairītos no DNS meklēšanām.
  • -nn: Nepārveidot protokolu un portu numurus utt. Arī uz vārdiem.
  • -N: Nepārdrukājiet resursdatora nosaukumu domēna nosaukuma kvalifikāciju. Piemēram, ja jūs piešķirat šo karodziņu, pēc tam tcpdump drukās "nic", nevis "nic.ddn.mil" vietā.
  • -O: Neizmantojiet pakešu atbilstības kodu optimizētāju. Tas ir noderīgi tikai tad, ja jums ir aizdomas par kļūdu optimizētājā.
  • -p: Nē ielikt interfeisu neizmantotā režīmā. Ņemiet vērā, ka saskarne kādā citā nolūkā var būt nepārvaldīta; tādēļ "-p" nevar izmantot kā saīsinājumu "ētera mītnes {local-hw-addr}" vai ētera apraidei ".
  • -q: Ātra (klusa) izeja. Drukājiet mazāk protokola informācijas, tāpēc izejas līnijas ir īsākas.
  • -R: Pieņemsim, ka ESP / AH pakešu pamatā ir vecā specifikācija: no RFC1825 līdz RFC1829. Ja norādīts, tcpdump netiks izdrukāta atkārtojuma novēršanas lauks. Tā kā ESP / AH specifikācijā nav protokola versijas lauka, tcpdump nevar secināt ESP / AH protokola versiju.
  • -r: Lasīt paketes no fails (kas tika izveidots ar -w opciju). Standarta ievadi izmanto, ja fails ir "-" ".
  • -S: Drukājiet absolūto, nevis relatīvo TCP sērijas numurus.
  • -s: Snarf snaplen datu bitu skaits no katra paketes, nevis noklusējums 68; ar SunOS NIT minimums ir faktiski 96. Sešdesmit astoņi biti atbilst IP, ICMP, TCP un UDP, bet tie var saīsināt protokola informāciju no vārdu servera un NFS paketēm (skatiet zemāk). Pakete, kas saīsināta ierobežotā momentuzņēmuma dēļ, ir norādīta izvadē ar "| proto '', kur proto ir tā protokola līmeņa nosaukums, kurā notiek sagriešana. Ņemiet vērā, ka lielāku momentuzņēmumu uzņemšana palielina laiku, kas nepieciešams paketu apstrādei, un faktiski samazina pakešu buferizācijas apjomu. Tas var izraisīt pakešu pazaudēšanu. Jums vajadzētu ierobežot snaplen uz mazāko numuru, kas uztvers jums interesējošo protokola informāciju. Iestatījums snaplen līdz 0 nozīmē izmantot vajadzīgo garumu, lai iegūtu pilnus iepakojumus.
  • -T: Piespiediet " izteiksme "jāinterpretē norādītajā tips . Pašlaik ir zināmi veidicnfp (Cisco NetFlow protokols),rpc (Attālās procedūras izsaukums),rtp (Reāllaika lietojumprogrammu protokols),rtcp (Reālā laika lietojumprogrammu kontroles protokols),snmp (Vienkāršs tīkla pārvaldības protokols),vat (Visual Audio Tool) unwb (izplatīta baltā valde).
  • -t: Nē izdrukājiet laikspiedolu katrā izlaiduma līnijā.
  • -tt: Izdrukājiet neformatētu laika zīmogu katrā izlaiduma rindā.
  • -U: Liek root privātumu un maina lietotāja ID līdz lietotājs un grupas ID primārajai grupai lietotājs .
  • Piezīme: Red Hat Linux automātiski liedz lietotājam piešķirtās tiesības "pcap", ja nav norādīts nekas cits.
  • -ttt: Drukājiet delta (mikrosekundēs) starp pašreizējo un iepriekšējo līniju katrā izlaiduma līnijā.
  • -tttt: Izdrukājiet laika zīmogu noklusējuma formātā, kas turpinās pēc datuma katrā izlaiduma rindā.
  • -u: Izdrukāt nedecodētus NFS rokturus.
  • -v: (Nedaudz vairāk) verbose izlaide. Piemēram, tiek izdrukāts dzīves laiks, identifikācija, kopējais garums un opcijas IP paketē. Arī nodrošina papildu paketes integritātes pārbaudes, piemēram, IP un ICMP galvenes kontrolsummas verifikāciju.
  • -vv: Vēl vairāk verbose izejas. Piemēram, no NFS atbildes pakešu tiek izdrukāti papildu lauki, un SMB paketes tiek pilnībā dekodētas.
  • -vvv: Vēl vairāk verbose izejas. Piemēram, telnetSBSE iespējas tiek izdrukātas pilnībā. Ar -X Telnet opcijas tiek izdrukātas arī hex.
  • -w: Rakstiet neapstrādātos paketus uz fails nevis parsēšanu un drukāšanu. Tos vēlāk var izdrukāt ar -r opciju. Standarta izlaidi izmanto, ja fails ir "-" ".
  • -x: Izdrukājiet katru paketi (atskaitot saišu līmeņa galveni) heksadėžē. Mazākais no visa iepakojuma vai snaplen tiks izdrukāti baiti. Ņemiet vērā, ka tas ir viss saišu slāņa pakete, tādēļ saišu slāņiem (piemēram, Ethernet), drukāšanas baitos tiks drukāts arī tad, ja augstākā slāņa pakete ir īsāka nekā nepieciešamais polsterējums.
  • -X: Drukājot hex, izdrukā arī ascii. Tādējādi, ja-x ir arī iestatīts, pakete tiek izdrukāta hex / ascii. Tas ir ļoti noderīgi jaunu protokolu analīzei. Pat ja-x arī nav iestatīts, daži daži pakešu daĜas var tikt drukātas hex / ascii.
  • izteiksme : Atlasa, kuras paketes tiks dempingētas. Ja nē izteiksme tiek dota, visas paketes tīklā tiks dempinga. Pretējā gadījumā tikai paketes, par kurām izteiksme ir "taisnība" tiks pārdota par dempinga cenām. The izteiksme sastāv no viena vai vairākiem primitīvi. Primitīvas parasti sastāv no id (vārds vai numurs), pirms kura ir viens vai vairāki kvalifikācijas kritēriji. Ir trīs dažādi kvalifikācijas veidi:
  • tips : Kvalifikatori saka, kāda veida lieta attiecas uz id vārdu vai numuru. Iespējamie veidi iruzņēmēja, tīkls, unostaPiemēram, "host foo", "net 128.3", "port 20". Ja nav tipa kvalifikācijasuzņēmēja tiek pieņemts.
  • dir : Kvalifikatori norāda konkrētu pārsūtīšanas virzienu uz un / vai no id . Iespējamie virzieni irsrc, dst, src vai dst unsrc un dst (piemēram, "src foo", "dst net 128.3", "src vai dst ports ftp-data"). Ja trīsklastera navsrc vai dst tiek pieņemts. Nulles saišu slāņiem (t.i., no punkta-to-punktu protokoliem, piemēram, slīdēšanai) ienākošais un izejošais precizējumus var izmantot, lai norādītu vēlamo virzienu.
  • proto : Atbilstošie spēlētāji ierobežo spēles atbilstību konkrētam protokolam. Iespējamie protos ir: ēteris, fddi, tr, ip, ip6, arp, rarp, decnet, tcp, unudpPiemēram, "ether src foo", "arp net 128.3", "tcp port 21". Ja nav proto kvalifikatora, tiek pieņemti visi protokolam atbilstošie protokoli. Piemēram, "src foo" nozīmē "(ip vai arp vai rarp) src foo" (izņemot, ja tas nav juridisks sintakse), "net bar" nozīmē "(ip vai arp vai rarp) net bar" un "53 osta" nozīmē "(tcp vai udp) osta 53".
    • Fddi faktiski ir pseidonīze par "ēteri"; parsētājs tos izturas vienādi kā "norādītā tīkla saskarnē izmantoto datu pārraides līmeni." FDDI galvenes satur Ethernet tipa avota un galamērķa adreses, un bieži vien tiem ir Ethernet tipa pakešu veidi, tāpēc varat vienkārši filtrēt šos FDDI laukus kā ar analogajiem laukiem Ethernet. FDDI galvenes satur arī citus laukus, taču to nevar skaidri norādīt filtra izteiksmē.
    • Tāpat "tr" ir aizstājējs nosaukums "ēteris"; iepriekšējā punkta paziņojumi par FDDI galvenēm attiecas arī uz Token Ring galvenēm.

Papildus iepriekš minētajam ir daži īpaši "primitīvi" atslēgvārdi, kas neizmanto modeli:vārteja, raidījums, mazāk, lielāks, un aritmētika izteiksmes. Visi šie ir aprakstīti tālāk.

Sarežģītāki filtru izteicieni tiek veidoti, izmantojot vārdusun, vai, un apvienot primitīvas, piemēram, "host foo, nevis port ftp, nevis port ftp-data". Lai saglabātu rakstīšanu, var izlaist identiskus kvalifikatoru sarakstus (piemēram, "tcp dst porta ftp vai ftp dati vai domēns" ir tieši tāds pats kā "tcp dst porta ftp vai tcp dst ports ftp-data vai tcp dst porta domēns").

Tie ir primitīvi, kas atļauti ar tcpdump komandu:

  • dst host uzņēmēja
    • Taisnība, ja paketes IPv4 / v6 galamērķa lauks ir uzņēmēja , kas var būt vai nu adrese, vai vārds.
  • src resursdators uzņēmēja
    • Taisnība, ja pakešu IPv4 / v6 avota lauks ir uzņēmēja .
  • uzņēmēja uzņēmēja
    • Taisnība, ja ir vai nu pakešu IPv4 / v6 avots vai galamērķis uzņēmēja . Jebkura no iepriekš minētajām saimniekdarījuma izteiksmēm var tikt pievienota ar atslēgvārdiem,ip, arp, rarp, vaiip6, kā ip resursdators uzņēmēja (kas ir līdzvērtīgs ēterproto ip un saimniekdators uzņēmēja).
    • Ja uzņēmēja ir nosaukums ar vairākām IP adresēm, katra adrese tiks pārbaudīta par atbilstību.
  • ēteris dst ehost
    • Taisnība, ja ir Ethernet galamērķa adrese ehost . Ehost var būt vai nu nosaukums no / etc / ethers vai pēc cipara (sk ēteri (3N) ciparu formātā).
  • ētera src ehost
    • Taisnība, ja Ethernet avota adrese ir ehost .
  • ētera saimniecība ehost
    • Taisnība, ja ir vai nu Ethernet avota vai galamērķa adrese ehost .
  • vārteja uzņēmēja
    • Taisnība, ja tiek izmantots pakete uzņēmēja kā vārteju (t.i., Ethernet avota vai galamērķa adrese bija uzņēmēja bet ne IP avota, ne IP galamērķis nebija uzņēmēja ).
    • Saimniekdators ir jābūt nosaukumam, un tam jāatrodas gan no ierīces resursdatora nosaukuma līdz IP adreses izšķiršanas mehānismiem (resursdatora nosaukuma failam, DNS, NIS utt.), gan no ierīces resursdatora nosaukuma līdz Ethernet adreses izšķirtspējas mehānismam (/ etc / eters uc).
    • Līdzvērtīgs izteiksme ir ētera saimniecība ehost un tagad uzņem uzņēmēja , ko var izmantot ar vārdiem vai skaitļiem uzņēmēja / ehost .) Šo sintaksi nedarbojas konfigurācijā ar IPv6 iespējām.
  • dst net tīkls
    • Taisnība, ja pakešu IPv4 / v6 galamērķa adresei ir tīkla numurs tīkls . Tīkls var būt vai nu nosaukums no / etc / networks vai tīkla numura (sk tīkli (4) sīkākai informācijai).
  • src net tīkls
    • Taisnība, ja paketes IPv4 / v6 avota adresei ir tīkla numurs tīkls .
  • tīkls tīkls
    • Taisnība, ja paketes IPv4 / v6 avota vai galamērķa adresei ir tīkla numurs tīkls .
  • tīkls tīkls maska netmask
    • Taisnība, ja atbilst IP adrese tīkls ar konkrēto netmask . Var tikt kvalificēts arsrc vaidst. Ņemiet vērā, ka šis sintakse nav derīga IPv6 tīkls .
  • tīkls tīkls / len
    • Taisnība, ja atbilst IPv4 / v6 adrese tīkls ar net masku len biti plata. Var tikt kvalificēts arsrc vaidst.
  • dst ostas osta
    • Taisnība, ja pakete ir ip / tcp, ip / udp, ip6 / tcp vai ip6 / udp un tā galamērķa porta vērtība ir osta . The osta var būt numurs vai nosaukums, ko izmanto / etc / services (sk tcp (4P) un udp (4P)). Ja tiek izmantots nosaukums, tiek pārbaudīts gan porta numurs, gan protokols. Ja tiek izmantots cipars vai neskaidrs nosaukums, tiek atzīmēts tikai porta numurs (piemēram,dst ports 513 izdrukās gan tcp / login trafiku, gan udp / kas satiksmē, unostas domēns izdrukās gan tcp / domēnu, gan udp / domēnu datplūsmu).
  • src ports osta
    • Taisnība, ja paketē ir avota porta vērtība osta .
  • osta osta
    • Taisnība, ja ir vai nu paketes avota vai galamērķa osta osta . Jebkurš no iepriekš minētajiem portu izteicieniem var būt pievienots atslēgvārdiem,tcp vaiudp, kā tcp src ports osta , kas atbilst tikai tcp paketēm, kuru avota ports ir osta .
  • mazāk garums
    • Taisnība, ja pakešu garums ir mazāks vai vienāds ar garums . Tas ir līdzvērtīgs len <= Garums .
  • lielāks garums
    • Taisnība, ja paketei ir garums, kas ir lielāks vai vienāds ar garums . Tas ir līdzvērtīgs len> = Garums .
  • ip proto protokols
    • Taisnība, ja pakete ir IP pakete (sk ip (4P)) protokola tipa protokols . Protokols var būt skaitlis vai viens no nosaukumiem ICMP , icmp6 , igmp , igrp , pim , ah , esp , vrrp , udp , vai tcp . Ņemiet vērā, ka identifikatori tcp , udp , un ICMP ir arī atslēgvārdi, un tie jāaizvāc, izmantojot atpakaļskata slīpsvītru (), kas ir C-shell. Ņemiet vērā, ka šis primitīvs nepārraida protokola galvenes ķēdi.
  • ip6 proto protokols
    • Taisnība, ja pakete ir protokola tipa IPv6 pakete protokols . Ņemiet vērā, ka šis primitīvs nepārraida protokola galvenes ķēdi.
  • ip6 protochain protokols
    • Taisnība, ja pakete ir IPv6 pakete, un tajā ir protokola galvene ar tipu protokols savā protokola galvenes ķēdē. Piemēram, ipv6 protochain 6 atbilst jebkuram IPv6 paketei ar TCP protokola galveni protokola galvenes ķēdē. Pakete var saturēt, piemēram, autentifikācijas galvenes, maršrutēšanas galvenes vai hop-by-hop opcijas galvenes starp IPv6 galveni un TCP galveni. Šis primitīvs izstaro BPF kods ir sarežģīts, un to nevar optimizēt ar BPF optimizētāja kodu tcpdump , tāpēc tas var būt nedaudz lēns.
  • ip protochain protokols
    • Līdzvērtīgsip6 protochain protokols , bet tas attiecas uz IPv4.
  • ētera raidījums
    • Taisnība, ja pakete ir Ethernet apraides pakete. The ēteris atslēgvārds nav obligāts.
  • ip raidījums
    • Taisnība, ja pakete ir IP apraides pakete. Tā pārbauda gan visu nulles, gan visu apraides konvenciju, un meklē vietējo apakštīkla masku.
  • ētera multicast
    • Taisnība, ja pakete ir Ethernet multicast pakete. The ēteris atslēgvārds nav obligāts. Tas ir saīsinājums par "ēteris 0 & 1! = 0'.
  • ip multicast
    • Taisnība, ja pakete ir IP multicast pakete.
  • ip6 multicast
    • Taisnība, ja pakete ir IPv6 multicast pakete.
  • ēterproto protokols
    • Taisnība, ja pakete ir ētera tipa protokols . Protokols var būt skaitlis vai viens no nosaukumiem ip , ip6 , arp , rarp , atalk , aarp , decnet , sca , lat , mopdl , moprc , iso , stp , ipx , vai netbeui . Ņemiet vērā, ka šie identifikatori ir arī atslēgvārdi, un tie jāaizvāc, izmantojot slīpsvītru ().
    • Attiecībā uz FDDI (piem., "fddi protokols arp') un Token Ring (piem., "tr protokols arp'), lielākajā daļā šo protokolu protokola identifikācija tiek iegūta no loģiskās saiknes kontroles (LLC) 802.2 galvenes, kas parasti tiek novietota virs FDDI vai Token Ring galvenes.
    • Ja filtrē lielāko daļu protokola identifikatoru FDDI vai Token Ring, tcpdump pārbauda tikai LLC sadaļas protokola ID lauku tā saucamajā SNAP formātā ar Organizācijas vienības identifikatoru (OUI) 0x000000, iekapsulēto Ethernet; tas nekontrolē, vai pakete ir SNAP formātā ar 0x000000 OUI.
    • Izņēmumi ir iso , par kuru tā pārbauda LLC virsraksta laukus DSAP (galamērķa pakalpojuma piekļuves punkts) un SSAP (avota pakalpojumu piekļuves punkts) stp un netbeui , kur tā pārbauda LLC virsraksta DSAP, un atalk , kur tā pārbauda SNAP formāta paketi ar OUI 0x080007 un Appletalk etype.
    • Attiecībā uz Ethernet tcpdump lielākajā daļā šo protokolu pārbauda Ethernet tipa lauku; izņēmumi ir iso , sap , un netbeui , par kuru tā pārbauda 802.3 rāmi un pēc tam pārbauda LLC virsrakstu tāpat kā FDDI un Token Ring; atalk , kur tā pārbauda gan Appletalk tipa Ethernet rāmī, gan SNAP formāta paketē tāpat kā FDDI un Token Ring; aarp , kur tā pārbauda Appletalk ARP etīzi Ethernet rāmī vai 802.2 SNAP kadru ar 0x000000 OUI; un ipx , kur tā pārbauda IPX etīdi Ethernet rāmī, IPX DSAP, kas atrodas LLC virsrakstā, 802,3 bez IPK galvenes ar IPK nosaukumu un IPX etape SNAP rāmī.
  • dececēt src uzņēmēja
    • True, ja DECNET avota adrese ir uzņēmēja , kas var būt formas "10.123" adrese vai DECNET resursdatora nosaukums. DECNET resursdatora nosaukuma atbalsts ir pieejams tikai Ultrix sistēmās, kuras konfigurētas, lai darbinātu DECNET.
  • decnet dst uzņēmēja
    • Taisnība, ja DECNET galamērķa adrese ir uzņēmēja .
  • decnet resursdators uzņēmēja
    • Taisnība, ja ir vai nu DECNET avota vai galamērķa adrese uzņēmēja .
  • ip, ip6, arp, rarp, atalk, aarp, decnet, iso, stp, ipx, netbeui
    • Saīsinājumi ēterproto p kur p ir viens no iepriekšminētajiem protokoliem.
  • lat, moprc, mopdl
    • Saīsinājumi ēterproto p kur p ir viens no iepriekšminētajiem protokoliem. Pieraksti to tcpdump pašlaik nezina, kā analizēt šos protokolus.
  • vlan vlan_id
    • Taisnība, ja pakete ir IEEE 802.1Q VLAN pakete. Ja vlan_id ir norādīts tikai taisnība, ja pakete ir norādīta vlan_id . Ņemiet vērā, ka pirmaisvlan atslēgvārds sastopams izteiksme mainās dekodēšanas kompensācijas par atlikušo daļu izteiksme pieņemot, ka pakete ir VLAN pakete.
  • tcp, udp, ICMP
    • Saīsinājumi ip proto p vai ip6 proto p kur p ir viens no iepriekšminētajiem protokoliem.
  • iso proto protokols
    • Taisnība, ja pakete ir protokola tipa OSI pakete protokols . Protokols var būt skaitlis vai viens no nosaukumiem clnp , esis , vai isis .
  • clnp, esis, isis
    • Saīsinājumi iso proto p kur p ir viens no iepriekšminētajiem protokoliem. Pieraksti to tcpdump veic nepilnīgu darbu, analizējot šos protokolus.
  • expr relop expr
    • Taisnība, ja saistība ir tur, kur relop ir viens no>, <,> =, <=, =,! =, un expr ir aritmētiskais izteiksts, kas sastāv no vesela skaitļu konstantēm (izteikts C standarta sintaksē), normāliem bināro operatoriem +, -, *, /, &, |, garuma operatoram un īpašiem pakešdatu piekļuves līdzekļiem. Lai piekļūtu datiem paketē, izmantojiet šādu sintaksi: proto expr: lielums .

Proto ir viens noēteris, fddi, tr, ppp, paslīdēt, saite, ip, arp, rarp, tcp, udp, ICMP, vai ip6, un norāda protokola slāni indeksa darbībai (ēteris, fddi, tr, ppp, paslīdēt, unsaite visi attiecas uz saites slāni). Pieraksti to tcp, udp , un citi augšējā līmeņa protokola veidi attiecas tikai uz IPv4, nevis uz IPv6 (tas tiks fiksēts nākotnē). Baitu nobīde, salīdzinot ar norādīto protokola slāni, tiek norādīta ar expr . Izmērs nav obligāts un norāda interesējošajā jomā bitu skaitu; tas var būt viens, divi vai četri, un pēc noklusējuma tas ir viens. Garuma operators, kas norādīts pēc atslēgvārdalen, sniedz pakešu garumu.

Piemēram, 'ēteris 0 & 1! = 0"nozveja visu multicast satiksmi. Vārds "ip 0 & 0xf! = 5"nozvejas visus IP paketes ar iespējām. Vārds "ip 6: 2 & 0x1fff = 0"nozveja tikai nesagraujošās datagrammas un sadrumstaloto datagrammu fragmentu nulles. Šī pārbaude tiek netieši piemērotatcp unudp indeksa operācijas. Piemēram, tcp 0 vienmēr ir TCP pirmais baits galvene , un nekad nenozīmē pirmo interfeisa fragmenta baitu.

Dažas kompensācijas un lauka vērtības var izteikt kā vārdus, nevis kā ciparu vērtības. Pieejami sekojoši protokola galvenes lauku kompensējumi: icmptype (ICMP tipa lauks)icmpcode (ICMP koda lauks) untcpflags (TCP karodziņu lauks).

Ir pieejamas šādas ICMP tipa lauka vērtības:ICMP-echoreple, ICMP-unreach, ICMP-sourcequench, ICMP-novirzīšana, ICMP-echo, ICMP-routeradvert, ICMP-routersolice, ICMP-timxceed, ICMP-paramprob, ICMP-tstamp, ICMP-tstampreply, ICMP-IREQ, ICMP-ireqreply, ICMP-maskreq, ICMP maskreply.

Ir pieejamas šādas TCP karodziņu lauka vērtības:tcp-fin, tcp-syn, tcp-rst, tcp-push, tcp-push, tcp-ack, tcp-urg.

Primitīvas var apvienot, izmantojot kādu no šīm īpašībām:

  • Pieslēgtā pirmizdevēju un operatoru grupa (iekavas ir Shell īpašas īpašības un ir jāaizvāc)
  • Negošana ("!"vai"')
  • Concatenācija ("&&"vai"un')
  • Alternatīva ('||"vai"vai')

Negats ir visaugstākā prioritāte. Alfabētiskā secība un apvienošana ir vienāda prioritāte un saistīta no kreisās puses uz labo. Ievērojiet to skaidriun Žetoni, nevis saliekšana, ir nepieciešami apvienošanai.

Ja identifikators tiek piešķirts bez atslēgvārda, tiek pieņemts visjaunākais atslēgvārds. Piemēram, nav uzņemšanas vs un ace ir īss nav uzņemšanas vs un uzņēmējas ace. Tomēr to nevajadzētu sajaukt ar nē (uzņēmēja vs vai ace).

Ekspresijas argumentus var nodot tālāk tcpdump vai nu kā viens arguments, vai kā vairāki argumenti, atkarībā no tā, kurš ir ērtāks. Parasti, ja izteiksme satur Shell meta rakstzīmes, to ir vieglāk nodot kā vienu, citēto argumentu. Pirms pārmeklēšanas tiek apvienoti vairāki argumenti ar atstarpēm.

Tcpdump piemēri

tcpdump saimnieks sundown

Iepriekš minētā tcpdump komanda tiek izmantota, lai izdrukātu visus paketes, kas ierodas vai attālinās no saulrieta

tcpdump saimnieks helios un (karstu vai ace )

Šis tcpdump piemērs izdrukā datplūsmu starp helios un vai nu karsts vai ace

tcpdump ip host ace un nevis helios

Jūs varat izmantot šo tcpdump komandu, lai izdrukātu visus IP paketes starp ace un jebkura saimniece, izņemot helios.

tcpdump neto ucb-ēteris

Iepriekš minētajā piemērā tcpdump izdrukā visu satiksmi starp vietējiem saimniekiem un saimniekiem Berkelejā.

tcpdump "vārtejas snup un (port ftp vai ftp-data)"

Šis nākamais tcpdump komandu piemērs tiek izmantots, lai izdrukātu visu FTP datplūsmu, izmantojot interneta vārteju snup . Ņemiet vērā, ka izteiciens ir citēts, lai novērstu apvalka nepareizu interpretēšanu iekavās.

tcpdump ip un nevis net vietējais tīkls

Iepriekš minētajā tcpdump piemērā komanda izdrukā datplūsmu, kas nav iegūta vai paredzēta vietējiem saimniekiem.

tcpdump 'tcp tcpflags & (tcp-syn | tcp-fin)! = 0 un nevis src un dst net vietējais tīkls '

Iepriekš minētajam tcpdump piemērā komanda tiek izmantota katras TCP sarunas sākuma un beigu pakešu (SYN un FIN paketēm) drukāšanai, kas ietver neklāvu saimniekdatoru.

tcpdump "vārteja snup un ip 2: 2> 576 '

Iepriekš minētā komanda izdrukās IP adreses, kuru garums pārsniedz 576 baiti snup

tcpdump "ēteris 0 & 1 = 0 un ip 16> = 224 '

Iepriekš parādītā tcpdump komanda izdrukā IP apraides vai multicast paketes, kas bija nē nosūtīts, izmantojot Ethernet apraidi vai multicast.

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

Šajā pēdējā tcpdump piemērā komanda izdrukā visus ICMP paketes, kas nav echo pieprasījumi vai atbildes (t.i., nav ping paketes).

Tcpdump izejas formāts

Izeja no tcpdump ir atkarīgs no protokola. Tālāk sniegts īss apraksts un piemēri lielākajai daļai formātu.

Linklīmes galvenes. Ja ir dota opcija -e, saite līmeņa virsraksts tiek izdrukāts. Ethernet tīklā tiek izdrukāta avota un galamērķa adreses, protokols un pakešu garums.

FDDI tīklos tiek parādīta opcija -e tcpdump lai drukātu lauku "rāmja vadība", avota un galamērķa adreses un paketes garumu. Norises paketes (piemēram, tās, kurās ir IP datagrami) ir "async" paketes, kuru prioritātes vērtība ir no 0 līdz 7: piemēram, "async4" Tiek pieņemts, ka šādi iepakojumi satur 802.2 Logical Link Control (LLC) paketi; ja tas ir, tiek izdrukāts nē ISO datagrammu vai tā dēvēto SNAP paketi.

Uz Token Ring tīkliem tiek parādīta opcija -e tcpdump lai izdrukātu laukus "piekļuves kontrole" un "rūts vadība", avota un galamērķa adreses un pakešu garumu. Tāpat kā FDDI tīklos tiek pieņemts, ka pakām ir LLC pakete. Neatkarīgi no tā, vai ir norādīta opcija "-e", avota maršrutēšanas informācija tiek drukāta uz avota maršrutētiem paketēm.

(N.B .: Turpmākajā aprakstā ir pazīšanās par SLIP kompresijas algoritmu, kas aprakstīts RFC-1144.)

Par SLIP saitēm izdrukā virziena indikatoru ("I" ienākošajam, "O" izejošajam), paketes tipa un saspiešanas informācija. Pakešu tips tiek izdrukāts vispirms. Trīs veidi ir ip , utcp , un ctcp . Nav izdrukāta nekāda saišu informācija ip paketes. TCP pakešu gadījumā savienojuma identifikators tiek drukāts pēc tipa. Ja pakete ir saspiesta, tiek izdrukāta tā kodētā galvene. Īpašie gadījumi ir drukāti kā* S + n un* SA + n , kur n ir summa, pēc kuras kārtas numurs (vai kārtas numurs un ack) ir mainījies. Ja tas nav īpašs gadījums, izdrukā nulles vai vairāk izmaiņas. Izmaiņas norāda U (steidzamais rādītājs), W (logs), A (ack), S (kārtas numurs) un I (pakešu ID), kam seko delta (+ n vai -n) vai jauna vērtība (= n). Visbeidzot tiek izdrukāts datu apjoms paketē un saspiestais galvenes garums.

Piemēram, nākamajā rindiņā parādīts saspiests TCP paketes ārējais savienojums ar netiešo savienojuma identifikatoru; ack ir mainījies par 6, kārtas numurs ir 49, un paketes ID - 6; ir 3 baiti datu un 6 baiti saspiestā galvenes:

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

Arp / rarp paketes. Arp / rarp izeja parāda pieprasījuma veidu un tā argumentus. Formāts ir paredzēts pašsaprotami. Šeit ir īss paraugs, kas ņemts no "rlogin" sākuma no resursdatora rtsg uzņemt csam :

Arp kurš ir csam pateikt rtsgArp atbilde csam ir CSAM

Pirmajā rindā teikts, ka rtsg nosūtīja ARP paketi, kurā tika lūgta interneta resursdatora csam Ethernet adrese. Csam atbildes ar savu Ethernet adresi (šajā piemērā Ethernet adreses ir cepurēs un interneta adreses mazajiem burtiem).

Tas būtu mazāk lieki, ja mēs būtu izdarījuši tcpdump -n :

ARP kurš ir 128.3.254.6 pateikt 128.3.254.68Arp atbilde 128.3.254.6 ir plkst 02: 07: 01: 00: 01: c4

Ja mēs būtu izdarījuši tcpdump-e , tas, ka tiek raidīts pirmais pakalpojums, un otrais ir punkts uz punktu, būtu redzams:

RTSG Broadcast 0806 64: arp kurš - csam pateikt rtsgCSAM RTSG 0806 64: arp atbilde csam ir CSAM

Attiecībā uz pirmo paketi tas norāda, ka Ethernet avota adrese ir RTSG, galamērķis ir Ethernet apraides adrese, tipa lauks bija hex 0806 (tips ETHER_ARP), un kopējais garums bija 64 baiti.

TCP paketes (N.B.:Šāds apraksts apzinās TCP protokolu, kas aprakstīts RFC-793. Ja jūs neesat pazīstams ar protokolu, ne šis apraksts, ne tcpdump jums nebūs daudz) . TCP protokola līnijas vispārējais formāts ir:

src> dst: karodziņu dati-seqno ack loga steidzamas iespējas

Src un dst ir avota un galamērķa IP adreses un ostas. Karogi ir daži S (SYN), F (FIN), P (PUSH) vai R (RST) vai viena "." kombinācija. (bez karodziņiem). Datu sekošana apraksta sērijas telpas daļu, uz kuru attiecas šī paka dati (sk. zemāk redzamo piemēru). Ack ir nākamo datu kārtas numurs, kas sagaidīts citā šajā savienojuma virzienā. Logu ir saņemto buferšķīdumu bitu skaits, kas ir citā šajā savienojuma virzienā. Urg norāda, ka paketē ir steidzami dati. Iespējas ir tcp opcijas, kas pievienotas leņķa iekavās (piemēram, ).

Src, dst un karogi vienmēr ir klāt. Pārējie lauki ir atkarīgi no paketes tcp protokola galvenes satura un tiek izvadīti tikai tad, ja tas ir nepieciešams.

Šeit ir rlogin no uzņēmēja sākuma daļa rtsg uzņemt 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

Pirmajā rindiņā teikts, ka rtsg tcp ports 1023 nosūtīja paketi uz ostu Pieslēgties par csam. TheS norāda, ka SYN karodziņš tika iestatīts. Pakešu kārtas numurs bija 768512 un tajā nebija datu. (Norāde ir "pirmā: pēdējā (nbytes)", kas nozīmē "kārtas numurus vispirms līdz pat, bet neiekļaujot Pēdējais kurš ir nbašu lietotāju datu baiti ".) Nebija neviena piggy-backed ack, pieejamais saņemšanas logs bija 4096 baiti, un bija opcijas max segmenta lieluma iespēja, pieprasot mss 1024 baiti.

Csam atbildes ar līdzīgu paketi, izņemot to, ka tajā ir iekļauts rtsg SYN maisījums, kas satur cigabacked ack. Rtsg tad acks csam's SYN. "." nozīmē, ka nav noteikti karodziņi. Paketē nebija datu, tāpēc nav datu kārtas numura. Ņemiet vērā, ka ack secības numurs ir mazs vesels skaitlis (1). Pirmā reize tcpdump redz TCP "saruna", tas izdrukā kārtas numuru no paketes. Sekojošajās sarunu paketēs tiek izdrukāta atšķirība starp pašreizējā paketes kārtas numuru un šo sākotnējo kārtas numuru. Tas nozīmē, ka secības numurus pēc pirmās var interpretēt kā relatīvās baitas pozīcijas sarunu datu plūsmā (ar pirmo datu bitu, katrs virziens ir "1"). '-S' ignorēs šo funkciju, izraisot oriģinālo sērijas numuru izvadīšanu.

Sestajā rindā rtsg nosūta csam 19 bitu datus (no 2 līdz 20 baitiem sarunas rtsg -> csam pusē). PUSH karogs ir iestatīts paketē. Septītajā rindiņā csam saka, ka ir saņemti dati, ko rtsg nosūta, bet neietver baitu 21. Lielākā daļa šo datu, šķiet, sēž lūkas buferī, jo csam saņemšanas logs ir sasniedzis 19 baiti mazāku. Csam arī nosūta vienu baitu datus rtsg šajā paketē. Astotajā un devītajā rindiņā csam nosūta divus bitus steidzamos, bloķētos datus rtsg.

Ja momentuzņēmums ir pietiekami mazs tcpdump neņēma pilnu TCP galveni, tas interpretē tik daudz virsraksta, cik iespējams, un tad ziņo "| tcp '', lai norādītu uz atlikušo daļu, nevarēja interpretēt. Ja galvenē ir fiktīvs risinājums (viens ar garumu, kas ir pārāk mazs vai virs gala beigām) tcpdump ziņo par to kā " slikts izvēlēties '' un neinterpretē citas iespējas (jo nav iespējams pateikt, kur viņi sāk). Ja galvenes garums norāda, ka opcijas ir pieejamas, bet IP datagrammas garums nav pietiekami ilgs, lai faktiski varētu būt opcijas. tcpdump ziņo par to kā " slikts HDR garums ''.

Uzņemiet paketes ar īpašām karodziņu kombinācijām. TCP galvenes kontroles bitu sadaļā ir astoņi biti:

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

Pieņemsim, ka mēs vēlamies skatīties pakešus, ko izmanto TCP savienojuma izveidei. Atcerieties, ka TCP, ja tā inicializē jaunu savienojumu, izmanto trīs virzienu rokasspiediena protokolu; savienojuma secība attiecībā pret TCP vadības bitiem ir:

  1. Zvanītājs nosūta SYN.
  2. Saņēmējs reaģē ar SYN, ACK.
  3. Zvanītājs nosūta ACK.

Tagad mēs esam ieinteresēti notveršanā paketēs, kuriem ir tikai SYN bits (1. solis). Ņemiet vērā, ka mēs nevēlamies paketes no 2. posma (SYN-ACK), tikai vienkārša sākotnējā SYN. Mums vajag pareizu filtra izteiksmi tcpdump .

Atsaukt TCP galvenes struktūru bez opcijām:

0 15 31-----------------------------------------------------------------| avota osta | galamērķa osta |-----------------------------------------------------------------| kārtas numurs |-----------------------------------------------------------------| apstiprinājuma numurs |-----------------------------------------------------------------| HL | rsvd | C | E | U | A | P | R | S | F | loga izmērs |-----------------------------------------------------------------| TCP kontrolsumma | steidzams rādītājs |-----------------------------------------------------------------

TCP galvenē parasti ir 20 oketiti dati, ja vien nav opciju. Diagrammas pirmajā rindā ir okteti 0-3, otrajā rindā redzami 4-7 oketiķi utt.

Sākot skaitīt ar 0, atbilstošie TCP vadības biti ir ietverti oketē 13:

0 7| 15| 23| 31----------------|---------------|---------------|----------------| HL | rsvd | C | E | U | A | P | R | S | F | loga izmērs |----------------|---------------|---------------|----------------| | 13 oktets | | |

Let's ir tuvāk apskatīt oktets nē. 13:

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

Tie ir TCP kontroles biti, kuros mēs esam ieinteresēti. Šajā oktetā mēs esam numurējuši no 0 līdz 7 no labās uz kreiso pusi, tāpēc PSH bits ir bitu skaitlis 3, bet URG bits ir numurs 5.

Atgādinām, ka mēs vēlamies uzņemt paketes ar tikai SYN komplektu. Apskatīsim, kas notiek ar oketistu 13, ja TCP datagramma ierodas ar tā galvenē iestatīto 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|

Aplūkojot kontroles bitu sadaļu, mēs redzam, ka ir iestatīts tikai mazais skaitlis 1 (SYN).

Pieņemot, ka okteta numurs 13 ir 8-bitu neparakstīts vesels skaitlis tīkla baidītam secībā, šī okteta bināra vērtība ir:

00000010

Tās zīme ir šāds:

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

Mēs esam gandrīz pabeigti, jo tagad mēs zinām, ka, ja ir iestatīts tikai SYN, tad TCP galvenē esošā 13 okteta vērtība, ja to interpretē kā 8-bitu nepierakstītu veselu skaitli tīkla baidītam, jābūt precīzi 2.

Šīs attiecības var izteikt kā

tcp 13 == 2

Mēs varam izmantot šo izteicienu kā filtru tcpdump lai skatītos paketes, kurām ir tikai SYN iestatījums:

tcpdump-i xl0 tcp 13 == 2

Izteiksme saka: "Ļaujiet TCP datagrammas 13. oktetiem būt decimālā vērtība 2", kas ir tieši tas, ko mēs vēlamies.

Tagad pieņemsim, ka mums ir jāuztver SYN paketes, taču mums nav jāuztraucas, vai vienlaicīgi tiek iestatīts ACK vai kāds cits TCP vadības bits. Apskatiet, kas notiek ar oketistu 13, kad ierodas TCP datagramma ar SYN-ACK iestatījumu:

| 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. un 4. bits tagad ir iestatīts 13. oktetā. Octet 13 binārā vērtība ir:

00010010

kas pārvēršas par decimālo:

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

Mēs nevaram vienkārši izmantot "tcp 13 == 18" tcpdump filtra izteiksme, jo tas atlasītu tikai tos paketus, kuriem ir iestatīts SYN-ACK, bet ne tiem, kuriem ir tikai SYN iestatījums. Atcerieties, ka mums nav nozīmes, ja ACK vai kāds cits kontroles bits ir iestatīts tik ilgi, kamēr ir iestatīts SYN.

Lai sasniegtu mūsu mērķi, mums loģiski ir jātērē binārā vērtība 13 okteta ar citu vērtību, lai saglabātu SYN bitu. Mēs zinām, ka mēs vēlamies, lai SYN tiktu iestatīts jebkurā gadījumā, tāpēc mēs loģiski UN ar vērtību 13. oktetā ar SYN bināro vērtību:

00010010 SYN-ACK 00000010 SYN UN 00000010 (mēs gribam SYN) un 00000010 (mēs vēlamies SYN) -------- -------- = 00000010 = 00000010

Mēs redzam, ka šī operācija UN nodrošina tādu pašu rezultātu, neatkarīgi no tā, vai ir iestatīts ACK vai kāds cits TCP kontroles bits. Šīs vērtības JA vērtības un tā rezultāta decimāldaļskaitlis ir 2 (binārais 00000010), tāpēc mēs zinām, ka paketēm ar SYN iestatījumiem ir jābūt šādai saiknei:

((13 okteta vērtība un (2)) == (2)

Tas mums norāda uz tcpdump filtra izteiksme

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

Ņemiet vērā, ka izteiksmē jālieto vienotās cenas vai atpakaļzīme, lai nerādītu (un &) īpašo rakstzīmi no apvalka.

UDP paketes. UDP formāts ir ilustrēts ar šo rwho paketi:

actinide.who> raidījums.who: udp 84

Tas saka, ka osta kurš uz uzņēmēja aktīnīds nosūta udp datagrammu uz ostu kurš uz uzņēmēja raidījums , interneta apraides adrese. Pakete satur 84 bitus lietotāja datus.

Daži UDP pakalpojumi tiek atpazīti (no avota vai galamērķa porta numura) un augstāka līmeņa protokola informācija tiek drukāta, jo īpaši ar NFS domēna vārda pakalpojumu pieprasījumiem (RFC-1034/1035) un Sun RPC zvaniem (RFC-1050).

UDP nosaukumu servera pieprasījumi (N.B.:Šāds apraksts apzinās RFC-1035 aprakstīto domēna pakalpojuma protokolu. Ja jūs neesat pazīstams ar protokolu, turpmāk minētajam aprakstam nebūs jēgas.)

Vārda servera pieprasījumi tiek formatēti kā:

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

Saimniekdators h2opolo uzdeva domēna serveri helios par adreses ierakstu (qtype = A), kas saistīts ar vārdu ucbvax.berkeley.edu. Vaicājuma ID bija '3'. "+" Norāda uz vēlama rekursija karodziņš tika iestatīts. Vaicājuma garums bija 37 baiti, neiekļaujot UDP un IP protokolu galvenes. Vaicājuma darbība bija normāla, Vaicājums , tāpēc op lauks tika izlaists. Ja op bija kaut kas cits, tas būtu drukāts starp "3" un "+". Tāpat qclass bija normāls, C_IN un izlaista. Jebkura cita qclass būtu drukāta uzreiz pēc "A".

Pārbauda dažas anomālijas, un kvadrātiekavās var ievietot papildu laukus: ja vaicājumā ir atbilde, iestādes ieraksti vai papildu ierakstu sadaļa, ancount , nscount , vai saruna tiek drukāti kā " n a ',' n n "vai" n au 'kur n ir atbilstošs skaits. Ja kāds no atbildes bitiem ir iestatīts (AA, RA vai rcode) vai kāds no "jābūt nulles" bitiem, tiek iestatīti ar diviem un trīs baitiem, `b2 & 3 = x 'ir drukāts, kur x ir divu un trīs galveno bitu heksadecimālais lielums.

UDP nosaukumu serveru atbildes. Vārda servera atbildes tiek formatētas kā:

src> dst: id op rcode flags a / n / au tipa klases dati (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)

Pirmajā piemērā helios atbild uz vaicājuma ID 3 no h2opolo ar trīs atbilžu ierakstiem, trīs nosaukumu serveru ierakstiem un septiņiem papildu ierakstiem. Pirmais atbildes ieraksts ir A tips (adrese), un tā dati ir interneta adrese 128.32.137.3. Kopējais atbildes lielums bija 273 baiti, izņemot UDP un IP galvenes. Op (vaicājums) un atbildes kods (NoError) tika izlaists, tāpat kā A ieraksta klase (C_IN).

Otrajā piemērā helios atbild uz 2. vaicājumu ar neeksistējošā domēna atbildes kodu (NXDomain) bez atbildēm, vienu vārdu serveri un nevienu iestādes ierakstu. "*" Norāda, ka autoritatīva atbilde bits tika iestatīts. Tā kā atbildes nebija, nebija izdrukāta neviena veida, klases vai datu.

Citi karodziņi, kas varētu parādīties, ir "-" (rekursija ir pieejama, RA, nē set) un '|' (saīsināts ziņojums, TC, iestatīts). Ja sadaļā "Jautājums" nav precīzi viena ieraksta, " n q "ir drukāts.

Ņemiet vērā, ka vārda servera pieprasījumi un atbildes parasti ir lielas, un noklusējuma vērtība snaplen no 68 baitiem var nepietikt uz iepakojuma drukāšanai. Izmantojiet-s lai palielinātu snaplen, ja jums ir nopietni jāpārbauda vārdu servera trafika. "-s 128"man ir labi strādājis.

SMB / CIFS dekodēšana. tcpdump ietver diezgan plašu SMB / CIFS / NBT dekodēšanu datiem UDP / 137, UDP / 138 un TCP / 139. Ir veikti arī daži primārā IPX un NetBEUI SMB datu dekodēšana.

Pēc noklusējuma notiek diezgan minimāla atšifrēšana, ar daudz detalizētāku dekodēšanu, ja tiek izmantots -v. Esiet brīdināts, ka ar -v vienu SMB paketi var uzņemt lapu vai vairāk, tāpēc izmantojiet -v tikai tad, ja jūs patiešām vēlaties saņemt visas detaļas.

Ja jūs dekodējat SMB sesijas, kurās ir Unikoda rindas, tad, iespējams, vēlēsities iestatīt vides mainīgo USE_UNICODE uz 1. Ir laipni gaidīts patch, lai automātiski noteiktu unikoda stīgas.

Informāciju par SMB pakešu formātiem un to, ko visi lauki nozīmē, skatiet www.cifs.org vai pub / samba / specs / direktoriju savā iecienītajā samba.org spoguļa vietnē. SMB ielāpus rakstīja Andrew Tridgell ([email protected]).

NFS pieprasījumi un atbildes. Sun NFS (tīkla failu sistēma) pieprasījumi un atbildes tiek drukātas kā:

src.xid> dst.nfs: len op args src.nfs> dst.xid: atbilde stat len ​​op rezultātiem sushi.6709> wrl.nfs: 112 lasīt saiti fh 21,24 / 10,73165wrl.nfs> sushi.6709: atbilde ok 40 lasīt saiti "../var"sushi.201b> wrl.nfs: 144 lookup fh 9,74 / 4096,6878 "xcolors"wrl.nfs> sushi.201b: atbilde ok 128 meklēšanas fh 9,74 / 4134.3150

Pirmajā rindā - saimniekdators suši nosūta darījumu ar id 6709 uz wrl (ņemiet vērā, ka numurs, kas seko src resursdatoram, ir darījuma id nē avota osta). Pieprasījums bija 112 baiti, izņemot UDP un IP galvenes. Operācija bija a lasīt saiti (lasīt simbolisko saiti) faila rokturī ( fh ) 21,24 / 10,731657119. (Ja jums ir paveicies, kā šajā gadījumā, faila rokturi var interpretēt kā galveno, mazo ierīces numuru pāri, kam seko inoda numurs un paaudzes numurs.) Wrl Atbildes "ok" ar saiti saturu.

Trešajā rindiņā suši jautā wrl lai meklētu nosaukumu " xcolors "kataloga failā 9,74 / 4096,6878. Ievērojiet, ka drukātie dati ir atkarīgi no darbības veida. Formāts ir paredzēts pašsaprotamībai, ja tas tiek lasīts kopā ar NFS protokola spec.

Ja tiek norādīts -v (verbose) karogs, tiek izdrukāta papildu informācija. Piemēram:

sushi.1372a> wrl.nfs: 148 lasīt fh 21,11 / 12,195 8192 bytes @ 24576wrl.nfs> sushi.1372a: atbilde ok 1472 lasīt REG 100664 ids 417/0 sz 29388

(-v arī izdrukā IP virsrakstu TTL, ID, garuma un sadrumstalošanas laukus, kuri šajā paraugā ir izlaisti). Pirmajā rindiņā suši jautā wrl lasīt 8192 baiti no faila 21,11 / 12,195, pie baita kompensēt 24576. Wrl atbildes "ok"; otrajā rindiņā redzamais pakalpojums ir pirmais atbildes fragments, un tādējādi tas ir tikai 1472 baiti garš (pārējie baiti sekos turpmākajos fragmentos, taču šajos fragmentos nav NFS vai pat UDP galvenes, un tādēļ tie var nebūt drukāti, atkarībā no izmantotā filtra izteiksmes). Tā kā tiek piešķirts -v karodziņš, tiek drukāti daži no faila atribūtiem (kas tiek nosūtīti papildus faila datiem): faila tips ("REG", parastam failam), faila režīms (oktālajā režīmā), uid un gid, un faila izmērs.

Ja -v karodziņš tiek ievadīts vairāk nekā vienreiz, tiek izdrukāta vēl detaļa.

Ievērojiet, ka NFS pieprasījumi ir ļoti lieli, un liela daļa detalizācijas netiks drukāti, ja vien snaplen ir palielināts. Mēģiniet izmantot "-s 192'skatīties NFS satiksmi.

NFS atbildes paketi nepārprotami nenosaka RPC darbību. Tā vietā tcpdump seko "nesenajiem" pieprasījumiem un tos saskaņo ar atbildēm, izmantojot darījuma ID. Ja atbilde nav cieši saistīta ar atbilstošo pieprasījumu, tā var nebūt parspējama.

Transarc AFS (Andrew File System) pieprasījumi un atbildes.

src.sport> dst.dport: rx paketes tipa src.sport> dst.dport: rx paketes tipa pakalpojumu zvana zvana vārda args src.sport> dst.dport: rx paketes tipa pakalpojumu atbildes zvana vārda args elvis.7001> pike.afsfs: rx data fs zvans pārdēvēt veco fid 536876964/1/1 ".newsrc.new" new fid 536876964/1/1 ".newsrc"pike.afsfs> elvis.7001: rx dati fs atbilde pārdēvēt

Pirmajā rindiņā uzņēmēja elvis nosūta RX paketi uz līdaku. Tas bija RX datu pakalpojums fs (failu servera) pakalpojums, un tas ir RPC zvana sākums.RPC zvans tika pārdēvēts ar veco direktorijas faila ID 536876964/1/1 un veco filename ".newsrc.new", kā arī jaunu direktorija faila ID 536876964/1/1 un jaunu faila nosaukumu ". newsrc ". Uzņēmēja līdaka reaģē ar RPC atbildi uz pārdēvēto zvanu (tas bija veiksmīgs, jo tas bija datu paketes, nevis aborts paketes).

Kopumā visi AFS RPC tiek dekodēti vismaz ar RPC zvana vārdu. Lielākajai daļai AFS RPC ir vismaz daži no dekodētajiem argumentiem (parasti tikai "interesanti" argumenti, lai kāda būtu interesanta definīcija).

Formāts ir paredzēts pašraksturai, taču tas, iespējams, nebūs noderīgs cilvēkiem, kas nav pazīstami ar AFS un RX darbību.

Ja -v (verbose) karodziņš tiek ievadīts divreiz, izdrukā apstiprinājuma paketes un papildu galvenes informāciju, piemēram, RX zvana ID, zvana numuru, kārtas numuru, sērijas numuru un RX paketes karodziņus.

Ja -v karodziņš tiek ievadīts divreiz, tiek izdrukāta papildu informācija, piemēram, RX zvana ID, sērijas numurs un RX paketes karogi. MTU sarunu informācija tiek izdrukāta arī no RX ack paketēm.

Ja -v karodziņš tiek ievadīts trīs reizes, tiek drukāts drošības indekss un pakalpojuma ID.

Kļūdu kodi tiek izdrukāti, lai pārtrauktu pakešus, izņemot Ubik maiņstrāvas paketes (jo aborta paketes tiek izmantotas, lai norādītu "yes" balsojumu par Ubik protokolu).

Ņemiet vērā, ka AFS pieprasījumi ir ļoti lieli, un daudzi no argumentiem netiks drukāti, ja vien snaplen ir palielināts. Mēģiniet izmantot `-s 256"skatīties AFS satiksmi.

AFS atbildes paketi nepārprotami nenosaka RPC darbību. Tā vietā tcpdump seko "neseniem" pieprasījumiem un tos saskaņo ar atbildēm, izmantojot zvana numuru un pakalpojuma ID. Ja atbilde nav cieši saistīta ar atbilstošo pieprasījumu, tā var nebūt parspējama.

KIP Appletalk (DDP UDP). Appletalk DDP paketes, kas iekapsulētas UDP datagrammā, tiek dekabolētas un dempingētas kā DDP paketes (t.i., visa UDP galvenes informācija tiek izmesta). Fails /etc/atalk.names tiek izmantots, lai tulkotu appletalk neto un mezgla numurus vārdiem.

Šajā failā esošās rindiņas ir šādas veidlapas:

numura nosaukums 1,254 ēteris16.1 icsd-net1,254,110 ace

Pirmās divas rindas apzīmē appletalk tīklu nosaukumus. Trešā rinda norāda konkrētas saimniekdatora nosaukumu (uzņēmēja atšķiras no tīkla ar trešo oktetu skaitli - neto numurs jābūt ir divi okteti un saimniekdatora numurs jābūt ir trīs oketiķi). Numurs un nosaukums jāatdala ar atstarpēm (atstarpes vai cilnes). The /etc/atalk.names failā var būt tukšas rindiņas vai komentāru rindiņas (līnijas, kas sākas ar `# ').

Appletalk adreses tiek izdrukātas šādā formā:

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

(Ja /etc/atalk.names neeksistē vai nesatur ierakstu par dažu apletu tīkla saimniekdatora / tīkla numuru, adreses tiek drukātas ciparu formātā.) Pirmajā piemērā NBP (DDP porta 2) tīklā 144.1, 209, sūta uz to, kas klausās otra 220. līnija ir vienāda, izņemot avota mezgla pilnu nosaukumu ("birojs"). Trešā rinda ir 235. sūtīšana no netzvans jsmag mezgla 149, lai to pārraidītu uz icsd-net NBP portu (ņemiet vērā, ka apraides adresi (255) norāda tīkla nosaukums bez saimniekdatora numura, tādēļ tas ir labs ideja saglabāt mezglu vārdus un neto vārdus, kas atšķiras ar /