Tcpdump - Linux Command - Unix-komento

NIMI

tcpdump - dumpiliikenne verkossa

SYNOPSIS

tcpdump [ -adeflnNOpqRStuvxX ] [ -c count ]

[ -C- tiedosto ] [ -F- tiedosto ]

[ -i- rajapinta ] [ -m- moduuli ] [ -r- tiedosto ]

[ -s snaplen ] [ -T tyyppi ] [ -U käyttäjä ] [ -w tiedosto ]

[ -E algo: salaisuus ] [ lauseke ]

KUVAUS

Tcpdump tulostaa pakettien otsikot verkkokäyttöliittymään, joka vastaa boolean lauseketta . Se voidaan myös suorittaa -w- lippua käyttäen, jolloin se pakettidatan tallentuu tiedostoon myöhempää analyysiä varten ja / tai -r- lippua käyttäen, joka saa sen lukemaan tallennetusta pakettitiedostosta pakettien lukemisen sijasta verkkoliittymästä. Kaikissa tapauksissa vain pakettien, jotka vastaavat ilmaisua , käsitellään tcpdumpilla .

Tcpdump jatkaa pakettien kaappaamista, ellei sitä käytetä -c- lippua, kunnes se keskeytyy SIGINT-signaalin avulla (generoidaan esimerkiksi kirjoittamalla keskeytysmerkki, tyypillisesti ohjaus-C) tai SIGTERM-signaali (tyypillisesti tuotetaan tapetuksella (1) komento); jos se ajetaan -c lippua käyttäen, se kaappaa paketit, kunnes se keskeytyy SIGINT- tai SIGTERM-signaalilla tai tietty määrä paketteja on käsitelty.

Kun tcpdump lopettaa pakettien kaappaamisen, se raportoi seuraavista:

paketit `` vastaanotetaan suodattimella '' (sen merkitys riippuu OS: stä, jolle ajetaan tcpdumpia ja mahdollisesti käyttöjärjestelmän määrittämisessä - jos komentorivillä on määritetty suodatin, joissakin käyttöjärjestelmissä se laskee paketit riippumatta siitä, täyttyivätkö ne suodattimen ilmentymän kanssa, ja muissa OS-järjestelmissä se laskee vain paketteja, jotka suodattimen ilmentymä sopivat yhteen ja joita käsittelivät tcpdump );

paketit `` pudotetaan ytimellä '' (tämä on niiden pakettien määrä, jotka pudotettiin puskuritilan puutteen vuoksi, pakettien kaappausmekanismilla OS: ssä, johon tcpdump on käynnissä, jos OS ilmoittaa tiedot sovelluksiin; jos ei, se ilmoitetaan 0).

SIGINFO-signaalia tukevilla alustoilla, kuten useimmilla BSD-levyillä, se ilmoittaa laskutoimituksista, kun se vastaanottaa SIGINFO-signaalin (joka syntyy esimerkiksi kirjoittamalla `` status''merkki, tyypillisesti ohjaus-T) ja jatkaa pakettien kaappaamista .

Pakettien lukeminen verkkoliitännästä voi edellyttää, että sinulla on erityisiä käyttöoikeuksia:

SunOS 3.x: ssä tai 4.x: ssä NIT: n tai BPF: n kanssa:

Sinulla on oltava pääsy lukemaan / dev / nit tai / dev / bpf * .

Solaris-järjestelmässä, jossa on DLPI:

Sinulla on oltava luku / kirjoitusoikeus verkon pseudo-laitteeseen, esim. / Dev / le . Ainoastaan ​​joidenkin Solaris-versioiden osalta tämä ei kuitenkaan riitä, jotta tcpdump voidaan kaapata väärin. näissä Solaris-versioissa sinun on oltava juuri, tai tcpdump on asennettava asetettu juuriksi, jotta se voidaan tallentaa halveksitilassa. Huomaa, että monissa (ehkä kaikkiin) rajapintoihin, jos et kaapata vääristyneessä tilassa, et näe lähteviä paketteja, joten kaappaaminen, jota ei ole tehty halveksitilassa, ei ehkä ole kovin hyödyllinen.

HP-UX: n käyttö DLPI: n kanssa:

Sinun on oltava root tai tcpdump on asennettava setuid root.

Sisällä IRIX: n avulla:

Sinun on oltava root tai tcpdump on asennettava setuid root.

Linuxissa:

Sinun on oltava root tai tcpdump on asennettava setuid root.

Ultrix ja Digital UNIX / Tru64 UNIX:

Jokainen käyttäjä voi kaapata verkkoliikenteen tcpdumpilla . Kuitenkaan mikään käyttäjä (ei edes super käyttäjä) voi kaapata epäyhteensopivassa tilassa rajapinnassa, ellei super-käyttäjä ole mahdollistanut räätälöityä toimintatapaa kyseisellä rajapinnalla käyttämällä pfconfig (8): ta eikä kukaan käyttäjä (ei edes super-käyttäjä ) voi kaapata unicast-liikennettä, jonka kone vastaanottaa tai lähettää liitännässä, ellei super-käyttäjä ole mahdollistanut kopiointitilan käyttöä kyseisellä rajapinnalla käyttäen pfconfig-tekniikkaa , joten käyttöliittymän käyttökelpoinen pakettien kaappaaminen edellyttää todennäköisesti, että joko halveksitila tai kopio -all-mode -toiminto tai molemmat toimintatavat on otettu käyttöön kyseisellä rajapinnalla.

BSD: n mukaan:

Sinulla on oltava lukukelpoinen käyttöoikeus / dev / bpf * .

Tallennetun pakettitiedoston lukeminen ei vaadi erityisiä oikeuksia.

VAIHTOEHDOT

-a

Yritä muuntaa verkko- ja yleislähetysosoitteet nimiin.

-C

Poistu vastaanotettujen pakettien vastaanottamisen jälkeen.

-C

Ennen kuin kirjoitat raakapaketin tallennusfilmiin, tarkista, onko tiedosto suurempi kuin tiedostokoko, ja jos on, sulje nykyinen tallennusfilmi ja avaa uusi. Save-tiedostot, kun ensimmäinen savefile on määritetty -w- merkillä, ja sen jälkeen numero, alkaen 2 ja jatkuu ylöspäin. File_size- yksiköt ovat miljoonia tavuja (1 000 000 tavua, ei 1,048,576 tavua).

-D

Dumpata koottu paketti-täsmäytyskoodi ihmisen luettavassa muodossa normaalilähtöön ja lopettamaan.

-dd

Kopioi paketti-täsmäytyskoodi C- ohjelman fragmenttina.

-DDD

Laske paketti-täsmäytyskoodi desimaalilukuina (edeltää laskenta).

-e

Tulosta linkitetyn otsikon jokainen kaatopaikka.

-E

Käytä algo: salaa IPsec ESP-pakettien salauksen purkamiseen. Algoritmit voivat olla des-cbc , 3des-cbc , blowfish-cbc , rc3-cbc , cast128-cbc tai none . Oletusarvo on des-cbc . Pakettien salauksen purkaminen on mahdollista vain, jos tcpdump on koottu kryptografian avulla. salainen ascii-teksti ESP: n salaiselle avaimelle. Emme voi ottaa mielivaltaista binaarista arvoa tällä hetkellä. Vaihtoehto olettaa RFC2406 ESP: n, ei RFC1827 ESP: n. Tämä vaihtoehto on vain virheenkorjausta varten, ja tämän vaihtoehdon käyttäminen todella salaisella avaimella on lannistunut. Esittämällä IPsec-salaisen avaimen komentoriville voit tehdä sen näkyväksi muille ps (1): lla ja muilla yhteyksillä.

-f

Tulosta "ulkomaiset" Internet-osoitteet numeerisesti pikemminkin kuin symbolisesti (tämä vaihtoehto on tarkoitettu lähentämään vakavasti aivovaurioita Sunin yp-palvelimessa --- yleensä se riippuu ikuisesti kääntää muita kuin paikallisia Internet-numeroita).

-F

Käytä tiedostoa syötteenä suodattimen ilmentymänä. Komentoriville annettu ylimääräinen lauseke jätetään huomiotta.

-i

Kuuntele käyttöliittymää . Jos ei ole määritelty, tcpdump etsii järjestelmän alaliittymäluettelon alimmalle numeroitua, konfiguroitua käyttöliittymää (poislukien loopback). Solmiot rikkoutuvat valitsemalla aikaisimman ottelun.

Linux-järjestelmissä, joissa on 2.2 tai uudempi ydin, voidaan käyttää rajapintasymbolia `` any''-liitoksesta kaikkien rajapintojen pakettien kaappaamiseen. Huomaa, että kaappauksia `` mistään '' laitteessa ei tapahdu hämärässä tilassa.

