Tcpdump - Linuksa Komando - Unikso Komando

NAME

tppump-trafiko sur reto

SYNOPSIS

tcpdump [ -adeflnNOpqRStuvxX ] [ -kalkulo ]

[ -C dosiero_size ] [ -Fa dosiero ]

[ -i interfaco ] [ -m modulo ] [ -r- dosiero ]

[ -s snaplen ] [ -T- tipo ] [ -U- uzanto ] [ -w- dosiero ]

[ -E io: sekreta ] [ esprimo ]

PRISKRIBO

Tcpdump elprenas la titolojn de pakoj en interfaco de reto, kiu kunigas la boolean esprimon . Ĝi ankaŭ povas esti kurita per la -w flago, kio kaŭzas ke ĝi konservu la pakajn datumojn al dosiero por posta analizo, kaj / aŭ kun la -r- flago, kiu kaŭzas ĝin legi el konservita paka dosiero anstataŭ legi pakojn de interfaco de reto. En ĉiuj kazoj, nur pakoj kiuj kunigas esprimon estos procesitaj de tcpdump .

Tcpdump , se ĝi ne kuros kun la -c flago, daŭre kaptos pakojn ĝis ĝi estas interrompita per signo SIGINT (generita, ekzemple, tajpante vian interrompan karakteron, tipe kontrolon-C) aŭ signon SIGTERM (kutime generitan per la mortigo (1) komando); se ĝi kuras kun la -c flago, ĝi kaptos pakojn ĝis ĝi estas interrompita per signalo SIGINT aŭ SIGTERM aŭ la specifita nombro da pakoj estis procesitaj.

Kiam tcpdump finas kapti pakojn, ĝi raportos kalkulojn de:

pakaĵoj `` ricevitaj de filtrilo '' (la signifo de tio dependas de la VIN, sur kiu vi funkcias tcpdump , kaj eble laŭ la maniero, kiam la OS estis agordita - se filtrilo estis specifita sur la komandlinio, sur iuj OSoj ĝi kalkulas pakojn sendepende de ĉu ili estis egalitaj de la filtrila esprimo, kaj sur aliaj OSoj ĝi nur havas pakojn, kiuj estis parigitaj per la filtrila esprimo kaj estis procesitaj de tcpdump );

pakaĵoj `` faligitaj de kerno '' (ĉi tio estas la nombro da pakoj, kiuj estis malplenigitaj, pro la manko de bufro-spaco, per la pakaĵa mekanismo en la OS sur kiu tcpdump funkcias, se la OS raportas tiun informon al la aplikoj; se ne, ĝi estos raportita kiel 0).

