Tcpdump - Linux Command - Unix Command

NAMME

tcpdump - dumpferkear op in netwurk

SYNOPSIS

tcpdump [ -adeflnNOpqRStuvxX ] [ -c count ]

[ -C file_size ] [ -F bestân ]

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

[ -s snaplen ] [ -T type ] [ -U user ] [ -w- bestân ]

[ -E algo: geheim ] [ ekspresje ]

BESKRIUWING

Tcpdump printsje de kopteksten fan 'e pakketten op in netwurkynterface dat oerienkomt mei de boolean ekspresje . It kin ek útfierd wurde mei de -w flagge, wêrtroch't it de pakket gegevens bewarret nei in bestân foar lettere analyze, en / of mei de -r flagge, wêrtroch't it lêzen wurdt fan in bewarre pakket-bestân as it lêzen fan pakketten fan in netwurkynterface. Yn alle gefallen binne allinich pakketten dy't oerienkomme oerienkomme wurde ferwurke troch tcpdump .

Tcpdump sil, as it net mei de -c flag is, trochgean foltôgje pakken oant it ûnderbrekken wurdt troch in SIGINT-sinjalte (makke troch bygelyks troch jo ynterprekke karakter te typen, typysk kontrôle-C) of in SIGTERM-sinjal (typysk generearre mei de kill (1) kommando); As jo ​​mei de -c flagge laitsje, dan pakket pakjes oant it ûnderbrekken wurdt troch in SIGINT- of SIGTERM-sinjaal of it spesifisearre oantal pakjes binne ferwurke.

As tcpdump de pakketten foltôget, sil it rapport rapportearje:

Pakets `` wurde troch filter '' (de betsjutting dêrfan hinget ôf fan 'e OS dêr't jo tcpdump útfiere, en mooglik op' e wize wêrop it OS konfigurearre is - as in filter op 'e kommandorigine oanjûn is, op guon OSes it wurd pakketten sûnder dat se oanpast binne troch de filters ekspresje, en op oare OSes jout allinich pakken dy't oerienkomd binne troch de filters ekspresje en wurde ferwurke troch tcpdump );

Pakets `` falle troch kernel '' (dit is it oantal pakjes dy 't falt, troch in flater fan pufferromte, troch it pakketfangermeganisme yn it OS dêr't tcpdump útfiert, as it OS de ynformaasje jout oan applikaasjes; as net, wurdt it rapporteart as 0).

Op platfoarms dy't it SIGINFO-sinjaal stypje, lykas de measte BSD's, sil it rapportearje dat de sin is rapporteare as it in SIGINFO-sinjale ûntfangen (makke troch bygelyks jo typ '' status '' '' '' typen '', typysk kontrôle-T) .

Lêzenpakkes fan in netwurkynterface kinne ferplicht hawwe dat jo spesjale privileezjes hawwe:

Under SunOS 3.x of 4.x mei NIT of BPF:

Jo moatte lês tagong ha ta / dev / nit of / dev / bpf * .

Under Solaris mei DLPI:

Jo moatte lês / skriuwe tagong hawwe ta it netwurk pseudo-apparaat, bgl . Dev / le . Op op syn minst guon ferzjes fan Solaris lykwols is dit net genôch om tcpdump te meitsjen om yn fertsjinne modus te fangen; op dizze ferzjes fan Solaris, moatte jo root wêze, of tcpdump moat ynstallearre wurde yn root, om yn promiscuous modus te finen. Taljochting: op in soad (miskien allinich) interfaces, as jo net yn promiscuous modus fytst, sille jo gjin útgeande pakketten sjogge, dus in fassine net yn 'e promiscuous modus kin net hiel brûkber wêze.

Under HP-UX mei DLPI:

Jo moatte root wêze of tcpdump moat ynstallearje setuid oan root.

Under IRIX mei snoop:

Jo moatte root wêze of tcpdump moat ynstallearje setuid oan root.

Under Linux:

Jo moatte root wêze of tcpdump moat ynstallearje setuid oan root.

Under Ultrix en Digital UNIX / Tru64 UNIX:

Elke brûker kin it netwurkferkear mei tcpdump fiere. Doch gjin brûker (net sels de super-brûker) kin in promiscuous modus op in ynterfining fêststelle, útsein de super-brûker hat promskuous-mode operaasje op dizze interface mei pfconfig (8) ynsteld , en gjin brûker (net sels de super brûker ) kin it unicast-ferkear dat opnommen wurde troch de masine op of in interface te bewarjen of ferstjoerd trochdat de super-brûker it kopie-all-mode-operaasje op dizze interface mei pfconfig brûke kin , dus it brûkbere pakketfanger op in ynterface wierskynlik fereasket dat beoardielje as modus of kopiearje -al-mode-operaasje, of beide modus fan operaasje, wurde op dizze interface ynskeakele.

Under BSD:

Jo moatte lês tagong ha ta / dev / bpf * .

It lêzen fan in bewarre pakket bestannen net spesjale privileges.

OPTIONS

-in

Besykje om netwurk- en útstjoeradressen nei nammen te wikseljen.

-c

Ferwiderje nei it ûntfangen fan getallen pakjes.

-C

Foar it skriuwen fan in rûge pakket nei in savefile, kontrolearje of de triem is no grutter as file_size en as it sa de hjoeddeiske savefile slúte en in nije iepene iepenet. Savefiles nei it earste savefile sil de namme oantsjutte mei de -w flagge, mei in nûmer dêrnei, begjinnend op 2 en trochgeande ophâlden. De ienheden fan file_size binne miljoenen bytes (1.000.000 bytes, net 1.048.576 bytes).

-d

Dump de kompilearre pakket-passende koade yn in minsklike lêsber form nei standert output en stop.

-dd

Dump pakket-passende koade as C- programma-fragmint.

-ddd

Dump pakket-passende koade as desimaal nûmers (foarôfgeand mei in count).

-e

Druk de koptekst fan 'e link-nivo op elke dump-line.

-E

Brûk algo: geheim foar it dekodearjen fan IPsec-ESP-pakketten. Algoritme kinne wêze des-cbc , 3des-cbc , blowfish-cbc , rc3-cbc , cast128-cbc of gjin . De standert is des-cbc . De mooglikheid om pakjes te ûntsiferjen is allinich oanwêzich as tcpdump kompilearre mei kryptografy ynskeakele is. geheim de assyk tekst foar ESP geheime kaai. Wy kinne op dit stuit gjin willekeurige wearde brûke. De opsje ferwachtet RFC2406 ESP, net RFC1827 ESP. De opsje is allinich foar debuggen, en it gebrûk fan dizze opsje mei wier 'geheime' toetsen is ûntfrieze. Troch it presintearjen fan geheime kaai fan 'e IPsec op kommando line, meitsje jo it sichtber foar oaren, fia ps (1) en oare kearen.

-f

Printsje 'ynternasjonaal' ynternetadressen numerikeel earder as symboalysk (dizze opsje is bedoeld om serieuze hynder-skea yn 'e yp-tsjinner te krijen --- meastal hinget altyd de net-lokale ynternet-nûmeren oer).

-F

Brûk triem as ynfier foar it filter ekspresje. In ekstra ekspresje dat op 'e kommando-rigel opjûn wurdt wurdt negearre.

-ik

Harkje nei interface . As net besocht is, tcpdump siket de systeemtafellist foar de leechste nûmere, ynstelde interface (útsluting loopback). Ties wurde brutsen troch it selektearjen fan it earste spul.

Op Linux-systemen mei 2.2 of lettere kernels kin in interface- argumint fan `` any '' brûkt wurde om pakketten fan alle ynterface te fangen. Tink derom dat erfaren op it `` ien '' apparaat wurde net yn 'e promiscuous modus dien.

-l

Meitsje stdout line buffered. Nuttich as jo de gegevens sjen wolle wylst it fêstlein is. As,
`` tcpdump -l | tee dat '' of `` tcpdump -l> dat & tail -f dat ''.

-m

Laden fan SMI-MIB-definysjes út it bestânmodul . Dizze opsje kin ferskate kearen brûkt wurde om ferskate MIB-module yn tcpdump te laden.

-n

Konstate net hostadressen nei nammen. Dit kin brûkt wurde om DNS-sykopsjes te vermeide.

-nn

Konvertearje protokol en poarte nûmers ensfh. As nammen.

-N

Druk net domeinnamme kwalifikaasje fan hostnammen. As jo ​​dizze flagge jouwe dan sil tcpdump "nic" ynstelle yn plak fan `` nic.ddn.mil ''.

-O

Rin de opset fan de pakket-oansprekkende koade net út. Dit is brûkber as jo in brekrap yn 'e optimizer falle.

-p

Soargje de ynterfak yn 'e promiscuous modus. Taljochting: de ynterface kin in skriklike modus wêze foar in oare reden; Dit kin '-p' net brûkt wurde as ôfkoarting foar 'ether host' (lokale-hw-addr) of eter-útstjoering '.

-q

Fluch (rêstich?) Útfier. Printsje minder protokol-ynformaasje sadat de útfier rigels koarter binne.

-R

Asjebleaft ESP / AH-pakketten op basis fan âlde spesifikaasjes (RFC1825 nei RFC1829). As it oantsjutte is, sil tcpdump net printsje foarkomme. Omdat it gjin protokol-ferzje fjild is yn ESP / AH-specifikaasje, tcpdump kin de ferzje fan ESP / AH-protokol net útleverje.

-r

Lês pakets fan triem (dy makke is mei de -w-opsje). Standard input is brûkt as triem is `` - ''.

-S

Printsje absolút, ynstee fan relative, TCP-sekpersnûmers.

-s

Snarf snaplen bytes fan gegevens fan elk pakket en net it standert fan 68 (mei SunOS's NIT, it minimum is no 96). 68 bytes is adekwaat foar IP, ICMP, TCP en UDP, mar kinne protokol-ynformaasje ôfbrekke fan namme-server en NFS-pakketten (sjoch hjirûnder). Pakketten trunkenearre troch in beheind snapshot wurde oanjûn yn 'e útfier mei `` [| proto ] '', dêr't proto de namme fan it protokolnivo is wêrby't de trunkenaasje foarkomt. Tink derom dat it fergruttet fan gruttere snapshots beide tiid de tiid om it pakket te ferwurkjen en, effektyf, it bedrach fan pakketbuffering ôfnimt. Dit kin soargje dat pakkingen ferlern gean. Jo moatte snaplen op it lytste nûmer beheine dat de protokol-ynformaasje dy jo belangend ynfiere . It ynstellen fan snaplen nei 0 betsjut brûk de fereaske lingte om folslein pakketten te fangen.

-T

Krakenpakketten selektearre troch " ekspresje " om de oantsjutte type te ynterpretearje. Aktueel bekende types binne cnfp (Cisco NetFlow protokol), rpc (Remote Procedure Call), rtp (Real-Time Applications protocol), rtcp (protokol foar real-time applikaasjes), snmp (Simple Network Management Protocol), vat (Visual Audio Tool ), en wb (ferwidere wyt board).

-t

Druk gjin timestamp op elke dump line.

-tt

In unformatearre timestamp op elke dumpfine printsje.

-U

Druk op root-rjochten en feroaret de brûkerside nei brûkers- en groep-ID nei de primêre groep fan brûker .

Noat! Red Hat Linux fiert automatysk de privileezjes oan brûker '`pcap' 'as oars gjin oantsjutte wurdt.

-ttt

Print in delta (yn mikro-sekonden) tusken aktuele en foarige line op elke dump line.

-tttt

In timestamp yn standertformaat printsje troch datum op elke dump-line útfierd.

-u

Print unekodearre NFS-handles.

-v

(Earder mear) verbose útfier. Bygelyks de tiid om te libjen, te identifisearjen, totale lingte en opsjes yn in IP-pakket wurde printe. Ek ekstra pakket yntegriteit kontrassen as it befetsjen fan de kontrôlesum fan de IP en ICMP-header.

-vv

Noch mear verbose útfier. Bygelyks, ekstra fjilden wurde útjûn út NFS-antwurde-pakketten, en SMB-pakketten binne folslein decodearre.

-vvv

Noch mear verbose útfier. Bygelyks telnet SB ... SE- opsjes wurde folslein yndrukt. Mei -X telnet-opsjes wurde ek yn heks gedrukt.

-w

Skriuw de rûpke pakket nei it bestellen fan it pleatsen as it parsen en drukke se út. Se kinne letter gedrukt mei de -r-opsje. Standertútfier wurdt brûkt as triem is `` - ''.

-x

Print elke pakket (minus syn linknûmer koptekst) yn hex. De lytser fan 'e hiele pakket of snaplen bytes sil printe wurde. Taljochting: dit is it folsleine link-lagen pakket, dus foar link-lagen dy pad (bgl. Ethernet) wurde de padding-bytes ek gedrukt as de hegere lagen pakket koarter is as de fereaske padding.

-X

By it drukjen fan hex, printsje ascii ek. As de -x ek ynsteld is, wurdt it pakket gedrukt yn hex / ascii. Dit is tige handich foar it analysearjen fan nije protokollen. Ek as -x is net ek ynsteld, kinne guon dielen fan guon pakjes yn hex / ascii printe wurde.

útdrukking

selektearret wêr 't de pakketten opdroegen wurde. As gjin ekspresje jûn wurdt, sille alle pakketten op it net dumpen wurde. Oars wurde allinich pakketten foar hokker ekspresje 'wier' is.

De útdrukking bestiet út ien of mear primitiven. Primitiven besteane meastentiids fan in id (namme of nûmer) foarôfgeand oan ien of mear kwalifikaasjewedstriden. Der binne trije ferskillende soarten fan kwalifikaasjemiddels:

type

kwalifiers sizze wat hokker ding it id namme of nûmer betellet. Mooglike soarten binne host , net en haven . Bygelyks 'host foo', 'net 128.3', 'poarte 20'. As der gjin type-kwalifikaasjewedstriid is, wurdt host hjitte .

dir

kwalifikaasjers spesifyk in bepaalde transferrjocht nei en / of fan id . Possible directions are src , dst , src or dst and src and dst . As 'src foo', `dst net 128.3 ',' src 'of dst port ftp-data'. As jo ​​gjin kwalifikaasjewurk is, wurdt src of dst oannommen. Foar `null 'link-lagen (dot punten op puntenprotokollen lykas slip) kinne de ynbûne en útgeande kwalifikaasjewearden brûkt wurde om in winske rjochting op te jaan.

proto

kwalifikaasjers beheine it match nei in bepaalde protokol. Mooglike proto's binne: ether , fddi , tr , ip , ip6 , arp , rarp , decnet , tcp en udp . Eg, 'ether src foo', 'arp net 128.3', `tcp port 21 '. As der gjin proto-kwalifikaat is, wurde alle protokollen oerienkomme mei it type wurde oannaam. As 'src foo' betsjuttet '(ip of arp of rarp) src foo' (útsein de lêste is gjin juridyske syntaksis), 'net-bar' betsjuttet '(ip or arp of rarp) net bar' en 'poarte 53' `(tcp of udp) haven 53 '.

[`fddi 'is eigentlik in alias foar' ether '; De parser behannelje har identysk as "de databanknivo's dy't brûkt wurdt op 'e oantsjutte netwurkynterface."' FDDI-headers befetsje Ethernet-like-boarne- en bestimmingadressen en hawwe faak Ethernet-karaktertypen befetsje, sadat jo filterje kinne op dizze fjilden FDDI lykas by de analoge Ethernetfjilden. FDDI-headers befetsje ek oare fjilden, mar jo kinne se net explicit yn dizze filter ekspresje.

Lykas 'tr' is in alias foar 'ether'; de ferklearrings fan 'e foarige paragraaf oer FDDI-kopers tapasse ek foar Token Ring-kopers.]

Neist it boppesteande binne der wat spesjale 'primitive' kaaiwurden dy't net folgje it patroon: poarte , útstjoeren , minder , gruttere en arithmetyske gedachten. Alle wurde hjirûnder beskreaun.

Mear komplekse filtermiddels binne opboud troch it brûken fan de wurden en , of en net primitiven te kombinearjen. Eg, `host foo en net poarte ftp en net poarte ftp-data '. Om it typen te bewarjen, kinne identike kwalifikaasjedriuwen útlêzen wurde. As 'tcp dst port ftp of ftp-data of domein' is krekt itselde as `tcp dst port ftp of tcp dst port ftp-data of tcp dst port domain '.

Alliabele primitiven binne:

dst host host

True as it bestimmingsfjild fan it IPv4 / v6 fan it pakket is host , wat mooglik is in adres of in namme.

src host host

Wiere as it fjildfjild fan it pakket IPv4 / v6 host is .

host host

True as de boarne of bestimming fan it pakket IPv4 / v6 host is . Elk fan 'e hjirboppe host ekspresjes kinne foarôffierd wurde mei de kaaiwurden, ip , arp , rarp , of ip6 as yn:

ip host host

dy't lykweardich is:

eterproto \ ip en host host

As host is in namme mei meardere IP-adressen, sil elke adres kontrolearje nei in wedstriid.

earder dst ehost

True as it ethernet bestimmingadres ehost is . Ehost kin wêze as in namme fan / etc / ethers of in nûmer (sjoch eters (3N) foar nûmerike formaat).

ether src ehost

True as it ethernet boarneadres ehost is .

easter host ehost

Wiere as de ethernet boarne of bestimmingadres ehost is .

gateway host

True as it pakket brûkte host as poarte. Ie, de ethernet boarne of bestimmingadres wie host, mar de IP-boarne noch it IP-bestimming wie host . Host moat in namme wêze en moat fûn wurde troch de masine's host-name-to-IP-adres resolutêre resolúsjes (hostnamme triem, DNS, NIS ensfh.) En troch de host-host-name-to-Ethernet-adres resolúsje meganisme (/ etc / ethers, ensfh.). (In lykweardige ekspresje is

easter host ehost en net host host

dy't brûkt wurde mei nammen of getallen foar host / ehost .) Dizze syntaksis wurket yn dizze tiid net yn IPv6-ynskeakele konfiguraasje.

dst net net

True as it bestimmingsadres fan it IPv4 / v6 fan it pakket in netwurk nûmer fan net hat . Net kin wêze as in namme fan / etc / netwurken of in netwurknûmer (sjoch netwurken (4) foar details).

src net net

True as it it adres fan it IPv4 / v6-adres fan it pakket in netwurk nûmer fan net hat .

net net

Wiere as it iets de query of it adres adres fan it pakket IPv4 / v6 hat in netwurk nûmer fan net .

net net masker netmask

True as de IP-adres net oerienkomt mei de spesifike netmaske . Meitsje mei kryt of dst . Tink derom dat dizze syntaksis net jildich is foar IPv6 net .

net net / len

True as it adres IPv4 / v6 net oerienkomt mei in netmask len bits breed. Meitsje mei kryt of dst .

dst port port

Wiere as it pakket is ip / tcp, ip / udp, ip6 / tcp of ip6 / udp en hat in bestimming poartewearde fan haven . De haven kin in getal of in namme wurde brûkt yn / etc / tsjinsten (sjoch tcp (4P) en udp (4P)). As in namme brûkt wurdt, wurde de portnûmer en protokol kontrolearre. As in nûmer of dûbele namme brûkt wurdt, dan wurdt allinich de portnûmer kontrolearre (bgl. Dst port 513 sil drukke as tcp / oanmeldverkundiging en udp / hokker ferkear, en havendomein druk as tcp / domein en udp / domeinferkear).

src port port

True as it pakket in boarne poarte wearde fan haven hat .

port port

Wiere as de boarne of bestimming fan 'e pakket haven is . Elk fan 'e hjirboppe poarte útdrukkingen kinne foarkommen wurde mei de keywords, tcp of udp , lykas yn:

tcp src port port

dy pas allinich tcp-pakketten mei hokker boarne poarte is haven .

minder lingte

True as it pakket in lingte hat minder as of lyk oan lingte . Dit is lykweardich:

len <= lingte .

grutter lingte

True as it pakket in lingte hat grutter as of lyk oan lingte . Dit is lykweardich:

len> = lingte .

ip proto protokol

True as it pakket in IP-pakket is (sjoch ip (4P)) fan protokol- typprotokol . Protokol kin in nûmer of ien fan 'e nammen icmp , icmp6 , igmp , igrp , pim , ah , esp , vrrp , udp , of tcp wêze . Taljochting: de identifiers tcp , udp , en icmp binne ek tagonklikens en moatte ûntfongen wurde troch backslash (\), dy't \\ yn de C-shell is. Taljochting: dizze primitive docht net de protokol-koptekets út.

ip6 proto protokol

True as it pakket in IPv6-pakket fan Protokol-type- protokol is . Taljochting: dizze primitive docht net de protokol-koptekets út.

ip6 protochain protokol

True as it pakket is IPv6-pakket, en befettet protokol-koptekst mei typeprotokol yn syn protokol-kopeketten. Bygelyks,

ip6 protochain 6

komt oerien mei ien IPv6-pakket mei TCP-protokol-koptekst yn 'e protokol-kopeketten. It pakket kin befetsje, bygelyks, autentikaasje header, routing header, of hop-by-hop opset header, tusken IPv6 koptekst en TCP-header. De BPF-koade útsteld troch dizze primitive is komplek en kin net optimearre wurde troch BPF-optimizer-koade yn tcpdump , dus dit kin wat stadich.

ip protochain protokol

Equivalent foar ip6 protokol protokol , mar dit is foar IPv4.

eter útstjoering

True as it pakket is in ethernet útstjoeringpakket. It kaartskeuker is fakultatyf.

ip broadcast

True as it pakket in IP-útstjoeringspakket is. It kontrolearret foar sawol de all-zeroes en all-ones útstjoerings-konvenanten, en sjocht de lokale subnetmasker op.

ether multicast

True as it pakket in ethernet-multicast-pakket is. It kaartskeuker is fakultatyf. Dit is koartsân foar ` ether [0] & 1! = 0 '.

ip multicast

True as it pakket in IP-multicast-pakket is.

ip6 multicast

True as it pakket in IPv6-multicast-pakket is.

eterproto protokol

True as it pakket is fan it ether- typprotokol . Protokol kin in nûmer of ien fan 'e nammen ip , ip6 , arp , rarp , atalk , aarp , decnet , sca , lat , mopdl , moprc , iso , stp , ipx of netbeui wêze . Tink derom dat dizze identifiers ek keywords binne en moatte weromfiere fia backslash (\).

[Yn it gefal fan FDDI (bgl. ` Fddi protocol arp ') en Token Ring (bgl.' Tr protocol arp '), foar de measte protokollen komt de protokolidentifikaasje út de 802.2 Logical Link Control (LLC) header, dy't wurdt normaal op 'e top fan' e FDDI of tokenringskrift skreaun.

Wannear't filtert foar de measte protokolidentifikaasjes op FDDI of tokenring, tcpdump kontrolearret allinich it protokol-ID-fjild fan in LLC-header yn it saneamde SNAP-formaat mei in organisatoaryske identifikaasje (OUI) fan 0x000000, foar ynkapselde Ethernet; It kontrolearret net oft it pakket yn SNAP-formaat is mei in OUI fan 0x000000.

De útsûnderings binne iso , wêrtroch it DSAP (Destination Service Access Point) en SSAP (source service access point) fjilden fan 'e koptekst, stp en netbeui , kontrolearret wêr't it DSAP fan it koptekst fan' e LLC kontrolearret en atalk , wêr't it kontrolearret foar in SNAP-formaat pakket mei in OUI fan 0x080007 en it Appletalk etype.

Yn it gefal fan Ethernet kontrolearret tcpdump it fjild fan Ethernet foar de measte fan dy protokollen; De útsûnderings binne iso , sap en netbeui , wêrtroch it kontrolearret foar in frame 802.3 en kontrolearret dan de headlines fan it LLC as it docht foar FDDI en Token Ring, atalk , wêrby't it kontrolearret sawol foar de appletalk-etype yn in Ethernet-frame en foar in SNAP-formaat pakket lykas it foar FDDI en Token Ring, aarp , dêr't it kontrolearret foar de appletalk ARP-etype yn elk in Ethernet-frame of in 802.2 SNAP-frame mei in OUI fan 0x000000, en ipx , wêr't it kontrolearret foar de IPX-etype yn in Ethernet-ramt, de IPX DSAP yn 'e headlines fan' e LLC, de 802.3 mei gjin koptekodulaasje fan IPX, en de IPX-etype yn in SNAP-frame.]

decnet src host

Wiere as it DECNET-boarneadres host is , dat kin in adres fan de foarm `` 10.123 '', of in namme fan 'e DECNET-host wêze. [DECNET-host-name-stipe is allinich beskikber op Ultrix-systemen dy't konfigurearre binne om DECNET út te fieren.]

decnet dst host

True as it adres adres fan DECNET host is .

deknet host host

Wiere as de DECNET-boarne of bestimmingadres host is .

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

Abbreviations foar:

eter proto p

wêr p is ien fan 'e boppeste protokollen.

lat , moprc , mopl

Abbreviations foar:

eter proto p

wêr p is ien fan 'e boppeste protokollen. Tink derom dat tcpdump net tenei wit hoe't jo dizze protokollen selektearje.

vlan [vlan_id]

True as it pakket in IEEE 802.1Q VLAN-pakket is. As [vlan_id] opjûn is, allinich wier it pakket hat de spesifisearre vlan_id . Tink derom dat it earste floatflater "vlan" yn 'e útfier feroaret de dekodaasjekosten foar de residinsje fan ekspresje op' e hypoteek dat it pakket in VLAN pakket is.

tcp , udp , icmp

Abbreviations foar:

ip proto p of ip6 proto p

wêr p is ien fan 'e boppeste protokollen.

iso proto protokol

True as it pakket in OSI-pakket fan protokol- typprotokol is . Protokol kin in nûmer of ien fan 'e nammen klnp , esis of isis wêze .

clnp , esis , isis

Abbreviations foar:

iso proto p

wêr p is ien fan 'e boppeste protokollen. Taljochting: tcpdump docht in ûnfolslein wurk foar it analysearjen fan dizze protokollen.

expr relop ekspr

Wier as de relaasje hâldt, wêr't relop ien is fan 'e, of, =, <=, = ,! =, En expr is in arithmetyske ekspresje besteande út integer konstanten (útdrukt yn standert C syntax), de normale binêre operators [ , -, *, /, &, |], in lingteoperator, en spesjale pakketdata tagongers. Om tagong te krijen ta data yn it pakket, brûk de folgjende syntaks:

proto [ ekspr : grutte ]

Proto is ien fan 'e ether, fddi, tr, ppp, slip, link, ip, arp, rarp, tcp, udp, icmp of ip6 , en lit de protokol-lagen foar de yndeks operearje. ( ether, fddi, tr, ppp, slip en keppelje allegear ferwize nei de linkschicht .) Tink derom dat tcp, udp en oare oberschichtprotokolltypen allinich tapasse op IPv4, net IPv6 (dit sil fêst yn 'e takomst wurde). It Byteoffset, relatyf oan de oanjûne protokol-lagen, wurdt jûn troch ekspr . Grutte is opsjoneel en jout it oantal bytes op it gebiet fan belang; it kin ien wêze, twa, of fjouwer, en standert nei ien. De lingteoperator, oanjûn troch it keyword len , jout de lingte fan it pakket.

Bygelyks, ' eter [0] & 1! = 0 ' falt alle multicastferkear. De ekspresje ' ip [0] & 0xf! = 5 ' falt alle IP-pakketten mei opsjes. De ekspresje ' ip [6: 2] & 0x1fff = 0 ' falt allinich ûnfragmentearre datagrams en frag nul fan fragmintearre datagrams. Dizze kontrôle wurdt implicitly tapast op de tcp- en udp- yndeks operaasjes. Bygelyks, tcp [0] betsjut altyd it earste byte fan it TCP- header , en betsjut nea de earste byte fan in ynterpretearjend fragmint.

Guon opsets en fjildwearden kinne as nammen as as numerike wearden útdrukt wurde. De folgjende protokoll- koptekompetysjes binne beskikber: icmptype (ICMP-type fjild), icmpcode (ICMP-koade fjild), en tcpflags (TCP-flagge fjild).

De folgjende fjildwearden fan ICMP-type binne beskikber: icmp-echoreply , icmp-echre , icmp-sourcequench , icmp-redirect , icmp-echo , icmp-routeradvert , icmp-routersolicit , icmp-timxceed , icmp-paramprob , icmp-tstamp , icmp -tstampreply , icmp-ireq , icmp-ireqreply , icmp-maskreq , icmp-maskreply .

De folgjende TCP-flaggen binne fjildwearden beskikber: tcp-fin , tcp-syn , tcp- rst , tcp-push , tcp-push , tcp-ack , tcp-urg .

Primitiven kinne kombineare wurde mei:

In parentele groep fan primitiven en operators (klamkes binne spesjaal foar de Shell en moatte ûntkomme).

Negaasje (` ! 'Of' net ').

Konkataasje (` && 'of` en ').

Alternaasje (` || 'of` of ').

Negaasje hat it heechste foardracht. Alternaasje en ferkenning hawwe gelikense foardielen en ferieniging nei rjochts. Tink derom dat eksplisite en tekeningen, gjin njonkenopstelling, no no ferplicht wurde foar ferbetten.

As in identifier sûnder in kaaiwurd jûn is, wurdt it lêste resinte wurdearring oanjûn. Bygelyks,

net host tsjin en ace

is koart foar

net host vs and host ace

dy't net mei ferwiderje wurde moatte

net (host tsjin as ace)

Ekspresje arguminten kinne oerjûn wurde nei tcpdump as as ien inkeld argumint as as meardere arguminten, hokker as handiger is. Yn it algemien, as de ekspresje Shell metacharacters befettet, is it makliker om it as in single, quoted argument te passen. Mearfâldige arguminten wurde oanlein mei romten foardat it analyseard is.

EXAMPLES

Om alle pakketten oan te drukken, dy't oankomme of ôfgean fan 'e sinne :

tcpdump hostûntstek

Om it ferkear tusken gedichten en helikopter te printen:

tcpdump host helios en \ (hot or ace \)

Om alle IP-pakketten tusken ace en elke host ôfdrukke as helios :

tcpdump ip host ace en net helios

Om alle ferkear tusken lokale hosts en hosts te berikken by Berkeley:

tcpdump net ucb-ether

Om alle FTP-ferkearsdruk te yndrukke troch ynternet-gateway snup : (tinkt dat de ekspresje wurdt beoardield om de shell te foarkommen fan (mis-) interpreting de liederjes:

tcpdump 'gateway snup en (poarte ftp of ftp-data)'

Om printsje ôf te drukken, wurde wierskynlik net bepaald as foar pleatslike hosts (as jo tagong nei ien oare net, dan moatte jo dizze ynhâld nea op jo lokale net meitsje).

tcpdump ip en net net localnet

Om de begjinnende en einigde pakketten (de SYN- en FIN-pakketten) fan elke TCP-konversaasje te bedriuwen dy't in net-lokale host besjogge.

tcpdump 'tcp [tcp] & (tcp-syn | tcp-fin)! = 0 en net src en dst net localnet '

Om IP-pakketten te drukearjen langer dan 576 bytes troch in poarte-stjoerder ferstopd :

tcpdump 'gateway snup en ip [2: 2]> 576'

Om IP-útstjoerings of multicast-pakkingen te printsjen dy't net stjoerd waarden troch ethernet-útstjoerings of multicast:

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

Om alle ICMP-pakkingen te drukken dy't net echo beantwurde / antwurden (dus gjin ping-pakketten):

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

OUTPUT FORMAT

De útfier fan tcpdump is protokol ôfhinklik. De folgjende jout in koarte beskriuwing en foarbylden fan meast fan de formaten.

Link Level Headers

As de opsje "-e" opjûn is, sil de keppeling-nivokopf útdrukt wurde. Op ethernets wurde de boarne- en bestimmingadressen, protokol en pakketlange bedreaun.

Op FDDI netwurden feroaret de '-e' opsje tcpdump om it fjild fan 'frame-kontrôle', de boarne- en bestimmingadressen en de pakketlange te drukken. (It fjild fan 'frame control' bestiet út de ynterpretaasje fan 'e rest fan it pakket: Normale pakketten (lykas dyjingen dy't IP datagrammen befetsje) binne `async' pakketten, mei in prioriteitwearde tusken 0 en 7, bygelyks ' async4 '. Pakets wurde oannommen dat in pakket 802.2 Logical Link Control (LLC) befettet; de koptekst fan de LLC is bedreaun as it is gjin ISO-datagram of in saneamde SNAP-pakket.

Op Token Ring netwurden feroaret de '-e' -op option tcpdump om de 'access control' en 'frame control' fjilden, de boarne en bestimmingadressen, en de pakketlange te drukken. As op FDDI-netwurken wurde pakjes oanbean om in LLC-pakket te befetsje. Neffens de opsje -e as de opsje "-e" oanjûn is, wurdt de boarne routing ynformaasje printe foar boarne-ferpleatste pakketen.

(NB: De neikommende beskriuwing fertsjinwurdiget de fertroulikens mei it SLIP-kompresjealgoritme beskreaun yn RFC-1144.)

Op SLIP-keppelings wurde in rjochtingindikaat (`` I '' foar ynbûn, `` O '' foar útgeand), pakkettype en kompresje-ynformaasje útjûn. It pakkettype wurdt earste printe. De trije soarten binne ip , utcp , en ctcp . Gjin fierdere linkynformaasje wurdt printe foar ip- pakketten. Foar TCP-pakketten wurdt de ferbiningerkenner nei it type bedreaun. As it pakket komprimearret, wurdt syn kodearre koptekst útjûn. De spesjale gefallen wurde útjûn as * S + n en * SA + n , wêrby't n it bedrach is wêrmei it sekpersnûmer (of sesnûmer en ack) feroare is. As it net in spesjale gefal is, sille nul of mear wizigingen printe wurde. In wiziging wurdt oanjûn troch U (driuwende pointer), W (finster), A (ack), S (sequelnûmer), en I (pakket ID), folge troch in delta (+ n of -n), of in nije wearde (= n). Uteinlik wurdt it bedrach datum yn 'e pakket en komprimearre headerlange printe wurde.

Bygelyks, de neikommende rigel lit in útgeand komprimearre TCP-pakket sjen, mei in ymplisite ferbiningskenner; de aak is feroare mei 6, it sequelsnûmer mei 49, en de pakket ID mei 6; der binne 3 bytes fan gegevens en 6 bytes fan komprimearre header:

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

ARP / RARP-pakketten

Arp / rarp-útfier jout it soart fersyk en har arguminten. It formaat is bedoeld om sels ferklearjend te wêzen. Hjir is in koart probleem fan 'e start fan in' rlogin 'fan host hosting nei host csam :

arp who-has csam tell rtsg arp reply csam is-at CSAM

De earste rigel fertelt dat rtsg in arp pakket stelde foar it ethernet adres fan ynternet-host csam. Csam antwortet mei it ethernetadres (yn dit foarbyld binne eternetadressen yn kappen en ynternetadressen yn lytser gefal).

Dit soe minder redundant sjogge as wy tcpdump dien hawwe -n :

arp who-has 128.3.254.6 tell 128.3.254.68 arp reply 128.3.254.6 is-at 02: 07: 01: 00: 01: c4

As wy tcpdump -e dien hawwe , it feit dat it earste pakket útstjoerd wurdt en de twadde is punkt ta ta:

RTSG-útstjoering 0806 64: arp who-has csam tell rtsg CSAM RTSG 0806 64: arp reply csam is-at CSAM

Foar it earste pakket seit dat it ethernet-boarneadres RTSG is, it bestimming is it ethernet-útstjoeringadres, it type fjild befette hex 0806 (type ETHER_ARP) en de totale lingte wie 64 bytes.

TCP-pakketten

(NB: De neikommende beskriuwing fertsjinwurdiget it fertroud mei it TCP-protokol beskreaun yn RFC-793. As jo ​​net bekend binne mei it protokol, dan wurdt dizze beskriuwing noch tcpdump fan in protte gebrûk fan jo.)

It algemiene formaat fan in tcp-protokolline is:

src> dst: flags data-seqno ack window dringende opsjes

Src en dst binne de boarne en bestimming fan IP-adressen en havens. Flaggen binne inkele kombinaasje fan S (SYN), F (FIN), P (PUSH) of R (RST) of in single `. ' (gjin flaggen). Data-seqno beskriuwt it diel fan sesje-romte omfetsje troch de gegevens yn dit pakket (sjoch foarbyld hjirûnder). Ack is sekere nûmer fan 'e neikommende gegevens ferwachte de oare rjochting op dizze ferbining. Finster is it oantal bytes fan pufferromte te krijen dy't de oare rjochting op dizze ferbining beskikber is. Urg jout oan dat 'driuwende' gegevens yn it pakket binne. Opsjes binne tcp-opsjes ynklusyf yn winkelklassen (bgl. ).

Src, dst en flaggen binne altyd oanwêzich. De oare fjilden binne ôfhinklik fan de ynhâld fan de tcp-protokol-koptekst fan de pakket en wurde allinich as útfierd.

Hjir is it iepen diel fan in rlogin fan host hosting nei host csam .

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

De earste rigel fertelt dat tcp-port 1023 op rtsg in pakket stjoerde om login te iepenjen op csam. De S jout oan dat de SYN- flagge ynsteld is. It pakketnûmernûmer wie 768512 en it befette gjin gegevens. (De notaasje is 'earst: lêst (nbytes)' dat betsjuttet 'getallen nûmers earst mar mar net lêst yn' e nbytes fan brûkersgegevens '.) Der wie gjin piggy-backed ack, it beskikberende finster wie 4096 bytes en Der bestie in opset fan max-segment-grutte om in mss fan 1024 bytes te fersykjen.

Csam antwortet mei in ferlykbere pakket útsein it befettet in piggy-backed ack foar rtsg's SYN. Rtsg nimt dan Csam syn SYN. De `. ' betsjut dat gjin flaggen ynsteld waarden. It pakket befette gjin gegevens sadat der gjin gegevensnûmer nûmer is. Tink derom dat it ack-seksnûmer in lyts ynteger (1) is. De earste kear tcpdump sjocht in tcp 'konversaasje', it printset it sequentnûmer út it pakket. Op oanfoljende pakjes fan 'e konversaasje wurdt it ferskil tusken it sekuernûmer fan dit aktive pakket en dit earste opfangnûmer opjûn. Dit betsjut dat sekpersnûmers nei de earste kinne as relative byteposysjes yn 'e konversaasje' s 's gegevensstream (mei it earste databyte elk rjochting wêzen wêzen' 1 ') ynterpretearre wurde. `-S 'sil dizze funksje oerskriuwe, wêrtroch't de orizjinele sequelnûmers útfierd wurde.

Op 'e 6e rigel sendet rtsg csam 19 bytes fan gegevens (bytes 2 oant 20 yn' e rtsg -> csam side fan it petear). De PUSH-flagge stiet yn it pakket. Op 'e 7e rigel stiet csam dat it troch rtsg ferstjoerde gegevens krigen binne oant mar net meibyte 21. De measten fan dizze gegevens sjogge graach yn' e socketpuffer, omdat csam's ûntfangende finster 19 bytes lytser krige. Csam stjoert ek ien byte fan gegevens nei rtsg yn dit pakket. Op 'e 8e en 9e rigel stjoert csam twa bytes fan driuwend, stjoerde gegevens nei rtsg.

As de snapshot lyts genôch wie tcpdump de folsleine TCP-header net fereaske, it sprekt as in protte fan de koptekst as it kin en rapportearje '`[| tcp ] '' om oan te jaan dat de reste net ynterpretearre wurde koe. As it header befettet in fyzje-opsje (ien mei in lingte dat is te lyts of fierder it ein fan 'e koptekst), tcpdump rapportearret it as `` bad opt ]' 'en jout gjin oare opsjes (om't it net kin te fertellen wêr't se begjinne). As de koptekst lynt op 'e opsjes is oanwêzich, mar de IP-datagramlange is net lang genôch foar de opsjes foar it feit dat it tcpdump rapporteart as' `[ minne hdr lengte ' ].

Ferfier TCP-pakketten mei bepaalde flagge-kombinaasjes (SYN-ACK, URG-ACK, ensfh.)

Der binne 8 bits yn 'e kontrôle bitsjuttings fan it TCP-headliner:

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

Litte wy derop sizze dat wy pakjes sjen wolle dy't brûkt wurde by it ynstellen fan in TCP-ferbining. Ferjit net dat TCP in 3-weachhandshake-protokol brûke as it in nije ferbining initialisearret; De ferbiningssigens yn ferbân mei de TCP-behear bits is

1) Skilje sender SYN

2) ûntfanger antwurdet mei SYN, ACK

3) Opmerking stjoert ACK

No binne wy ​​ynteressearre foar it pakjen fan pakketten dy't allinich it SYN-bit set hawwe (stap 1). Tink derom dat wy pakjes fan stap 2 (SYN-ACK) net wolle, gewoan in gewoane startsyn. Wat wy nedich binne is in korrekt filter ekspresje foar tcpdump .

Ferwiderje de struktuer fan in TCP-header sûnder opsjes:

0 15 31 ----------------------------------------------- ------------------ | boarne poarte | bestimming haven | -------------------------------------------------- --------------- | sequence number | -------------------------------------------------- --------------- | acknowledgment number | -------------------------------------------------- --------------- | HL | rsvd | C | E | U | A | P | R | S | F | finstergrutte | -------------------------------------------------- --------------- | TCP-kontrôfsum | dringende pointer | -------------------------------------------------- ---------------

In TCP-header befet normaal 20 oktaven fan gegevens, útsein opsjes binne oanwêzich. De earste line fan it graf befettet oktêden 0 - 3, de twadde line lit oets 4 - 7 ensfh.

Begjinne mei te fertsjinjen mei 0, binne de relevante TCP-behear bitsen yn octet 13:

0 7 | 15 | 23 | 31 ---------------- | --------------- | --------------- | ---------------- | HL | rsvd | C | E | U | A | P | R | S | F | finstergrutte | ---------------- | --------------- | --------------- | - --------------- | | 13e octet | | |

Litte wy in tichterby sjen nei octet no. 13:

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

Dit binne de TCP-behear bitsen dy't wy ynteressearre binne. Wy hawwe de bits yn dit octet nûmere fan 0 oant 7, rjocht nei lofts, dus it PSH-bit is in bitnûmer 3, wylst de URG-bit is nûmer 5.

Ferjit net dat wy pakjes mei allinich SYN-set ferwiderje wolle. Lit sjen wat der mei octet 13 bart, as in TCP-datagram komt mei it SYN-bit yn 'e koptekst:

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

As jo ​​op 'e kontrôlebits-seksje sjogge, sjogge wy dat allinich bitnumber 1 (SYN) ynsteld is.

Tink derom dat octet nûmer 13 in 8-bit net-tekene-integer yn netbyebyte-opdracht is, de binêre wearde fan dit octet is

00000010

en syn desimale fertsjintwurdiging is

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

Wy binne hast dien, om't wy no witte dat as allinne SYN ynsteld is, de wearde fan 'e 13e octet yn' t TCP-header, as ynterpretearre as in 8-bit-net-tekene integer yn netwurkbyte-opdracht, moat krekt 2 wêze.

Dizze relaasje kin as útdrukt wurde

tcp [13] == 2

Wy kinne dizze ekspresje brûke as filter foar tcpdump om pakjes sjen te kinnen dy't allinich SYN set hawwe:

tcpdump -i xl0 tcp [13] == 2

De ekspresje seit "litte de 13e octet fan in TCP-datagram hawwe de desimale wearde 2", wat krekt wat wy wolle.

Nu, litte we derop útgean dat wy SYN-pakketten opnimme moatte, mar wy dogge noait as ACK of in oare TCP-behear bit is tagelyk ynsteld. Lit sjen wat der mei octet 13 is as in TCP-datagram mei SYN-ACK set komt:

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

No bitsen 1 en 4 wurde yn 'e 13e octet set. De binêre wearde fan octet 13 is


00010010

dy't oersetten oan desimale

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

No kinne wy ​​net allinich 'tcp [13] == 18' brûke yn 't tcpdump filter ekspresje, omdat dit allinich de pakketten selektearje dy't SYN-ACK set hawwe, mar net mei allinich SYN set. Tink derom dat wy derfoar soargje dat ACK of elk oare kontrôle-bit is ynsteld as lang SYN ynsteld is.

Om ús doel te realisearjen, moatte wy logysk wurde en de binêre wearde fan octet 13 mei in oar wearde om de SYN-bit te behâlden. Wy witte dat wy wolle dat SYN yn elts gefal ynsteld wurde, sadat wy logysk wurde en de wearde yn 'e 13e octet mei de binêre wearde fan in SYN:

00010010 SYN-ACK 00000010 SYN en 00000010 (wy wolle SYN) en 00000010 (wolle SYN) -------- -------- = 00000010 = 00000010

Wy sjogge dat dizze AND-operaasje itselde resultaat leveret, lykas ACK of in oare TCP-behear bit is ynsteld. De desimale fertsjintwurdiging fan 'e AND-wearde en ek it resultaat fan dizze operaasje is 2 (binêre 00000010), dus wy witte dat foar pakketten mei SYN de folgjende relaasje set ha moat wier:

((wearde octet 13) AND (2)) == (2)

Dit wiist ús oan de tcpdump filter ekspresje

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

Tink derom dat jo ienige quotes of in backslash brûke moatte yn 'e ekspresje om it AND (' & ') spesjale karakter fan' e shell te ferbergjen.

UDP-pakketten

UDP-formaat is yllustrearre troch dit rwho-pakket:

actinide.who> broadcast.who: udp 84

Dit seit de haven dy't op host aktinide in UDP-datagram ferstjoerd hat dy't op host- útstjoering , it ynternet-adressearre adres. It pakket befette 84 bytes fan brûkersgegevens.

Guon UDP-tsjinsten wurde erkend (fan 'e boarne of bestimming fan port nûmer) en de hegere nivo's protokol-ynformaasje dy't printe wurde. Benammen DNS-tsjinsten (RFC-1034/1035) en Sun RPC-ruften (RFC-1050) oan NFS.

UDP-namme Server Requests

(NB: De neikommende beskriuwing fertsjinwurdiget it fertrouwens mei it Protokol foar Dieningstsjinst dat beskreaun is yn RFC-1035. As jo ​​net bekend binne mei it protokol, sil de folgjende beskriuwing ferskine yn 'e tekst.

Name tsjinner requests as formaat as

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

Host h2opolo frege de domyntsjinner op helios foar in adreslist (qtype = A) dy't ferbûn is mei de namme ucbvax.berkeley.edu. De query-id wie '3'. De `+ 'jout oan dat de opnij winske flagge ynsteld is. De query length was 37 bytes, not including the UDP and IP protocol headers. De query operaasje wie it normale, Query , sadat it op fjild wegere waard. As de op 'e opsomming oars wie, dan soe it west hawwe tusken de' 3 'en de' + '. Lykwols wie de qclass de normale, C_IN , en wegere. Alle oare qclass soe fuortendaliks nei '`A' bedreaun wurde.

In pear anomaljes wurde kontrolearre en kinne in ekstra fjilden ynfolje yn fjouwerkante klammerkes: As in query in antwurd befettet, antwurden opsjenningen of ekstra opsjes, sesje , nscount , of arcount wurde bedreaun as '[ n a]', '[ n n ] 'of `[ n au]' dêr't n de passende sifer is. As ien fan 'e antwurde bits opslein is (AA, RA of rcode) of elk fan' e needsaak "nul" bits wurde yn Bytes setten twa en trije, "[b2 & 3 = x ]" wurdt gedrukt, wêrby x de hexwearde fan Headers bytes twa en trije.

UDP-tsjinner-tsjinneraksjes

Nammefersupportnammen negeare as formaat

src> dst: id op rcode flaggen a / n / au type klasse gegevens (len) helios.domain> h2opolo.1538: 3 3/3/7 A 128.32.137.3 (273) helios.domain> h2opolo.1537: 2 NXDomain * 0/1/0 (97)

Yn it earste foarbyld antwurde helias helios 3 3 fan h2opolo mei 3 antwurden opnamen, 3 nammeservers en 7 additional records. De earste antwurden binne type A (adres) en har gegevens is ynternetadres 128.32.137.3. De totale grutte fan it antwurd wie 273 bytes, útsein fan UDP en IP-headers. De op (Query) en antwurd-koade (NoError) waarden wegere, lykas de klasse (C_IN) fan 'e A-record.

Yn it twadde foarbyld antwurde helios helje op query 2 mei in antwurd-koade fan net-besteand domein (NXDomain) sûnder antwurden, ien namme-tsjinner en gjin autoriteit-record. De `* 'jout oan dat it autoritative antwurde bit setten is. Sûnt der binne gjin antwurden, gjin type, klasse of gegevens binne printe.

Oare flaggenpersoanen dy 't ferskine binne `-' (recursion beskikber, RA, net ynsteld) en` | ' (truncated message, TC, set). As de fraach 'fraachteken' net krekt ien item befettet, wurdt '[q]' gedrukt.

Tink derom dat namme-tsjinner freget en antwurden faak grut en de standert snaplen fan 68 bytes kinne net genôch fassinearje fan it pakket om te drukken. Brûk de flagge fan 'e flagge om de snaplen te fergrutsjen as jo serieus ferwiderje fan it tsjinnersferkear. `` 128 'hat goed foar my wurke.

SMB / CIFS-dekodearring

tcpdump befettet no ek in soad wiidweidige SMB / CIFS / NBT-dekodearring foar gegevens oer UDP / 137, UDP / 138 en TCP / 139. Guon primitive dekodearring fan IPX en NetBEUI SMB-gegevens wurdt ek dien.

Standert is in frij minimal decodaasje dien, mei in folle mear detaillearre dekod wurdt dien as -v wurdt brûkt. Wês gewoan dat -by ien SMB-pakket kin in side of mear opnimme, dus allinne brûke -v as jo echt alle details fan 'e gryp winskje.

As jo ​​dekodearring SMB-sesjes befetsje mei unicode-strings, dan kinne jo de omjouwingsfariabele USE_UNICODE ynstelle. 1. In patch nei auto-ûntdekke unicode srings soe wolkom wurde.

Foar ynformaasje oer SMB-pakket-formaten en wat alle fjilden sjogge sjoch op www.cifs.org of de pub / samba / specs / triemtafel op jo favoriete samba.org-spultsje. De SMB-patches waarden skreaun troch Andrew Tridgell (tridge@samba.org).

NFS-fersyk en antwurden

Sun NFS (Network File System) freget en antwurden binne as:

src.xid> dst.nfs: len op args src.nfs> dst.xid: reply stat len ​​op resultaten sushi.6709> wrl.nfs: 112 readlink fh 21,24 / 10,73165 wrl.nfs> sushi.6709: antwurd ok 40 readlink "../var" sushi.201b> wrl.nfs: 144 lookup fh 9,74 / 4096.6878 "xcolors" wrl.nfs> sushi.201b: antwurd ok 128 lookup fh 9,74 / 4134.3150

Yn 'e earste rig leit de host sushi in transaksje mei id 6709 nei wrl (note dat it nûmer neist de host host in transaksjedial-id is, net de boarne poarte). It fersyk wie 112 bytes, útsein de UDP- en IP-headers. De operaasje wie in lêzingslink ( lokaasjebalke links) op triemgriff ( fh ) 21,24 / 10.731657119. (As ien gelok is, lykas yn dit gefal, kin de triemgriff as in wichtige, lytse apparaatnûmerpaar ynterpretearre wurde, folge troch it ynodennummer en generaasje nûmer.) Wrl antwurden 'ok' mei de ynhâld fan 'e keppeling.

Yn 'e tredde rigel freget sushi de namme' xcolors 'op te sykjen yn triemtafel 9,74 / 4096.6878. Tink derom dat de gegevens bedreaun hingje fan it operetype. It formaat is bedoeld om sels eksplisyt te wêzen as lêzen yn gearhing mei in NFS protokol spec.

As de -v (verbose) flagge jûn wurdt, wurde oanfoljende ynformaasje printe. Bygelyks:

sushi.1372a> wrl.nfs: 148 lêft fh 21,11 / 12.195 8192 bytes @ 24576 wrl.nfs> sushi.1372a: antwurd ok 1472 lêze REG 100664 ids 417/0 sz 29388

(-v printsje ek de IP-haadtriem TTL, ID, lingte, en fragmintaasjefjilden, dy 't weggean fan dit foarbyld.) Yn' e earste rigel freget sushi om 8192 bytes te lêzen fan de triem 21.11 / 12.195, by byteopset 24576. Wrl antwurkt 'ok'; It pakket op 'e twadde rige is it earste fragmint fan' e antwurd, en dêrtroch is allinich 1472 bytes lang (de oare bytes sille folgje yn lettere fragminten, mar dizze fragminten hawwe gjin NFS of sels UDP-headers en kin dus net gedrukt wurde, ôfhinklik fan 'e filter ekspresje brûkt). Omdat de -v flag is jûn, wurde guon fan 'e triem-attributen (dy't neist de triemgegevens weromkomme) wurde drukke: de triemtype (`` REG' ', foar reguliere triem), de triemmodus (yn oktal) de uid en gid, en de triemgrutte.

As de -v-flagge mear as ien kear jout, wurde noch mear details bedreaun.

Tink derom dat NFS-fersiken tige grut binne en in soad fan 'e detail wurde net oerdrukt as útskeakelje snaplen . Besykje '`s 192 ' te brûken om NFS ferkear te besjen.

NFS-antwurde-pakketsen docht net explikearje de RPC-operaasje. Ynstee dêrfan hâldt tcpdump spoaren fan 'e' nijste '' fersiken en treffe se oan 'e antwurden mei de triembehearder-ID. As in antwurd de folgjende oanfraach net nau leit, dan kin it net miskien wêze.

AFS fersyk en antwurden

Transarc AFS (Andrew File System) freget en antwurden binne as:

src.sport> dst.dport: rx pakket-type src.sport> dst.dport: rx pakket-type tsjinst call call-name args src.sport> dst.dport: rx pakket-service tsjinje antwurd call-name args elvis. 7001> pike.afsfs: rx data fs skrap rename âld befêsting 536876964/1/1 ".newsrc.new" nij befêstiging 536876964/1/1 ".newsrc" pike.afsfs> elvis.7001: rx data fs antwurd opnij

Yn 'e earste line jout host elvis in RX-pakket nei pike. Dit wie in RX-data pakket oan de fs (fileserver) tsjinst, en is it begjin fan in RPC-oanrop. It RPC-oanrop wie in omneame, mei de âlde triemtriem-id fan 536876964/1/1 en in âlde triemnamme fan `.newsrc.new ', en in nije triemtriem-id fan 536876964/1/1 en in nije triemnamme fan`. newsrc '. De hostpike reagearret mei in RPC-antwurd op de rename-oprop (wat suksesfol wie, omdat it in pakket datum is en in abort pakket).

Yn 't algemien wurde alle AFS-RPC's op syn minst troch RPC neamd neamd. De measte AFS-RPC's hawwe op syn minst guon fan 'e arguminten te dekodearjen (meast allinich de' interessante 'arguminten, foar in beskate definysje).

It formaat is bedoeld om sels te beskriuwen, mar it sil wierskynlik net nuttich wêze foar minsken dy't net fertroud binne mei de wurksjes fan AFS en RX.

As de -v (verbose) flagge twa kear jout, wurde wittenskiplike pakketten en ekstra koppenynformaasje gedrukt, lykas de RX-ruf-ID, it nûmernûmer, it sekpersnûmer, it serialnûmer, en de RX-pakketflaggen.

As de -v-flagge twa kear jûn wurdt, wurde oanfoljende ynformaasje gedrukt, lykas de RX-ruf-ID, it serialnûmer, en de RX-pakketflaggen. De MTU-ûnderhannelingsynformaasje wurdt ek útgedrukt fan RX-aakpakets.

As de -v-flagge trije kear jûn wurdt, wurde de feiligensynformaasje en de service id gedrukt.

Flaterkoade wurde printe foar ôfbrekken fan pakketten, mei útsûndering fan Ubik-beacon-pakketten (om't wegere pakketen brûkt wurde om in stimming te jaan foar it Ubik-protokol).

Tink derom dat AFS fersiken tige grut binne en in soad fan 'e arguminten wurde net bedreaun as útskeakelje snaplen . Besykje '`s 256 ' om te ferwachtsjen AFS ferkear.

AFS-antwurde-pakketsen hawwe de RPC-operaasje net explikearje. Ynstee dêrfan hâldt tcpdump spoaren fan 'e' nijste '' fersiken, en stipet har oan 'e antwurden fia it nûmernûmer en tsjinst ID. As in antwurd de folgjende oanfraach net nau leit, dan kin it net miskien wêze.

KIP Appletalk (DDP yn UDP)

Appletalk DDP-pakketten dy't yn UDP-datagrams ynkapulearre binne de-kapsulearre en dumpen as DDP-pakketten (dus, alle UDP-haadynformaasje wurdt fuortsmiten). De triem /etc/atalk.names wurdt brûkt om appletalk net en nodulesnûmers nei nammen te oersjen. Linen yn dizze bestân hawwe it formulier

Nûmer-namme 1.254 ether 16.1 icsd-net 1.254.110 ace

De earste twa rigels jouwe de nammen fan appletalk netwurken. De tredde line liedt de namme fan in bepaalde host (in host is ûnderskieden fan in net troch de 3e octet yn it getal - in nûmer moat twa oktettes hawwe en in host-nûmer moat trije oktêden hawwe.) It getal en namme moatte ôfslein wurde troch whitespace (blanken of tabs). De triem /etc/atalk.names kin lege rigels of kommentaarlinen (linen begjinne mei in `# ').

Appletalkadressen wurde yn it formulier makke:

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

(As de /etc/atalk.names net bestiet of gjin ynfoe is foar inkele appletalk host / net-nûmer, wurde adressen yn numerike foarm printe.) Yn it earste foarbyld is NBP (DDP-port 2) op net 144.1 Knot 209 stjoert nei wat wat harket op haven 220 fan net icsd node 112. De twadde line is deselde, útsein de folsleine namme fan de boarneknoop is bekend (`kantoar '). De tredde line is in stjoerder fan poarte 235 op net jssmagknop 149 om út te litten op de icsd-net NBP-poarte (note dat it útstjoerenadres (255) troch in net-namme neamd is mei gjin hostnûmer - dêrom is it in goed idee om knooppennamen en netnamen te ûnderskieden yn /etc/atalk.names).

NBP (name binding protocol) en ATP (Appletalk transaction protocol) pakjes hawwe har ynhâld ynterpretearre. Oare protokollen dûbelje de protokolnamme (of nûmer as der gjin namme registrearre is foar it protokol) en pakketgrutte.

NBP-pakjes wurde formaat as de neikommende foarbylden:

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

De earste rigel is in namme opnij oanfrege foar laserwriters dy't net stjoerd wurde troch net-sykd host 112 en útstjoeren op net jssmag. De nbp-id foar it sykjen is 190. De twadde rigel lit in antwurd foar dizze fersyk sjen (tink derom dat it deselde id hat) fan host jssmag.209 seit dat it hat in laserwriter-boarne neamd "RM1140" registrearre op haven 250. De tredde line is in antwurde antwurd op deselde fersyk sizzenskip dat host techpit hat laserwriter "techpit" registrearre op haven 186.

ATP-pakketformaat wurdt demonstrearre troch it folgjende foarbyld:

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 begjinnet transaksje id 12266 mei host helios troch te freegjen oant 8 pakketten (de `<0-7> '). It hex nûmer oan 'e ein fan' e rigel is de wearde fan it fjild 'userdata' yn it fersyk.

Helios reagearret mei 8 512 byte pakjes. De `: digit 'neist de transaction id jout it pakketnûmernûmer yn' e transaksje en it getal yn parens is de datum fan de gegevens yn it pakket, útsein de atp header. De `* 'op paket 7 jout oan dat it EOM-bit ynsteld is.

Jssmag.209 freget dêrnei dat pakketten 3 & 5 werjûn wurde. Helios befettet har dan, jsmag209 freget de transaksje. Uteinlik jsmag.209 begjint de folgjende fraach. De `* 'op it fersyk jout oan dat XO (" krekt ien kear ") net ynsteld is.

IP Fragmentaasje

Fragmentearre ynternetdatagrammen wurde bedreaun as

(frag id : grutte @ offset +) (frag id : grutte @ offset )

(De earste foarm jout oan dat der mear fragminten binne. De twadde jout oan dat dit it lêste fragmint is.)

Id is it fragmint id. De grutte is de fragmintgrutte (yn bytes) útsletten fan de IP header. Offset is dit fragmint 's offset (yn bytes) yn it orizjinele datagram.

De fragmintynformaasje is útfierd foar elke fragmint. It earste fragmint befettet de hegere nivo's protokol-koptekst en de frag-info is bedoeld nei de protokol-info. Fragminen nei de earste befetsje gjin heger nivo fan protokolopfang en de frag-info is bedoeld nei de boarne- en bestimmingadressen. Sa is bygelyks in diel fan in ftp fan arizona.edu nei lbl-rtsg.arpa oer in CSNET-ferbining dy't liket 576 byte datagrams te behanneljen:

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

Der binne hjir in pear dingen te besjen: earste, adressen yn 'e 2e rigel hawwe gjin pûmernûmeren. Dit is om't de TCP-protokol-ynformaasje allinich yn it earste fragmint is en wy hawwe gjin idee hokker de poarte of sesnûmer binne as wy de lettere fragminten drukke. Twadder is de tcp-sesje-ynformaasje yn 'e earste rigel gedrukt as as der 308 bytes fan brûkersgegevens wienen, as it feitlik binne 512 bytes (308 yn it earste frag en 204 yn' t twadde). As jo ​​nei lokaasjes sykje yn 'e sesje-romte of besykje te besykjen mei pakjes, kin dit dulk wêze.

In pakket mei de IP is gjin fragmintflag is markearre mei in trailing (DF) .

Timestamps

Standert binne alle útfierlinen foarôfgeand oan in timestamp. De timestamp is de aktuele klok yn 'e foarm

hh: mm: ss.frac

en is krekt genôch as de klok fan 'e kernel. De timestamp reflektet de tiid dat de kerniel earst it pakket seach. Der is gjin probleem makke om te rekkenjen foar de tiid ferliezen tusken as de ethernet-ynterface it pakket fuortsmiten hat út it draad en as de kernel de nije 'nije pakket' ûnderbrekt.

SJOCH EK

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

Wichtich: Brûk de manbehearder ( % man ) om te sjen hoe't in kommando brûkt wurdt op jo bepaalde komputer.