-l

Tee stdout-rivi puskuroitu. Hyödyllinen, jos haluat nähdä tiedot kaapattaessa sitä. Esim,
`` tcpdump -l | tee dat '' tai `` tcpdump -l> dat & tail -f dat ''.

-m

Lataa SMI MIB -moduulin määritelmät tiedostomoduulista. Tätä vaihtoehtoa voidaan käyttää useita kertoja ladataksesi useita MIB-moduuleita tcpdumpiksi .

-n

Älä muunna isäntäosoitteita nimiin. Tätä voidaan käyttää DNS-hakujen välttämiseksi.

-nn

Älä muunna pöytäkirjoja, porttinumeroita jne. Nimeen.

-N

Älä tulosta isäntänimien nimetunnusta. Jos annat tämän lippu, tcpdump tulostaa `` nic '' sijasta `` nic.ddn.mil ''.

-O

Älä suorita pakettien yhteensopivien koodien optimointia. Tämä on hyödyllinen vain, jos epäilet virheen optimoijassa.

-p

Älä aseta käyttöliittymää monimutkaiseksi tilaksi. Huomaa, että käyttöliittymä voi olla halveksitilassa muusta syystä; siksi `-p 'ei voi käyttää lyhenteenä` eetterin isännälle {local-hw-addr} tai eetterilähetykselle.

-q

Nopea (hiljainen) lähtö. Tulosta vähemmän protokollatietoja, joten lähtölinjat ovat lyhyempiä.

R

Oletetaan, että ESP / AH-paketit perustuvat vanhoihin määrityksiin (RFC1825 - RFC1829). Jos määritetty, tcpdump ei tulosta toistopyyntökenttään. Koska ESP / AH -spesifikaatiossa ei ole protokollan versiokenttää, tcpdump ei voi päätellä ESP / AH-protokollan versiota.

-r

Lue paketit tiedostosta (joka luotiin -w-vaihtoehdolla). Vakiotuloa käytetään, jos tiedosto on `` - ''.

-S

Tulosta absoluuttiset, ei suhteelliset TCP-sekvenssinumerot.

-S

Snarf- snaplen- tavuista datasta kustakin paketista sen sijaan, että ne olivat 68: n oletusarvoisia (SunOS: n NIT: n kanssa, minimi on oikeastaan ​​96). 68 tavua on riittävä IP, ICMP, TCP ja UDP, mutta voivat katkaista protokollatiedot nimipalvelimelta ja NFS-paketeilta (ks. Alla). Paketit, jotka on katkaistu rajallisen otoksen takia, on merkitty tulostimella `` [| proto ] '', jossa proto on protokollatason nimi, jolla katkaisu on tapahtunut. Huomaa, että suurempien otosten ottaminen lisää sekä pakettien käsittelyyn kuluvaa aikaa että vähentää tehokkaasti pakettipuskurointia. Tämä voi aiheuttaa pakettien menettämisen. Sinun pitäisi rajoittaa snaplen pienimpään numeroon, joka kaappaa protokollatiedot, joista olet kiinnostunut. Snaplenin asettaminen arvoon 0 tarkoittaa sitä, että käytät vaadittua pituutta kokonaisten pakettien lukitsemiseen .

-T

Force-paketit, jotka on valittu " lausekkeella ", tulkittava määritetyllä tyypillä . Tällä hetkellä tunnetut tyypit ovat cnfp (Cisco NetFlow-protokolla), rpc (Remote Procedure Call), rtp (reaaliaikaiset sovellusprotokollat), rtcp (reaaliaikainen sovellusohjausprotokolla), snmp (Simple Network Management Protocol) ) ja wb (hajautettu valkoinen hallitus).

-t

Älä tulosta aikaleimaa jokaiselle tyhjennyslinjalle.

-TT

Tulosta muotoilematon aikaleima jokaiseen tyhjennyslinjaan.

-U

Pudottaa pääkäyttäjän oikeudet ja muuttaa käyttäjätunnuksen käyttäjä- ja ryhmätunnukseksi ensisijaiseksi käyttäjäryhmälle .

Huomautus! Red Hat Linux pudottaa automaattisesti käyttöoikeudet käyttäjän "pcap" -ohjelmaan, ellei muuta ole määritelty.

-ttt

Tulosta delta (mikro-sekunteina) nykyisen ja edellisen rivin välillä jokaisessa tyhjennysviivassa.

-tttt

Tulosta aikaleima oletusmuodossa, joka etenee jokaisen tyhjennysviivan päivämäärän mukaan.

-u

Tulosta ei-koodattuja NFS-kädensijoita.

-v

(Hieman enemmän) verbose output. Esimerkiksi IP-paketin elinkaari, tunnistaminen, kokonaispituus ja vaihtoehdot tulostetaan. Sallii lisäksi pakettien eheystarkastukset, kuten IP- ja ICMP-otsikon tarkistussumman tarkastamisen.

-vv

Vielä verbose output. Esimerkiksi NFS-vastauspaketeista tulostetaan lisää kenttiä, ja SMB-paketit on kokonaan dekoodattu.

-vvv

Vielä verbose output. Esimerkiksi telnet SB ... SE -asetukset tulostetaan kokonaan. With -X telnet -asetukset tulostetaan myös heksadesimaalina.

-W

Kirjoita raakapaketit tiedostoon sen sijaan, että jäsennät ja tulostat ne. Ne voidaan myöhemmin tulostaa -r-vaihtoehdolla. Vakiolähtöä käytetään, jos tiedosto on `` - ''.

-x

Tulosta jokaisen paketin (vähennetään sen linkitason otsikko) heksadesimaalisesti. Pienempi koko paketti tai snaplen tavua tulostetaan. Huomaa, että tämä on koko linkkerikerroksinen paketti, joten linkkikerrosten tasolle (esim. Ethernet) myös pehmustetut tavut tulostetaan, kun korkeamman kerroksen paketti on lyhyempi kuin vaadittu pehmuste.

X

Kun tulostat kuusikulmia, tulosta myös ascii. Siten jos -x on myös asetettu, paketti tulostetaan hex / ascii. Tämä on kätevää uusien protokollien analysoimiseksi. Vaikka -x ei ole myöskään asetettu, osa paketeista osa voidaan tulostaa hex / ascii-muodossa.

ilmaisu

valitsee, mitä paketteja poltetaan. Jos mitään lauseketta ei anneta, kaikki verkon paketit polkevat. Muussa tapauksessa vain paketit, joiden ilmaisu on "true", jätetään ulos.

Ilmaisu koostuu yhdestä tai useammasta primitiivistä. Ensimärit koostuvat yleensä tunnuksesta (nimestä tai numerosta), jota edeltää yksi tai useampi karsinta. On olemassa kolme erilaista karsintaturnausta:

tyyppi

karsinta sanoo, millaista asiaa id nimi tai numero viittaa. Mahdolliset tyypit ovat isäntä , verkko ja portti . Esim. "Host foo", "net 128.3", "portti 20". Jos tyyppiä ei ole, hakija oletetaan.

dir

määrittelevät tietyn siirtosuunnan ja / tai ID: stä . Mahdolliset ohjeet ovat src , dst , src tai dst ja src ja dst . Esimerkiksi `src foo ',` dst net 128.3', `src tai dst port ftp-data '. Jos dir qualifier ei ole, src tai dst oletetaan. `Null 'linkkikerrosten (eli pisteiden väliset protokollat, kuten liukumäki), saapuville ja lähteville karsinnoille voidaan käyttää haluttua suuntaa.

Proto

karsinnat rajoittavat ottelun tietylle protokollalle. Mahdolliset protot ovat: eetteri , fddi , tr , ip , ip6 , arp , rarp , decnet , tcp ja udp . Esimerkiksi "ether src foo", "arp net 128.3", "tcp-portti 21". Jos proto-kelpoisuutta ei ole, kaikki tyypin mukaiset protokollat ​​oletetaan. Esimerkiksi `` src foo '' tarkoittaa (ip tai arp tai rarp) src foo '(paitsi että jälkimmäinen ei ole laillista syntaksia),' net bar 'tarkoittaa `(ip tai arp tai rarp) net bar' ja 'port 53' (tcp tai udp) portti 53 '.

