Tcpdump - Command Linux - Komanda Unix

NAME

tcpdump - hidhni trafikun në një rrjet

PËRMBLEDHJE

tcpdump [ -adeflnNOpqRStuvxX ] [ -c count ]

[ -C file_size ] [ -F file ]

[ -i interface ] [ -m module ] [ -r file ]

[ -s snaplen ] [ -T type ] [ -U përdorues ] [ -w file ]

[ -E algo: sekret ] [ shprehje ]

PËRSHKRIM

Tcpdump shtyp kokën e paketave në një ndërfaqe rrjeti që përputhet me shprehjen boolean. Gjithashtu mund të drejtohet me flamurin -w , që e bën atë të ruajë të dhënat e paketës në një skedar për analiza të mëvonshme dhe / ose me flamurin -r , gjë që e bën atë të lexojë nga një skedar paketash të ruajtur dhe jo të lexojë pako nga një ndërfaqe rrjeti. Në të gjitha rastet, vetëm paketat që përputhen me shprehjen do të përpunohen nga tcpdump .

Tcpdump do të vazhdojë të kapë pako, derisa të ndërpritet nga një sinjal SIGINT (gjeneruar, për shembull, duke shtypur karakterin tuaj të ndërprerjes, zakonisht kontrollin C) ose sinjalin SIGTERM (zakonisht të gjeneruar me vrasin (1) komandë); nëse ekzekutohet me flamurin -c , do të kapë pako derisa të ndërpritet nga një sinjal SIGINT ose SIGTERM ose numri i caktuar i paketave të përpunuara.

Kur tcpdump përfundon kapjen e paketave, do të raportojë numërimin e:

pako `` pranuar nga filtri '' (kuptimi i kësaj varet nga OS në të cilin po drejtoni tcpdump dhe ndoshta në mënyrën se si është konfiguruar OS - nëse një filtër është specifikuar në rreshtin e komandës, në disa OSes ajo numëron pako pa marrë parasysh nëse ato janë krahasuar me shprehjen e filtrit, dhe në OS të tjera ajo numëron vetëm pako që u përputheshin me shprehjen e filtrit dhe janë përpunuar nga tcpdump );

pako `` rënë nga kerneli '' (ky është numri i paketave që u hodhën, për shkak të mungesës së hapësirës së tampon, nga mekanizmi i kapjes së paketës në OS në të cilën tcpdump po kandidon, nëse OS raporton këtë informacion për aplikacionet; nëse jo, do të raportohet si 0).

Në platformat që mbështesin sinjalin SIGINFO, siç janë shumica e BSD-ve, do të raportojnë këto akuza kur të marrë një sinjal SIGINFO (të krijuara, për shembull, duke shtypur karakterin tuaj "status", zakonisht kontroll-T) dhe do të vazhdojnë të kapin pako .

Paketimi i leximit nga një ndërfaqe rrjeti mund të kërkojë që të keni privilegje të veçanta:

Nën SunOS 3.x ose 4.x me NIT ose BPF:

Ju duhet të keni qasje në leximin në / dev / nit ose / dev / bpf * .

Nën Solaris me DLPI:

Ju duhet të keni qasje në lexim / shkrim në pajisjen pseudo të rrjetit, p.sh. / dev / le . Në të paktën disa versione të Solaris, megjithatë, kjo nuk është e mjaftueshme për të lejuar që tcpdump të kapet në modalitetin e ndryshueshëm; në këto versione të Solaris, ju duhet të jeni root, ose tcpdump duhet të instalohet setuid në rrënjë, në mënyrë që të kapni në modalitetin e ndryshueshëm. Vini re se në shumë (ndoshta të gjitha) ndërfaqet, në qoftë se ju nuk kapni në modalitetin e ndryshueshëm, nuk do të shihni asnjë paketë dalëse, kështu që një kapje nuk bëhet në mënyrë të ndryshueshme mund të mos jetë shumë e dobishme.

Nën HP-UX me DLPI:

Ju duhet të jeni root ose tcpdump duhet të instalohet setuid në rrënjë.

Nën IRIX me snoop:

Ju duhet të jeni root ose tcpdump duhet të instalohet setuid në rrënjë.

Nën Linux:

Ju duhet të jeni root ose tcpdump duhet të instalohet setuid në rrënjë.

Nën Ultrix dhe Digital UNIX / Tru64 UNIX:

Çdo përdorues mund të kapë trafikun e rrjetit me tcpdump . Sidoqoftë, asnjë përdorues (madje as super-përdorues) nuk mund të kapë në modalitetin e ndryshueshëm në një ndërfaqe, përveç nëse super-përdoruesi ka aktivizuar funksionimin në modalitetin e ndryshueshëm në atë ndërfaqe duke përdorur pfconfig (8) dhe asnjë përdorues (madje as super-përdorues ) mund të kapë trafikun unicast të marrë ose të dërguar nga makina në një ndërfaqe, përveç nëse super-përdoruesi ka mundësuar operacionin e kopjimit të të gjitha mënyrave në atë ndërfaqe duke përdorur pfconfig , kështu që kapja e paketave të dobishme në një ndërfaqe me siguri kërkon që ose modaliteti i ndryshueshëm ose kopja - të gjitha mënyrat e funksionimit, ose të dy mënyrat e funksionimit, të aktivizohen në atë ndërfaqe.

Sipas BSD:

Ju duhet të keni qasje të lexuar në / dev / bpf * .

Leximi i një skedari paketash të ruajtur nuk kërkon privilegje të veçanta.

OPSIONE

-a

Përpjekje për të kthyer adresat e rrjetit dhe transmetimit te emrat.

-c

Dil pas marrjes së paketave të numërimit .

-C

Para se të shkruani një paketë të papërpunuar në një savefile, kontrolloni nëse skedari është aktualisht më i madh se file_size dhe, nëse po, mbyllni skedarin e tanishëm dhe hapni një të ri. Savefiles pas savefile parë do të ketë emrin e specifikuar me -w flamur, me një numër pas tij, duke filluar nga 2 dhe duke vazhduar lart. Njësitë e file_size janë miliona bytes (1,000,000 bytes, jo 1,048,576 bytes).

-d

Hedhja e kodit të përputhjes së pako-paketave në një formë të lexueshme njerëzore në dalje standarde dhe ndalesa.

-dd

Hidhni kodet e përputhjes së paketave si një fragment i programit C.

-ddd

Shkruani kodin e paketimit të përputhjes me numra dhjetorë (paraprirë me numërimin).

-e

Printoni kokën e nivelit të lidhjes në secilën linjë të depozitimit.

-E

Përdorni algo: sekrete për dekriptimin e paketave IPsec ESP. Algoritmet mund të jenë des-cbc , 3des-cbc , blowfish-cbc , rc3-cbc , cast128-cbc , ose none . Parazgjedhja është des-cbc . Aftësia për të dekriptuar pako është e pranishme vetëm nëse tcpdump është përpiluar me kriptografi të aktivizuar. sekrete teksti ASCII për çelësin sekret të ESP-së. Ne nuk mund të marrim vlerë arbitrare arbitrare në këtë moment. Opsioni merr RFC2406 ESP, jo RFC1827 ESP. Opcioni është vetëm për qëllime debugimi dhe përdorimi i këtij opsioni me çelësin me të vërtetë 'sekret' dekurajohet. Duke paraqitur çelësin sekret të IPsec në rreshtin e komandës ju e bëni atë të dukshme tek të tjerët, nëpërmjet ps (1) dhe rasteve të tjera.

-f

Shtypni adresat e internetit 'të huaja' në mënyrë numerike dhe jo simbolike (ky opsion synon të shkaktojë dëme serioze të trurit në serverin yp të Sunit - zakonisht varet përgjithmonë përkthimin e numrave të internetit jo-lokalë).

-F

Përdorni skedarin si hyrje për shprehjen e filtrit. Një shprehje shtesë e dhënë në rreshtin e komandës injorohet.

-i

Dëgjo në ndërfaqen . Nëse nuk përcaktohet, tcpdump kërkon listën e ndërfaqes së sistemit për ndërfaqen më të vogël të numëruar, të konfiguruar (me përjashtim të hapjes së hapit). Lidhjet janë thyer duke zgjedhur ndeshjen më të hershme.

Në sistemet Linux me kernelë 2.2 ose më vonë, një ndërfaqe e argumentit të `` çdo '' mund të përdoret për të kapur pako nga të gjitha ndërfaqet. Vini re që kapjet në pajisjen `` çdo '' nuk do të bëhen në modalitetin e ndryshueshëm.

-l

Bëni linjë stdout tamponuar. E dobishme nëse doni t'i shihni të dhënat gjatë kapjes. p.sh.,
`` tcpdump -l | tee dat '' ose `` tcpdump -l> dat & tail -f dat ''.