Sur platformoj, kiuj subtenas la signalon SIGINFO, kiel la plej multaj BSDs, ĝi raportos tiujn grafojn kiam ricevas signalon SIGINFO (generita, ekzemple, tajpante vian karakteron '' status ', kutime kontrolo-T) kaj daŭre kaptos pakojn .

Legado de pakoj de interreta interfaco povas postuli, ke vi havas specialajn privilegiojn:

Sub SunOS 3.x aŭ 4.x kun NIT aŭ BPF:

Vi devas legi aliron al / dev / nit/ dev / bpf * .

Sub Solaris kun DLPI:

Vi devas legi / skribi aliron al la reto pseudo-aparato, ekz. / Dev / le . Almenaŭ iuj versioj de Solaris, tamen, ĉi tio ne sufiĉas por permesi tcpdump kapti en promiscuous mode; sur tiuj versioj de Solaris, vi devas esti radiko, aŭ tcpdump devas esti instalita instalita por radiki, por kapti en promiscua maniero. Rimarku, ke en multaj (eble ĉiuj) interfacoj, se vi ne kaptas en promiscuous reĝimo, vi ne vidos ajnajn elirigajn pakojn, do kapto ne farita en promiscuza maniero eble ne tre utilas.

Sub HP-UX kun DLPI:

Vi devas esti radiko aŭ tcpdump devas esti instalita instalita por radiki.

Sub IRIX kun snoop:

Vi devas esti radiko aŭ tcpdump devas esti instalita instalita por radiki.

Sub Linukso:

Vi devas esti radiko aŭ tcpdump devas esti instalita instalita por radiki.

Sub Ultrix kaj Cifereca UNIKSO / Tru64 UNIKSO:

Ajna uzanto povas kapti reton trafikon kun tcpdump . Tamen, neniu uzanto (eĉ ne la super-uzanto) povas kapti en promiscua maniero interfaco krom se la super-uzanto ebligis agrablan funkciadon en tiu interfaco per pfconfig (8), kaj neniu uzanto (eĉ ne la super-uzanto ) povas kapti unikastan trafikon ricevitan de aŭ sendita de la maŝino sur interfaco krom se la super-uzanto ebligis kopion-tute-modan operacion en tiu interfaco per pfconfig , do utila paka kaptado en interfaco verŝajne bezonas ke ĉu promiscuous-mode aŭ copy -aŭ-operacio, aŭ ambaŭ modoj de operacio, estu ebligitaj en tiu interfaco.

Sub BSD:

Vi devas legi aliron al / dev / bpf * .

Legi konservitan pakon-dosieron ne postulas specialajn privilegiojn.

Obloj

-a

Provu konverti retojn kaj elsendajn adresojn al nomoj.

-c

Eliro post ricevi kalkulojn.

-C

Antaŭ skribi krudan pakon al konservilo, kontrolu ĉu la dosiero estas nun pli granda ol dosiero_ kaj, se tiel, fermu la nunan konservilon kaj malfermi novan. Savefiles post la unua konservilo devas havi la nomon specifitan per la -w flago, kun nombro post ĝi, komencante ĉe 2 kaj daŭrigante supren. La unuecoj de dosiero_ estas milionoj da bajtoj (1,000,000 bytoj , ne 1,048,576 bytoj).

-d

Forĵetu la kompilitan pakon-kongruan kodon en homa legebla formo al norma eligo kaj haltigo.

-dd

Dump-pak-kongrua kodo kiel C- programo-fragmento.

-ddd

Dump-pak-kongrua kodo kiel dekuma nombro (antaŭita kun kalkulo).

-e

Printu la ligon-nivelan kaplinion sur ĉiu dump-linio.

-Kaj

Uzu ion: sekrete por senĉifri pakojn de IPsec ESP. Algoritmoj povas esti des-cbc , 3des-cbc , blowfish -cbc , rc3-cbc , cast128-cbc , aŭ neniu . La defaŭlta estas des-cbc . La kapablo deĉifri pakojn nur ĉeestas se tcpdump estis kompilita per ĉifriko ebligita. Sekreta la suprena teksto por sekreta klavo de ESP. Ni ne povas preni arbitran binaran valoron ĉe ĉi tiu momento. La opcio supozas RFC2406 ESP, ne RFC1827 ESP. La opcio estas nur por elpurigado, kaj la uzo de ĉi tiu opcio kun vere 'sekreta' ŝlosilo estas senkuraĝigita. Prezentante la sekretan ŝlosilon de IPsec al komandlinio, vi faras ĝin videbla al aliaj, per ps (1) kaj aliaj okazoj.

-f

Pritraktu interretajn interretajn adresojn nombre prefere ol simbole (ĉi tiu opcio estas intencita ĉirkaŭiri seriozan cerbon-damaĝon en la servilo de Suno de la Suno --- kutime pendigas por ĉiam tradukado de ne-lokaj interretaj nombroj).

-F

Uzu dosieron kiel enigo por la filtrila esprimo. Plia esprimo donita sur la komandlinio estas ignorita.

-i

Aŭskultu interfaco . Se ne specifita, tcpdump serĉas la sistemon-interfacon por la plej malalta numerita kaj agordita interfaco (ekskludante la buklo). Ligoj rompiĝas elektante la plej fruan matĉon.

En sistemoj de Linukso kun 2,2 aŭ postaj kernoj, interfaco de `'ajna' 'povas esti uzata por kapti pakojn el ĉiuj interfacoj. Rimarku, ke kaptoj sur la `` ajna '' aparato ne fariĝos en promiscua maniero.

-l

Faru stdout-linio tonditan. Utila se vi volas vidi la datumon kaptante ĝin. Ekzemple,
`` tcpdump -l | tee dat '' aŭ `` tcpdump -l> dat & tail -f dat ''.

-m

Ŝarĝi SMI-MIB-modulojn-difinojn de dosiero- modulo . Ĉi tiu opcio povas esti uzata plurajn fojojn por ŝarĝi plurajn MIB-modulojn en tcpdump .

-n

Ne konvertu gastigajn adresojn al nomoj. Ĉi tio povas esti uzita por eviti DNS-serĉojn.

-nn

Ne konvertu protokolojn kaj pordajn nombrojn ktp.

-N

Ne premu domajn kvalifikojn de gastigaj nomoj. Ekzemple, se vi donos ĉi tiun flagon, tiam tcpdump presos `` nic '' anstataŭ `` nic.ddn.mil ''.

-O

Ne kuru la pakon-kongruan kodon optimumigilon. Ĉi tio utilas nur se vi suspektas cimon en la optimizilo.

-p

Ne metu la interfacon en promiscuan reĝimon. Notu, ke la interfaco povus esti en promiscua maniero por iu alia kialo; sekve, '-p' ne povas esti uzata kiel mallongigo por 'ether host {local-hw-addr} aŭ ether broadcast'.

-q

Rapida (kvieta?) Eligo. Impresu malpli da protokola informo do eligo de linioj estas pli mallongaj.

-R

Supozi ESP / AH-pakojn bazi sur malnova specifaĵo (RFC1825 al RFC1829). Se ĝi specifas, tcpdump ne printos la reprodukta preventa kampo. Pro tio ke ne ekzistas protokolo-kampo en specifa ESP / AH, tcpdump ne povas dedukti la version de ESP / AH-protokolo.

-r

Legu pakojn el dosiero (kiu estis kreita per la -w-opcio). Norma enigo estas uzata se dosiero estas `` - ''.

-S

Presi absolutan, prefere ol relativa, TCP-sekvencaj nombroj.

-s

Snarf malplenigas bitetojn de datumoj de ĉiu pako prefere ol la defaŭlta 68 (kun la NIT de SunOS, la minimumo estas fakte 96). 68 bajtoj estas taŭgaj por IP, ICMP, TCP kaj UDP sed povas detranĉi protokolajn informojn de nomo-servilo kaj NFS-pakoj (vidu sube). Pakoj detranĉitaj pro limigita instantaneo estas indikitaj en la eligo kun `` [| proto ] '', kie proto estas la nomo de la protokola nivelo, ĉe kiu la truncado okazis. Rimarku, ke prenante pli grandajn fotojn, pliigas la kvanton da tempo, kiujn ĝi bezonas por procesi pakojn kaj, efike, malpliigas la kvanton da pakaĵoj. Ĉi tio eble kaŭzas pakojn perditajn. Vi devus limigi malplenojn al la plej malgranda nombro, kiu kaptos la protokolajn informojn, kiujn vi interesas. Agordi malplenojn al 0 signifas uzi la bezonatan longon por kapti tutajn pakojn.

-T

Fortaj pakoj elektitaj per " esprimo " por esti interpretitaj la specifa tipo . Nuntempe konataj tipoj estas cnfp (Cisco NetFlow-protokolo), rpc (Remote Procedure Call), rtp (Real-Time Applications-protokolo), rtcp (Real-Time Applications-kontrolo-protokolo), snmp (Simple Network Management Protocol), vat ), kaj wb (distribuita Blanka Estraro).

-t

Ne pritondu tempestampon sur ĉiu dump-linio.

-tt

Printu neformatitan tempon ĉe ĉiu dump-linio.

-U

Gutas radikajn privilegiojn kaj ŝanĝas uzanton-ID al uzanto kaj grupa ID al la ĉefa grupo de uzanto .

Rimarku! Red Hat Linux aŭtomate faligas la privilegiojn por uzanto `` pcap '' se nenio alia estas specifita.

-ttt

Printu delta (en mikro-sekundoj) inter nuna kaj antaŭa linio sur ĉiu dump-linio.

-tttt

Printu tempon de tempo en defaŭlta formato, laŭ dato de ĉiu dump-linio.

-u

Printu nedekodajn NFS-manojn.

-v

(Iomete pli) verda eligo. Ekzemple, la tempo por vivi, printado, identigo, tuta longo kaj opcioj en IP-pako. Ĝi ankaŭ ebligas aldonajn pakajn integrecajn kontrolojn kiel ekzemple kontroli la IP kaj ICMP-kaplinion-kontrolon.

-vv

Eĉ pli verda eligo. Ekzemple, pliaj kampoj estas presitaj el pakoj de respondo de NFS, kaj SMB-pakoj estas tute malkodigitaj.

-vvv

Eĉ pli verda eligo. Ekzemple, telnet SB ... SE- opcioj estas presitaj tute. Kun -X telnet-opcioj estas presitaj en heksajxo ankaŭ.

-w

Skribu la krudajn pakojn por dosiero anstataŭ analizi kaj presi ilin. Ili poste povas esti presitaj per la -r-opcio. Norma eligo estas uzata se dosiero estas `` - ''.

-x

Printu ĉiun pakon (malpli ĝian ligan nivelan kaplinion) en hekso. La plej malgranda de la tuta pakaĵo aŭ malplenaj bajtoj estos presita. Rimarku, ke ĉi tiu estas la tuta ligilo-tavolo-pakaĵo, do por ligaj tavoloj, kiuj ŝaltas (ekz. Ethernet), la kompletigaj bajtoj ankaŭ estos presitaj kiam la pli alta tavolo-pako estas pli mallonga ol la necesa kompletigo.

-X

Kiam presanta hekson, presi ascii ankaŭ. Do se -x ankaŭ estas aro, la pako estas presita en hex / ascii. Ĉi tio estas tre oportuna por analizi novajn protokolojn. Eĉ se -x ankaŭ ne estas aro, iuj partoj de kelkaj pakoj povas esti presitaj je hex / ascii.

esprimo

elektas, kiujn pakoj estos forĵetitaj. Se neniu esprimo estas donita, ĉiuj pakoj en la reto estos forĵetitaj. Alie, nur pakoj por kiuj esprimo estas "vera" estos forĵetitaj.

La esprimo konsistas el unu aŭ pli da primitivoj. Primitivoj kutime konsistas en ido (nomo aŭ numero) antaŭita de unu aŭ pli kvalifikiĝintoj. Ekzistas tri malsamaj specoj de kvalifikilo:

tipo

kvalifikistoj diras, kian aferon oni raportas al la id-nomo aŭ nombro. Eblaj tipoj estas gastiganto , reto kaj haveno . Ekzemple, 'host foo', 'reto 128.3', 'haveno 20'. Se ne ekzistas tipo-kvalifikilo, gastiganto estas supozita.

dir

kvalifikistoj specifas apartan translokiĝon direkte al kaj / aŭ de id . Eblaj direktoj estas src , dst , src aŭ dst kaj src and dst . Ekzemple, 'src foo', 'dst net 128.3', 'src aŭ dst port ftp-data'. Se estas neniu kvalifikilo, src aŭ dst estas supozita. Por "nulaj ligiloj" (tio estas, punkto al punkto-protokoloj kiel ŝlimo), la enkondiĉaj kaj eksterordinaraj kvalifikiloj povas esti uzataj por specifi deziritan direkton.

proto

kvalifikistoj restriktas la matĉon al aparta protokolo. Eblaj protos estas: ether , fddi , tr , ip , ip6 , arp , rarp , decnet , tcp kaj udp . Ekzemple, 'ether src foo', 'arp neta 128.3', 'tcp haveno 21'. Se ne ekzistas proto-kvalifikilo, ĉiuj protokoloj konsekvencaj kun la tipo estas supozitaj. Ekzemple, 'src foo' signifas '(ip aŭ arp aŭ rarp) src foo' (krom ĉi tiu lasta ne estas laŭleĝa sintakso), 'netbar' signifas '(ip aŭ arp or rarp) net bar' kaj 'haveno 53' '(tcp aŭ udp) haveno 53'.

[`fddi 'estas fakte alias por' ether '; la analizilo traktas ilin identike kiel '' la datuma ligo-nivelo uzita en la interfaco de interreto specifita. '' FDDI-titoloj enhavas Ethernet-similajn fontojn kaj adresojn, kaj ofte enhavas pakajn tipojn de Ethernet, por ke vi povu filtri ĉi tiujn FDDI-kampojn same kiel kun la analogaj Ethernet-kampoj. FDDI-titoloj ankaŭ enhavas aliajn kampojn, sed vi ne povas nomi ilin eksplicite en filtrila esprimo.

Simile, 'tr' estas alias por 'ether'; la deklaroj de la antaŭa alineo pri titoloj de FDDI ankaŭ aplikiĝas al titoloj de Token Ring.

Aldone al la supre, ekzistas iuj specialaj "primitivaj" ŝlosilvortoj, kiuj ne sekvas la ŝablonon: enirejo , elsendo , malpli , pli granda kaj aritmetika esprimoj. Ĉiuj ĉi tiuj estas priskribitaj sube.

Pli kompleksaj filtrilaj esprimoj estas konstruitaj per uzado de vortoj kaj , ne kombini primitivojn. Ekzemple, 'gastiganto kaj ne haveno ftp kaj ne haveno ftp-datumoj'. Por savi tajpadon, identaj listoj de kvalifikistoj povas esti preterlasitaj. Ekzemple, 'tcp dst port ftp aŭ ftp-data aŭ domain' estas ĝuste la sama kiel 'tcp dst port ftp aŭ tcp dst port ftp-data aŭ tcp dst port domain'.

Permeseblaj primitivoj estas:

gastiganto gastiganto

Vere, se la IPv4 / v6-destina kampo de la pakaĵo estas gastiganto , kiu povas esti aŭ adreso aŭ nomo.

src gastiganto

Vere, se la fonta kampo IPv4 / v6 de la pakaĵo estas gastiganto .

gastiganto

Vere, ĉu la fonto aŭ destino IPv4 / v6 de la pakaĵo estas gastiganto . Ĉiu el la antaŭaj gastigaj esprimoj povas esti prependita per la ŝlosilvortoj, ip , arp , rarp , aŭ ip6 kiel en:

ip gastiganto

kiu samvaloras al:

ether proto \ ip kaj gastiganto

Se gastiganto estas nomo kun multaj IP-adresoj, ĉiu adreso estos kontrolita por matĉo.

ether dst ehost

Vere se la ethernet-adreso estas ehost . Ehost povas esti aŭ nomo de / ktp / ethers aŭ nombro (vidu ethers (3N) por nombra formato).

ether src ehost

Vere, se la ethernetfonto estas ehost .

ether-gastiganto

Vere, se la ethernet fonto aŭ destina adreso estas ehost .

pordega gastiganto

Vere, se la pako uzis gastiganton kiel pordejo. Tio estas, la ethernetfonto aŭ destina adreso estis gastiganto, sed nek la fonto IP nek la IP-destino estis gastiganto . Gastiganto devas esti nomo kaj devas esti trovita ambaŭ de la mekanismoj de rezolucio de la maŝino-al-IP-adreso de la maŝino (dosiernomo-dosiero, DNS, NIS, ktp) kaj per la rezolucio de gastiganto de nomo de la maŝino-al-Ethernet mekanismo (/ ktp / ethers, ktp). (Ekvivalenta esprimo estas

ether-gastiganto kaj ne gastiganto

kiu povas esti uzata per nomoj aŭ nombroj por gastiganto / ehost .) Ĉi tiu sintakso ne funkcias en IPv6-ebligita agordo ĉe ĉi tiu momento.

Reto net

Vere, se la direkto de IPv4 / v6 de la pakaĵo havas reton nombro de reto . Reto povas esti aŭ nomo de / etc / retoj aŭ reto-nombro (vidu retojn (4) por detaloj).

src net net

Vere, se la fonta adreso IPv4 / v6 de la pakaĵo havas reton nombro de reto .

pura reto

Vere, se la IPv4 / v6 fonto aŭ destina adreso de la pakaĵo havas reton nombro de reto .

Reto Net Masko Netmask

Vere, se la IP-adreso kongruas kun la netmaska specifaĵo. Estu kvalifikita per srcdst . Notu, ke ĉi tiu sintakso ne estas valida por IPv6- reto .

puraj netoj / lenoj

Vere, se la IPv4 / v6 adreso kongruas kun netmasko len- bitoj. Estu kvalifikita per srcdst .

pordo de haveno

Vere, se la pakaĵo estas ip / tcp, ip / udp, ip6 / tcp aŭ ip6 / udp kaj havas havenon valora haveno de haveno . La haveno eblas nombron aŭ nomon uzata en / ktp / servoj (vidu tcp (4P) kaj udp (4P)). Se nomo estas uzata, ambaŭ la havenaj numeroj kaj protokolo estas kontrolitaj. Se uzata nombro aŭ dubasenca nomo, nur la portnombro estas kontrolita (ekz., Pordoporto 513 printos ambaŭ tcp / ensalutan trafikon kaj udp / kiu trafiko kaj haveno domajno presos ambaŭ tcp / domajnon kaj udp / domajnon trafikon).

src haveno

Vere, se la pakaĵo havas fontajn havenajn valorojn de haveno .

haveno haveno

Vere, se la fonto aŭ destina haveno de la pakaĵo estas haveno . Ĉiu el la antaŭaj havenaj esprimoj povas esti prependita per la ŝlosilvortoj, tcpudp , kiel en:

tcp src haveno

Kiu kongruas nur tcp pakoj kies fonto haveno estas haveno .

malpli longeco

Vere, se la pako havas longon malpli ol aŭ egala al longo . Ĉi tio estas ekvivalenta al:

len <= longo .

plej granda longeco

Vere se la pako havas longon pli granda ol aŭ egala al longo . Ĉi tio estas ekvivalenta al:

len> = longo .

ip- protokolo

Vere se la pako estas IP-pako (vidu ip (4P)) de protokola protokolo . Protokolo povas esti numero aŭ unu el la nomoj icmp , icmp6 , igmp , igrp , pim , ah , esp , vrrp , udp , aŭ tcp . Notu, ke la identigiloj tcp , udp , kaj icmp estas ankaŭ ŝlosilvortoj kaj devas esti eskapitaj per backslash (\), kio estas \\ en la C-ŝelo. Notu, ke ĉi tiu komenca ne persekutas la ĉenon de la protokolo.

ip6- protokolo

Vere, se la pako estas IPv6-paka protokolo- protokolo . Notu, ke ĉi tiu komenca ne persekutas la ĉenon de la protokolo.

ip6 protochain protokolo

Vere, se la pako estas IPv6-pakaĵo, kaj enhavas protokolon-titolon kun protokolo de tipo en ĝia protokolo titola ĉeno. Ekzemple,

ip6 protochain 6

kongruas kun iu ajn pakaĵo IPv6 kun TCP-protokolo en la protokolo titola ĉeno. La pakaĵo povas enhavi, ekzemple, aŭtentika kaplinio, ruliĝa kaplinio, aŭ hop-by-hop-opcio-kaplinio, inter IPv6-kaplinio kaj TCP-kaplinio. La kodo BPF elsendita de ĉi tiu komenca estas kompleksa kaj ne povas esti optimumigita per BPF-optimumiga kodo en tcpdump , do tio povas esti iom malrapida.

protokolo ip protochain

Ekvivalenta al ip6 protochain protokolo , sed tio estas por IPv4.

Ether elsendo

Vere, se la pakaĵo estas ethernet-elsendita pako. La ether- ŝlosilvorto estas laŭvola.

ip elsendo

Vere, se la pako estas paketo de dissendo de IP. Ĝi kontrolas por la ĉiuj-nuloj kaj ĉiuj-elsendaj konvencioj, kaj rigardas la lokan subnet-maskon.

ether multicast

Vere, se la pako estas ethernet multicast-pako. La ether- ŝlosilvorto estas laŭvola. Ĉi tiu estas taĉigrafio por ' ether [0] & 1! = 0 '.

ip multkastas

Vere, se la pako estas IP-multkasta pako.

ip6 multicast

Vere, se la pako estas IPv6 multicast-pako.

ether proto protokolo

Vere se la pako estas de ether-tipo protokolo . Protokolo povas esti numero aŭ unu el la nomoj ip , ip6 , arp , rarp , atalk , aarp , decnet , sca , lat , mopdl , moprc , iso , stp , ipx , or netbeui . Noto ĉi tiuj identigiloj estas ankaŭ ŝlosilvortoj kaj devas esti eskapitaj per backslash (\).

[En la kazo de FDDI (ekz. ' Fddi protocol arp ') kaj Token Ring (ekz. ' Tr protokolo '), por la plej multaj el tiuj protokoloj, la protokolo identigas la 802.2 Logika Link Control (LLC) -kapitron, kiu estas kutime manteloj sur la FDDI aŭ Token Ring-kaplinio.

Kiam vi filtras la plej multajn protokoligajn identigilojn pri FDDI aŭ Token Ring, tcpdump kontrolas nur la protokolon-IDon de LLC-titolon en la nomata SNAP-formato kun Organiza Unuera Identigilo (OUI) de 0x000000, por encapsulata Ethernet; ĝi ne kontrolas ĉu la pako estas en formato SNAP kun OUI de 0x000000.

La esceptoj estas iso , por kiuj ĝi kontrolas la kampojn de DSAP (Destination Service Access Point) kaj SSAP (Source Service Access Point) de la LLC-titolo, stp kaj netbeui , kie ĝi kontrolas la titolon de DSAP de la LLC kaj atalk , kie ĝi kontrolas por SNAP-formato-pakaĵon kun OUI de 0x080007 kaj la Appletalk-etipeto.

En la kazo de Ethernet, tcpdump kontrolas la Ethernet-kampon por la plej multaj el tiuj protokoloj; la esceptoj estas iso , sap kaj netbeui , pro tio, ke ĝi kontrolas por 802.3 kadro kaj poste kontrolas la LLC-titolon kiel ĝi faras por FDDI kaj Token Ring, atalk , kie ĝi kontrolas ambaŭ por la Appletalk-etipeto en Ethernet-kadro kaj por SNAP-formato kiel ĝi faras por FDDI kaj Token Ring, aarp , kie ĝi kontrolas la Appletalk ARP-etipon en ĉu Ethernet-kadro aŭ 802.2 SNAP-kadron kun OUI de 0x000000, kaj ipx , kie ĝi kontrolas la IPX-etipon en kadro Ethernet, la IPX-DSAP en la kaplinio de la LLC, la 802.3 kun neniu encabezamiento de kaplinio de IPX, kaj la etipo IPX en kadro SNAP.]

decneta dosierujo

Vere, se la Fonto-adreso DECNET estas gastiganto , kiu povas esti adreso de la formo `` 10.123 '', aŭ DECNET-gastiga nomo. [DECNETa gastiga nomo-subteno nur estas disponebla sur sistemoj Ultrix, kiuj estas agorditaj por ekzekuti DECNET.]

malkreskas gastiganto

Vere, se la DECNET-destina adreso estas gastiganto .

malŝalti gastiganton

Vere, se la DECNET-fonto aŭ destina adreso estas gastiganto .

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

Mallongigoj por:

ether proto p

kie p estas unu el la supraj protokoloj.

lat , moprc , mopdl

Mallongigoj por:

ether proto p

kie p estas unu el la supraj protokoloj. Notu, ke tcpdump ne scias kiel prizorgi ĉi tiujn protokolojn.

vlan [vlan_id]

Vere se la pako estas IEEE 802.1Q VLAN-pako. Se [vlan_id] estas specifita, nur vera estas la pako havas la specifitan vlan_id . Notu, ke la unua vlan- ŝlosilvorto renkontita en esprimo ŝanĝas la malkodigon de la maldekstra esprimo sur la supozo, ke la pako estas pakaĵo de VLAN.

tcp , udp , icmp

Mallongigoj por:

ip proto p aŭ ip6 proto p

kie p estas unu el la supraj protokoloj.

iso proto protokolo

Vere, se la pakaĵo estas protokolo pri protokola protokolo de OSI. Protokolo povas esti numero aŭ unu el la nomoj clnp , esis , aŭ isis .

clnp , esis , isis

Mallongigoj por:

iso proto p

kie p estas unu el la supraj protokoloj. Notu, ke tcpdump faras nekompletan laboron analizi ĉi tiujn protokolojn.

expr relop expr

Vere, se la rilato tenas, kie la repo estas unu el>, <,> =, <=, = ,! =, Kaj expr estas aritmetika esprimo formita de entjeraj konstantaj (esprimita en norma C-sintakso), la normalaj duaj operacioj [+ , -, *, /, &, |], longa operaciisto, kaj specialaj pakaj datumaj aliroj. Por aliri datumojn en la pakaĵon, uzu la jenan sintakson:

proto [ expr : grandeco ]

Proto estas unu el ether, fddi, tr, ppp, slip, link, ip, arp, rarp, tcp, udp, icmpip6 , kaj indikas la protokolon tavolon por la indeksa operacio. ( ether, fddi, tr, ppp, slip kaj ligilo ĉiuj raportas al la ligo tavolo.) Notu, ke tcp, udp kaj aliaj supraj tavoloj protokolo nur aplikas al IPv4, ne IPv6 (tio estos fiksita en la estonteco). La bajta kompenso, rilate al la markita protokolo, estas donita per expr . Grandeco estas laŭvola kaj indikas la nombron de bajtoj en la kampo de intereso; ĝi povas esti aŭ unu, du, aŭ kvar, kaj malfaŭdas al unu. La longa telefonisto, indikita per la ŝlosilvorto len , donas la longon de la pako.

Ekzemple, ' ether [0] & 1! = 0 ' kaptas ĉiun multkastan trafikon. La esprimo ' ip [0] & 0xf! = 5 ' kaptas ĉiujn IP-pakojn kun ebloj. La esprimo ' ip [6: 2] & 0x1fff = 0 ' kaptas nur senfragmentajn datagramojn kaj frag nulo da fragmentitaj datagramoj. Ĉi tiu kontrolo estas implicite aplikita al la tcp kaj udp- indeksaj operacioj. Ekzemple, tcp [0] ĉiam signifas la unuan bajton de la TCP- kaplinio , kaj neniam signifas la unuan bajton de interna fragmento.

Iuj kompensoj kaj kampvaloroj povas esti esprimitaj kiel nomoj prefere ol kiel nombraj valoroj. La sekvaj protokoloj de la kaplinia kampo estas haveblaj: icmptype (ICMP-tipo-kampo), icmpcode (ICMP-kodo-kampo) kaj tcpflags (TCP-flagoj-kampo).

La jenaj kategoriaj valoroj de la ICMP estas disponeblaj: icmp-echoreply , icmp-unreach , icmp-sourcequench , icmp-redirect , icmp-echo , icmp-routeradvert , icmp-routersolicit , icmp-timxceed , icmp-paramprob , icmp-tstamp , icmp -testampreply , icmp-ireq , icmp-ireqreply , icmp-maskreq , icmp-maskreply .

La jenaj TCP-flagoj-kampo-valoroj estas disponeblaj: tcp-fin , tcp-syn , tcp-rst , tcp-push , tcp-push , tcp-akk , tcp-urĝa .

Primitivoj povas esti kombinitaj per:

Grupo de primitivoj kaj operaciistoj (paréntesis estas specialaj al la Ŝelo kaj devas esti eskapita).

Negado (' ! ' Aŭ ' ne ').

Konkordo (` && 'aŭ' kaj ').

Alterno (` || 'aŭ' ').

Negado havas plej altan precedencon. Alfluo kaj konkateniĝo havas egalan prioritaton kaj asocilan maldekstren al dekstre. Notu, ke eksplicitaj kaj tokensoj, ne apudmetoj, nun estas postulataj por konkateniĝo.

Se identigilo estas donita sen ŝlosilvorto, la plej freŝa ŝlosilvorto estas supozita. Ekzemple,

ne gastiganto vs kaj as

estas mallonga por

ne gastiganto vs kaj gastiganto

Kiu ne devus esti konfuzita kun

ne (gastiganto vs aŭ as)

Esprimaj argumentoj povas esti pasitaj al tcpdump kiel aŭ unu argumento aŭ kiel multaj argumentoj, kiom ajn pli oportuna. Ĝenerale, se la esprimo enhavas Shell metacharacters, ĝi estas pli facile pasi ĝin kiel unuopaĵon, cititan argumenton. Multoblaj argumentoj estas konsatitaj kun spacoj antaŭ esti analizitaj.

Ekzemploj

Presi ĉiujn pakojn alvenantajn aŭ foririnte de sundown :

tcpdump gastiganta sundown

Por presi trafikon inter helioj kaj aŭ varmaas :

tcpdump-gastigiloj kaj \ (varma aŭ as \)

Presi ĉiujn pakojn de IP inter as kaj ajna gastiganto krom helioj :

tcpdump ip-servilo, kaj ne helioj

Por presi ĉiun trafikon inter lokaj gastigantoj kaj gastigantoj ĉe Berkeley:

tcpdump net ucb-ether

Por presi ĉiun trafikon de ftp tra interŝanĝo de interreta pordo: (notu, ke la esprimo estas citita por malhelpi la ŝelon de (mis-) interpretanta la krampojn):

tcpdump 'enirejo kaj (port ftp aŭ ftp-datumoj)'

Por presi trafikon nek aĉeti aŭ ne destini al lokaj gastigantoj (se vi eniras al unu alian reton, ĉi tiu aĵo neniam faru ĝin al via loka reto).

tcpdump ip kaj ne rete rete

Por presi la komencajn kaj finajn pakojn (la pakojn SYN kaj FIN) de ĉiu TCP-konversacio, kiu enhavas ne-lokan gastiganton.

tcpdump 'tcp [tcpflags] & (tcp-syn | tcp-fin)! = 0 kaj ne src kaj dst net loknomo '

Por presi IP-pakojn pli ol 576 bytes senditajn per enirejo.

tcpdump 'enirejo snup kaj ip [2: 2]> 576'

Por presi IP-dissendojn aŭ multkastajn pakojn, kiuj ne estis senditaj per ethernet-dissendo aŭ multkastado:

tcpdump 'ether [0] & 1 = 0 kaj ip [16]> = 224'

Presi ĉiujn ICMP-pakojn, kiuj ne estas eĥaj petoj / respondoj (te, ne ping-pakoj):

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

OUTPUT FORMAT

La eligo de tcpdump estas protokolo dependa. La jenaj donas mallongan priskribon kaj ekzemplojn de la plej multaj formatoj.

Ligo-nivelaj kaplinioj

Se la opcio '-e' estas donita, la liga nivelo-titolo estas presita. En ethernetoj, la fonto kaj cellokoloraj adresoj, protokoloj kaj pakaĵoj estas presitaj.

En la retoj de FDDI, la opcio '-e' kaŭzas tcpdump por presi la kampo de 'kadrokontrolo', la fontaj kaj celloklaj adresoj kaj la paka longo. (La "kampo de kontrolo de kadro" regas la legon de la resto de la pakaĵo. La normalaj pakaĵoj (kiel tiuj, kiuj enhavas IP-datagramojn) estas ' pakiloj ' asynk , kun prioritato valora inter 0 kaj 7, ekzemple ' async4 '. pakoj supozas ke ili enhavas pakaĵon de Logika Ligo-Kontrolo (LLC) de 802.2; la LLC-titolo estas presita se ĝi ne estas ISO-datagramo aŭ nomata SNAP-pako.

Sur la retoj de Token-Ringo, la opcio '-e' kaŭzas tcpdump por presi la 'kontrolo de aliro' kaj kampoj de 'framo-kontrolo', la fontaj kaj adresaj adresoj kaj la paka longo. Kiel en FDDI-retoj, pakoj supozas ke ili enhavas pakaĵon de LLC. Sendepende, ĉu la opcio '-e' estas precizigita aŭ ne, la fonta rulata informo estas presita por fonto-ruliĝintaj pakoj.

(NB: La sekva priskribo supozas konatiĝon kun la algoritmo de kunpremo de SLIP priskribita en RFC-1144.)

En SLIP-ligiloj, indikilo de direkto (`` Mi '' por eniri, `'Aŭ' 'por ekstere), paka tipo kaj kunpremado estas presita. La paka tipo estas presita unue. La tri tipoj estas ip , utcp , kaj ctcp . Neniu plua ligo-informo estas presita por ip- pakoj. Por pakaĵoj TCP, la ligilo-identigilo estas presita sekvanta la tipon. Se la pakaĵo estas kunpremita, ĝia kodita kaplinio estas presita. La specialaj kazoj estas presitaj kiel * S + n kaj * SA + n , kie n estas la kvanto per kiu la sekvenca nombro (aŭ sekvenca nombro kaj ak) ŝanĝis. Se ĝi ne estas speciala kazo, nulo aŭ pli da ŝanĝoj estas presitaj. Ŝanĝo estas indikita per U (urĝa puntero), W (fenestro), A (akk), S (sekvenca nombro), kaj mi (paka ID), sekvita de delta (+ n aŭ -n), aŭ nova valoro (= n). Fine, la kvanto da datumoj en la pakaĵo kaj kunpremita kaplinio longe estas presitaj.

Ekzemple, la sekva linio montras eksteran pakon kunpremita TCP, kun implicita ligo-identigilo; la akko ŝanĝis per 6, la sekvenca nombro de 49, kaj la paka ID de 6; ekzistas 3 bajtoj da datumoj kaj 6 bajtoj de kunpremita kaplinio:

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

ARP / RARP-Pakoj

Arp / eligo elmontras la tipon de peto kaj ĝiaj argumentoj. La formato intencas esti memkomplika. Jen mallonga specimeno prenita de la komenco de 'rlogin' de gastiganto rtsg por gastigi csam :

arp who-has csam diru rtsg arp reply csam estas-ĉe CSAM

La unua linio diras, ke rtsg sendis paketon por peti la ethernetan adreson de interreta gastiganto. Csam respondas per sia ethernetadreso (en ĉi tiu ekzemplo, ethernet adresoj estas en ĉapoj kaj interretaj adresoj en pli malalta kazo).

Ĉi tio aspektus malpli stranga se ni faris tcpdump -n :

arp kiu-havas 128.3.254.6 diru 128.3.254.68 arp-respondon 128.3.254.6 ĉe-02: 07: 01: 00: 01: c4

Se ni faris tcpdump -e , la fakto, ke la unua pakaĵo estas elsendita kaj la dua punkto al punkto estus videbla:

RTSG Broadcast 0806 64: arp who-has csam diru rtsg CSAM RTSG 0806 64: arp reply csam is-at CSAM

Por la unua pakaĵo ĉi tio diras, ke la ethernet-adreso estas RTSG, la destino estas la ethernet-dissendo, la tipo de kampo enhavita hex 0806 (tipo ETHER_ARP) kaj la tuta longeco estis 64 bytes.

TCP-pakoj

(NB: La sekva priskribo supozas familiarecon kun la protokolo TCP priskribita en RFC-793. Se vi ne konas la protokolon, nek ĉi tiu priskribo nek tcpdump multe utilos al vi.)

La ĝenerala formato de tcp-protokola linio estas:

src> dst: flags data-seqno ack window urgent options

Src kaj dst estas la adresoj kaj portoj de fonto kaj celloko. Flagoj estas iuj kombinaĵoj de S (SYN), F (FIN), P (PUSH) aŭ R (RST) aŭ unu sola '.' (sen flagoj). Datumoj-sekcio priskribas la parton de sekvenca spaco kovrita de la datumoj en ĉi tiu pakaĵo (vidu ekzemplon sube). Ack estas sekvenca nombro de la sekvanta datumo atendata la alia direkto sur ĉi tiu konekto. Fenestro estas la nombro de bajtoj de ricevi buffer-spacon havebla la alian direkton sur ĉi tiu konekto. Urg indikas ke ekzistas 'urĝa' datumo en la pakaĵo. Ebloj estas tcp-opcioj en anglaj krampoj (ekz., ).

Src, dst kaj flagoj estas ĉiam ĉeestantaj. La aliaj kampoj dependas de la enhavo de la tcp-protokolo-tajpilo de la pakaĵo kaj estas eligo nur se konvene.

Jen la malferma parto de rlogino de gastiganto rtsg por gastigi csam .

rtsg.1023> csam.login: S 768512: 768512 (0) venkas 4096 csam.login> rtsg.1023: S 947648: 947648 (0) ack 768513 win 4096 rtsg.1023> csam. Ensaluti: . akk 1 venkas 4096 rtsg.1023> csam.login: P 1: 2 (1) ak 1 venko 4096 csam.login> rtsg.1023:. akk 2 venkas 4096 rtsg.1023> csam.login: P 2:21 (19) akk 1 venko 4096 csam.login> rtsg.1023: P 1: 2 (1) kaj 21 venko 4077 csam.login> rtsg.1023: P 2: 3 (1) kaj 21 venkas 4077 urĝa 1 csam.login> rtsg.1023: P 3: 4 (1) ak 21 venko 4077 urĝa 1

La unua linio diras, ke tcp haveno 1023 en rtsg sendis pakon por porti ensaluton en csam. La S indikas ke la SYN- flago estis fiksita. La paka sekvenca nombro estis 768512 kaj ĝi enhavis neniun datumon. (La notacio estas 'unua: last (nbytes)', kio signifas 'sekvencojn unue ĝis sed ne inkluzivanta lastan, kio estas nbytes bajtoj de uzanto-datumoj'.) Ne estis malmultekostaj, la disponebla fenestro estis 4096 bytoj kaj ekzistis max-segmento-grandeco, kiu petis mss de 1024 bytes.

Csam respondas per simila pakaĵo krom ĝi inkluzivas porkan apogilon por la SYN de rtsg. Rtsg tiam ricevas Ssam de Csam. La '.' signifas neniuj flagoj. La pakaĵo enhavis neniun datumon do ne ekzistas numero de sekvenco de datumoj. Notu, ke la sekvenca nombro estas malgranda entjero (1). La unua fojo, tcpdump vidas tcp 'konversacion', ĝi presas la sekvencan numeron de la pakaĵo. En la postaj pakoj de la konversacio, la diferenco inter la nuna sekvenca nombro kaj ĉi tiu komenca sekvenca numero estas presita. Ĉi tio signifas, ke sekvencaj numeroj post la unua povas esti interpretitaj kiel relativaj bajtoj en la fluo de datumoj de la konversacio (kun la unua datato de bitto ĉiu direkto '1'). '-S' anstataŭos ĉi tiun funkcion, kaŭzante la originalajn sekvencojn esti eligo.

En la 6a linio, rtsg sendas 19 bitojn da datumoj (bajtoj 2 ĝis 20 en la rtsg -> csam flanko de la konversacio). La PUSH-flago estas fiksita en la pakaĵo. En la 7a linio, Csam diras, ke ĝi ricevas datumojn senditajn ĝis ĝis ne inkludante byte 21. Plejparto de ĉi tiu datumo ŝajne sidas en la interna bufro, ĉar la fenestra ricevo de Csam akiris 19 bytes pli malgrandajn. Csam ankaŭ sendas unu bajton de datumoj al rtsg en ĉi tiu pako. En la 8-a kaj 9-a linioj, Csam sendas du bitetojn de urĝaĵo, puŝis datumojn al rtsg.

Se la fototapeto estis sufiĉe malgranda, ke tcpdump ne kaptis la plenan TCP-kaplinion, ĝi interpretas tiom multe da la kaplinio kiel ĝi povas kaj poste raportas `` [| tcp ] '' por indiki ke la resto ne povus esti interpretita. Se la kaplinio enhavas flankan opcion (unu kun longo, tio estas tro malgranda aŭ pli ol la fino de la kaplinio), tcpdump raportas ĝin kiel `` malbone elekti '' kaj ne interpretas pluajn elektojn (ĉar ĝi ne eblas diri kie ili komencas). Se la kaplinia longo indikas eblojn ĉeestantaj, sed la IP-datagramo ne longe sufiĉas por ke la ebloj estu fakte, tcpdump raportas ĝin kiel `` [ malbona hdr longo ] ''.

Kaptante TCP-pakojn kun apartaj flag-kombinaĵoj (SYN-ACK, URG-ACK, ktp.)

Estas 8 bitoj en la kontrolo bitoj sekcio de la TCP-kaplinio:

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

Ni supozu, ke ni volas rigardi pakojn uzataj por establi rilaton TCP. Memoru, ke TCP uzas 3-vojan ekspluatan protokolon kiam ĝi komencigas novan ligon; la rilata sekvenco rilate al la TCP-kontrolo-bitoj estas

1) Vokanto sendas SYN

2) Ricevanto respondas kun SYN, ACK

3) Vokanto sendas ACK

Nun ni interesas kapti pakojn, kiuj havas nur la biton de SYN (Paŝo 1). Rimarku, ke ni ne volas pakojn de paŝo 2 (SYN-ACK), nur ebena komenca SYN. Kion ni bezonas estas korekta filtrila esprimo por tcpdump .

Memoru la strukturon de TCP-kaplinio sen opcioj:

0 15 31 ----------------------------------------------- ------------------ | fonto haveno haveno de destino -------------------------------------------------- --------------- | sekvenca nombro | -------------------------------------------------- --------------- | rekono nombro | -------------------------------------------------- --------------- | HL rsvd | C | E | U | A | P | R | S | F | grandeco de fenestro | -------------------------------------------------- --------------- | TCP-kontrolo | urĝa puntero | -------------------------------------------------- ---------------

TCP-kaplinio kutime tenas 20 octetojn da datumoj, krom se ekzistas ebloj. La unua linio de la grafikaĵo enhavas octetojn 0 - 3, la dua linio montras octetojn 4 - 7 ktp.

Komencante havi 0, la koncernaj TCP-kontroloj estas enhavitaj en la octeto 13:

0 7 | 15 | 23 | 31 ---------------- | --------------- | --------------- | ---------------- | HL rsvd | C | E | U | A | P | R | S | F | grandeco de fenestro | ---------------- | --------------- | --------------- | - --------------- | | 13a octeto | |

Ni rigardu pli proksiman al la octeto ne. 13:

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

Ĉi tiuj estas la bitoj de kontrolo de TCP, kiujn ni interesas. Ni numeris la bitojn en ĉi tiu octeto de 0 ĝis 7, dekstre maldekstre, do la PSH-biteto estas nombro 3, dum la URG-bito estas numero 5.

Memoru, ke ni volas kapti pakojn kun nur SYN-aro. Ni vidu, kio okazas al octeto 13, se TCP-datagramo alvenos kun la SYN-bito-aro en ĝia kaplinio:

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

Rigardante la sekcion de kontrolo-bitoj ni vidas, ke nur nombro 1 (SYN) estas aro.

Supozante, ke la octeto-numero 13 estas nombra nombra entjero en reto de forta ordo, la binara valoro de ĉi tiu octeto estas

00000010

kaj ĝia dekuma reprezento estas

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

Ni preskaŭ finiĝis, ĉar nun ni scias, ke se nur SYN estas fiksita, la valoro de la 13a octeto en la TCP-kaplinio, kiam oni interpretas kiel 8-bit unsigned entjero en reto de fortejo, devas esti ĝuste 2.

Ĉi tiu rilato povas esti esprimita kiel

tcp [13] == 2

Ni povas uzi ĉi tiun esprimon kiel filtrilon por tcpdump por rigardi pakojn, kiuj havas nur SYN-aranĝon:

tcpdump -i xl0 tcp [13] == 2

La esprimo diras "lasu la 13-a octeton de TCP-datagramo havas la dekuman valoron 2", kio estas ĝuste kion ni volas.

Nun ni supozu, ke ni devas kapti SYN-pakojn, sed ni ne zorgas, ke se ACK aŭ iu alia TCP-kontrolo bitiĝas samtempe. Vidu kion okazas al octeto 13 kiam alvenos TG-datagramo kun SYN-ACK-aro:

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

Nun bitoj 1 kaj 4 estas metitaj en la 13-a octeton. La binara valoro de octeto 13 estas


00010010

kiu tradukas al dekuma

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

Nun ni ne povas nur uzi 'tcp [13] == 18' en la tcpdump filtrila esprimo, ĉar tio elektus nur tiujn pakojn, kiuj havas SYN-ACK-aranĝitan, sed ne tiuj kun nur SYN-aro. Memoru, ke ni ne zorgas, se AKK aŭ alia alia kontrolo fiksas tiel longe kiel SYN estas aro.

Por atingi nian celon, ni devas logike AND la binaran valoron de octeto 13 kun iu alia valoro por konservi la SYN-biteton. Ni scias, ke ni volas, ke SYN estu fiksita en neniu kazo, do ni logike kostos la valoron en la 13-a octeto kun la binara valoro de SYN:

00010010 SYN-ACK 00000010 SYN AND 00000010 (ni volas SYN) AND 00000010 (ni volas SYN) -------- -------- = 00000010 = 00000010

Ni vidas, ke ĉi ANDa operacio liveras la saman rezulton, ĉu ACK aŭ alia TCP-kontrolo estas fiksita. La dekuma reprezento de la AND-valoro same kiel la rezulto de ĉi tiu operacio estas 2 (binara 00000010), do ni scias, ke por pakoj kun SYN, la sekva rilato devas esti vera:

((valoro de octeto 13) AND (2)) == (2)

Ĉi tio montras al ni la tcpdump filtrila esprimon

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

Rimarku, ke vi devas uzi unuajn citaĵojn aŭ malantaŭen en la esprimo por kaŝi la specialan karakteron AND ('&') de la ŝelo.

UDP-pakoj

UDP-formato estas ilustrata per ĉi tiu pakaĵo:

actinide.who> broadcast.who: udp 84

Ĉi tio diras, ke tiu haveno, kiu en la gastiganto sendis udp-datagramon por porti, kiu ĉe gastiganto elsendas la interretan adreson. La pakaĵo enhavis 84 bitojn de uzantaj datumoj.

Kelkaj UDP-servoj estas agnoskitaj (el la fonto aŭ destina haveno-nombro) kaj la pli alta nivelo protokola informo presita. En aparta, Domajna Nomo-servo-petoj (RFC-1034/1035) kaj Sun-RPC-alvokoj (RFC-1050) al NFS.

UDP-Nomo-Servilaj Petoj

(NB: La sekva priskribo supozas koncernan rilaton kun la protokolo de Domajna Servo priskribita en RFC-1035. Se vi ne konas la protokolon, la sekva priskribo ŝajnas esti skribita en la greka lingvo.)

Nomo de servilaj petoj estas formatita kiel

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

Gastigopilo petis la domajnan servilon en helios por adresa registro (qtype = A) asociita kun la nomo ucbvax.berkeley.edu. La konsulta ido estis '3'. La '+' indikas la rekursion, kiun deziratan flagon estis fiksita. La konsulto longe estis 37 bajtoj, ne inkluzivanta la UDP kaj IP-protokolon-titolojn. La konsulta operacio estis la normala, Query , do la op kampo estis preterlasita. Se la op estis io alia, ĝi estus presita inter la '3' kaj la '+'. Simile, la qclasso estis normala, C_IN , kaj preterlasis. Ajna alia klaso estus presita tuj post la 'A'.

Kelkaj anomalioj estas kontrolitaj kaj povas rezultigi ekstrajn kampojn fermitajn per kvadrataj krampoj: se serĉo enhavas respondon, aŭtoritatojn aŭ aldonajn rektajn sekciojn, ancount , nscount , aŭ arcount estas presitaj kiel `[ n a] ',` [ n n ] 'aŭ `[ n au]' kie n estas la taŭga kalkulo. Se iuj el la respondaj bitoj estas agorditaj (AA, RA aŭ rcode) aŭ iuj el la bitoj 'devas esti nulo' estas metitaj en bajtoj du kaj tri, '[b2 & 3 = x ]' estas presita, kie x estas la heksa valoro de titolaj bajtoj du kaj tri.

UDP-Nomo Servilo-Respondoj

Nomaj serviloj respondoj estas formatitaj kiel

src> dst: id op rcode flagoj a / n / au tipo klaso datumoj (len) helios.domain> h2opolo.1538: 3 3/3/7 Al 128.32.137.3 (273) helios.domain> h2opolo.1537: 2 NXDomain * 0/1/0 (97)

En la unua ekzemplo, helios respondas al pridemandi id 3 de h2opolo kun 3 respondaj rekordoj, 3 nomumaj rekordoj kaj 7 aldonaĵoj. La unua responda rekordo estas tipo A (adreso) kaj ĝia datumo estas interreta adreso 128.32.137.3. La tuta grandeco de la respondo estis 273 bytes, ekskludante UDP kaj IP-titolojn. La op (Query) kaj responda kodo (NoError) estis preterlasitaj, kiel estis la klaso (C_IN) de la Al-rekordo.

En la dua ekzemplo, helios respondas al konsulto 2 kun responda kodo de ne-ekzistanta domajno (NXDomain) sen respondoj, unu nomo-servilo kaj ne aŭtoritataj rekordoj. La '*' indikas, ke la aŭtora responda bito estis fiksita. Pro tio ke ne estis respondoj, neniu tipo, klaso aŭ datumo estis presitaj.

Aliaj signoj de la flago estas '-' (recursio havebla, RA, ne aro) kaj '|' (senpintigita mesaĝo, TC, aro). Se la sekcio 'demando' ne enhavas ĝuste unu eniron, '[ n q]' estas presita.

Rimarku, ke la nomoj de la servilo kaj respondoj kutimas esti grandaj kaj la defaŭlta nombro de 68 bytes eble ne kaptas sufiĉan pakon por presi. Uzu la -s- flagon por pliigi la serpentojn, se vi bezonos esplori serioze nomatan servilon. ' -s 128 ' funkciis bone por mi.

SMB / CIFS-malkodigo

tcpdump nun inkluzivas sufiĉe vastan SMB / CIFS / NBT-malkodigon por datumoj sur UDP / 137, UDP / 138 kaj TCP / 139. Iuj komencaj malkodigo de IPX kaj NetBEUI SMB-datumoj ankaŭ fariĝas.

Defaŭlte sufiĉe minimuma decodado estas farita, kun multe pli detala malkodigo farita se -v estas uzata. Oni avertu, ke kun -va sola SMB-pakaĵo povas preni supre paĝon aŭ pli, do nur uzu -v se vi vere volas ĉiujn detalojn.

Se vi decodigas SMB-sesiojn enhavantaj unikodajn ŝnurojn, vi eble volas agordi la medio-variablon de USE_UNICODE al 1. Parĉo por aŭtomate detekti unikodajn rubojn bonvenus.

Por informoj pri SMB-paketaj formatoj kaj kion ĉiuj te kampoj signifas, vidu www.cifs.org aŭ la pub / samba / specs / directory en via plej ŝatata samba.org mirror site. La SMB-diakiloj estis skribitaj fare de Andrew Tridgell (tridge@samba.org).

Petoj de NFS kaj Respondoj

La petoj kaj respondoj de Sun NFS (Reto File System) estas presitaj kiel:

src.xid> dst.nfs: len op args src.nfs> dst.xid: respondu stat len ​​op results sushi.6709> wrl.nfs: 112 readlink fh 21,24 / 10.73165 wrl.nfs> sushi.6709: reply ok 40 readlink "../var" sushi.201b> wrl.nfs: 144 serĉo f 9,74 / 4096.6878 "xcolors" wrl.nfs> sushi.201b: reply ok 128 serĉo f 9,74 / 4134.3150

En la unua linio, gastiganta sushi sendas transakcion kun identigilo 6709 al wrl (notu, ke la nombro sekvanta la src-servilon estas transakcio, ne la fonto-haveno). La peto estis 112 bajtoj, ekskludante la UDP kaj IP-titolojn. La operacio estis readlink (legi simbola ligilo) sur dosiero-tenilo ( f ) 21,24 / 10.731657119. (Se oni havas bonŝancon, kiel en ĉi tiu kazo, la dosiero-dosiero povas esti interpretita kiel grava, plej malgranda nombro de la duaj aparatoj, sekvita de la nodo-nombro kaj generala nombro.) Malĝusta respondas 'ok' kun la enhavo de la ligilo.

En la tria linio, sushi petas wrl serĉi la nomon ' xcolors ' en dosierujo-dosiero 9,74 / 4096.6878. Rimarku, ke la presitaj datumoj dependas de la operacio-tipo. La formato intencas esti memkomplika se oni legas kune kun NFS-protokola spec.

Se la -v (verbose) flago estas donita, aldonaj informoj estas presitaj. Ekzemple:

sushi.1372a> wrl.nfs: 148 legis f 21,11 / 12.195 8192 bytes @ 24576 wrl.nfs> sushi.1372a: respondu ok 1472 legi REG 100664 ids 417/0 sz 29388

(-v ankaŭ presas la IP-kaplinion TTL, ID, longo kaj fragmentaj kampoj, kiuj estis preterlasitaj de ĉi tiu ekzemplo.) En la unua linio, sushi petas wrl por legi 8192 bytes el dosiero 21,11 / 12.195, ĉe bajtekordo 24576. Wrl respondas `ok '; la pakaĵo montrita en la dua linio estas la unua fragmento de la respondo, kaj tial ĝi nur havas 1472 bytes (la aliaj bajtoj sekvos en postaj fragmentoj, sed ĉi tiuj fragmentoj ne havas NFS aŭ eĉ UDP-titolojn kaj do eble ne esti presitaj, depende de la filtra esprimo uzita). Pro tio ke la -v flago estas donita, iuj el la dosieraj atributoj (kiuj estas redonitaj krom la dosieraj datumoj) estas presitaj: la dosiertipo (`REG ', por regula dosiero), la dosiero (octal) la uid kaj gid, kaj la grandeco de la dosiero.

Se la -v flago estas donita pli ol unufoje, eĉ pli da detaloj estas presitaj.

Rimarku, ke la petoj de NFS estas tre grandaj kaj multaj detaloj ne estos presitaj, krom se la kresko pliiĝas. Provu uzi ` -s 192 'por rigardi NFS-trafikon.

NFS-respondaj pakoj ne eksplicas identigi la RPC-operacion. Anstataŭe, tcpdump konservas trakon de `` freŝaj '' petoj, kaj kongruas kun ili al la respondoj uzanta la transakcion ID. Se respondo ne sekvas la respondan peton, eble ĝi ne estu analizebla.

Petoj de AFS kaj Respondoj

Transark AFS (Andrew File System) petoj kaj respondoj estas presitaj kiel:

src.sport> dst.dport: rx packet-type src.sport> dst.dport: rx pakaĵ-tipo servo alvoko alvoko nomoj args src.sport> dst.dport: rx paket-tipo servo respondu nom-nomo args elvis. 7001> pike.afsfs: rx datumoj fs vokas renomi malnovan fidon 536876964/1/1 ".newsrc.new" nova fido 536876964/1/1 ".newsrc" pike.afsfs> elvis.7001: rx data fs respondo rename

En la unua linio, gastiganto Elvis sendas RX-paketon por piki. Ĉi tio estis pako de datumoj RX al la servo fs (dosierujo), kaj estas la komenco de alvoko de RPC. La alvoko de RPC estis renomo, kun la malnova dosierujo-dosiero de 536876964/1/1 kaj malnova dosiernomo de '.newsrc.new', kaj nova dosierujo-dosiero de 536876964/1/1 kaj nova dosiernomo de '. novaĵoj '. La gastiganta pikilo respondas per RPC-respondo al la renoma alvoko (kiu sukcesis, ĉar ĝi estis pakaĵo de datumoj kaj ne abort-pako).

Ĝenerale, ĉiuj AFS-RPCoj estas decoditaj almenaŭ per RPC-alvoko. La plej multaj AFS-RPC havas almenaŭ iujn el la argumentoj decoditaj (ĝenerale nur la "interesajn" argumentojn, por iu difino de interesa).

La formato intencas mem-priskribi, sed verŝajne ne estos utila por homoj, kiuj ne konas la laborojn de AFS kaj RX.

Se la -v (verbose) flago estas donita dufoje, agnoskaj pakoj kaj aldonaj kapliniaj informoj estas presitaj, kiel ekzemple la RX-alvoko-ID, nombro-nombro, sekvenca nombro, seria nombro, kaj la RX-paketaj flagoj.

Se la -v-flago estas donita dufoje, aldonaj informoj estas presitaj, kiel ekzemple la RX-alvoko-ID, seria nombro, kaj la RX-pakaĵaj flagoj. La MTU-intertrakta informo ankaŭ estas presita el RX-akkaj pakoj.

Se la -v-flago estas donita tri fojojn, la sekureca indekso kaj la servo id estas presitaj.

Eraroj-kodoj estas presitaj por aborti pakojn, escepte de la pakaĵaj pakaĵoj de Ubik (ĉar abortaj pakoj estas uzataj por signifi jes voĉdonon por la protokolo de Ubik).

Rimarku, ke petoj de AFS estas tre grandaj kaj multaj el la argumentoj ne estos presitaj krom se la kresko pliiĝas. Provu uzi ` -s 256 'por rigardi AFS-trafikon.

AFS-respondaj pakoj ne eksplicas identigi la RPC-operacion. Anstataŭe, tcpdump konservas trakon de `` freŝaj '' petoj, kaj kongruas kun ili al la respondoj uzante la nomitan numeron kaj la identan servon. Se respondo ne sekvas la respondan peton, eble ĝi ne estu analizebla.

KIP Appletalk (DDP en UDP)

Appletalk DDP-pakoj encapsulataj en UDP-datagramoj estas senkapsulataj kaj forĵetitaj kiel pakoj de DDP (tio estas, ĉiuj informoj pri la kapitulacoj de UDP estas forĵetitaj). La dosiero /etc/atalk.names estas uzata por traduki appletalk reton kaj nodo-nombrojn al nomoj. Linioj en ĉi tiu dosiero havas la formon

nombro nomo 1.254 ether 16.1 icsd-net 1.254.110 as

La du unuaj linioj donas la nomojn de appletalk-retoj. La tria linio donas nomon de aparta gastiganto (gastiganto distingas de reto de la tria octeto en la nombro - nombro devas havi du octetojn kaj gastiganto devas havi tri octetojn.) La nombro kaj nomo devas esti apartigitaj per blanka spaco (malplenaj aŭ pestañas). La /etc/atalk.names-dosiero eble enhavas malplenajn liniojn aŭ komentajn liniojn (linioj komencantaj per `# ').

La adresoj de Appletalk estas presitaj en la formo:

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

(Se la /etc/atalk.names ne ekzistas aŭ ne enhavas eniron por iu appletalk host / net number, adresoj estas presitaj en nombra formo.) En la unua ekzemplo, NBP (DDP-haveno 2) sur reto 144.1 nodo 209 sendas ĉion, kion aŭskultas sur haveno 220 el reto nodo 112. La dua linio estas la sama krom se la plena nomo de la fonta nodo estas konata ('oficejo'). La tria linio sendas de haveno 235 en net jssmag nodo 149 por elsendado sur la piksa pordo NBP (rimarku, ke la dissendata adreso (255) indikas per reela nomo sen neniu gastiganto - tial ĝi estas bona ideo por konservi nodojn nomojn kaj retejnojn en /etc/atalk.names).

NBP (nomata binding protokolo) kaj ATP (Appletalk transakcio-protokolo) pakoj havas iliajn enhavojn interpretitajn. Aliaj protokoloj nur forĵetas la protokolon (aŭ nombro se neniu nomo estas registrita por la protokolo) kaj paka grandeco.

NBP-pakoj estas formatigitaj kiel la jenaj ekzemploj:

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

La unua linio estas peto de serĉo de nomoj por laserverkistoj senditaj de reto icsd-gastiganto 112 kaj elsendo en reto jssmag. La nbp-identeco por la serĉo estas 190. La dua linio montras respondon por ĉi tiu peto (rimarku, ke ĝi havas la saman idon) de la gastiganto jssmag.209 dirante, ke ĝi havas rimedon de laserverkisto nomata "RM1140" registrita sur la haveno 250. La tria linio estas alia respondo al la sama peto, dirante gastiganto techpit havas laserverkisto "techpit" registrita sur haveno 186.

ATP-paka formado pruvas per la sekva ekzemplo:

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 komencas transakcion id 12266 kun gastigajoj per petado ĝis 8 pakoj (la `<0-7> '). La heksa nombro ĉe la fino de la linio estas la valoro de la 'userdata' kampo en la peto.

Helioj respondas per 8 pakoj de 512-bajtoj. La ': cifero' sekvanta la transakcion id donas la paka sekvenca nombro en la transakcio kaj la nombro en parenoj estas la kvanto de datumoj en la pakaĵo, ekskludante la atp-titolon. La '*' en pakaĵo 7 indikas, ke la EOM-biton estis aro.

Jssmag.209 tiam petas, ke pakoj 3 & 5 estu retranssenditaj. Helioj liberigas ilin tiam jssmag.209 liberigas la transakcion. Fine, jssmag.209 komencas la sekvantan peton. La '*' sur la peto indikas ke XO ('ĝuste unufoje') ne estis aro.

IP-frakcio

Fragmentitaj Interretaj datagramoj estas presitaj kiel

(frag id : grandeco @ kompenso +) (frag id : grandeco @ kompenso )

(La unua hinda formo estas pli da fragmentoj. La dua indikas ĉi tion estas la lasta fragmento.)

Id estas la fragmento id. Grandeco estas la grandeco de fragmento (en bajtoj) ekskludante la IP-titolon. Kompenso estas la kompenso de ĉi tiu fragmento (en bajtoj) en la originala datagramo.

La fragmenta informo estas eligo por ĉiu fragmento. La unua fragmento enhavas la pli altan nivelan protokolon kaj la frag info presas post la protokolo. Fragmentoj post la unua enhavas neniun pli altan nivelan protokolon kaj la frag info estas presita post la fonto kaj cellokoloraj adresoj. Ekzemple, ĉi tie estas parto de ftp de arizona.edu por lbl-rtsg.arpa super CSNET-konekto, kiu ne ŝajnas teni 576 byte-datagramojn:

arizona.ftp-datumo> rtsg.1170:. 1024: 1332 (308) akk 1 venko 4096 (frag 595a: 328 @ 0 +) arizona> rtsg: (frag 595a: 204 @ 328) rtsg.1170> arizona.ftp-data:. akk 1536 venkas 2560

Estas kelkaj aferoj por rimarki ĉi tie: Unue, adresoj en la dua linio ne inkluzivas pordajn nombrojn. Ĉi tio estas ĉar la TCP-protokola informo estas ĉiuj en la unua fragmento kaj ni ne havas ideon, kiom la haveno aŭ sekvenca nombro estas kiam ni presas la postajn fragmentojn. Due, la tcp-sekvenca informo en la unua linio estas presita kvazaŭ ekzistis 308 bittoj da uzantoj, kiam fakte ekzistas 512 bajtoj (308 en la unua frag kaj 204 en la dua). Se vi serĉas truojn en la sekvenca spaco aŭ provas kongrui akkojn kun pakoj, tio povas malsagxigi vin.

Pakaĵo kun la IP-a ne fragmenta flago estas markita per fluo (DF) .

Timestamps

Defaŭlte, ĉiuj elĵetaj linioj antaŭeniras tempestampon. La temptempa tempo estas la nuna horloĝo en la formo

hh: mm: ss.frac

kaj estas tiel preciza kiel la horloĝo de la kerno. La temptempa tempo reflektas la tempon, kiun la kerno unue vidis la pakon. Neniu provo konsideras la malfruon de la tempo inter kiam la ethernet-interfaco forigis la pakon de la drato kaj kiam la kerno servis la interrompan "pakaĵon".

VIDU ANKAŬ

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

Grava: Uzu la komandon ( % viro ) por vidi kiel komando estas uzata en via komputilo.