[`fddi 'on oikeastaan ​​aliaste` eetterille'; parseri käsittelee ne identtisesti merkitsevästi "määritellyn verkkorajapinnan tietoliikennetasolla." FDDI-otsakkeissa on Ethernet-tyyppisiä lähde- ja kohdeosoitteita ja ne sisältävät usein Ethernet-tyyppisiä pakettityyppejä, joten voit suodattaa nämä FDDI-kentät aivan kuten analogisilla Ethernet-kentillä. FDDI-otsakkeissa on myös muita kenttiä, mutta et voi nimetä niitä nimenomaisesti suodattimessa.

Vastaavasti `tr 'on aliet" eetterille "; edellisen kappaleen lausunnot FDDI-otsakkeista koskevat myös Token Ring -otsikoita.]

Edellä mainittujen lisäksi on olemassa joitain "primitiivisiä" avainsanoja, jotka eivät noudata mallia: yhdyskäytävä , lähetys , vähemmän , suurempia ja aritmeettisia ilmaisuja. Kaikki nämä on kuvattu alla.

Monimutkaisempia suodattimen ilmaisuja syntyy sanojen avulla ja , tai eivätkä yhdistä primitiivejä. Esim. `Host foo eikä port ftp eikä port ftp-data '. Työntämisen tallentamiseksi samanlaiset karsintaluettelot voidaan jättää pois. Esimerkiksi `tcp dst port ftp tai ftp-data tai domain 'on täsmälleen sama kuin` tcp dst portti ftp tai tcp dst portti ftp-data tai tcp dst -porttialue'.

Sallitut primitiivit ovat:

dst- isäntä

Todellinen, jos paketin IPv4 / v6-kohdealue on isäntä , joka voi olla joko osoite tai nimi.

src- isäntä

Totta, jos paketin IPv4 / v6 lähdekenttä on isäntä .

isäntä isäntä

Todellinen, jos joko IPv4 / v6-lähde tai paketin kohde on isäntä . Mikä tahansa edellä mainituista isäntämerkistä voidaan liittää avainsanoilla, ip , arp , rarp tai ip6, kuten:

ip- isäntä

joka vastaa:

eetterin proto \ ip ja isännän isäntä

Jos isäntä on nimi, jossa on useita IP-osoitteita, jokainen osoite tarkistetaan ottelusta.

eetteri dst ehost

Todellinen, jos ethernet-kohdeosoite on ehost . Ehost voi olla joko nimi / etc / ethers tai numero (ks. Eetterit (3N) numeerisessa muodossa).

eetteri src ehost

Todellinen, jos ethernet-lähdeosoite on ehost .

eetteri isäntä ehost

Tosi, jos ethernet-lähde tai kohdeosoite on ehost .

yhdyskäytävän isäntä

Totta, jos paketti käytti isäntää yhdyskäytävänä. Eli ethernet-lähde tai kohdeosoite oli isäntä, mutta IP-lähde tai IP-kohde eivät olleet vastaanottajia . Isännän on oltava nimi, ja se on löydettävä sekä koneen isäntänimeä-IP-osoitteiden resoluutiomekanismeista (isäntänimi- tiedosto, DNS, NIS, jne.) Ja koneen isäntä-nimi-ethernet-osoitteen resoluutio mekanismi (/ etc / ethers jne.). (Vastaava ilmaus on

eetteri isäntä EHOST eikä isäntä isäntä

jota voidaan käyttää joko nimet tai numerot isäntä / ehost .) Tämä syntaksi ei toimi tällä hetkellä IPv6-yhteensopivassa kokoonpanossa.

dst net net

Totta, jos paketin IPv4 / v6-kohdeosoitteella on verkon numero. Verkko voi olla joko nimi / etc / networks tai verkon numero (katso lisätietoja verkosta (4 ).

src net net

Totta, jos paketin IPv4 / v6-lähdeosoitteella on verkon numero.

net net

Todellinen, jos joko paketin IPv4 / v6-lähde tai määränpään osoite on verkon verkon numero.

net net mask netmask

Totta, jos IP-osoite vastaa verkkoa tietyn verkkopeuden kanssa . Voi olla pätevöity src tai dst . Huomaa, että tämä syntaksi ei ole voimassa IPv6- verkossa .

net net / len

Totta, jos IPv4 / v6-osoite vastaa verkkoa, jossa net- maski len- bittiä leveä. Voi olla pätevöity src tai dst .

dst-portin porttiin

Totta, jos paketti on ip / tcp, ip / udp, ip6 / tcp tai ip6 / udp ja sillä on portin kohdeporttiarvo. Satama voi olla numero tai nimi, jota käytetään / etc / services (ks. Tcp (4P) ja udp (4P)). Jos käytetään nimeä, sekä portin numero että protokolla tarkistetaan. Jos käytetään numeroa tai epäselvätä nimeä, vain sataman numero tarkistetaan (esim. Dst-portti 513 tulostaa sekä tcp / login-liikennettä että udp / liikennettä ja porttialue tulostaa sekä tcp / domain- että udp / domain-liikenteen).

src-porttisatamaan

Todellinen, jos pakettiin on portin lähdeporttiarvo .

porttisatama

Tosi, jos paketin lähde tai kohdeportti on portti . Jokin edellä mainituista satama-ilmaisuista voidaan korvata avainsanoilla, tcp: llä tai udp: lla , kuten:

tcp src -porttiportti

joka vastaa vain TCP-paketteja, joiden lähdesatama on portti .

vähemmän pituutta

Totta, jos paketin pituus on pienempi tai yhtä suuri kuin pituus . Tämä vastaa:

len <= pituus .

suurempi pituus

Totta, jos paketin pituus on suurempi tai yhtä suuri kuin pituus . Tämä vastaa:

len> = pituus .

ip protokolliin

Totta, jos paketti on IP-paketti (katso ip (4P)) protokollatyyppiprotokollasta . Protokolla voi olla numero tai yksi nimiä icmp , icmp6 , igmp , igrp , pim , ah , esp , vrrp , udp tai tcp . Huomaa, että tcp- , udp- ja icmp- tunnisteet ovat myös avainsanoja, ja ne on poistettava käänteisarkilla (\), joka on \\ C-shellissa. Huomaa, että tämä alkukirjain ei ajaa protokollan otsikkoketjua.

ip6 protokolliin

Totta, jos paketti on protokollatyyppiprotokollan IPv6-paketti. Huomaa, että tämä alkukirjain ei ajaa protokollan otsikkoketjua.

ip6- protokollien protokollaa

Totta, jos paketti on IPv6-paketti ja sisältää protokollan otsikon, jolla on tyyppiprotokolla sen protokollan otsikkoketjussa. Esimerkiksi,

ip6-protokolla 6

vastaa mitä tahansa IPv6-pakettia, jossa on TCP-protokollan otsikko protokollan otsikkoketjussa. Paketti voi sisältää esimerkiksi autentikointiotsikon, reititysotsikon tai hop-by-hop -otsikon, IPv6-otsikon ja TCP-otsikon välillä. Tämän alkukirjaimen lähettämä BPF-koodi on monimutkainen eikä sitä voida optimoida BPF-optimointikoodilla tcpdumpissa , joten se voi olla jonkin verran hidasta.

ip- protokollien protokollaa

Vastaa ip6- protokolliin , mutta tämä koskee IPv4- protokollaa .

eetterilähetys

Totta, jos paketti on ethernet-lähetyspaketti. Eetterin avainsana on vapaaehtoinen.

ip-lähetystä

Totta, jos paketti on IP-lähetyspaketti. Se tarkistaa sekä nollia että kaikkia lähetyssopimuksia ja etsii paikallisen aliverkon peitteen.

eetteriryhmä

Totta, jos paketti on ethernet-ryhmälähetyspaketti. Eetterin avainsana on vapaaehtoinen. Tämä on lyhennelmä " eetterille [0] & 1! = 0 ".

ip multicast

Totta, jos paketti on IP-ryhmälähetyspaketti.

ip6-ryhmälähetys

Totta, jos paketti on IPv6-ryhmälähetyspaketti.

eetteriprotokolla

Totta, jos paketti on eetterityypin protokollaa . Protokolla voi olla numero tai yksi nimistä ip , ip6 , arp , rarp , atalk , aarp , decnet , sca , lat , mopdl , moprc , iso , stp , ipx tai netbeui . Huomaa, että nämä tunnisteet ovat myös avainsanoja, ja ne on poistettava käänteisarkilla (\).

[FDDI: n tapauksessa (esim. ` Fddi protocol arp ') ja Token Ring ( esim.` Tr protocol arp ') useimmille näistä protokollista protokollan tunniste tulee 802.2 Logical Link Control (LLC) -otsakkeesta yleensä kerrostetaan FDDI: n tai Token Ring -otsikon päälle.

Suodatettaessa useimmat protokollatunnisteet FDDI: llä tai Token Ringilla, tcpdump tarkistaa vain LLC: n otsikon protokollan ID-kentän niin sanotussa SNAP-muodossa, jossa on 0x000000: n organisatorisen yksikön tunniste (OUI) kapseloidulle Ethernet: lle; se ei tarkista, onko paketti SNAP-muodossa, jonka OUI on 0x000000.