-M

Ngarko SMI MIB përkufizimet e moduleve nga moduli i skedarit. Ky opsion mund të përdoret disa herë për të ngarkuar disa module MIB në tcpdump .

-N

Mos i ktheni adresat e strehuesit në emra. Kjo mund të përdoret për të shmangur lookups DNS.

-nn

Mos konvertoni numrat e protokollit dhe porteve, etj.

-N

Mos shtypni kualifikimin e emrave të domain-it të emrave të përdoruesit. P.sh., nëse jepni këtë flamur atëherë tcpdump do të printojë `` nic '' në vend të `` nic.ddn.mil ''.

-O

Mos e aktivizoni optimizuesin e kodit të përputhjes së paketës. Kjo është e dobishme vetëm nëse dyshoni për ndonjë gabim në optimizer.

-p

Mos e vendosni ndërfaqen në modalitetin e ndryshueshëm. Vini re se ndërfaqja mund të jetë në modalitetin e ndryshueshëm për ndonjë arsye tjetër; prandaj, `-p 'nuk mund të përdoret si një shkurtim për hostin" ether host (local-hw-addr) ose transmetim eter ".

Q

Prodhimi i shpejtë (i qetë?). Printoni informacionin më pak të protokollit, kështu që linjat e prodhimit janë më të shkurtra.

-R

Supozojmë që paketat ESP / AH të bazohen në specifikimet e vjetra (RFC1825 deri RFC1829). Nëse specifikohet, tcpdump nuk do të shtypë fushën e parandalimit të riprodhimit. Meqë nuk ka fushë të versionit të protokollit në specifikimin ESP / AH, tcpdump nuk mund të nxjerrë përfundimin e versionit të protokollit ESP / AH.

-r

Lexoni pako nga skedari (i cili u krijua me opsion -w). Hyrja standarde përdoret nëse skedari është `` - ''.

-S

Shtypni numrat e sekuencës absolute, në vend të relative, të TCP.

-s

Bytes snaplen snarf të të dhënave nga çdo pako sesa default e 68 (me NIT SunOS, minimumi është në të vërtetë 96). 68 bytes është i përshtatshëm për IP, ICMP, TCP dhe UDP, por mund të shkurtojnë informacionin e protokollit nga serverat e emrit dhe paketat NFS (shih më poshtë). Paketimet e prishura për shkak të një snapshot të kufizuar tregohen në daljen me `` [| proto ] '', ku proto është emri i nivelit të protokollit në të cilin ka ndodhur prerja. Vini re se marrja e fotografive më të mëdha të dyja rrit sasinë e kohës që duhet për të përpunuar pako dhe, në mënyrë efektive, ul sasinë e buffering paketës. Kjo mund të shkaktojë humbjen e paketave. Ju duhet të kufizoni snaplenin në numrin më të vogël që do të kapni informacionin e protokollit që ju intereson. Vendosja e snaplen në 0 do të thotë të përdorni gjatësinë e kërkuar për të kapur pako të plota.

-T

Paketat e forcave të përzgjedhura nga " shprehja " për t'u interpretuar në llojin e specifikuar. Llojet e njohur aktualisht janë cnfp (protokoll Cisco NetFlow), rpc (Remote Procedure Call), rtp (Protokolli i Aplikimeve në kohë reale), rtcp (Protokolli i Kontrollit të Aplikacioneve në kohë reale), snmp (Simple Network Management Protocol) ), dhe wb (shpërndarë Bordi i Bardhë).

-T

Mos shtypni një tabelë kohore në secilin linjë të depozitimit.

-tt

Printoni një timestamp të paformatuar në secilin linjë të depozitimit.

-U

Hedh privilegjet e rrënjës dhe ndryshon ID-në e përdoruesit te përdoruesi dhe grupi ID te grupi primar i përdoruesit .

Shënim! Red Hat Linux bie automatikisht privilegjet e përdoruesit `` pcap '' nëse asgjë tjetër nuk është e specifikuar.

-ttt

Shtypni një delta (në mikro sekonda) midis vijës aktuale dhe asaj të mëparshme në secilin linjë të depozitimit.

-tttt

Shtypni një kohëzim në formatin e parazgjedhur të vazhduar sipas datës në çdo linjë deponie.

-u

Printoni trajton NSC të pavendosur.

-V

(Pak më shumë) prodhim i hollë. Për shembull, koha për të jetuar, identifikimi, gjatësia totale dhe opsionet në një paketë IP janë shtypur. Gjithashtu mundëson kontrolle shtesë të integritetit të paketave të tilla si verifikimi i kontrollit të IP dhe ICMP header.

-vv

Edhe prodhimi më i hollë. Për shembull, fusha të tjera shtypen nga paketat e përgjigjeve NFS dhe paketat SMB janë dekoduar plotësisht.

-vvv

Edhe prodhimi më i hollë. Për shembull, opsionet telnet SB ... SE janë shtypur në mënyrë të plotë. Me -X telnet opsionet janë të shtypura edhe në magji.

-w

Shkruani paketat e papërpunuara në skedar, në vend që të analizoni dhe shtypni ato. Më vonë ato mund të shtypen me opsionin -r. Prodhimi standard përdoret nëse skedari është `` - ''.

-X

Printoni çdo pako (minus kokën e nivelit të lidhjes) në magji. Më të vogla nga të gjithë pako ose bytes snaplen do të shtypen. Vini re se kjo është e gjithë pakoja e shtresave të lidhjes, kështu që për shtresat e lidhjes se jastëk (p.sh. Ethernet), bytes mbushëse gjithashtu do të printohen kur paketa e shtresës së lartë është më e shkurtër se mbushja e kërkuar.

-X

Kur shtypni magji, shtypni ascii gjithashtu. Kështu nëse -x është vendosur gjithashtu, paketa shtypet në hex / ascii. Kjo është shumë e dobishëm për analizimin e protokolleve të reja. Edhe nëse -x nuk është vendosur, disa pjesë të disa paketave mund të shtypen në magji / ascii.

shprehje

zgjedh cilat pako do të hedhen. Nëse nuk jepet asnjë shprehje , të gjitha paketat në rrjet do të hedhen. Përndryshe, vetëm paketat për të cilat shprehja është 'true' do të hedhen.

Shprehja përbëhet nga një ose më shumë primitivë. Primitivët zakonisht përbëhen nga një id (emër ose numër) i paraprirë nga një ose më shumë kualifikues. Ekzistojnë tre lloje të ndryshme kualifikuese:

lloj

kualifikuesit thonë se çfarë lloj gjëje quhet emri ose numri i id. Llojet e mundshme janë host , net dhe port . P.sh., `host foo ',' net 128.3 ',' port 20 '. Nëse nuk ka kualifikues të tipit, supozohet që të presë .

dir

kualifikuesit përcaktojnë një drejtim të veçantë të transferimit në dhe / ose nga id . Drejtimet e mundshme janë src , dst , src ose dst dhe src dhe dst . Eg, 'src foo', 'dst net 128.3', 'src ose dst port ftp-data'. Nëse nuk ka kualifikues dir, supozohet src ose dst . Për shtresat e lidhjes `null '(p.sh. protokollet pikë-pika si psh), mund të përdoren kualifikuesit përbrenda dhe jashtë për të specifikuar një drejtim të dëshiruar.

proto

kualifikuesit e kufizojnë ndeshjen në një protokoll të veçantë. Protos të mundshme janë: eter , fddi , tr , ip , ip6 , arp , rarp , decnet , tcp dhe udp . P.sh. `ether src foo ',' arp net 128.3 ',' tcp port 21 '. Nëse nuk ka kualifikues proto, supozohen të gjitha protokollet në përputhje me llojin. P.sh., `src foo 'nënkupton (ip ose arp ose rarp) src foo' (me përjashtim të fundit nuk është sintaksë ligjore), 'bar neto' do të thotë '(ip ose arp ose rarp) bar' dhe 'port 53' `(tcp ose udp) port 53 '.