Poikkeukset ovat iso , mistä se tarkistaa LLC-otsikon, stp: n ja netbeui: n DSAP (Destination Service Access Point) ja SSAP (Source Service Access Point) -kentät, joissa se tarkistaa LLC: n otsikon DSAP: n ja atalkin , jossa se tarkistaa SNAP-formaattipaketin, jonka OUI on 0x080007 ja Appletalk etype.

Ethernetissa tcpdump tarkistaa Ethernet-tyyppikentän useimmille näistä protokollista; poikkeukset ovat iso , sap ja netbeui , joita varten se tarkistaa 802.3-kehyksen ja sitten tarkistaa LLC-otsikon kuin FDDI: lle ja Token Ringille , atalk , jossa se tarkistaa sekä Appletalk etypeä Ethernet-kehyksessä että SNAP-formaattipaketti, kuten FDDI: lle ja Token Ringille, aarp, jossa se tarkistaa Appletalk ARP -tyypin joko Ethernet-kehyksessä tai 802.2 SNAP -kehyksellä, jonka OUI on 0x000000 ja ipx , jossa se tarkistaa IPX-etyylin Ethernet-kehys, IPX DSAP LLC-otsakkeessa, 802.3 ilman IPX: n LLC-otsakkeen kapselointia ja IPX-etyypin SNAP-kehyksessä.]

decnet src isäntä

Tosi, jos DECNET-lähdeosoite on isäntä , joka voi olla lomakkeen osoite "10.123" tai DECNET-isäntänimi. [DECNET-isäntätuen tuki on käytettävissä vain Ultrix-järjestelmissä, jotka on määritetty suorittamaan DECNET.]

decnet dst isäntä

Tosi, jos DECNET-kohdeosoite on isäntä .

decnet- isäntä

Tosi, jos joko DECNET-lähde tai kohdeosoite on isäntä .

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

Lyhenteet:

eetteriproto p

jossa p on yksi edellä mainituista protokollista.

lat , moprc , mopdl

Lyhenteet:

eetteriproto p

jossa p on yksi edellä mainituista protokollista. Huomaa, että tcpdump ei tällä hetkellä osaa jäsentää näitä protokollia.

vlan [vlan_id]

Totta, jos paketti on IEEE 802.1Q VLAN-paketti. Jos [vlan_id] on määritetty, vain true on paketti, jolla on määritetty vlan_id . Huomaa, että ekspressiossa havaittu ensimmäinen vlan- avainsana muuttaa ekspression loppuosan dekoodausliikkeitä olettaen, että paketti on VLAN-paketti.

tcp , udp , icmp

Lyhenteet:

ip proto p tai ip6 proto p

jossa p on yksi edellä mainituista protokollista.

iso proto- protokolla

Totta, jos paketti on protokollatyyppiprotokollan OSI-paketti. Protokolla voi olla numero tai yksi nimistä clnp , esis tai isis .

clnp , esis , isis

Lyhenteet:

iso proto p

jossa p on yksi edellä mainituista protokollista. Huomaa, että tcpdump tekee epätäydellisen työn jäsentää näitä protokollia.

expr relop expr

Todellinen, jos suhde vallitsee, missä relop on yksi>, <,> =, <=, = ,! = Ja expr on aritmeettinen lauseke, joka koostuu kokonaislukuvakioista (ilmaistuna standardin C syntaksissa), normaaleja binäärioperaattoreita [+ , -, *, /, &, |], pituusoperaattori ja erityiset pakettidatayhteydet. Voit käyttää paketin sisältämiä tietoja käyttämällä seuraavaa syntaksia:

proto [ expr : koko ]

Proto on eetteri, fddi, tr, ppp, slip, linkki, ip, arp, rarp, tcp, udp, icmp tai ip6 ja ilmaisee protokollakerroksen indeksitoiminnolle. Huomaa, että tcp, udp ja muut ylemmän kerroksen protokollatyypit koskevat vain IPv4: ää, ei IPv6: tä (tämä vahvistetaan tulevaisuudessa). Byte offset, suhteessa ilmoitettuun protokollakerrokseen, annetaan ilmais . Koko on valinnainen ja ilmaisee tavujen lukumäärän kiinnostuksen alalla. se voi olla joko yksi, kaksi tai neljä ja oletusarvoisesti yksi. Pituusoperaattori , jonka ilmaisee avainsana len , antaa paketin pituuden.

Esimerkiksi " eetteri [0] & 1! = 0 " saa kaiken monilähetysliikenteen. Ilmaisu " ip [0] & 0xf! = 5 " saa kaikki IP-paketit, joilla on vaihtoehtoja. Ilmaisu " ip [6: 2] & 0x1fff = 0 " saa vain kehittymättömiä datagrammeja ja fragmentoituja datagrammeja. Tätä tarkistusta sovelletaan epäsuorasti tcp- ja udp- indeksioperaatioihin. Esimerkiksi tcp [0] tarkoittaa aina TCP- otsikon ensimmäistä tavua eikä koskaan ole välivaiheen ensimmäisen tavun tavua.

Jotkut offset- ja kentän arvot voidaan ilmaista nimiksi pikemminkin kuin numeerisina arvoina. Seuraavat protokollan otsikkokenttäpoikkeukset ovat käytettävissä: icmptype (ICMP-tyyppikenttä), icmpcode (ICMP- koodikenttä ) ja tcpflags (TCP- lippukenttä ).

Käytettävissä ovat seuraavat ICMP-tyyppiset kenttäarvot: icmp -echoreply , icmp -unreach , icmp -sourcequench , icmp -redirect , icmp-echo , icmp -routeradvert , icmp -routersolicit , icmp -timxceed , icmp -paramprob , icmp -tstamp , icmp -display , icmp -ireq , icmp -ireqreply , icmp -maskreq , icmp -maskreply .

Seuraavat TCP-merkkikenttäarvot ovat käytettävissä: tcp-fin , tcp-syn , tcp-rst , tcp-push , tcp-push , tcp-ack , tcp-urg .

Primitives voidaan yhdistää käyttämällä:

Sulkeutunut ryhmä primitiivejä ja operaattoreita (sulkeet ovat erityisiä Shellille ja ne on pakko välttää).

Negation (` ! 'Tai' no ').

Yhdistelmä (` && ' tai` ja ').

Vaihtoehto (` || 'tai` tai ').

Negationilla on korkein etusija. Vaihto ja ketjuttaminen ovat yhtäläisiä etuoikeuksia ja liittävät vasemmalta oikealle. Huomaa, että ketjuttamiseen tarvitaan nyt nimenomainen ja rahakkeita, ei vastaavuutta.

Jos tunniste annetaan ilman avainsanaa, oletetaan viimeisin avainsana. Esimerkiksi,

ei isäntä vs ja ässä

on lyhyt

ei isäntä vs ja isäntä ässä

jota ei pidä sekoittaa

ei (isäntä vs tai ässä)

Ekspressiosignaalit voidaan siirtää tcpdumpiksi joko yhtenä argumenttina tai useina argumentteina kumpi tahansa on kätevämpää. Yleensä, jos lauseke sisältää Shellin metakaraktereja, on helpompi siirtää se yksittäisenä, lainattuna argumenttina. Useita argumentteja ketjutetaan välilyönneillä ennen jäsentämistä.

Esimerkit

Voit tulostaa kaikki aamupäivällä saapuvat tai lähtevät paketit seuraavasti:

tcpdump isäntänä sundown

Voit tulostaa liikennettä helios ja joko kuuma tai ässä :

tcpdump isäntä helios ja \ (kuuma tai ässä \)

Kaikkien IP-pakettien tulostaminen ässä ja mikään isäntä, paitsi helios :

tcpdump ip isäntä ässä eikä helios

Tulosta kaikki Berkeleyn isäntien ja isäntämaiden välinen liikenne:

tcpdump net ucb-eetteri

Tulostaa kaikki ftp-liikennettä internet-yhdyskäytävän snup kautta : (Huomaa, että lauseke on mainittu estääkseen kuoren sulkeista tulkinnasta):

tcpdump "gateway snup ja (port ftp tai ftp-data)"

Tulostaa liikennettä, jota ei ole peräisin paikallisilta isäntäkoneilta (jos siirrät yhdelle muulle verkolle, tämä aine ei saisi koskaan tehdä sitä paikalliselle verkostolle).

tcpdump ip ja ei net localnet

Tulostaa kussakin TCP-keskustelussa aloitus- ja loppupaketit (SYN- ja FIN-paketit), joihin liittyy ei-paikallinen isäntä.

tcp-syn | tcp-fin)! = 0 ja ei src ja dst net localnet ' tcpdump' tcp [ tcpflags ]

Voit tulostaa IP-paketteja yli 576 tavua, jotka lähetetään yhdyskäytävän snup kautta:

tcpdump 'yhdyskäytävä snup ja ip [2: 2]> 576'

Voit tulostaa IP-lähetys- tai multicast-paketteja, joita ei lähetetty ethernet-lähetyksen tai monilähetyksen kautta:

tcpdump 'eetteri [0] & 1 = 0 ja ip [16]> = 224'

Tulosta kaikki ICMP-paketit, jotka eivät ole echo-pyyntöjä / vastauksia (eli ei ping-paketteja):

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

OUTPUT FORMAT

Tcpdump- tuloste on protokolla riippuvainen. Seuraavassa on lyhyt kuvaus ja esimerkkejä useimmista formaateista.

Linkitason otsikot

Jos -e-vaihtoehto annetaan, linkitason otsikko tulostetaan. Ethernetsissä tulostetaan lähde- ja kohdeosoitteet, protokolla ja paketin pituus.

FDDI-verkoissa "-e" -vaihtoehdolla tcpdump tulostaa `frame control '-kentän, lähde- ja kohdeosoitteet sekä paketin pituuden. Normaalit paketit (kuten IP-datagrammeja sisältävät) ovat `async'-paketteja, joiden prioriteettiarvo on välillä 0 ja 7, esimerkiksi ' async4 '. pakettien oletetaan sisältävän 802.2 Logical Link Control (LLC) -paketin, LLC-otsikko tulostetaan, jos se ei ole ISO-datagrammi tai niin sanottu SNAP-paketti.

Token Ring -verkoissa "-e" -vaihtoehdolla tcpdump tulostaa "pääsynvalvonta" ja "kehyksenvalvonta" kentät, lähde- ja kohdeosoitteet sekä paketin pituuden. Kuten FDDI-verkoissa, pakettien oletetaan sisältävän LLC-paketin. Riippumatta siitä, onko "-e" -vaihtoehto määritetty vai ei, lähdereititysinformaatio tulostetaan lähdepaketeille.

(Huom. Seuraavassa kuvauksessa oletetaan perehtyneenä RFC-1144: ssa kuvattuun SLIP-puristusalgoritmiin.)

SLIP-yhteyksissä tulostetaan suunnan osoitin ("I", "lähtevät", "O" lähtevät), pakettityyppi ja pakkaustiedot. Paketin tyyppi tulostetaan ensin. Kolme tyyppiä ovat ip , utcp ja ctcp . IP- paketeille ei tulosteta muita linkkitietoja. TCP-paketteja varten yhteystunniste tulostetaan tyypin mukaan. Jos paketti pakataan, sen koodattu otsikko tulostetaan. Erikoistapaukset tulostetaan nimellä * S + n ja * SA + n , missä n on määrä, jolla järjestysnumero (tai järjestysnumero ja ack) on muuttunut. Jos se ei ole erityinen tapaus, tulostetaan nolla tai useampi muutos. Muutos on U (kiireellinen osoitin), W (ikkuna), A (ack), S (järjestysnumero) ja I (pakettidunnus), jota seuraa delta (+ n tai -n) tai uusi arvo (= n). Lopuksi pakattujen tietojen ja pakatun otsikon pituuden tiedot tulostetaan.

Esimerkiksi seuraava rivi näyttää lähtevän pakatun TCP-paketin, jossa on implisiittinen yhteysanturi; ack on muuttunut 6: llä, sekvenssinumerolla 49 ja pakettidunnuksella 6; on 3 tavua dataa ja 6 tavua pakattua otsikkoa:

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

ARP / RARP-paketit

Arp / rarp-ulostulo näyttää pyynnön tyypin ja sen argumentit. Muodon on tarkoitus olla itsestään selittävä. Seuraavassa on lyhyt näyte, joka otettiin rlogin alusta alkaen isännästä rtsg: sta host csam :

arp who-has csam kertoa rtsg arp vastaus csam on CSAM

Ensimmäinen rivi kertoo, että rtsg lähetti arp-paketin, jossa kysyttiin internet-isäntänavien ethernet-osoitetta. Csam vastaa ethernet-osoitteensa (tässä esimerkissä ethernet-osoitteet ovat caps- ja internet-osoitteissa pienessä tapauksessa).

Tämä olisi vähemmän tarpeetonta, jos olisimme tehneet tcpdump -n :

arp kuka-on 128.3.254.6 kerro 128.3.254.68 arp vastaus 128.3.254.6 on-02: 07: 01: 00: 01: c4

Jos olisimme tehneet tcpdump -e: n , se, että ensimmäinen paketti lähetetään ja toinen on pisteestä pisteeseen nähtäväksi:

RTSG Broadcast 0806 64: arp who-has csam tell rtsg CSAM RTSG 0806 64: arp vastaus csam on CSAM

Ensimmäisessä paketissa tämä sanoo, että ethernet-lähdeosoite on RTSG, kohde on ethernet-lähetysosoite, tyyppi kenttä, joka sisälsi hex 0806 (tyyppi ETHER_ARP) ja kokonaispituus 64 tavua.

TCP-paketit

(Huomautus: Seuraava kuvaus edellyttää tunnetta RFC-793: ssä kuvattua TCP-protokollaa. Jos et ole perehtynyt protokollan kanssa, niin tämä kuvaus tai tcpdump ei ole kovinkaan hyödyllinen sinulle.)

Tcp-protokollarivin yleinen muoto on:

src> dst: flags data-seqno ack ikkuna kiireelliset vaihtoehdot

Src ja dst ovat lähde- ja kohde-IP-osoitteet ja -portit. Liput ovat osa S (SYN), F (FIN), P (PUSH) tai R (RST) tai yhtä `. ' (ei lippuja). Data-seqno kuvaa tässä paketissa olevien tietojen peittämää sekvenssitilaa (ks. Alla oleva esimerkki). Ack on seuraavan datan järjestysnumero, joka odottaa toisen suuntaa tällä yhteydellä. Ikkuna on vastaanottavan puskuritilan tavut tavut käytettävissä toisella suunnalla tällä yhteydellä. Urg ilmaisee, että paketissa on "kiireellisiä" tietoja. Vaihtoehdot ovat tcp-vaihtoehtoja, jotka on suljettu kulmakappaleisiin (esim. ).

Src, dst ja liput ovat aina läsnä. Muut kentät riippuvat paketin tcp-protokollan otsakkeen sisällöstä ja ne tulostetaan vain tarvittaessa.

Tässä on rlogin avaava osa isännästä rtsg: stä isäntäkoneelle.

rtsg.1023> csam.login: S 768512: 768512 (0) voittaa 4096 csam.login> rtsg.1023: S 947648: 947648 (0) ack 768513 voittaa 4096 rtsg.1023> csam. Kirjaudu sisään: . ack 1 voitto 4096 rtsg.1023> csam.login: P 1: 2 (1) ack 1 voitto 4096 csam.login> rtsg.1023:. ack 2 voitto 4096 rtsg.1023> csam.login: P 2:21 (19) ack 1 voitto 4096 csam.login> rtsg.1023: P 1: 2 (1) ack 21 voittaa 4077 csam.login> rtsg.1023: P 2: 3 (1) ack 21 voittaa 4077 urg 1 csam.login> rtsg.1023: P 3: 4 (1) ack 21 voittaa 4077 urg 1

Ensimmäinen rivi kertoo, että tcp-portti 1023 rtsg: ssä lähetti paketin portin kirjautumiseen csam: ssä. S osoittaa, että SYN- lippu on asetettu. Paketin järjestysnumero oli 768512 ja se sisälsi tietoja. (Merkintä on "ensimmäinen: viimeinen (nbytes)", joka tarkoittaa "järjestysnumeroita ensin , mutta ei viimeistä, mikä on nbytes tavua käyttäjädataa".) Ei ollut poskipohjaista ackia , käytettävissä oleva vastaanottoikkuna oli 4096 tavua ja kapasiteettikokoista vaihtoehtoa pyydettiin mss 1024 tavua.

Csam vastaa samanlaisen paketin kanssa, paitsi että se sisältää piggy-backed ackin rtsg: n SYN: lle. Rtsg sitten acks csam: n SYN. `. ' tarkoittaa, ettei lippuja asetettu. Paketti ei sisältänyt tietoja, joten datan järjestysnumeroa ei ole. Huomaa, että ack-järjestysnumero on pieni kokonaisluku (1). Ensimmäinen kerta, kun tcpdump näkee tcp-keskustelun, se tulostaa järjestysnumeron paketista. Seuraavien keskustelupakettien yhteydessä tulostetaan nykyisen paketin järjestysnumeron ja tämän alkujärjestysnumeron välinen ero. Tämä tarkoittaa sitä, että sekvenssinumerot ensimmäisen jälkeen voidaan tulkita suhteellisen tavun asennoiksi keskustelun datavirrassa (kun ensimmäinen datatavu on jokaisen suunnan ollessa '1'). `-S 'ohittaa tämän ominaisuuden, jolloin alkuperäiset järjestysnumerot tulostetaan.

Kuudennella rivillä rtsg lähettää csam 19 bytes of data (tavut 2 - 20 keskustelun rtsg -> csam puolella). PUSH-lippu on asetettu pakettiin. Seitsemännessä rivissä csam kertoo, että sen vastaanottamat tiedot ovat rtsg: n lähettämiä, mutta ei tavua 21. Useimmat näistä tiedoista näyttävät istuvan puskopuskurissa, koska csam: n vastaanottoikkuna on saanut 19 tavua pienemmäksi. Csam lähettää myös yhden tavun datan rtsg: lle tässä paketissa. 8. ja 9. rivillä csam lähettää kaksi tavua kiireellistä, työnnettyä dataa rtsg: lle.

Jos tilannekuva oli tarpeeksi pieni, että tcpdump ei kaappaa koko TCP-otsikkoa, se tulkitsee niin paljon otsikkoa kuin mahdollista ja sitten raportoi `` [| tcp ] '', jotta jäljellä olevaa osaa ei voitu tulkita. Jos otsakkeessa on väärä vaihtoehto (yksi, jonka pituus on joko liian pieni tai ylätunnisteen loppu), tcpdump ilmoittaa sen `` [ huonoopt ] '' eikä tulkitse muita vaihtoehtoja (koska on mahdotonta kertoa missä ne alkavat). Jos otsikkopituus ilmaisee vaihtoehtoja, mutta IP-datagrammin pituus ei ole tarpeeksi pitkä, jotta vaihtoehdot todella olisivat siellä, tcpdump ilmoittaa sen `` [ bad hdr length ] ''.

TCP-pakettien kaappaaminen tiettyjen lippumerkkien kanssa (SYN-ACK, URG-ACK jne.)

TCP-otsakkeen ohjausbittiosassa on 8 bittiä:

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

Oletetaan, että haluamme tarkkailla paketteja, joita käytetään TCP-yhteyden muodostamiseen. Muista, että TCP käyttää 3-suuntaista kättelyprotokollaa alustettaessa uutta yhteyttä; yhteysjono TCP-ohjausbittien suhteen on

1) Soittaja lähettää SYN: n

2) Vastaanottaja vastaa SYN: llä, ACK: lla

3) Soittaja lähettää ACK: n

Nyt olemme kiinnostuneita saamaan paketteja, joissa on vain SYN-bittijoukko (vaihe 1). Huomaa, että emme halua paketteja vaiheesta 2 (SYN-ACK), vain tavallinen SYN. Tarvitsemme tcpdump- suodattimen oikean suodattimen.

Muista TCP-otsikon rakenne ilman vaihtoehtoja:

0 15 31 ----------------------------------------------- ------------------ | lähdeportti kohdeportti | -------------------------------------------------- --------------- | järjestysnumero | -------------------------------------------------- --------------- | kuittausnumero | -------------------------------------------------- --------------- | HL | rsvd | C | E | U | A | P | R | S | F | ikkunan koko | -------------------------------------------------- --------------- | TCP-tarkistussumma kiireellinen osoitin -------------------------------------------------- ---------------

TCP-otsikko pitää yleensä 20 oktetietoa, ellei vaihtoehtoja ole. Kaavion ensimmäinen rivi sisältää oktektejä 0 - 3, toinen rivi esittää oktteja 4 - 7 jne.

Lasku alkaa 0: lla, joten asiaankuuluvat TCP-ohjausbitit sisältyvät oktettiin 13:

0 7 | 15 | 23 | 31 ---------------- | --------------- | --------------- | ---------------- | HL | rsvd | C | E | U | A | P | R | S | F | ikkunan koko | ---------------- | --------------- | --------------- | - --------------- | | 13. oktetti | |

Tarkastellaan tarkemmin oktettiä ei. 13:

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

Nämä ovat TCP-ohjausbittejä, joista me olemme kiinnostuneita. Numerot ovat tässä oktetissa 0 - 7, oikealle vasemmalle, joten PSH-bitti on bitti numero 3 ja URG-bitti on numero 5.

Muista, että haluamme tallentaa paketteja vain SYN-asetuksella. Katsotaanpa, mitä tapahtuu oktetille 13, jos TCP-datagrammi saapuu SYN-bittien otsakkeessa:

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

Ohjausbittien osiossa tarkastellaan, että vain bitti numero 1 (SYN) on asetettu.

Olettaen että oktetin numero 13 on 8-bittinen allekirjoittamaton kokonaisluku verkon tavutilauksessa, tämän oktetin binaariarvo on

00000010

ja sen desimaaliluku on

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

Olemme melkein valmiit, koska nyt tiedämme, että jos vain SYN on asetettu, TCP-otsikon 13: n oktetin arvo, kun se tulkitaan 8-bittisiksi allekirjoittamattomaksi kokonaislukuvuudeksi verkkotavuusjärjestyksessä, on oltava täsmälleen 2.

Tämä suhde voidaan ilmaista nimellä

tcp [13] == 2

Voimme käyttää tätä ilmaisua tcpdump- suodattimena, jotta voisimme tarkkailla paketteja, joilla on vain SYN-asetus:

tcpdump -i xl0 tcp [13] == 2

Ilmaisu sanoo "anna TCP-datagramman 13. oktetille desimaaliluku 2", mikä on juuri sitä mitä haluamme.

Oletetaan, että meidän on otettava SYN-paketit, mutta emme välitä, jos ACK tai muu TCP-ohjausbitti asetetaan samaan aikaan. Katsotaanpa, mitä tapahtuu oktetiin 13, kun SYN-ACK-joukon TCP-datagrammi saapuu:

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

Nyt bittiä 1 ja 4 asetetaan 13. oktetiksi. Otetun 13 binaarinen arvo on


00010010

joka tarkoittaa desimaalia

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

Nyt emme voi käyttää tcpdump- suodattimen lauseketta tcp [13] == 18 ", koska se valitsisi vain ne paketit, joilla on SYN-ACK asetettu, mutta ei vain SYN-asetuksia. Muista, että emme välitä, onko ACK tai mikä tahansa muu ohjausbitti asetettu niin kauan kuin SYN on asetettu.

Tavoitteen saavuttamiseksi meidän on johdonmukaisesti JA oktetiinin 13 binäärinen arvo jonkin muun arvon avulla säilytettävä SYN-bitti. Tiedämme, että haluamme SYN: n asettamisen joka tapauksessa, joten loogisesti JA arvo 13th oktetilla SYN: n binäärisellä arvolla:

00010010 SYN-ACK 00000010 SYN JA 00000010 (haluamme SYN) JA 00000010 (haluamme SYN) -------- -------- = 00000010 = 00000010

Näemme, että AND-operaatio antaa saman tuloksen riippumatta siitä, onko ACK tai jokin muu TCP-ohjausbitti asetettu. AND-arvon desimaaliluku ja tämän toiminnon tulos ovat 2 (binäärinen 00000010), joten tiedämme, että pakettia, joissa SYN on asetettu, pitää noudattaa seuraavia suhteita:

((oktettin 13 arvo) AND (2)) == (2)

Tämä osoittaa meille tcpdump- suodattimen ilmaisun

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

Huomaa, että lausekkeessa on käytettävä yksittäisiä lainauksia tai kenoviivaa piilottaaksesi AND ('&') erikoismerkin kuoresta.

UDP-paketit

UDP-muotoa kuvaa tämä rwho-paketti:

actinide.who> broadcast.who: udp 84

Tämä sanoo, että portti, joka isäntäaktinidilla lähetti udp-datagrammia porttiin, joka on isäntälähetys, Internet-lähetysosoite. Paketti sisälsi 84 tavua käyttäjädataa.

Joitakin UDP-palveluita tunnistetaan (lähde- tai kohdesatamamäärästä) ja tulostetaan korkeamman tason protokollatiedot. Erityisesti Domain Name -palvelupyynnöt (RFC-1034/1035) ja Sun RPC -puhelut (RFC-1050) lähettävät NFS: ään.

UDP-nimen palvelinpyynnöt

(Huom. Seuraavassa kuvauksessa oletetaan olevan perehtynyt RFC-1035: ssa kuvattuun Domain Service -protokollaan. Jos et ole perehtynyt protokollan kanssa, seuraava kuvaus näyttää olevan kreikaksi kirjoitettu.)

Nimipalvelinpyynnöt muotoillaan nimellä

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