[`fddi 'është në të vërtetë një alias për' ether '; parser i trajton ato identikisht si kuptim `` niveli i lidhjes së të dhënave që përdoret në ndërfaqen e rrjetit të specifikuar. '' FDDI headers përmbajnë adresa të burimit dhe destinacionit si Ethernet dhe shpesh përmbajnë lloje të paketave Ethernet, kështu që mund të filtroni në këto fusha FDDI ashtu si me fushat Ethernet analoge. FDDI headers gjithashtu përmbajnë fusha të tjera, por ju nuk mund t'i emërtoni ato në mënyrë eksplicite në një shprehje filtri.

Ngjashëm, `tr 'është një alias për' ether '; Deklaratat e paragrafit të mëparshëm rreth headers FDDI gjithashtu zbatohen për headers Token Ring.]

Përveç kësaj, ka disa fjalë kyçe të veçanta 'primitive' që nuk ndjekin modelin: portë , transmetim , më pak , shprehje më të mëdha dhe aritmetike. Të gjitha këto janë përshkruar më poshtë.

Shprehjet më komplekse të filtrave janë ndërtuar duke përdorur fjalët dhe , ose jo për të kombinuar primitivët. P.sh. `foo host dhe jo port ftp dhe jo port ftp-data '. Për të ruajtur shtypjen, listat identike të kualifikimeve mund të hiqen. P.sh., `tcp dst port ftp ose ftp-data ose domain 'është saktësisht e njëjtë si` tcp dst port ftp ose tcp dst port ftp-data ose tcp dst port domain'.

Primitivët e lejuar janë:

host n host

Vërtetë nëse fusha e destinacionit IPv4 / v6 e paketës është host , e cila mund të jetë ose një adresë ose një emër.

src host pritës

Vërtetë nëse fusha e burimit të IPv4 / v6 të paketës është host .

host pritës

Vërtetë nëse ose burimi IPv4 / v6 ose destinacioni i paketës është host . Secili prej shprehjeve të mësipërme mund të plotësohet me fjalë kyçe, ip , arp , rarp ose ip6 si në:

host ip host

e cila është ekuivalente me:

eter proto \ ip dhe host pritës

Nëse host është një emër me adresa IP të shumta, çdo adresë do të kontrollohet për një ndeshje.

ether dst ehost

Vërtetë nëse adresa e destinacionit ethernet është e domosdoshme . Ehost mund të jetë ose një emër nga / etc / ethers ose një numër (shih eterët (3N) për formatin numerik).

ether src ehost

Vërtetë nëse adresa e burimit ethernet është e domosdoshme .

ether host ehost

Vërtetë nëse ose burimi ethernet ose adresa e destinacionit është ehost .

host të portës

Vërtetë nëse paketa e përdorte hostin si një portë. Dmth, burimi ethernet ose adresa e destinacionit ishte host por as burimi i IP as destinacioni IP nuk ishte nikoqir . Host duhet të jetë një emër dhe duhet të gjendet si nga mekanizmat e zgjidhjes së adresës së host-name-to-IP (host file name, DNS, NIS etj.) Dhe nga zgjidhja e adresës së host-name-to-Ethernet mekanizëm (/ etc / ethers, etj). (Një shprehje ekuivalente është

host ether host ehost dhe jo host priti

që mund të përdoret me emra ose numra për host / ehost .) Kjo sintaksë nuk funksionon në konfigurimin e aktivizuar me IPv6 në këtë moment.

dst neto neto

Vërtetë nëse adresa e destinacionit IPv4 / v6 e paketes ka një numër rrjeti neto . Net mund të jetë ose një emër nga / etc / rrjetet ose një numër i rrjetit (shih rrjetet (4) për detaje).

src neto neto

Vërtetë nëse adresa e burimit të IPv4 / v6 të paketës ka një numër rrjeti neto .

neto neto

Vërtetë nëse ose burimi IPv4 / v6 ose adresa e destinacionit të paketës ka një numër rrjeti neto .

maskë neto net maskë

Vërtetë nëse adresa IP përputhet me rrjetin me rrjetën specifike. Mund të kualifikohet me src ose dst . Vini re se kjo sintaksë nuk është e vlefshme për rrjetin IPv6.

neto neto / len

Vërtetë nëse adresa e IPv4 / v6 përputhet me një copë binjake neto me masën neto . Mund të kualifikohet me src ose dst .

porti i portit dst

Vërtetë nëse paketa është ip / tcp, ip / udp, ip6 / tcp ose ip6 / udp dhe ka një vlerë të portit të destinacionit të portit . Port mund të jetë një numër ose një emër i përdorur në / etc / services (shih tcp (4P) dhe udp (4P)). Nëse përdoret një emër, kontrollohen edhe numri i portit dhe protokolli. Nëse përdoret një numër ose emër i paqartë, atëherë kontrollohet vetëm numri i portit (p.sh., dst port 513 do të shtypë trafikun tcp / login dhe udp / trafikun, dhe domenin e portit do të shtypë trafikun tcp / domain dhe udp / domain).

porti i portit src

Vërtetë nëse paketa ka një vlerë portportit .

porti port

Vërtetë nëse burimi ose destinacioni i portit të paketës është porti . Çdo nga shprehjet e mësipërme të portit mund të plotësohet me fjalë kyçe, tcp ose udp , si në:

porti i portit tcp src

i cili përputhet vetëm me paketat TCP porti burim i të cilit është porti .

pak gjatësi

Vërtetë nëse paketi ka një gjatësi më të vogël ose të barabartë me gjatësinë . Kjo është ekuivalente me:

len <= gjatësi .

gjatësi më të madhe

Vërtetë nëse paketi ka një gjatësi më të madhe ose të barabartë me gjatësinë . Kjo është ekuivalente me:

len> = gjatësia .

ip proto protokoll

Vërtetë nëse paketa është një paketë IP (shih ip (4P)) të protokollit të tipit të protokollit . Protokolli mund të jetë një numër ose një nga emrat icmp , icmp6 , igmp , igrp , pim , ah , esp , vrrp , udp ose tcp . Vini re se identifikuesit tcp , udp dhe icmp janë gjithashtu fjalë kyçe dhe duhet të shpëtohen përmes backslash (\), që është \\ në C-shell. Vini re se ky primitiv nuk ndjek ndjekjen e zinxhirit të protokollit.

protokoll ip6 proto

Vërtetë nëse paketa është një pako IPv6 e protokollit të tipit të protokollit . Vini re se ky primitiv nuk ndjek ndjekjen e zinxhirit të protokollit.

protokoll ip6 protokoll

Vërtetë nëse paketa është pako IPv6, dhe përmban kokën e protokollit me protokollin e tipit në zinxhirin e kokës së protokollit. Për shembull,

ip6 protochain 6

përputhet me çdo paketë IPv6 me titull të protokollit TCP në zinxhirin e kokës së protokollit. Paketa mund të përmbajë, për shembull, kokën e autentifikimit, headerin e drejtimit, ose headerin e opsionit hop-by-hop, midis header IPv6 dhe header TCP. Kodi BPF i emetuar nga ky primitiv është kompleks dhe nuk mund të optimizohet nga kodi i optimizerit të BPF në tcpdump , kështu që kjo mund të jetë disi e ngadaltë.

protokoll ip protochain

Ekuivalent me protokollin ip6 protochain , por kjo është për IPv4.

eter transmetuar

Vërtetë nëse paketa është një paketë transmetimi ethernet. Eter fjalia është fakultative.

ip transmetuar

Vërtetë nëse paketa është një paketë transmetimi IP. Ai kontrollon për të dy niset dhe të gjitha ato transmetojnë konventa, dhe sheh masën e subneteve lokale.

eter multicast

Vërtetë nëse paketa është një pako multicast ethernet. Eter fjalia është fakultative. Kjo është stenografi për eter [0] & 1! = 0 '.

ip multicast

Vërtetë nëse paketa është një paketë IP multicast.

ip6 multicast

Vërtetë nëse paketa është një paketë IPv6 multicast.

eter proto protokolli

Vërtetë nëse paketa është e protokollit të llojit eter. Protokolli mund të jetë një numër ose një nga emrat ip , ip6 , arp , rarp , atalk , aarp , decnet , sca , lat , mopdl , moprc , iso , stp , ipx ose netbeui . Vini re se këta identifikues janë gjithashtu fjalë kyçe dhe duhet të shpëtohen me rrotullim (\).

[Në rastin e FDDI (p.sh., ' fddi protocol arp ') dhe Token Ring (p.sh., ' tr protocol arp '), për shumicën e këtyre protokolleve, identifikimi i protokollit vjen nga 802.2 Logical Link Control (LLC) header zakonisht shtohet në krye të FDDI ose Token Ring header.

Kur filtron për shumicën e identifikuesve të protokollit në FDDI ose Token Ring, tcpdump kontrollon vetëm fushën ID të protokollit të një header LLC në të ashtuquajturin format SNAP me një identifikues të njësisë organizative (OUI) prej 0x000000, për encapsulated Ethernet; nuk kontrollon nëse paketa është në format SNAP me një OUI prej 0x000000.

Përjashtimet janë iso , për të cilat kontrollon fushat e DSAP (Point Service Access Point) dhe SSAP (Source Service Access Point) të header LLC, stp dhe netbeui , ku ajo kontrollon DSAP e header LLC, dhe atalk , ku ajo kontrollon për një paketë SNAP-format me një OUI të 0x080007 dhe etype Appletalk.

Në rastin e Ethernet, tcpdump kontrollon fushën Ethernet për shumicën e atyre protokolleve; përjashtimet janë iso , sap dhe netbeui , për të cilat kontrollon një kornizë 802.3 dhe pastaj kontrollon header LLC ashtu siç bën për FDDI dhe Token Ring, atalk , ku kontrollon të dyja për Etype Appletalk në një kuadër Ethernet dhe për një Paketa format SNAP ashtu siç bën për FDDI dhe Token Ring, aarp , ku kontrollon etipin ARP të Appletalk në një kuadër Ethernet ose një kornizë SNAP 802.2 me një OUI prej 0x000000 dhe ipx , ku kontrollon etype IPX në një kornizë Ethernet, DSP IPX në header LLC, 802.3 pa Encapsulation Header LLC të IPX, dhe etype IPX në një kornizë SNAP.]

host presdnet src

Vërtetë nëse adresa burimore e DECNET është host , e cila mund të jetë një adresë e formës "10.123", ose një emër host DECNET. [Mbështetja e emrit të hostit DECNET është i disponueshëm vetëm në sistemet Ultrix të konfiguruara për të kryer DECNET.]

presidenti decnet dst

Vërtetë nëse adresa e destinacionit DECNET është host .

host pritës decnet

Vërtetë nëse burimi i DECNET ose adresa e destinacionit është host .

ip , ip6 , arp , rarp , atalk , aarp , deknet , iso , stp , ipx , netbeui

Shkurtesat për:

eter proto f

ku p është një nga protokollet e mësipërme.

lat , moprc , mopdl

Shkurtesat për:

eter proto f

ku p është një nga protokollet e mësipërme. Vini re që tcpdump aktualisht nuk di se si t'i analizojë këto protokolle.

vlan [vlan_id]

Vërtetë nëse paketa është një paketë IEEE 802.1Q VLAN. Nëse [vlan_id] është specifikuar, vetëm e vërtetë është paketa që ka vlan_id të specifikuar. Vini re se fjalia e parë e vlanit e hasur në shprehje ndryshon kompensimin e dekodimit për pjesën e mbetur të shprehjes në supozimin se paketa është një pako VLAN.

tcp , udp , icmp

Shkurtesat për:

ip proto p ose ip6 proto p

ku p është një nga protokollet e mësipërme.

iso proto protokoll

Vërtetë nëse paketa është një pako OSI e protokollit të protokollit . Protokolli mund të jetë një numër ose një nga emrat clnp , esis , ose isis .

clnp , esis , isis

Shkurtesat për:

iso proto p

ku p është një nga protokollet e mësipërme. Vini re se tcpdump bën një punë jo të plotë të analizës së këtyre protokolleve.

expr relop expr

Vërtetë nëse lidhja mban, ku relop është një nga>, <,> =, <=, = ,! =, Dhe expr është një shprehje aritmetike e përbërë nga konstante të numrave të plotë (të shprehur në sintaksën standarde C), operatorët normalë binar [+ , -, *, /, &, |], një operator gjatësi dhe aksesorë të veçantë të paketave. Për të hyrë në të dhënat brenda paketës, përdorni sintaksën e mëposhtme:

proto [ expr : madhësia ]

Proto është një prej eter, fddi, tr, ppp, slip, link, ip, arp, rarp, tcp, udp, icmp ose ip6 , dhe tregon shtresën e protokollit për operacionin e indeksit. Vini re se tcp, udp dhe llojet e tjera të protokollit të shtresës së sipërme zbatohen vetëm për IPv4 dhe jo për IPv6 (kjo do të fiksohet në të ardhmen). Byte kompensuar, në lidhje me shtresën e protokollit të treguar, është dhënë nga expr . Madhësia është fakultative dhe tregon numrin e bajteve në fushën e interesit; ajo mund të jetë ose një, dy, ose katër, dhe standarte me një. Operatori i gjatësisë, i treguar nga len fjalen, jep gjatësinë e paketës.

Për shembull, ` eter [0] & 1! = 0 'kap gjithë trafikun multicast. Shprehja ` ip [0] & 0xf! = 5 'kap të gjitha paketat IP me mundësi. Shprehja ` ip [6: 2] & 0x1fff = 0 'kap vetëm datagramet e fragmentuar dhe frag zero të datagrameve të fragmentuara. Ky kontroll zbatohet në mënyrë implicite për operacionet e indeksit tcp dhe udp . Për shembull, tcp [0] gjithmonë do të thotë bajtin e parë të titullit TCP, dhe kurrë nuk do të thotë bajtin e parë të një fragmenti ndërhyrës.

Disa offset dhe vlera në terren mund të shprehen si emra më tepër sesa si vlera numerike. Hapësirat e mëposhtme të protokollit të protokollit janë në dispozicion: icmptype (fushë tip ICMP), icmpcode (fushë e kodit ICMP) dhe tcpflags (fushë flamuj TCP).

Vlerat e mëposhtme të fushës ICMP janë në dispozicion: icmp-echoreply , icmp-unreach , icmp-sourcequench , icmp-redirect , icmp-echo , icmp-routeradvert , icmp-routersolicit , icmp-timxceed , icmp-paramprob , icmp-tstamp , icmp -përmendur , icmp-ireq , icmp-ireqreply , icmp-maskreq , icmp-maskreply .

Vlerat në terren të flamujve TCP janë në dispozicion: tcp-fin , tcp-syn , tcp-rst , tcp-push , tcp-push , tcp-ack , tcp-urg .

Primitivët mund të kombinohen duke përdorur:

Një grup primitivësh dhe operatorësh me kllapa (kllapa janë të veçanta për Shellin dhe duhet të shpëtojnë).

Negacion (` ! 'Ose' jo ').

Lidhje (` && 'ose` dhe ').

Alternimi (` || 'ose' ose ').

Negimi ka përparësi më të lartë. Alternimi dhe bashkërendimi kanë përparësi të barabartë dhe shoqërojnë nga e majta në të djathtë. Vini re se shenjat e qarta dhe shenjat nuk duhet të lidhen, për t'u bashkuar.

Nëse një identifikues jepet pa një fjalë kyçe, supozohet fjalia më e fundit. Për shembull,

nuk na kontrolloni dhe as

është e shkurtër për të

nuk të presë vs dhe të presë ACE

të cilat nuk duhet të ngatërrohen

jo (host vs vs ACE)

Argumentet e shprehjes mund të kalohen në tcpdump si një argument i vetëm ose si argumente të shumta, cilado që është më e përshtatshme. Në përgjithësi, nëse shprehja përmban metakaraktë Shell, është më e lehtë ta kalosh atë si një argument të vetëm, të cituar. Argumentet e shumëfishta lidhen me hapësirat para se të analizohen.

SHEMBUJ

Për të printuar të gjitha paketat që vijnë ose dalin nga perëndimi i diellit :

tcpdump host diellit

Për të printuar trafikun në mes helios dhe ose të nxehtë ose ACE :

tcpdump host helios dhe \ (hot ose ace \)

Për të printuar të gjitha paketat IP ndërmjet ace dhe çdo host përveç helios :

tcpdump ip host ace dhe jo helios

Për të printuar të gjithë trafikun midis hosteve dhe ushtrive lokale në Berkeley:

tcpdump net ucb-ether

Për të printuar të gjithë trafikun ftp nëpërmjet portës së internetit snup : (vini re se shprehja citohet për të parandaluar shell nga (gabuar) duke interpretuar kllapa):

tcpdump 'gateway snup dhe (port ftp ose ftp-data)'

Për të shtypur trafikun as burim nga as të destinuara për host lokale (nëse ju hyni në një rrjet tjetër, kjo gjë nuk duhet ta bëjë atë në rrjetin tuaj lokal).

tcpdump ip dhe jo netnet net

Për të printuar paketat fillestare dhe përfundimtare (paketat SYN dhe FIN) të çdo bisede TCP që përfshin një host jo-lokal.

tcp-syn (tcp-fin)! = 0 dhe jo src dhe dst net netnet '

Për të printuar pako IP më të gjatë se 576 bytes dërguar përmes snup portë:

tcpdump 'portë snup dhe ip [2: 2]> 576'

Për të printuar paketa IP të transmetimit ose multicast që nuk janë dërguar përmes transmetimit ethernet ose multicast:

tcpdump 'eter [0] & 1 = 0 dhe ip [16]> = 224'

Për të shtypur të gjitha paketat ICMP që nuk janë kërkesa e echo / përgjigje (p.sh., mos ping pako):

tcpdump 'icmp [icmptype]! = icmp-echo dhe icmp [icmptype]! = icmp-echoreply'

Formati i outputit

Prodhimi i tcpdump varet nga protokoll. Më poshtë jep një përshkrim të shkurtër dhe shembuj të shumicës së formateve.

Lidhjet e Nivelit të Nivelit

Nëse jepet opsioni "-e", shtypet header niveli i lidhjes. Në ethernets, shtypen burimet dhe adresat e destinacionit, protokollin dhe gjatësinë e paketës.

Në rrjetet FDDI, opsioni "-e" shkakton tcpdump për të shtypur fushën `control frame ', adresat e burimit dhe destinacionit, dhe gjatësinë e paketës. Pako normale (të tilla si ato që përmbajnë datagramë IP) janë pako `async ', me një vlerë prioritare ndërmjet 0 dhe 7, për shembull' async4 '. paketat supozohet të përmbajnë një paketë 802.2 Logical Link Control (LLC), header LLC është shtypur nëse nuk është një datagram ISO ose një i ashtuquajtur pako SNAP.

Në rrjetet Token Ring, opsioni "-e" shkakton tcpdump për të printuar fushat e kontrollit të qasjes dhe kontrollit të kornizës, adresat e burimit dhe destinacionit, si dhe gjatësinë e paketës. Ashtu si në rrjetet FDDI, paketat supozohet të përmbajnë një paketë LLC. Pavarësisht nëse opsioni '-e' është specifikuar ose jo, informacioni i burimit të burimit është shtypur për paketat e drejtuara nga burimet.

(NB: Përshkrimi i mëposhtëm supozon njohjen e algoritmit të compression SLIP të përshkruar në RFC-1144.)

Në lidhjet SLIP, shtypet një tregues i drejtimit ("I" për hyrje, "O" për jashtë), lloji i paketës dhe informacioni i ngjeshjes. Lloji i paketës shtypet së pari. Të tre llojet janë ip , utcp dhe ctcp . Asnjë informacion i mëtejshëm i lidhjes nuk është shtypur për paketat ip . Për pako TCP, identifikuesi i lidhjes shtypet sipas llojit. Nëse paketa është e ngjeshur, koka e koduar e saj shtypet. Rastet speciale shtypen si * S + n dhe * SA + n , ku n është shuma me të cilën ka ndryshuar numri i rendit (ose numri i rendit dhe ack). Nëse nuk është një rast i veçantë, shtypen zero ose më shumë ndryshime. Një ndryshim tregohet nga U (treguesi urgjent), W (dritare), A (ack), S (numër sekuence) dhe I (pako ID), e ndjekur nga një delta (+ n ose -n) ose një vlerë e re (= n). Së fundi, shuma e të dhënave në paketën dhe gjatësia e kokës së ngjeshur shtypen.

Për shembull, vija e mëposhtme tregon një paketë të kompresuar TCP të jashtëm, me një identifikues të nënkuptuar të kyçjes; ack ka ndryshuar nga 6, numri i sekuencës me 49, dhe numri i paketës nga 6; ka 3 byte të të dhënave dhe 6 byte të kokës së ngjeshur:

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

Paketa ARP / RARP

Arp / output rarp tregon llojin e kërkesës dhe argumentet e saj. Formati ka për qëllim të jetë vetë shpjegues. Këtu është një mostër e shkurtër e marrë nga fillimi i një `rlogin 'nga host rtsg për të pritur csam :

arp i cili-ka csam tell rtsg arp përgjigje csam është-në CSAM

Linja e parë thotë se rtsg dërgoi një paketë arp duke kërkuar adresën ethernet të hostit të internetit csam. Csam përgjigjet me adresën e tij ethernet (në këtë shembull, adresat ethernet janë në kapele dhe adresa të internetit në rastin më të vogël).

Kjo do të duket më pak e tepërt nëse do të kishim bërë tcpdump -n :

arp kush-ka 128.3.254.6 tregoni 128.3.254.68 përgjigje arp 128.3.254.6 është-në 02: 07: 01: 00: 01: c4

Nëse do të kishim bërë tcpdump -e , fakti që paketa e parë është transmetuar dhe e dyta është pika-to-pikë do të ishte e dukshme:

RTSG Broadcast 0806 64: arp i cili-ka csam tell rtsg CSAM RTSG 0806 64: arp përgjigje csam është-në CSAM

Për paketën e parë kjo thotë se adresa e burimit ethernet është RTSG, destinacioni është adresa e transmetimit ethernet, fusha e tipit përmbante magjish 0806 (lloji ETHER_ARP) dhe gjatësia totale ishte 64 byte.

Paketa TCP

(NB: Përshkrimet e mëposhtme marrin njohje me protokollin TCP të përshkruar në RFC-793. Nëse nuk jeni të njohur me protokollin, as ky përshkrim, as tcpdump nuk do të jetë shumë për ju.)

Formati i përgjithshëm i një linje protokolle tcp është:

src> dst: flags data-seqno ack dritare opsionet urgjente

Src dhe dst janë burimet dhe destinacionet IP dhe portet. Flamujt janë disa kombinime të S (SYN), F (FIN), P (PUSH) ose R (RST) ose një të vetme. (pa flamuj). Data-seqno përshkruan pjesën e hapësirës së rendit të mbuluar nga të dhënat në këtë paketë (shih shembullin më poshtë). Ack është numri i sekuencës së të dhënave të ardhshme që priten drejtimin tjetër në këtë lidhje. Dritarja është numri i bytes të hapësirës së marrjes së tamponës në dispozicion drejtimi tjetër në këtë lidhje. Urg tregon se në pako ka të dhëna "urgjente". Opsionet janë opsione tcp mbyllur në kllapa kënd (p.sh., ).

Src, dst dhe flamujt janë gjithmonë të pranishëm. Fushat e tjera varen nga përmbajtja e titullit të protokollit tcp të paketës dhe dalin vetëm nëse është e përshtatshme.

Këtu është pjesa e hapjes së një rlogin nga host rtsg për të pritur csam .

rtsg.1023> csam.login: S 768512: 768512 (0) fitoni 4096 csam.login> rtsg.1023: S 947648: 947648 (0) ack 768513 fitoni 4096 rtsg.1023> csam. identifikohuni:. ack 1 fitore 4096 rtsg.1023> csam.login: P 1: 2 (1) ack 1 fitore 4096 csam.login> rtsg.1023:. ack 2 fitore 4096 rtsg.1023> csam.login: P 2:21 (19) ack 1 fitore 4096 csam.login> rtsg.1023: P 1: 2 (1) ack 21 fitore 4077 csam.login> rtsg.1023: P 2: 3 (1) ack 21 fitore 4077 urgjente 1 csam.login> rtsg.1023: P 3: 4 (1) ack 21 fitore 4077 urgjente 1

Linja e parë thotë se portin tcp 1023 në rtsg dërgoi një pako në port login në csam. S tregon se flamuri SYN ishte vendosur. Numri i sekuencës së paketave ishte 768512 dhe nuk përmbante të dhëna. (Notimi është "i pari: i fundit (nbytes)" që do të thotë "numrat e sekuencave të parë , por jo duke përfshirë të fundit, që është nbytes bytes të të dhënave të përdoruesit".) Nuk kishte asku të mbështetur me derr, dritarja e disponueshme në dispozicion ishte 4096 bytes ka pasur një opsion me madhësi të segmentit që kërkon një mss prej 1024 bytes.

Csam përgjigjet me një paketë të ngjashme, përveç se përfshin një ack të mbështetur nga derri për SYN të rtsg. Rtsg pastaj acks SYN csam-së. `. ' do të thotë që nuk janë vendosur flamuj. Paketa nuk përmbante të dhëna kështu që nuk ka numër të sekuencës së të dhënave. Vini re se numri i sekuencës ack është një numër i plotë i vogël (1). Tcpdump parë tcpdump sheh një `tcp` bisedë ', ajo printon numrin e sekuencës nga paketa. Në pako të mëvonshme të bisedës, diferenca midis numrit të sekuencës së paketës aktuale dhe këtij numri sekuence fillestare shtypet. Kjo do të thotë që numrat e sekuencave pas së parës mund të interpretohen si pozicione byte relative në rrjedhën e të dhënave të bisedës (me byte të parë të të dhënave, secila drejtim është '1'). `-S 'do të anashkalojë këtë funksion, duke shkaktuar që numrat origjinale të rendit të dalin.

Në vijën e 6-të, rtsg dërgon 19 bytes të të dhënave (bytes 2 deri në 20 në anën rtsg -> csam të bisedës). Flamuri PUSH është vendosur në pako. Në rreshtin e shtatë, csam thotë se është marrë të dhëna të dërguara nga rtsg deri në, por pa përfshirë byte 21. Shumica e këtyre të dhënave duket se është ulur në tampon socket pasi që dritarja e pranimit të csam ka marrë 19 bytes më të vogla. Csam gjithashtu dërgon një byte të të dhënave në rtsg në këtë paketë. Në linjat e 8 dhe 9, csam dërgon dy bytes të të dhënave urgjente, të shtyrë në rtsg.

Nëse fotografia ishte mjaft e vogël që tcpdump nuk kapte kokën e plotë të TCP, ai interpreton sa më shumë që të jetë e kokës dhe pastaj raporton `` [| tcp ] '' për të treguar se pjesa e mbetur nuk mund të interpretohet. Nëse header përmban një opsion të rremë (një me një gjatësi që është ose shumë e vogël ose përtej fundit të kokës), tcpdump e raporton atë si `` [ zgjedhë keq ] '' dhe nuk interpreton asnjë opsion tjetër (pasi është e pamundur të thuhet ku ata fillojnë). Nëse gjatësia e kokës tregon se opsionet janë të pranishme, por gjatësia e datagramit IP nuk është aq e gjatë sa opsionet për të qenë atje, tcpdump raporton atë si `` [ gjatësia e keqe hdr ] ''.

Kapja e paketave TCP me kombinime të veçanta të flamurit (SYN-ACK, URG-ACK, etj)

Ekzistojnë 8 bit në seksionet e biteve të kontrollit të header TCP:

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

Le të supozojmë se ne duam të shikojmë paketat e përdorura në krijimin e një lidhje TCP. Kujtohuni që TCP përdor një protokoll të shtrënguar 3-rruge kur fillon një lidhje të re; sekuenca e lidhjes në lidhje me bits kontrollit TCP është

1) Thirrësi dërgon SYN

2) Përfituesi përgjigjet me SYN, ACK

3) Thirrësi dërgon ACK

Tani ne jemi të interesuar në kapjen e paketave që kanë vetëm pak set SYN (Hapi 1). Vini re se ne nuk duam pako nga hapi 2 (SYN-ACK), vetëm një SYN fillestare fillestare. Ajo që na nevojitet është një shprehje e saktë e filtrave për tcpdump .

Kujtoj strukturën e një header TCP pa opsionet:

0 15 31 ----------------------------------------------- ------------------ | burim i portit destinacioni i portit -------------------------------------------------- --------------- | numri i sekuencës -------------------------------------------------- --------------- | numri i njohjes | -------------------------------------------------- --------------- | HL | rsvd | C | E | U | A | P | R | S | F | madhësia e dritares. | -------------------------------------------------- --------------- | Kontrollor TCP tregues urgjente -------------------------------------------------- ---------------

Një kokë TCP zakonisht mban 20 oktete të të dhënave, përveç nëse opsionet janë të pranishme. Linja e parë e grafikës përmban oktet 0-3, vija e dytë tregon oktete 4 - 7 etj.

Duke filluar të numërohen me 0, bitet përkatëse të TCP-së janë të përfshira në oktetin 13:

0 7 | 15 | 23 | 31 ---------------- | --------------- | --------------- | ---------------- | HL | rsvd | C | E | U | A | P | R | S | F | madhësia e dritares. | ---------------- | --------------- | --------------- | - --------------- | | Okteti i 13-të | |

Le të kemi një vështrim më të afërt në oktetin nr. 13:

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

Këto janë copa të kontrollit TCP që ne jemi të interesuar. Ne kemi numëruar bit në këtë oktet nga 0 në 7, djathtas në të majtë, kështu që bit PSH është numri i vogël 3, ndërsa bit URG është numri 5.

Kujtohuni që ne duam të kapim pako me vetëm set SYN. Le të shohim se çfarë ndodh me oktetin 13 nëse një datagram TCP arrin me pak SYN vendosur në kokë:

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

Duke parë seksionin e biteve të kontrollit, ne shohim se vetëm bit numri 1 (SYN) është vendosur.

Duke supozuar se okteti numër 13 është një numër i plotë i panjohur 8-bit në rendin e byte të rrjetit, vlera binare e këtij okteti është

00000010

dhe përfaqësimi i tij dhjetor është

7 6 5 4 3 2 1 0 0 2 2 2 3 2 2 2 2 2 2

Ne jemi gati, sepse tani e dimë se nëse vendoset vetëm SYN, vlera e oktetës së 13-të në header TCP, kur interpretohet si një numër i plotë i panënshkruar 8-bit në rendin e byte të rrjetit, duhet të jetë saktësisht 2.

Kjo marrëdhënie mund të shprehet si

tcp [13] == 2

Ne mund ta përdorim këtë shprehje si filtër për tcpdump në mënyrë që të shikojmë paketat që kanë vetëm SYN të vendosur:

tcpdump -i xl0 tcp [13] == 2

Shprehja thotë "le të oktat 13 të një datagram TCP të ketë vlerën dhjetore 2", e cila është pikërisht ajo që duam.

Tani, le të supozojmë se ne duhet të kapim paketat SYN, por nuk na intereson nëse ACK ose ndonjë bit tjetër i kontrollit TCP është vendosur në të njëjtën kohë. Le të shohim se çfarë ndodh me oktetin 13 kur një datagram TCP me SYN-ACK arrin:

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

Tani pjesët 1 dhe 4 janë vendosur në oktetin e 13-të. Vlera binare e oktetit 13 është


00010010

që përkthehet në decimal

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

Tani ne nuk mund të përdorim vetëm 'tcp [13] == 18' në shprehjen e filtrit tcpdump , sepse kjo do të përzgjedhë vetëm ato paketa që kanë SYN-ACK, por jo ato me vetëm set SYN. Mos harroni se nuk na intereson nëse ACK ose ndonjë bit tjetër i kontrollit është caktuar për sa kohë SYN është vendosur.

Për të arritur qëllimin tonë, ne duhet të logjikisht dhe vlerën binare të oktetit 13 me disa vlera të tjera për të ruajtur bit SYN. Ne e dimë që ne duam që SYN të vendoset në çdo rast, kështu që ne logjikisht DHE vlerën në oktetin e 13të me vlerën binare të një SYN:

00010010 SYN-ACK 00000010 SYN DHE 00000010 (ne duam SYN) DHE 00000010 (ne duam SYN) -------- -------- = 00000010 = 00000010

Ne shohim se ky operacion AND jep të njëjtin rezultat pavarësisht nëse ACK ose një tjetër bit kontrollues TCP është vendosur. Përfaqësimi dhjetor i vlerës së AND-së si dhe rezultati i këtij operacioni është 2 (binar 00000010), prandaj ne e dimë se për pako me SYN vendosur lidhja e mëposhtme duhet të mbajë të vërtetë:

((vlera e oktetit 13) DHE (2)) == (2)

Kjo na tregon për shprehjen e filtrit tcpdump

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

Vini re se ju duhet të përdorni citate të vetme ose një rresht në shprehje për të fshehur karakterin e veçantë AND ('&') nga shell.

Paketa UDP

Formati UDP ilustrohet nga ky pako rwho:

aktinide.who> broadcast.who: udp 84

Kjo thotë se porti i ciliactinide mikpritës dërgoi një datagram udp në portin i cilitransmetimin pritës, adresën e transmetimit në internet. Paketa përmbante 84 bytes të të dhënave të përdoruesit.

Disa shërbime UDP njihen (nga numri i portit të burimit ose destinacionit) dhe shtypen informacionet e protokollit të nivelit më të lartë. Në veçanti, kërkesat e shërbimit të Domain Name (RFC-1034/1035) dhe Sun RPC thirrjet (RFC-1050) në NFS.

Kërkesat e UDP Name Server

(NB: Përshkrimet e mëposhtme marrin njohjen me protokollin e Shërbimit të Domainit të përshkruar në RFC-1035. Nëse nuk jeni të njoftuar me protokollin, përshkrimi i mëposhtëm duket të jetë i shkruar në greqisht.)

Kërkesat e serverit të emrit formohen si

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

Host h2opolo kërkoi serverin e domain në helios për një rekord adresash (qtype = A) lidhur me emrin ucbvax.berkeley.edu. Id i pyetjes ishte '3'. `+ 'Tregon rekursin e dëshiruar të flamurit ishte vendosur. Gjatësia e pyetjeve ishte 37 byte, duke mos përfshirë headers protokollit UDP dhe IP. Operacioni i pyetjeve ishte normal, Query , kështu që fusha e opit u eleminua. Nëse op kishte qenë ndonjë gjë tjetër, do të ishte shtypur mes '3' dhe '+'. Ngjashëm, klasa qclasi ishte normale, C_IN , dhe u la jashtë. Çdo klasë tjetër do të ishte shtypur menjëherë pas 'A'.

Disa anomali janë kontrolluar dhe mund të rezultojnë në fusha shtesë të mbyllura në kllapa katrore: Nëse një pyetje përmban një përgjigje, dokumentet e autoritetit ose regjistrimet shtesë, seksion, ancount , nscount ose arcount shtypen si `[ n a] ',` [ n n ] 'ose `[ n au]' ku n është numërimi i duhur. Nëse ndonjë prej brezave të përgjigjes është vendosur (AA, RA ose rcode) ose ndonjë nga bitet 'duhet të jetë zero' vendosen në bytes dy dhe tre, `[b2 & 3 = x ] 'është shtypur, ku x është vlera hex bytes header dy dhe tre.

Përgjigjet e UDP Emri i Serverit

Përgjigjet e serverit të emrit formohen si

src> dst: id op rcode flamuj a / n / au tip klasë të dhënash (len) helios.domain> h2opolo.1538: 3 3/3/7 Një 128.32.137.3 (273) helios.domain> h2opolo.1537: 2 NXDomain * 0/1/0 (97)

Në shembullin e parë, helios i përgjigjet pyetjes id 3 nga h2opolo me 3 shënime të përgjigjeve, 3 të dhëna të serverit të emrit dhe 7 të dhëna shtesë. Regjistri i parë i përgjigjes është lloji A (adresa) dhe të dhënat e tij janë adresa e internetit 128.32.137.3. Madhësia e përgjithshme e përgjigjes ishte 273 bytes, duke përjashtuar headers UDP dhe IP. Op (Query) dhe kodi i përgjigjes (NoError) u eleminuan, ashtu siç ishte klasa (C_IN) e rekordit A.

Në shembullin e dytë, helios i përgjigjet pyetjes 2 me një kod përgjigjeje të domainit joekzistent (NXDomain) pa përgjigje, një server me emrin dhe asnjë regjistër autoriteti. `* 'Tregon se pak bit autoritativ është vendosur. Meqë nuk ka pasur përgjigje, asnjë lloj, klasë apo të dhëna nuk janë shtypur.

Karaktere të tjera flamur që mund të shfaqen janë `- '(rekursi në dispozicion, RA, nuk vendosen) dhe` |' (mesazhi i prerë, TC, i caktuar). Nëse seksioni 'pyetje' nuk përmban saktësisht një hyrje, `[ n q] 'është shtypur.

Vini re që kërkesat e serverit të emrit dhe përgjigjet kanë tendencë të jenë të mëdha dhe snaplenja e parazgjedhur prej 68 bytesh mund të mos kapë sa duhet paketën për t'u printuar. Përdorni flamën -s për të rritur snaplen nëse keni nevojë të hetojnë seriozisht trafikun e serverit të emrit. ` -s 128 'ka punuar mirë për mua.

Dekodimi SMB / CIFS

tcpdump tani përfshin dekodimin mjaft të gjerë SMB / CIFS / NBT për të dhënat për UDP / 137, UDP / 138 dhe TCP / 139. Është bërë edhe një dekodim primitiv i të dhënave IPX dhe NetBEUI SMB.

By default, është bërë një dekodim mjaft minimal, me një dekode shumë më të detajuar të bërë nëse -v është përdorur. Paralajmëroni se me -va paketën e vetme SMB mund të marrë një faqe ose më shumë, prandaj përdorni vetëm -v nëse dëshironi të gjitha detajet e rënda.

Nëse jeni duke dekoduar sesionet SMB që përmbajnë strings unicode atëherë ju mund të dëshironi të vendosni ndryshoren e mjedisit USE_UNICODE në 1. Një patch për të zbuluar auto-unicode do të jetë i mirëpritur.

Për informacion mbi formatet e paketës SMB dhe çfarë do të thotë të gjitha fushat e fushës, shikoni www.cifs.org ose direktoria / samba / specs / në faqen tuaj të preferuar të samba.org. Disqet SMB janë shkruar nga Andrew Tridgell (tridge@samba.org).

Kërkesat dhe përgjigjet e NFS

Kërkesat dhe përgjigjet e Sun NFS (Network File System) shtypen si:

src.xid> dst.nfs: len op args src.nfs> dst.xid: përgjigje stat len ​​op rezultatet sushi.6709> wrl.nfs: 112 readlink fh 21,24 / 10,73165 wrl.nfs> sushi.6709: përgjigje në rregull 40 lexo lidhjen "../var" sushi.201b> wrl.nfs: 144 lookup fh 9,74 / 4096,6878 "xcolors" wrl.nfs> sushi.201b: përgjigje ok 128 lookup fh 9,74 / 4134,3150

Në rreshtin e parë, sushi i pritësit dërgon një transaksion me id 6709 për të wrl (vini re se numri pas hostit të src është një id i transaksionit, jo burimi i portit). Kërkesa ishte 112 byte, duke përjashtuar UDP dhe headers IP. Operacioni ishte një readlink (lexo lidhjen simbolike) në dorezën e skedarëve ( fh ) 21,24 / 10,731657119. (Nëse një është me fat, si në këtë rast, trajtimi i skedës mund të interpretohet si një numër i madh numri i pajisjes, i ndjekur nga numri inode dhe numri i gjenerimit.) Wrl përgjigjet `ok 'me përmbajtjen e lidhjes.

Në rreshtin e tretë, sushi kërkon wrl të kërkojë emrin ` xcolors 'në dosjen e dosjes 9,74 / 4096,6878. Vini re se të dhënat e shtypura varen nga lloji i operimit. Formati ka për qëllim të jetë vetë shpjegues nëse lexohet së bashku me një spekulim të protokollit NFS.

Nëse flamuri -v (flagrant) jepet, informata shtesë shtypen. Për shembull:

sushi.1372a> wrl.nfs: 148 lexo fh 21,11 / 12.195 8192 bytes @ 24576 wrl.nfs> sushi.1372a: përgjigje ok 1472 lexo REG 100664 ids 417/0 sz 29388

(-v gjithashtu printon fushat TTL, ID, length dhe fragmentation header IP, të cilat janë lënë jashtë këtij shembulli.) Në rreshtin e parë, sushi kërkon wrl të lexojë 8192 bytes nga skedari 21,11 / 12.195, në byte offset 24576. Wrl përgjigjet `ok '; paketa e treguar në vijën e dytë është fragmenti i parë i përgjigjes dhe kështu është vetëm 1472 bytes i gjatë (bytat e tjera do të pasojnë në fragmente të mëvonshme, por këto fragmente nuk kanë NFS ose edhe headers UDP dhe kështu nuk mund të shtypen, në varësi të shprehjes së filtrit të përdorur). Për shkak se është dhënë flag -v, disa nga atributet e skedarit (të cilat i kthehen përveç të dhënave të skedarëve) janë shtypur: lloji i skedarit (`` REG '', për skedarin e rregullt), modaliteti i skedarit (në okral) uid dhe gid, dhe madhësia e skedarit.

Nëse flamuri -v jepet më shumë se një herë, edhe më shumë detaje shtypen.

Vini re se kërkesat e NFS janë shumë të mëdha dhe shumica e detajeve nuk do të shtypen nëse snaplen është rritur. Provoni të përdorni ` -s 192 'për të parë trafikun NFS.

Paketat e përgjigjes NFS nuk identifikojnë në mënyrë eksplicite operacionin RPC. Në vend të kësaj, tcpdump mban gjurmët e kërkesave "të kohëve të fundit" dhe i korrespondon përgjigjeve duke përdorur ID-në e transaksionit. Nëse një përgjigje nuk ndjek me kujdes kërkesën përkatëse, mund të mos jetë e analizueshme.

Kërkesat dhe përgjigjet e PVF-së

Kërkesat dhe përgjigjet e Transarc AFS (Andrew File System) shtypen si:

src.sport> dst.dport: rx paketa tip src.sport> dst.dport: rx paketa tip shërbimi thirrje thirrje emri args src.sport> dst.dport: rx paketa tip shërbimi përgjigje call-name args elvis. 7001> pike.afsfs: rx të dhëna fs thirrje riemërtojni vjetër fid 536876964/1/1 ".newsrc.new" new fid 536876964/1/1 ".newsrc" pike.afsfs> elvis.7001: rx të dhëna fs përgjigje riemërtoj

Në rreshtin e parë, mikpritësi elvis dërgon një pako RX në pike. Ky ishte një pako e të dhënave RX në shërbimin fs (fileserver) dhe është fillimi i një thirrje RPC. Thirrja RPC ishte një riemërim, me dosjen e vjetër të dosjes së dosjes 536876964/1/1 dhe një skedar të vjetër të ".newsrc.new", dhe një dosje të re të dosjeve të kodit 536876964/1/1 dhe një skedë të re filmi të `. newsrc '. Pika e pritësit përgjigjet me një përgjigje RPC në thirrjen e riemërtimit (e cila ishte e suksesshme, sepse ishte një pako e të dhënave dhe jo një paketë aborti).

Në përgjithësi, të gjitha RPC-të e AFS-së dekodohen të paktën nga emri i thirrjes RPC. Shumica e RPC-ve të AFS kanë të paktën disa nga argumentet e dekoduar (zakonisht vetëm argumentet "interesante", për disa përkufizime të interesit).

Formati ka për qëllim të jetë vetë-përshkrues, por ndoshta nuk do të jetë i dobishëm për njerëzit që nuk janë të njohur me punën e AFS dhe RX.

Nëse flamuri -v (dyfishtë) jepet dy herë, shtypen paketat e njohjes dhe informatat shtesë të kokës, të tilla si ID-ja e thirrjes RX, numri i telefonit, numri i rendit, numri serik dhe flamujt e paketave RX.

Nëse flamuri -v jepet dy herë, shtypen informacione shtesë, të tilla si ID-ja e thirrjes RX, numri serik dhe flamujt e paketës RX. Informacioni i negocimit MTU gjithashtu shtypet nga paketat RX ack.

Nëse flamuri -v jepet tri herë, indeksi i sigurisë dhe id shërbimi shtypen.

Kodet e gabimit janë shtypur për pako aborti, me përjashtim të paketave Ubik beacon (sepse paketat e abortit përdoren për të nënkuptuar një votim po për protokollin Ubik).

Vini re se kërkesat AFS janë shumë të mëdha dhe shumë nga argumentet nuk do të shtypen nëse snaplen është rritur. Provoni të përdorni ` -s 256 'për të parë trafikun AFS.

Paketat e përgjigjeve të AFS nuk identifikojnë në mënyrë eksplicite operacionin RPC. Në vend të kësaj, tcpdump mban gjurmët e kërkesave të "fundit" dhe i korrespondon përgjigjeve duke përdorur numrin e telefonit dhe ID-të e shërbimit. Nëse një përgjigje nuk ndjek me kujdes kërkesën përkatëse, mund të mos jetë e analizueshme.

KIP Appletalk (DDP në UDP)

Paketat DDP të Appletalk të përfshira në datagramet e UDP janë de-encapsulated dhe hedhur si paketa DDP (dmth., Të gjitha informatat header UDP janë hedhur poshtë). Skedari /etc/atalk.names përdoret për përkthimin e numrave neto dhe numrave të nyjeve të appletalkeve tek emrat. Linjat në këtë skedar kanë formën

emri i numrit 1.254 eter 16.1 icsd-net 1.254.110 as

Dy linjat e para japin emrat e rrjeteve appletalk. Linja e tretë jep emrin e një host të caktuar (një host dallohet nga një rrjet me oktetin e tretë në numrin - një numër neto duhet të ketë dy oktete dhe një numër pritës duhet të ketë tre oktete.) Numri dhe emri duhet të ndahen nga hapësira e bardhë (boshllëqe ose skeda). Dosja /etc/atalk.names mund të përmbajë linja bosh ose linja komentimi (linja që fillojnë me një "#").

Adresat Appletalk janë shtypur në formën:

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

(Nëse /etc/atalk.names nuk ekziston ose nuk përmban një hyrje për disa host / numër neto të adresave, adresat shtypen në formë numerike.) Në shembullin e parë, NBP (DDP port 2) në neto 144.1 nyja 209 po dërgon në çdo gjë që dëgjon në portin 220 të nyjes së rrjetit icsd 112. Rreshti i dytë është i njëjtë përveç se emri i plotë i nyjes burimore është i njohur ('zyra'). Linja e tretë është një dërgim nga porti 235 në rrjetin jssmag node 149 për të transmetuar në portin NBP-net icsd-net (vini re se adresa e transmetimit (255) tregohet nga një emër neto pa numër pritës - për këtë arsye është një ide e mirë për të mbajtur emrat e nyjeve dhe emrat e rrjetave të dallueshme në /etc/atalk.names).

NBP (protokoll i lidhjes së emrit) dhe paketat e ATP (protokollit të transaksionit Appletalk) kanë përmbajtjen e tyre të interpretuar. Protokollet e tjera hedhin vetëm emrin e protokollit (ose numrin nëse nuk është regjistruar asnjë emër për protokollin) dhe madhësinë e paketës.

Paketat NBP formohen si shembujt e mëposhtëm:

icsd-net.112.220> jssmag.2: nbp-lkup 190: "=: LaserWriter @ *" jssmag.209.2> icsd-net.112.220: nbp-përgjigje 190: "RM1140: LaserWriter @ *" 250 techpit.2> icsd -net.112.220: nbp-përgjigje 190: "techpit: LaserWriter @ *" 186

Linja e parë është një kërkesë për kërkimin e emrit për laserwriters dërguar nga host nicsd 112 dhe transmetuar në jssmag neto. Id nbp për lookup është 190. Linja e dytë tregon një përgjigje për këtë kërkesë (vini re se ka të njëjtin id) nga host jssmag.209 duke thënë se ajo ka një burim laserwriter të quajtur "RM1140" i regjistruar në portin 250. E treta linja është një tjetër përgjigje për të njëjtën kërkesë duke thënë se techpit të presë ka laserwriter "techpit" të regjistruar në portin 186.

Formati i paketës ATP demonstrohet me shembullin e mëposhtëm:

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

Jssmag.209 inicion identifikimin e transaksionit 12266 me helikët pritës duke kërkuar deri në 8 paketa (`<0-7> '). Numri magjik në fund të vijës është vlera e fushës `userdata 'në kërkesë.

Helios përgjigjet me 8 paketa 512 byte. `: Shifra 'pas ID-së të transaksionit jep numrin e rendit të paketës në transaksion dhe numri në parens është sasia e të dhënave në pako, duke përjashtuar header atp. `* 'Në paketën 7 tregon se bit EOM ishte caktuar.

Jssmag.209 pastaj kërkon që pako 3 & 5 të ritransmetohen. Helios i risjell ato, atëherë jssmag.209 liron transaksionin. Së fundi, jssmag.209 fillon kërkesën tjetër. `* 'Në kërkesë tregon se XO (` exactly once') nuk ishte vendosur.

Fragmentimi i IP

Datagramet fragmentare të Internetit shtypen si

(frag id : madhësia @ offset +) (frag id : madhësia @ offset )

(Forma e parë tregon se ka më shumë fragmente. E dyta tregon se ky është fragment i fundit.)

Id është fragment id. Madhësia është madhësia e fragmentit (në bytes) duke përjashtuar header IP. Zhvendosja është kompensimi i këtij fragmenti (në bytes) në datagramin origjinal.

Informacioni i fragmente është nxjerrë për secilin fragment. Fragmenti i parë përmban kokën e protokollit të nivelit më të lartë dhe informacioni i fragmentit shtypet pas informacioneve të protokollit. Fragmentet pas së parës nuk përmbajnë një titull të protokollit të nivelit më të lartë dhe info frag është shtypur pas adresave të burimit dhe destinacionit. Për shembull, këtu është pjesë e një ftp nga arizona.edu për të lbl-rtsg.arpa mbi një lidhje CSNET që nuk duket se trajton datagramet 576 byte:

arizona.ftp-data> rtsg.1170:. 1024: 1332 (308) ack 1 fitore 4096 (frag 595a: 328 @ 0 +) arizona> rtsg: (fragment 595a: 204 @ 328) rtsg.1170> arizona.ftp-data:. ack 1536 fito 2560

Ka disa gjëra që duhet të vihen në dukje këtu: Së pari, adresat në vijën e dytë nuk përfshijnë numrat e porteve. Kjo është për shkak se informacioni i protokollit TCP është i gjithë në fragmentin e parë dhe nuk kemi asnjë ide se çfarë janë numrat e porteve apo sekuencave kur i printojmë fragmente të mëvonshme. Së dyti, informacioni i sekuencës tcp në rreshtin e parë është shtypur sikur të kishte 308 bytes të të dhënave të përdoruesit, kur, në të vërtetë, ka 512 bytes (308 në fragmentin e parë dhe 204 në të dytë). Nëse jeni duke kërkuar vrima në hapësirën e rendit ose duke u përpjekur të përputheni me acks me paketa, kjo mund t'ju mashtrojë.

Një paketë me IP nuk e fragmenton flamurin është shënuar me një zvarritës (DF) .

timestamps

Si parazgjedhje, të gjitha linjat e prodhimit paraprihen nga një tabelë kohore. Timestamp është ora aktuale e orës në formë

hh: mm: ss.frac

dhe është aq i saktë sa ora e kernelit. Afati kohor reflekton kohën kur kerneli e pa paketën e parë. Nuk është bërë asnjë përpjekje për të llogaritur vonesat kohore mes kohës kur ndërfaqja ethernet hoqi paketën nga tela dhe kur kerneli shërbente ndërprerjen e "pakon e re".

SHIKO GJITHASHTU

trafiku (1C), nit (4P), bpf (4), pcap (3)

E rëndësishme: Përdorni komandën e njeriut ( % man ) për të parë se si përdoret një komandë në kompjuterin tuaj të veçantë.