Isäntä h2opolo pyysi verkkotunnuksen palvelimelta heliosille osoitekirjasta (qtype = A), johon liittyy nimi ucbvax.berkeley.edu. Kyselyn tunnus oli `3 '. `+ 'Tarkoittaa rekursiota, jonka haluttu lippu on asetettu. Kyselypituus oli 37 tavua, ei kuitenkaan UDP- ja IP-protokollan otsakkeita. Kyselyn toiminta oli normaali, kysely , joten op-kenttä jätettiin pois. Jos op olisi ollut jokin muu, se olisi painettu "3" ja "+" välillä. Samoin qclass oli normaali, C_IN ja jätetty pois. Jokainen muu qclass olisi tulostettu välittömästi "A": n jälkeen.

Muutamia poikkeamia tarkistetaan ja ne voivat johtaa ylimääräisiin kenttiin, jotka on suljettu hakasulkeisiin: Jos kyselyllä on vastaus, viranomaisen tietueet tai ylimääräiset tietueosat , ancount , nscount tai arcount tulostetaan nimellä "[ n a]", "[ n n ] "tai" [ n au] ", jossa n on asianmukainen laskenta. Jos jokin vastausbitteistä on asetettu (AA, RA tai rcode) tai jokin "must on nolla" biteistä asetetaan tavua kaksi ja kolme, `[b2 & 3 = x ] 'tulostetaan, jossa x on heksadesimaaliarvo otsikko tavua kaksi ja kolme.

UDP-nimipalvelimen vastaukset

Nimipalvelimen vastaukset muotoillaan nimellä

src> dst: id op rcode liput a / n / au-tyypin luokitustiedot (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)

Ensimmäisessä esimerkissä helios vastaa h2opolon kyselyn tunnisteeseen 3, jossa on 3 vastauspistettä, 3 nimipalvelintietue ja 7 ylimääräistä tietuetta. Ensimmäinen vastausviesti on tyyppi A (osoite) ja sen tieto on Internet-osoite 128.32.137.3. Vastauksen koko oli 273 tavua, pois lukien UDP- ja IP-otsakkeet. Op (Query) ja vastauskoodi (NoError) jätettiin pois, samoin kuin A-tietueen luokka (C_IN).

Toisessa esimerkissä helios vastaa kyselyyn 2, jossa ei ole olemassa olevaa vastauskoodia (NXDomain), jossa ei ole vastauksia, yksi nimipalvelin eikä viranomaisen kirjaa. `* 'Tarkoittaa, että arvovaltainen vastausbitti asetettiin. Koska vastauksia ei saatu, ei mitään tyyppiä, luokkaa tai tietoja tulostettu.

Muut merkit, jotka saattavat näkyä, ovat `- '(rekursiivinen, RA, ei asetettu) ja` |' (katkaistu viesti, TC, asetus). Jos "kysymys" -osiossa ei ole täsmälleen yhtä merkintää, "[ n q]" tulostetaan.

Huomaa, että nimipalvelinpyynnöt ja vastaukset ovat yleensä suuria ja 68 tavun oletusnapsaus ei ehkä tallenna tarpeeksi tulostettavia paketteja. Käytä -s- lippua lisätäksesi snaplenia, jos haluat tutkia vakavasti nimipalvelinten liikennettä. ` -s 128 'on toiminut hyvin minulle.

SMB / CIFS-dekoodaus

tcpdump sisältää nyt melko laajan SMB / CIFS / NBT-dekoodauksen UDP / 137: lle, UDP / 138: lle ja TCP / 139: lle. Myös IPX- ja NetBEUI SMB -tietojen alkeelliset dekoodaus suoritetaan.

Oletuksena melko vähäinen dekoodaus tehdään, ja paljon tarkempi dekoodaus tehdään, jos -v käytetään. Varoitetaan, että -va yksittäinen SMB-paketti voi viedä sivun tai enemmän, joten käytä vain -v, jos todella haluat kaikki karkeat yksityiskohdat.

Jos dekoodataan SMC-istuntoja, joissa on unicode-merkkijonoja, voit halutessasi asettaa ympäristömuuttujan USE_UNICODE arvoksi 1. Laite, joka tunnistaa automaattisesti unicode-koodit, olisi tervetullut.

Lisätietoja SMB-pakettimuodoista ja mitä kaikki kentät ovat, katso www.cifs.org tai pub / samba / specs / -hakemisto suosikki samba.org-peilausalueelta. SMB-laastareita kirjoitti Andrew Tridgell (tridge@samba.org).

NFS-pyynnöt ja vastaukset

Sun NFS (Network File System) -pyynnöt ja vastaukset tulostetaan seuraavasti:

src.xid> dst.nfs: len op args src.nfs> dst.xid: vastaus stat len ​​op tuloksia sushi.6709> wrl.nfs: 112 readlink fh 21,24 / 10.73165 wrl.nfs> sushi.6709: vastaus ok 40 readlink "../var" sushi.201b> wrl.nfs: 144 haku fh 9,74 / 4096,6878 "xcolors" wrl.nfs> sushi.201b: vastaus ok 128 lookup fh 9,74 / 4134,3150

Ensimmäisessä rivissä isäntäsushi lähettää transaktio id 6709: n kanssa wrl: hen (huomaa, että src- isäntänumero on tapahtumalimi, ei lähdesignaali). Pyyntö oli 112 tavua, pois lukien UDP- ja IP-otsikot. Toiminto oli readlink (lue symbolinen linkki) tiedoston kahvaan ( fh ) 21,24 / 10,731657119. (Jos joku on onnekas, kuten tässä tapauksessa, tiedostokahvaa voidaan tulkita suureksi, pieneksi laitteiden numeropariksi, jota seuraa inodin numero ja sukupolvenumero.) Wrl vastaa linkin sisällöstä `ok '.

Kolmannessa rivissä sushi pyytää wrl: ta etsimään hakemistotiedoston 9,74 / 4096,6878 nimeä ` xcolors '. Huomaa, että tulostetut tiedot riippuvat toimintatyypistä. Muodon on tarkoitus olla itsestään selvä, jos sitä luetaan yhdessä NFS-protokollan kanssa.

Jos -v (verbose) -lippu on annettu, tulostetaan lisätiedot. Esimerkiksi:

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

(-v myös tulostaa IP-otsikon TTL-, ID-, pituus- ja fragmentaatiokentät, jotka on jätetty pois tästä esimerkistä.) Ensimmäisessä rivissä sushi pyytää wrl: ta lukemaan 8192 tavua tiedostosta 21,11 / 12,195, 24576. Wrl vastaa "ok"; toisella rivillä oleva paketti on vastauksen ensimmäinen fragmentti ja siten vain 1472 tavua pitkä (muut tavut tulevat seuraaviin fragmentteihin, mutta näillä fragmenteilla ei ole NFS- tai jopa UDP-otsakkeita, joten niitä ei ehkä tulosteta, riippuen käytetystä suodattimen lausekkeesta). Koska -v-lippu on annettu, osa tiedostomääriin palautetuista tiedostomääritteistä tulostetaan: tiedostotyyppi (`REG ', tavalliselle tiedostolle), tiedostomuoto (oktaali), uid ja gid sekä tiedoston koko.

Jos -v-lippu annetaan useammin kuin kerran, tulostetaan entistä enemmän.

Huomaa, että NFS-pyynnöt ovat hyvin suuret ja paljon yksityiskohtia ei tulosteta, ellei snaplenia ole lisätty. Yritä käyttää ` -s 192 'katsellaksesi NFS-liikennettä.

NFS-vastauspaketit eivät nimenomaisesti tunnista RPC-operaatiota. Sen sijaan tcpdump seuraa "viimeisiä" pyyntöjä ja vastaa ne vastauksiin käyttämällä tapahtumatietoja. Jos vastaus ei noudata tarkasti vastaavaa pyyntöä, se ei ehkä ole jäsennettävissä.

AFS-pyynnöt ja vastaukset

Transarc AFS (Andrew File System) -pyynnöt ja vastaukset tulostetaan seuraavasti:

src.sport> dst.dport: rx pakettityyppinen src.sport> dst.dport: rx pakettityyppinen huoltopuhelun soitto-nimi args src.sport> dst.dport: rx pakettityyppinen palvelun vastaus soitto-nimi args elvis. 7001> pike.afsfs: rx data fs soittaa uudelleennimeä vanha fid 536876964/1/1 ".newsrc.new" uusi fid 536876964/1/1 ".newsrc" pike.afsfs> elvis.7001: rx data fs vastaus uudelleen

Ensimmäisessä rivissä host elvis lähettää RX-paketin haulle. Tämä oli RX-datapaketti fs (fileerver) -palveluun, ja se on RPC-puhelun alku. RPC-kutsu nimettiin uudelleen, vanhan hakemistotiedoston tunnuksella 536876964/1/1 ja vanhalla tiedostolla `.newsrc.new 'ja uudella hakemistotiedostunnuksella 536876964/1/1 ja uudella tiedostonimellä`. newsrc'. Isäntähaukka vastaa RPC: n vastaukseen nimeämiskutsulle (joka onnistui, koska se oli datapaketti eikä aborttipaketti).

Yleensä kaikki AFS-RPC-osoitteet dekoodataan ainakin RPC-puhelinnolla. Useimmilla AFS RPC -määrityksillä on ainakin osa argumentteja dekoodattu (yleensä vain "mielenkiintoisia" argumentteja, joidenkin mielenkiintoisen määritelmän).

Muodon on tarkoitus olla itsekuvaava, mutta se ei todennäköisesti ole hyödyllinen henkilöille, jotka eivät tunne AFS: n ja RX: n toimintaa.

Jos -v (verbose) -lippu annetaan kahdesti, tulostetaan kuittauspaketit ja ylimääräiset otsikkotiedot, kuten RX-puhelutunnus, puhelinnumero, järjestysnumero, sarjanumero ja RX-pakettiliput.

Jos -v-lippu annetaan kahdesti, tulostetaan lisätiedot, kuten RX-puhelinnumero, sarjanumero ja RX-pakettilennot. MTU: n neuvottelutieto tulostetaan myös RX-Ack-paketeista.

Jos -v-lippua annetaan kolme kertaa, tulostetaan suojausindeksi ja palvelun tunnus.

Virhekoodit tulostetaan keskeytyspaketteihin, lukuun ottamatta Ubik-beacon-paketteja (koska aborttipaketteja käytetään Ubik-protokollan kyllä ​​äänestämiseen).

Huomaa, että AFS-pyynnöt ovat hyvin suuria ja monia argumentteja ei tulosteta, ellei snaplenä ole lisätty. Yritä käyttää ` -s 256 'katselemaan AFS-liikennettä.

AFS-vastauspaketit eivät nimenomaisesti tunnista RPC-toimintaa. Sen sijaan tcpdump seuraa "viimeisiä" pyyntöjä ja vastaa niihin vastauksiin käyttäen puhelinnumeroa ja palvelun tunnusta. Jos vastaus ei noudata tarkasti vastaavaa pyyntöä, se ei ehkä ole jäsennettävissä.

KIP Appletalk (DDP UDP: ssä)

UDP-datagrammissa kapseloituja Appletalk DDP-paketteja suljetaan ja jätetään DDP-paketteiksi (eli kaikki UDP-otsikkotiedot hylätään). Tiedoston /etc/atalk.names käytetään kääntämään appletalk-netto- ja solmunumerot nimet. Tämän tiedoston rivillä on muoto

numero nimi 1.254 eetteri 16.1 icsd-net 1.254.110 as

Ensimmäiset kaksi riviä antavat appletalk-verkkojen nimet. Kolmas rivi antaa tietyn isännän nimen (isäntä erotetaan verkosta kolmannella oktetilla numeroon - verkon numerolla on oltava kaksi oktettia ja isännän numerolla on oltava kolme oktettia.) Numero ja nimi olisi erotettava välilyönnillä (tyhjät tai välilehdet). /etc/atalk.names -tiedosto voi sisältää tyhjiä viivoja tai komentorivejä (rivit, jotka alkavat "#": lla).

Appletalk-osoitteet tulostetaan muodossa:

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

(Jos /etc/atalk.names -tiedostoa ei ole tai se ei sisällä jonkin appletalk-isän / verkon numeroa, osoitteet tulostetaan numeerisessa muodossa.) Ensimmäisessä esimerkissä NBP (DDP-portti 2) verkossa 144.1 solmu 209 lähettää mihin tahansa kuuntelemaan verkon icsd-solmun 112 porttiin 220. Toinen rivi on sama, paitsi lähdesolmun koko nimi on tunnettu ("toimisto"). Kolmas rivi on lähetys portista 235 verkon jssmag-solmun 149 lähettämiseksi icsd-net NBP -porttiin (huomaa, että lähetysosoite (255) on osoitettu verkon nimellä ilman isäntänumeroa - tästä syystä se on hyvä idea pitää solmujen nimet ja nimet nimet erikseen /etc/atalk.names).

NBP (nimien sitomisprotokolla) ja ATP (Appletalkin transaktioprotokolla) paketit ovat sisällön tulkinnassa. Muut protokollat ​​vain tyhjenevät protokollan nimen (tai numeron, jos protokollaa ei ole rekisteröity) ja paketin koon.

NBP-paketit muotoillaan kuten seuraavat esimerkit:

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

Ensimmäinen rivi on ns. Icsd-isäntän 112 lähettämät laserwriters-nimien etsintäpyynnöt ja lähetetään verkossa jssmag. Etsi nbp-tunnus 190. Toinen rivi näyttää vastauksen tähän pyyntöön (huomaa, että sillä on sama tunnus) isännältä jssmag.209 sanomalla, että sillä on lasertulostimen resurssi nimeltä "RM1140", joka on rekisteröity porttiin 250. Kolmas line on toinen vastaus samaan pyyntöön sanomalla, että isäntäteknikolla on lasertulostin "techpit", joka on rekisteröity porttiin 186.

ATP-paketin muotoilu osoitetaan seuraavalla esimerkillä:

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- 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 käynnistää transaktiolukua 12266 isäntäheliosilla pyytämällä korkeintaan 8 pakettia (`<0-7> '). Hexin numero rivin lopussa on käyttäjändata-kentän arvo pyynnössä.

Helios vastaa 8 512 tavun pakettien kanssa. Kaupan tunnuksen jälkeinen `: numero 'antaa pakettisekvenssinumeron tapahtumasta ja numero parensissa on paketin datan määrä ilman atp-otsikkoa. Paketin 7 `* 'osoittaa, että EOM-bitti oli asetettu.

Jssmag.209 pyytää sitten, että paketit 3 ja 5 lähetetään uudelleen. Helios lähettää ne uudelleen, jssmag.209 julkaisee kaupan. Lopuksi jssmag.209 aloittaa seuraavan pyynnön. Pyynnön `* 'osoittaa, että XO (` exactly one') ei ole asetettu.

IP fragmentti

Esirotuiset Internet-datagrammit tulostetaan nimellä

(frag ID : koko @ offset +) (fragmentin tunnus : koko @ offset )

(Ensimmäinen lomake osoittaa, että on enemmän fragmentteja, toinen osoittaa, että tämä on viimeinen fragmentti.)

Id on fragmentin tunnus. Koko on fragmenttikoko (tavuina) ilman IP-otsikkoa. Offset on tämän fragmentin offset (bytes) alkuperäisessä datagrammissa.

Fragmentti-informaatio tulostetaan jokaiselle fragmentille. Ensimmäinen fragmentti sisältää korkeamman tason protokollan otsikon ja fragmentti-informaatio tulostetaan protokollatietojen jälkeen. Ensimmäisen fragmentin jälkeen ei ole mitään korkeamman tason protokollan otsikkoa ja fragmentti-informaatio tulostetaan lähde- ja kohdeosoitteiden jälkeen. Esimerkiksi tämä on osa ftrizia arizona.edu: sta lbl-rtsg.arpa: lle CSNET-yhteyden yli, joka ei näytä käsittelevän 576 tavun datagrammeja:

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

Tässä on muutamia asioita: Ensinnäkin toisen rivin osoitteet eivät sisällä satamanumeroita. Tämä johtuu siitä, että TCP-protokollatiedot ovat kaikki ensimmäisessä osassa, eikä meillä ole aavistustakaan, mitä porttia tai järjestysnumeroita on, kun tulostamme myöhemmät fragmentit. Toiseksi ensimmäisen rivin tcp-sekvenssi-informaatio tulostetaan ikään kuin käyttäjätiedoista olisi 308 tavua, kun itse asiassa on 512 tavua (308 ensimmäisessä fragmentissa ja 204 toisessa). Jos etsit reikää sarjataulukossa tai yrität sovittaa paketteja, tämä voi huijata sinua.

Paketti IP: n kanssa, jossa ei ole fragmenttia, on merkitty jäljellä (DF) .

aikaleimat

Oletuksena kaikki tulostusrivit edeltää aikaleima. Aikaleima on nykyinen kellonaika lomakkeessa

hh: mm: ss.frac

ja on yhtä tarkka kuin ytimen kellonaika. Aikaleima heijastaa sitä aikaa, jolloin ytimen ensimmäinen näki paketin. Yritettäessä ei ole yritetty ottaa huomioon aikaväliä, kun ethernet-rajapinta poistettiin paketin langasta ja kun ydin paljasti uuden paketin keskeytyksen.

KATSO MYÖS

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

Tärkeää: Käytä man- komentoa ( % man ) nähdäksesi kuinka komentoa käytetään tietyssä tietokoneessa.