Ang Tcpdump ay isang command na ginagamit sa iba't ibang mga operating system ng Linux (OSs) na nangangalap ng TCP / IP packets na pumasa sa isang adaptor ng network. Karamihan tulad ng isang packet sniffer tool, hindi lamang maaaring pag-aralan ng tcpdump ang trapiko sa network kundi i-save din ito sa isang file.
Hindi tulad ng ilang mga utos na ibinigay ng operating system sa pamamagitan ng default, maaari mong makita na hindi mo maaaring gamitin ang tcpdump dahil hindi ito naka-install. Upang mag-install ng tcpdump, magsagawa apt-get install tcpdump o yum install tcpdump, depende sa iyong OS.
Paano Gumagana ang Tcpdump
Ini-print ng Tcpdump ang mga header ng mga packet sa interface ng network na tumutugma sa Boolean pagpapahayag . Maaari din itong tumakbo kasama ang-w bandila, na nagiging sanhi ito upang i-save ang packet data sa isang file para sa pagtatasa sa ibang pagkakataon, at / o sa-r bandila, na nagiging dahilan upang mabasa ito mula sa naka-save na packet file sa halip na basahin ang mga packet mula sa isang network interface. Sa lahat ng kaso, tanging ang mga packet na tumutugma pagpapahayag ay mapoproseso ng tcpdump .
Tcpdump ay, kung hindi tatakbo sa-c bandila, magpatuloy sa pagkuha ng mga packet hanggang sa ito ay magambala ng isang SIGINT signal (binuo, halimbawa, sa pamamagitan ng pag-type ng iyong matakpan na character, kadalasan Ctrl + C) o isang SIGTERM signal (karaniwan ay nakabuo ngpatayin(1) utos); kung tumakbo kasama ang-c flag, ito ay makakakuha ng mga packet hanggang sa ito ay magambala ng SIGINT o SIGTERM signal o ang tinukoy na bilang ng mga packet ay na-proseso.
Ang mga switch na nabanggit sa itaas ay ipinaliwanag nang detalyado sa susunod na artikulong ito.
Kailan tcpdump matapos ang pagkuha ng mga packet, ito ay mag-ulat ng mga bilang ng:
- Packets "na natanggap ng filter."
- Ang kahulugan nito ay depende sa OS kung saan ka tumatakbo tcpdump , at posibleng sa paraan na naka-configure ang OS. Kung ang isang filter ay tinukoy sa command line, sa ilang mga OS ay binibilang ang mga packet hindi alintana kung naitugmang ito sa pamamagitan ng filter na expression, at sa iba ay binibilang lamang ang mga packet na katugma ng filter na expression at na-proseso ng tcpdump.
- Ang mga packet "ay bumaba sa pamamagitan ng kernel."
- Ito ang bilang ng mga packet na bumaba, dahil sa kakulangan ng buffer space, sa pamamagitan ng packet capture mechanism sa OS kung saan tcpdump ay tumatakbo, kung ang OS ay nag-ulat ng impormasyong iyon sa mga application. Kung hindi, ito ay maiuulat bilang 0.
Sa mga platform na sumusuporta sa SIGINFO signal, tulad ng karamihan sa mga BSD (Berkeley Software Distributions), ito ay mag-uulat ng mga bilang kapag nakatanggap ito ng SIGINFO signal (binuo, halimbawa, sa pamamagitan ng pag-type ng iyong "status" na character, kadalasan Ctrl + T) at patuloy na nakakakuha ng mga packet.
Compatibility ng Tcpdump
Ang pagbabasa ng mga packet mula sa interface ng network gamit ang tcpdump command ay maaaring mangailangan na mayroon kang mga espesyal na pribilehiyo ( pagbabasa ang naka-save na file ng packet ay hindi nangangailangan ng ganitong mga pribilehiyo):
- SunOS 3.x o 4.x sa NIT o BPF: Dapat na basahin mo ang access sa / dev / nit o dev / bpf * .
- Solaris sa DLPI: Dapat mayroon kang basahin / isulat ang pag-access sa network na pseudo device, tulad ng / dev / le . Sa hindi bababa sa ilang mga bersyon ng Solaris, gayunpaman, ito ay hindi sapat upang payagan tcpdump upang makunan sa mapanghimok na mode; sa mga bersyon ng Solaris, dapat kang maging root, o tcpdump dapat i-install setuid sa ugat, upang makunan sa mapanghimagsik na mode. Tandaan na, sa maraming mga (marahil lahat) mga interface, kung hindi mo makuha sa mapanghimok na mode, hindi ka makakakita ng anumang mga papalabas na packet, kaya ang pagkuha ng hindi ginawa sa mapanghimok na mode ay maaaring hindi masyadong kapaki-pakinabang.
- HP-UX sa DLPI: Dapat kang maging root o tcpdump dapat i-install ang setuid sa root.
- IRIX na may panunubok: Dapat kang maging root o tcpdump dapat i-install ang setuid sa root.
- Linux: Dapat kang maging root o tcpdump dapat i-install ang setuid sa root.
- Ultrix at Digital UNIX / Tru64 UNIX: Maaaring makuha ng sinumang gumagamit ang trapiko sa network tcpdump . Gayunpaman, walang gumagamit (kahit na ang super-user) ay maaaring makunan sa mapanghimok na mode sa isang interface maliban kung ang super-user ay nakapagpagana ng mapanghimasok na mode na operasyon sa interface na iyon gamit pfconfig (8), at walang user (hindi ang super-user) ang makakakuha ng trapiko ng unicast na natanggap ng o ipinadala ng makina sa isang interface maliban kung pinapagana ng sobrang user ang operasyon ng kopya-lahat-ng-mode sa interface na iyon pfconfig , kaya kapaki-pakinabang Maaaring mangailangan ng packet capture sa isang interface na ang alinman sa promiscuous-mode o kopya-lahat-mode na operasyon, o parehong mga mode ng operasyon, ay pinagana sa interface na iyon.
- BSD: Dapat na basahin mo ang access sa / dev / bpf * .
Tcpdump Command Syntax
Tulad ng lahat ng mga utos ng computer, ang tcpdump command ay gumagana nang wasto lamang kung tama ang syntax:
tcpdump -adeflnNOpqRStuvxX -c bilangin
-C file_size -F file
-i interface -m module -r file
-s snaplen -T uri -U user -w file
-E algo: lihim pagpapahayag
Mga Pagpipilian sa Tcpdump Command
Ang mga ito ay ang lahat ng mga pagpipilian na maaari mong gamitin sa tcpdump command:
- -a: Pag-usig upang i-convert ang mga network at mga address ng broadcast sa mga pangalan.
- -c: Lumabas pagkatapos matanggap bilangin packet.
- -C: Bago magsulat ng isang raw na packet sa isang savefile, tingnan kung ang file ay kasalukuyang mas malaki kaysa sa file_size at, kung gayon, isara ang kasalukuyang savefile at magbukas ng bago.Ang Savefiles pagkatapos ng unang savefile ay magkakaroon ng pangalan na tinukoy sa-w bandila, na may isang numero pagkatapos nito, na nagsisimula sa 2 at patuloy na pataas. Ang mga yunit ng file_size ay milyon-milyong mga bytes (1,000,000 bytes, hindi 1,048,576 bytes).
- -d: Dump ang naipon na packet-matching code sa isang tao na nababasa na form sa karaniwang output at itigil.
- -DD: Dump packet-matching code bilang isangC fragment ng programa.
- -ddd: Dump packet-matching code bilang decimal numbers (preceded with a count).
- -e: I-print ang header ng antas ng link sa bawat dump line.
- -E: Gamitin algo: lihim para sa pag-decrypting IPsec ESP packets. Ang mga algorithm ay maaaringdes-cbc, 3des-cbc, blowfish-cbc, rc3-cbc, cast128-cbc, owala. Ang default aydes-cbc. Ang kakayahang i-decrypt ang mga pack ay naroroon lamang kung tcpdump ay pinagsama sa pinagana ng cryptography. lihim ang ascii text para sa ESP secret key. Hindi namin maaaring makuha ang di-makatwirang halaga ng binary sa sandaling ito. Ipinagpapalagay ng opsyon ang RFC2406 ESP, hindi RFC1827 ESP. Ang pagpipilian ay para lamang sa mga layunin ng pag-debug, at ang paggamit ng pagpipiliang ito na may tunay na 'lihim' na susi ay nasisiraan ng loob. Sa pamamagitan ng pagtatanghal ng IPsec secret key papunta sa command line ginagawa mo itong makikita sa iba, sa pamamagitan ng ps (1) at iba pang okasyon.
- -f: I-print ang 'banyagang' mga internet address ayon sa bilang sa halip na may simbolo (ang pagpipiliang ito ay inilaan upang makakuha ng malubhang pinsala sa utak sa yp server ng Sun - kadalasan ito hangga't magpasalin ng mga hindi karaniwang mga numero ng internet).
- -F: Gamitin file bilang input para sa expression ng filter. Ang isang karagdagang pagpapahayag na ibinigay sa command line ay hindi pinansin.
- -i: Makinig sa interface . Kung hindi natukoy, tcpdump hinahanap ang listahan ng system interface para sa pinakamababang may-numero, naka-configure na interface (hindi kasama ang loopback). Ang mga kurbatang ay sira sa pamamagitan ng pagpili ng pinakamaagang tugma. Sa mga sistema ng Linux na may 2.2 o mas bago na kernels, isang interface Ang argumento ng "anumang" ay maaaring magamit upang makuha ang mga packet mula sa lahat ng mga interface. Tandaan na ang mga nakukuha sa "anumang '' na aparato ay hindi gagawin sa mapanghimok na mode.
- -l: Gumawa ng stdout line buffered. Kapaki-pakinabang kung nais mong makita ang data habang kinukuha ito. Halimbawa, "tcpdump -l | tee dat '' o" tcpdump -l> dat & tail -f dat ''.
- -m: I-load ang kahulugan ng SMI MIB module mula sa file module . Maaaring magamit ang pagpipiliang ito nang maraming beses upang i-load ang ilang mga module ng MIB tcpdump .
- -n: Huwag i-convert ang mga address ng host sa mga pangalan. Maaari itong magamit upang maiwasan ang mga paghahanap ng DNS.
- -nn: Huwag i-convert ang protocol at numero ng port atbp sa alinman sa mga pangalan.
- -N: Huwag i-print ang kwalipikasyon ng domain name ng mga pangalan ng host. Halimbawa, kung bibigyan mo ang bandila na ito, pagkatapos tcpdump ay i-print ang "nic '' sa halip ng" nic.ddn.mil ''.
- -O: Huwag patakbuhin ang packet-matching code optimizer. Ito ay kapaki-pakinabang lamang kung pinaghihinalaan mo ang isang bug sa optimizer.
- -p: Huwag ilagay ang interface sa mapanghimok na mode. Tandaan na ang interface ay maaaring nasa mapanghimok na mode para sa ibang dahilan; samakatuwid, '-p' ay hindi maaaring gamitin bilang isang pagdadaglat para sa 'ether host {local-hw-addr} o ether broadcast'.
- -q: Quick (tahimik) na output. I-print ang mas kaunting impormasyon ng protocol upang ang mga linya ng output ay mas maikli.
- -R: Ipalagay ang mga paketeng ESP / AH na nakabatay sa lumang detalye: RFC1825 sa RFC1829. Kung tinukoy, tcpdump ay hindi mag-print ng field ng pag-iingat ng replay. Dahil walang patlang ng bersyon ng protocol sa detalye ng ESP / AH, tcpdump hindi maaaring pagbunyag ng bersyon ng ESP / AH protocol.
- -r: Basahin ang mga packet file (na nilikha gamit ang pagpipilian na -w). Ang karaniwang input ay ginagamit kung file ay "- ''.
- -S: I-print ang absolute, sa halip na kamag-anak, mga numero ng pagkakasunud-sunod ng TCP.
- -s: Snarf snaplen bytes ng data mula sa bawat packet sa halip na ang default na 68; na may SunOS's NIT, ang minimum ay aktwal na 96. Ang animnapu't walong bytes ay sapat para sa IP, ICMP, TCP, at UDP ngunit maaaring pumatak ng impormasyon ng protocol mula sa server ng pangalan at NFS packet (tingnan sa ibaba). Ang mga packet na pinutol dahil sa isang limitadong snapshot ay ipinahiwatig sa output na may "| proto '', kung saan proto ang pangalan ng antas ng protocol kung saan nangyari ang pagtanggal. Tandaan na ang pagkuha ng mas malaking snapshot ay pinatataas ang dami ng oras na kinakailangan upang maiproseso ang mga packet at, mabisa, binabawasan ang halaga ng packet buffering. Ito ay maaaring maging sanhi ng pagkawala ng mga packet. Dapat mong limitahan snaplen sa pinakamaliit na numero na makukuha ang impormasyon ng protocol na interesado ka. Pagtatakda snaplen sa 0 ay nangangahulugan na gamitin ang kinakailangang haba upang mahuli ang buong packet.
- -T: Mga pack ng lakas na pinili ng " pagpapahayag "upang mabigyang-kahulugan ang tinukoy uri . Ang kasalukuyang mga kilalang uri aycnfp (Cisco NetFlow protocol),rpc (Remote Procedure Call),rtp (Real-Time Application protocol),rtcp (Kontrol ng mga protocol ng Real-Time Application),snmp (Simple Network Management Protocol),vat (Visual Audio Tool), atwb (ibinahagi ang White Board).
- -t: Huwag print ng isang timestamp sa bawat dump line.
- -tt: I-print ang isang hindi na-format na timestamp sa bawat dump line.
- -U: Inaalis ang mga pribilehiyo ng ugat at binabago ang ID ng gumagamit user at ID ng grupo sa pangunahing grupo ng user .
- Tandaan: Ang Red Hat Linux ay awtomatikong bumababa ng mga pribilehiyo sa gumagamit na "pcap" kung walang iba pa ang tinukoy.
- -tut: I-print ang isang delta (sa microseconds) sa pagitan ng kasalukuyan at naunang linya sa bawat dump line.
- -tttt: I-print ang isang timestamp sa default na format na nagpatuloy sa pamamagitan ng petsa sa bawat dump line.
- -u: I-print ang mga undecoded na mga handle ng NFS.
- -v: (Bahagyang higit pa) masalita na output. Halimbawa, ang oras upang mabuhay, pagkakakilanlan, kabuuang haba, at mga pagpipilian sa isang IP packet ay nakalimbag. Pinapayagan din ang karagdagang mga tseke integridad tseke tulad ng pagpapatunay ng IP at ICMP header checksum.
- -vv: Kahit na mas malubhang output. Halimbawa, ang mga karagdagang field ay naka-print mula sa NFS packet reply, at ang SMB packet ay ganap na decoded.
- -vvv: Kahit na mas malubhang output. Halimbawa, telnetSB … SE ang mga pagpipilian ay naka-print nang buo. Sa -X Ang mga pagpipilian sa telnet ay naka-print sa hex pati na rin.
- -w: Isulat ang mga raw na packet sa file sa halip na pag-parse at pag-print ng mga ito. Maaari silang mamaya ay ipi-print sa pagpipiliang -r. Ang karaniwang output ay ginagamit kung file ay "- ''.
- -x: I-print ang bawat packet (minus ang header ng antas ng link) sa hex. Ang mas maliit sa buong packet o snaplen ipi-print ang mga byte. Tandaan na ito ang buong packet ng layer ng link, kaya para sa mga layer ng link na pad (hal., Ethernet), ang mga byte ng padding ay ipi-print kapag ang mas mataas na layer packet ay mas maikli kaysa sa kinakailangang padding.
- -X: Kapag nagpi-print ng hex, i-print ang ASCII masyadong. Kaya kung-x ay naka-set din, ang pakete ay nakalimbag sa hex / ascii. Ito ay lubhang madaling gamitin para sa pag-aaral ng mga bagong protocol. Kahit na-x ay hindi rin nakatakda, ang ilang bahagi ng ilang mga packet ay maaaring ipalimbag sa hex / ascii.
- pagpapahayag : Pinipili kung aling mga packet ang ibabagsak. Kung hindi pagpapahayag ay ibinigay, ang lahat ng mga packet sa net ay dumped. Kung hindi, tanging mga packet kung saan pagpapahayag ay 'totoo' ay dumped. Ang pagpapahayag binubuo ng isa o higit pa primitibo. Ang mga primitiba ay karaniwang binubuo ng isang id (pangalan o numero) na sinundan ng isa o higit pang mga kwalipikado. May tatlong magkakaibang uri ng qualifier:
- uri : Ang mga Qualifier ay nagsasabi kung anong uri ng bagay ang id ng pangalan o numero na tumutukoy sa. Ang mga posibleng uri ayhost, net, atport- halimbawa, 'host foo', 'net 128.3', 'port 20'. Kung walang uri ng kwalipikado,host ay ipinapalagay.
- dir : Ang mga Qualifier ay tumutukoy sa isang partikular na direksyon sa paglipat sa at / o mula sa id . Ang posibleng mga direksyon aysrc, dst, src o dst atsrc at dst (hal., 'src foo', 'dst net 128.3', 'src o dst port ftp-data'). Kung walang dir qualifier,src o dst ay ipinapalagay. Para sa mga layer ng 'null' na link (hal., Point-to-point na mga protocol tulad ng slip) ang inbound at papalabas Maaaring gamitin ang mga kwalipikado upang tukuyin ang nais na direksyon.
- proto : Ang mga Qualifiers ay naghihigpit sa tugma sa isang partikular na protocol. Ang mga posibleng protos ay: eter, fddi, tr, ip, ip6, arp, rarp, decnet, tcp, atudp- halimbawa, 'ether src foo', 'arp net 128.3', 'tcp port 21'. Kung walang proto qualifier, ang lahat ng mga protocol na naaayon sa uri ay ipinapalagay. Halimbawa, ang 'src foo' ay nangangahulugang '(ip o arp o rarp) src foo' (maliban sa huli ay hindi legal na syntax), 'net bar' ay nangangahulugang '(ip o arp o rarp) net bar' at 'port 53' nangangahulugang '(tcp o udp) port 53'.
- 'fddi' ay talagang isang alias para sa 'ether'; ang parser ay tinatrato ang mga ito bilang identik bilang "ang antas ng link sa data na ginamit sa tinukoy na interface ng network." Ang mga header ng FDDI ay naglalaman ng pinagmulan at destination address ng Ethernet, at kadalasang naglalaman ng mga uri ng packet na Ethernet, kaya maaari mong i-filter sa mga field na FDDI lang tulad ng mga analogong mga patlang ng Ethernet. Ang mga header ng FDDI ay naglalaman din ng iba pang mga patlang, ngunit hindi mo ito maipangalan nang malinaw sa isang filter na expression.
- Katulad nito, ang 'tr' ay isang alyas para sa 'ether'; ang mga pahayag ng nakaraang talata tungkol sa mga header ng FDDI ay nalalapat din sa mga header ng Token Ring.
Bilang karagdagan sa itaas, mayroong ilang mga espesyal na "primitive" na mga keyword na hindi sumusunod sa pattern:gateway, broadcast, mas mababa, mas malaki, at aritmetika mga expression. Ang lahat ng ito ay inilarawan sa ibaba.
Ang mas kumplikadong mga expression ng filter ay binuo sa pamamagitan ng paggamit ng mga salitaat, o, athindi upang pagsamahin ang mga primitibo-halimbawa, "host foo at hindi port ftp at hindi port ftp-data". Upang mai-save ang pagta-type, maaaring i-omitted ang mga magkaparehong listahan ng kwalipikado (hal., "Tcp dst port ftp o ftp-data o domain" ay eksaktong kapareho ng "tcp dst port ftp o tcp dst port ftp-data o tcp dst port domain".)
Ito ang mga primitibo na pinapayagan sa utos ng tcpdump:
- at iba pa host
- Totoo kung ang IPv4 / v6 destination field ng packet ay host , na maaaring alinman sa isang address o isang pangalan.
- src host host
- Totoo kung ang IPv4 / v6 source field ng packet ay host .
- host host
- Tama kung ang pinagmulan o patutunguhan ng IPv4 / v6 ng packet ay host . Ang alinman sa mga ekspresyon ng host sa itaas ay maaaring maisama sa mga keyword,ip, arp, rarp, oip6, tulad ng sa ip host host (na katumbas ng ether proto ip at host host).
- Kung host ay isang pangalan na may maraming IP address, ang bawat address ay susuriin para sa isang tugma.
- ether dst ehost
- Tama kung ang destination address ng Ethernet ay ehost . Ehost ay maaaring alinman sa isang pangalan mula sa / etc / ethers o isang numero (tingnan eters (3N) para sa numerong format).
- ether src ehost
- Totoo kung ang address ng pinagmulan ng Ethernet ay ehost .
- ether host ehost
- Tama kung alinman sa pinagmulan o destination address ng Ethernet ay ehost .
- gateway host
- Tama kung ginamit ang packet host bilang isang gateway (ibig sabihin, ang pinagmulan ng Ethernet o destination address ay host ngunit hindi rin ang pinagmulan ng IP o ang destination ng IP ay host ).
- Host ay dapat na isang pangalan at dapat na matagpuan sa pamamagitan ng mekanismo ng resolusyon ng host-name-to-IP-address ng makina (host name file, DNS, NIS, atbp.) at ng host-name-to-Ethernet address resolution mechanism (/ etc / ethers, atbp.).
- Ang isang katumbas na pagpapahayag ay ether host ehost at ngayon ay naka-host host , na maaaring magamit sa alinman sa mga pangalan o numero para sa host / ehost .) Ang syntax na ito ay hindi gumagana sa IPv6-enable ang pagsasaayos sa sandaling ito.
- dst net net
- Totoo kung ang IPv4 / v6 destination address ng packet ay may numero ng network net . Net ay maaaring alinman sa isang pangalan mula sa / etc / networks o isang numero ng network (tingnan mga network (4) para sa mga detalye).
- src net net
- Totoo kung ang IPv4 / v6 source address ng packet ay may numero ng network net .
- net net
- Totoo kung alinman sa IPv4 / v6 source o destination address ng packet ay may numero ng network net .
- net net mask netmask
- Totoo kung ang IP address ay tumutugma net sa partikular netmask . Maaaring kwalipikadosrc odst. Tandaan na ang syntax na ito ay hindi wasto para sa IPv6 net .
- net net / len
- Totoo kung ang IPv4 / v6 address ay tumutugma net na may netmask len malawak na bahagi. Maaaring kwalipikadosrc odst.
- dst port port
- Tama kung ang packet ay ip / tcp, ip / udp, ip6 / tcp, o ip6 / udp at may destination port value port . Ang port ay maaaring isang numero o isang pangalan na ginagamit sa / etc / services (tingnan ang tcp (4P) at udp (4P)). Kung ang isang pangalan ay ginagamit, ang parehong bilang ng port at protocol ay naka-check. Kung ginagamit ang isang numero o hindi siguradong pangalan, tanging ang numero ng port ay naka-check (hal.,dst port 513 ay i-print ang parehong trapiko ng tcp / login at udp / na trapiko, atport domain ay i-print ang parehong trapiko ng tcp / domain at udp / domain).
- src port port
- Totoo kung ang packet ay may halaga ng source port ng port .
- port port
- Totoo kung ang pinagmulan o destination port ng packet ay port . Anumang ng mga expression sa itaas ng port ay maaaring prepended sa mga keyword,tcp oudp, tulad ng sa tcp src port port , na tumutugma lamang sa mga packet ng tcp na ang source port ay port .
- mas mababa haba
- Totoo kung ang haba ng packet ay mas mababa kaysa o katumbas ng haba . Katumbas ito len <= Haba .
- mas malaki haba
- Totoo kung ang haba ng packet ay mas malaki kaysa o katumbas ng haba . Katumbas ito len> = Haba .
- ip proto protocol
- Tama kung ang packet ay isang IP packet (tingnan ang ip (4P)) ng uri ng protocol protocol . Protocol ay maaaring isang numero o isa sa mga pangalan icmp , icmp6 , igmp , igrp , pim , ah , esp , vrrp , udp , o tcp . Tandaan na ang mga tagapagpakilala tcp , udp , at icmp ay mga keyword din at kailangang escaped sa pamamagitan ng backslash (), na kung saan ay sa C-shell. Tandaan na ang kauna-unahang ito ay hindi hinahabol ang kadena ng header ng protocol.
- ip6 proto protocol
- Tama kung ang packet ay isang IPv6 na packet ng uri ng protocol protocol . Tandaan na ang kauna-unahang ito ay hindi hinahabol ang kadena ng header ng protocol.
- ip6 protochain protocol
- Totoo kung ang packet ay IPv6 packet, at naglalaman ng header ng protocol na may uri protocol sa kanyang chain chain protocol. Halimbawa, ipv6 protochain 6 tumutugma sa anumang IPv6 packet na may TCP protocol header sa chain chain ng protocol. Ang packet ay maaaring maglaman, halimbawa, header ng pagpapatunay, routing header, o hop-by-hop header ng opsyon, sa pagitan ng header ng IPv6 at header ng TCP. Ang code ng BPF na ipinalabas ng primitive na ito ay kumplikado at hindi maaaring ma-optimize ng BPF optimizer code sa tcpdump , kaya maaaring ito ay medyo mabagal.
- ip protochain protocol
- Katumbas saip6 protochain protocol , ngunit ito ay para sa IPv4.
- ether broadcast
- Tama kung ang packet ay isang packet ng Ethernet broadcast. Ang eter Opsyonal ang keyword.
- ip broadcast
- Tama kung ang packet ay isang IP broadcast packet. Sinusuri nito ang parehong mga all-zeroes at all-ones broadcast convention, at tinitingnan ang local subnet mask.
- ether multicast
- Tama kung ang packet ay isang Ethernet multicast packet. Ang eter Opsyonal ang keyword. Ito ay takig sa 'ether 0 & 1! = 0'.
- ip multicast
- Tama kung ang packet ay isang IP multicast packet.
- ip6 multicast
- Tama kung ang packet ay isang IPv6 multicast packet.
- ether proto protocol
- Tama kung ang packet ay ether type protocol . Protocol ay maaaring isang numero o isa sa mga pangalan ip , ip6 , arp , rarp , atalk , aarp , decnet , sca , lat , mopdl , moprc , iso , stp , ipx , o netbeui . Tandaan na ang mga pagkakakilanlan ay mga keyword din at dapat na makatakas sa pamamagitan ng backslash ().
- Sa kaso ng FDDI (hal., 'fddi protocol arp') at Token Ring (hal.,'tr protocol arp'), para sa karamihan ng mga protocol na iyon, ang pagkakakilanlan ng protocol ay nagmumula sa 802.2 Logical Link Control (LLC) na header, na karaniwang layered sa ibabaw ng FDDI o Token Ring header.
- Kapag nag-filter para sa karamihan ng mga tagatukoy ng protocol sa FDDI o Token Ring, tcpdump Sinusuri lamang ang patlang ng protocol ID ng isang header ng LLC sa tinatawag na SNAP na format na may isang Organizational Unit Identifier (OUI) ng 0x000000, para sa encapsulated Ethernet; ito ay hindi suriin kung ang packet ay nasa SNAP na format na may isang OUI ng 0x000000.
- Ang mga eksepsiyon ay iso , kung saan ito ay sumusuri sa DSAP (Destination Service Access Point) at SSAP (Access Point ng Pinagmulan ng Serbisyo) ng header ng LLC, stp at netbeui , kung saan sinusuri nito ang DSAP ng header ng LLC, at atalk , kung saan ito ay sumusuri para sa isang SNAP-format na packet na may OUI ng 0x080007 at ang Appletalk etype.
- Sa kaso ng Ethernet, tcpdump Sinusuri ang patlang ng uri ng Ethernet para sa karamihan ng mga protocol na iyon; ang mga eksepsiyon ay iso , katas , at netbeui , kung saan ito ay sumusuri para sa isang 802.3 na frame at pagkatapos ay sinusuri ang header ng LLC gaya ng ginagawa nito para sa FDDI at Token Ring; atalk , kung saan ito ay sumusuri pareho para sa Appletalk etype sa isang Ethernet frame at para sa SNAP-format na packet tulad ng ginagawa nito para sa FDDI at Token Ring; aarp , kung saan ito ay sumusuri para sa Appletalk ARP etype sa alinman sa isang Ethernet frame o isang 802.2 SNAP frame na may OUI ng 0x000000; at ipx , kung saan ito ay sumusuri para sa IPX etype sa isang Ethernet frame, ang IPX DSAP sa header ng LLC, ang 802.3 na walang LLC header encapsulation ng IPX, at ang IPX etype sa isang SNAP frame.
- decnet src host
- Totoo kung ang address source ng DECNET ay host , na maaaring isang address ng form na "10.123", o isang pangalan ng host ng DECNET. Ang suporta ng pangalan ng host ng DECNET ay magagamit lamang sa mga sistema ng Ultrix na naka-configure na tumakbo ng DECNET.
- decnet dst host
- Totoo kung ang DECNET destination address ay host .
- decnet host host
- Totoo kung alinman sa pinagmulan ng DECNET o destination address ay host .
- ip, ip6, arp, rarp, atalk, aarp, decnet, iso, stp, ipx, netbeui
- Mga daglat para sa ether proto p kung saan p ay isa sa mga protocol sa itaas.
- lat, moprc, mopdl
- Mga daglat para sa ether proto p kung saan p ay isa sa mga protocol sa itaas. Tandaan na tcpdump ay kasalukuyang hindi alam kung paano i-parse ang mga protocol na ito.
- vlan vlan_id
- Tama kung ang packet ay isang packet ng IEEE 802.1Q VLAN. Kung vlan_id ay tinukoy, totoo lamang kung ang packet ay tinukoy vlan_id . Tandaan na ang unavlan nakatagpo ng keyword sa pagpapahayag Binabago ang mga pag-decode offset para sa natitirang bahagi ng pagpapahayag sa palagay na ang packet ay isang packet ng VLAN.
- tcp, udp, icmp
- Mga daglat para sa ip proto p o ip6 proto p kung saan p ay isa sa mga protocol sa itaas.
- iso proto protocol
- Tama kung ang packet ay isang packet ng protocol ng OSI protocol . Protocol ay maaaring isang numero o isa sa mga pangalan clnp , esis , o isis .
- clnp, esis, isis
- Mga daglat para sa iso proto p kung saan p ay isa sa mga protocol sa itaas. Tandaan na tcpdump ay isang hindi kumpletong trabaho ng pag-parse ng mga protocol na ito.
- expr relop expr
- Totoo kung ang relasyon ay may hawak, kung saan relop ay isa sa>, <,> =, <=, =,! =, at expr ay isang pagpapakita ng aritmetika na binubuo ng mga constant na integer (ipinahayag sa standard C syntax), ang normal na binary operator +, -, *, /, &,, isang operator ng haba, at mga espesyal na data ng accessor ng packet. Upang ma-access ang data sa loob ng packet, gamitin ang sumusunod na syntax: proto expr: size .
Proto ay isa saeter, fddi, tr, ppp, slip, link, ip, arp, rarp, tcp, udp, icmp, o ip6, at ipinapahiwatig ang protocol layer para sa pagpapatakbo ng index (eter, fddi, tr, ppp, slip, atlink lahat ay sumangguni sa link layer). Tandaan na tcp, udp , at iba pang mga uri ng protocol sa upper-layer ay nalalapat lamang sa IPv4, hindi IPv6 (maayos ito sa hinaharap). Ang byte na offset, kaugnay sa ipinahiwatig na layer ng protocol, ay ibinibigay ng expr . Sukat ay opsyonal at nagpapahiwatig ng bilang ng mga byte sa larangan ng interes; maaari itong maging alinman, dalawa, o apat, at mga default sa isa. Ang operator ng haba, na ipinapahiwatig ng keywordlen, ay nagbibigay ng haba ng packet.
Halimbawa, 'ether 0 & 1! = 0'nakakakuha ng lahat ng trapiko ng multicast. Ang pananalitang 'ip 0 & 0xf! = 5'nakakakuha ng lahat ng mga IP packet na may mga pagpipilian. Ang pananalitang 'ip 6: 2 & 0x1fff = 0'nakakuha lamang ng mga fragmented datagrams at walang fragmented datagrams. Ang tseke na ito ay ipinahihiwatig lamang satcp atudp pagpapatakbo ng index. Halimbawa, tcp 0 laging nangangahulugang ang unang byte ng TCP header , at hindi kailanman nangangahulugang ang unang byte ng isang pumipihit na fragment.
Ang ilang mga offset at mga halaga ng patlang ay maaaring ipinahayag bilang mga pangalan sa halip na bilang mga numerong halaga. Ang mga sumusunod na field offset ng header ng protocol ay magagamit: icmptype (Patlang ng uri ng ICMP),icmpcode (Field ng ICMP code), attcpflags (Field ng TCP flags).
Ang mga sumusunod na halaga ng patlang ng patlang ng ICMP ay magagamit:icmp-echoreply, icmp-unreach, 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.
Ang mga sumusunod na halaga ng field ng bandang TCP ay magagamit:tcp-fin, tcp-syn, tcp-rst, tcp-push, tcp-push, tcp-ack, tcp-urg.
Ang mga primitiba ay maaaring pinagsama gamit ang alinman sa mga sumusunod:
- Ang isang parenthesized na pangkat ng mga primitibo at mga operator (mga panaklong ay espesyal sa Shell at kailangang escaped)
- Negation ('!'o `hindi')
- Concatenation ('&&'o'at')
- Alternatibo ('||'o'o')
Ang negatibo ay may pinakamataas na panuntunan. Ang alternation at concatenation ay may pantay na precedence at iugnay sa kaliwa papunta sa kanan. Tandaan na malinawat Ang mga token, hindi pagkakabit, ay kinakailangan para sa pagdugtong.
Kung ang isang identifier ay ibinigay nang walang isang keyword, ang pinakahuling keyword ay ipinapalagay. Halimbawa, hindi host kumpara at alas ay maikli para sa hindi host vs at host ace. Gayunpaman, hindi ito dapat malito hindi (host vs o alas).
Maaaring ipasa ang mga argumento sa pagpapahayag tcpdump bilang alinman sa isang solong argumento o bilang maraming mga argumento, alinman ang mas maginhawa. Sa pangkalahatan, kung ang expression ay naglalaman ng mga metacharacters ng Shell, mas madali itong ipasa bilang isang solong, binanggit na argumento. Maramihang mga argumento ay concatenated sa mga puwang bago ma-parse.
Mga Halimbawa ng Tcpdump
tcpdump host sundown
Ang itaas na utos ng tcpdump ay ginagamit upang i-print ang lahat ng mga packet na darating o umaalis mula sa paglubog ng araw. tcpdump host helios and (hot or ace )
Ang tcpdump na halimbawa ay nagpapalimbag ng trapiko sa pagitan helios at alinman mainit o ace. tcpdump ip host ace at hindi helios
Maaari mong gamitin ang tcpdump command na ito upang i-print ang lahat ng IP packets sa pagitan ace at anumang host maliban helios. tcpdump net ucb-eter
Sa halimbawa sa itaas, ang tcpdump ay nag-print ng lahat ng trapiko sa pagitan ng mga lokal na host at nagho-host sa Berkeley. tcpdump 'gateway snup at (port ftp o ftp-data)'
Ang sumusunod na halimbawa ng command ng tcpdump ay ginagamit upang i-print ang lahat ng trapikong FTP sa internet gateway snup . Tandaan na ang expression ay naka-quote upang maiwasan ang shell mula sa misinterpreting ang mga panaklong. tcpdump ip at hindi net localnet
Sa itaas na halimbawa ng tcpdump, ang command ay nag-print ng trapiko na hindi na-galing o nakalaan para sa mga lokal na host. tcpdump 'tcp tcpflags & (tcp-syn | tcp-fin)! = 0 at hindi src at dst net localnet '
Para sa halimbawa sa itaas ng tcpdump, ang utos ay ginagamit upang i-print ang mga packet ng simula at wakas (ang SYN at FIN packet) ng bawat pag-uusap ng TCP na nagsasangkot ng isang nonlocal host. tcpdump 'gateway snup and ip 2: 2> 576'
Ang utos sa itaas ay maglilimbag ng mga packet ng IP na mas mahaba kaysa sa 576 byte na ipinadala sa pamamagitan ng gateway snup. tcpdump 'ether 0 & 1 = 0 at ip 16> = 224'
Ang command na tcpdump na ipinapakita sa itaas ay naka-print na IP broadcast o multicast packet na hindi ipinadala sa pamamagitan ng Ethernet broadcast o multicast. tcpdump 'icmp icmptype! = icmp-echo at icmp icmptype! = icmp-echoreply'
Sa huling halimbawang ito ng tcpdump, ini-print ng command ang lahat ng mga packet ng ICMP na hindi mga echo na mga kahilingan o tugon (ibig sabihin, hindi ping packet). Ang output ng tcpdump ay umaasa sa protocol. Ang mga sumusunod ay nagbibigay ng isang maikling paglalarawan at mga halimbawa ng karamihan sa mga format. Link Level Headers. Kung ang '-e' na opsiyon ay ibinigay, ang header ng antas ng link ay naka-print out. Sa mga network ng Ethernet, naka-print ang pinagmulan at destination address, protocol, at haba ng packet. Sa mga network ng FDDI, ang mga pagpipilian sa '-e' ay nagiging sanhi tcpdump upang i-print ang field na 'kontrol sa kontrol', ang pinagmulan at patutunguhang mga address, at ang haba ng packet. (Ang field na 'control frame' ay nangangasiwa sa interpretasyon ng iba pang packet. Ang mga karaniwang packet (tulad ng mga naglalaman ng IP datagrams) ay mga 'async' na mga packet, na may prayoridad na halaga sa pagitan ng 0 at 7: halimbawa,async4'. Ang ganitong mga packet ay ipinapalagay na naglalaman ng isang packet ng 802.2 Logical Link Control (LLC); ang header ng LLC ay naka-print kung ito ay hindi isang ISO datagram o isang tinatawag na SNAP na packet. Sa mga Token Ring network, ang mga pagpipilian sa '-e' ay nagiging sanhi tcpdump upang i-print ang mga patlang ng 'access control' at 'frame control', ang pinagmulan at destination address, at ang haba ng packet. Tulad ng sa mga network ng FDDI, ang mga packet ay ipinapalagay na naglalaman ng isang packet ng LLC. Hindi alintana kung tinukoy o hindi ang pagpipiliang '-e', ang impormasyong naka-routing source ay naka-print para sa mga packet na pinagmulan ng pinagmulan. (N.B .: Ang sumusunod na paglalarawan ay ipinapalagay na pamilyar sa algorithm ng SLIP compression na inilarawan sa RFC-1144.) Sa mga link ng SLIP, isang tagapagpahiwatig ng direksyon ("Ako para sa inbound," O para sa outbound), uri ng packet, at impormasyon sa compression ay nakalimbag. Ang uri ng packet ay unang naka-print. Ang tatlong uri ay ip , utcp , at ctcp . Walang karagdagang impormasyong link ang naka-print para sa ip packet. Para sa mga packet ng TCP, ang naka-print na identifier ay naka-print na sumusunod sa uri. Kung ang packet ay naka-compress, ang naka-encode header nito ay nakalimbag. Ang mga espesyal na kaso ay naka-print bilang* S + n at* SA + n , kung saan n ang halaga kung saan ang numero ng sequence (o sequence number at ack) ay nagbago. Kung hindi ito isang espesyal na kaso, ang zero o higit pang mga pagbabago ay nakalimbag. Ang isang pagbabago ay ipinahiwatig ng U (kagyat na pointer), W (window), A (ack), S (sequence number), at ako (packet ID), na sinusundan ng isang delta (+ n o -n), o isang bagong halaga (= n). Sa wakas, ang dami ng data sa naka-print na haba ng packet at naka-compress na header. Halimbawa, ang sumusunod na linya ay nagpapakita ng isang palabas na naka-compress na packet ng TCP, na may isang pahiwatig na koneksyon sa pagkakakilanlan; ang ack ay nabago sa pamamagitan ng 6, ang numero ng pagkakasunod sa pamamagitan ng 49, at ang packet ID sa pamamagitan ng 6; may 3 bytes ng data at 6 bytes ng naka-compress na header: O ctcp * A + 6 S + 49 I + 6 3 (6)
Arp / rarp packet. Ang output ng Arp / rarp ay nagpapakita ng uri ng kahilingan at mga argumento nito. Ang format ay inilaan upang maging maliwanag. Narito ang isang maikling sample na kinuha mula sa simula ng isang 'rlogin' mula sa host rtsg upang mag-host csam : arp who-has csam tell rtsgarp reply csam ay-sa CSAM
Ang unang linya ay nagsasabi na ang rtsg ay nagpadala ng isang arp packet na humihingi ng Ethernet address ng internet host csam. Ang tugon ni Csam sa kanyang Ethernet address (sa halimbawang ito, ang mga address ng Ethernet ay nasa mga caps at internet address sa mas mababang kaso). Ito ay magiging mas mababa kaysa sa kung tapos na tcpdump -n : arp na-may 128.3.254.6 sabihin sa 128.3.254.68arp reply 128.3.254.6 ay-sa 02:07: 01: 00: 01: c4
Kung nagawa na namin tcpdump -e , ang katotohanan na ang unang packet ay broadcast at ang pangalawang ay point-to-point ay makikita: RTSG Broadcast 0806 64: arp who-has csam tell rtsgCSAM RTSG 0806 64: arp reply csam ay-sa CSAM
Para sa unang packet na ito ay nagsasabing ang pinagmulan ng Ethernet address ay RTSG, ang patutunguhan ay ang Ethernet broadcast address, ang uri ng patlang na naglalaman ng hex 0806 (uri ETHER_ARP), at ang kabuuang haba ay 64 bytes. TCP packets (N.B.: Ang sumusunod na paglalarawan ay nagpapahiwatig ng pagpapalagayang-loob sa protocol ng TCP na inilarawan sa RFC-793. Kung hindi ka pamilyar sa protocol, hindi maaaring magamit sa iyo ang paglalarawan o tcpdump na ito) . Ang pangkalahatang format ng isang linya ng TCP protocol ay: src> dst: flags data-seqno ack window urgent options
Src at dst ang mga IP address at port ng pinagmulan at patutunguhan. Mga Flag Ang ilang kombinasyon ng S (SYN), F (FIN), P (PUSH) o R (RST) o isang '.' (walang mga flag). Data-seqno ay naglalarawan ng bahagi ng puwang ng pagkakasunod-sunod na sakop ng data sa paketeng ito (tingnan ang halimbawa sa ibaba). Ack ay ang numero ng pagkakasunud-sunod ng susunod na data na inaasahan sa iba pang direksyon sa koneksyon na ito. Window ay ang bilang ng mga byte ng pagtanggap ng espasyo ng buffer na magagamit sa iba pang direksyon sa koneksyon na ito. Urg ay nagpapahiwatig na mayroong 'kagyat' na data sa packet. Mga Opsyon ang mga pagpipilian sa tcp na nakapaloob sa mga braket ng anggulo (hal., Src, atbp, at flags ay laging naroroon. Ang iba pang mga patlang ay depende sa mga nilalaman ng tcp protocol header ng packet at ang output lamang kung naaangkop. Narito ang pambungad na bahagi ng isang rlogin mula sa host rtsg upang mag-host csam . rtsg.1023> csam.login: S 768512: 768512 (0) manalo 4096 Ang unang linya ay nagsasabi na ang tcp port 1023 sa rtsg ay nagpadala ng isang packet sa port mag log in sa csam. AngS ay nagpapahiwatig na ang SYN bandila ay naitakda. Ang numero ng packet sequence ay 768512 at wala itong data. (Ang notasyon ay 'una: huling (nbytes)', na nangangahulugang 'mga numero ng pagkakasunud-sunod una hanggang sa hindi kasama huling na kung saan ay nbytes bytes ng data ng user '.) Walang piggy-back na ack, ang magagamit na window ng pagtanggap ay 4096 bytes, at mayroong isang opsyon na max-segment-size na humihiling ng isang mss na 1024 bytes. Tugon ng Csam na may katulad na packet maliban kasama dito ang isang piggybacked ack para sa rtsg ng SYN. Rtsg then acks csam's SYN. Ang '.' nangangahulugan na walang mga flag ang naitakda. Ang packet ay walang data kaya walang data sequence number. Tandaan na ang numero ng sequence ng ack ay isang maliit na integer (1). Unang beses tcpdump nakikita ang isang tcp 'na pag-uusap', na ini-print ang numero ng pagkakasunod-sunod mula sa packet. Sa kasunod na mga packet ng pag-uusap, ang pagkakaiba sa pagitan ng numero ng pagkakasunod-sunod ng packet at ang naunang pagkakasunud-sunod na numero ay naka-print. Nangangahulugan ito na ang mga numero ng pagkakasunud-sunod pagkatapos ng unang maaaring ipakahulugan bilang kamag-anak na mga posisyon ng byte sa data stream ng pag-uusap (kasama ang unang data byte bawat direksyon ay '1'). Ang '-S' ay sasamsaman ang tampok na ito, na nagiging sanhi ng mga orihinal na numero ng pagkakasunod-sunod upang maging output. Sa ika-anim na linya, ang rtsg ay nagpapadala ng csam 19 bytes ng data (bytes 2 hanggang 20 sa rtsg -> csam bahagi ng pag-uusap). Ang PUSH flag ay naka-set sa packet. Sa ikapitong linya, sinasabi ng csam na natanggap nito ang data na ipinadala ng rtsg hanggang ngunit hindi kabilang ang byte 21. Karamihan sa data na ito ay tila nakaupo sa socket buffer dahil ang window ng receiver ng csam ay nakakuha ng 19 bytes na mas maliit. Nagpapadala din si Csam ng isang byte ng data sa rtsg sa paketeng ito. Sa ikawalo at ikasiyam na linya, ang csam ay nagpapadala ng dalawang byte ng kagyat na, na pinilit ang data sa rtsg. Kung ang snapshot ay maliit na sapat na iyon tcpdump ay hindi nakuha ang buong header ng TCP, binibigyang-kahulugan nito ang mas maraming header hangga't maaari at pagkatapos ay nag-uulat " tcp '' upang ipahiwatig na ang natitira ay hindi maipaliwanag. Kung ang header ay naglalaman ng isang bogus na opsyon (isa na may haba na alinman sa masyadong maliit o lampas sa dulo ng header), tcpdump Iniuulat ito bilang " masamang opt '' at hindi binibigyang kahulugan ang anumang karagdagang mga pagpipilian (dahil imposibleng sabihin kung saan nagsisimula sila). Kung ang haba ng header ay nagpapahiwatig ng mga opsyon ay naroroon ngunit ang IP datagram haba ay hindi sapat na mahaba para sa mga pagpipilian upang aktwal na naroon, tcpdump Iniuulat ito bilang " masamang haba ng HDR ''. Kunin ang mga packet na may partikular na mga kumbinasyon ng bandila. Mayroong walong bits sa seksyon ng control bits ng TCP header: CWR | ECE | URG | ACK | PSH | RST | SYN | FIN Ipagpalagay natin na gusto nating manood ng mga packet na ginamit sa pagtatatag ng koneksyon sa TCP. Tandaan na ang TCP ay gumagamit ng isang tatlong-daan na pagkakamay protocol kapag ito ay nagsimula ng isang bagong koneksyon; ang pagkakasunud-sunod ng koneksyon tungkol sa TCP control bits ay: Ngayon kami ay interesado sa pagkuha ng mga packet na may lamang ang SYN bit set (Hakbang 1). Tandaan na hindi namin gusto ang mga packet mula sa hakbang 2 (SYN-ACK), isang simpleng paunang SYN. Ang kailangan natin ay isang wastong pagpapahiwatig ng filter para sa tcpdump . Alalahanin ang istruktura ng isang header ng TCP nang walang mga pagpipilian: 0 15 31-----------------------------------------------------------------| source port | destination port |-----------------------------------------------------------------| numero ng pagkakasunod-sunod |-----------------------------------------------------------------| numero ng pagkilala |-----------------------------------------------------------------| HL | rsvd | C | E | U | A | P | R | S | F | laki ng window |-----------------------------------------------------------------| TCP checksum | kagyat na pointer |-----------------------------------------------------------------
Ang isang TCP header ay karaniwang may 20 octets ng data, maliban kung ang mga pagpipilian ay naroroon. Ang unang linya ng graph ay naglalaman ng octets 0-3, ang pangalawang linya ay nagpapakita ng octets 4-7, atbp. Simula sa bilang na may 0, ang may-katuturang TCP control bits ay nakapaloob sa octet 13: 0 7| 15| 23| 31----------------|---------------|---------------|----------------| HL | rsvd | C | E | U | A | P | R | S | F | laki ng window |----------------|---------------|---------------|----------------| | Ika-13 na octet | | |
Magkita tayo nang mas maaga sa octet no. 13: | | |---------------| | C | E | U | A | P | R | S | F | |---------------| |7 5 3 0|
Ito ang mga TCP control bits kung saan kami ay interesado. Binilang namin ang mga piraso sa oktet na ito mula 0 hanggang 7, pakanan papunta sa kaliwa, kaya ang PSH bit ay bit number 3, habang ang URG bit ay numero 5. Tandaan na gusto naming makuha ang mga packet na may lamang SYN set. Tingnan natin kung ano ang mangyayari sa Oktubre 13 kung ang isang TCP datagram ay dumating sa hanay ng SYN sa header nito: | C | E | U | A | P | R | S | F | |---------------| |0 0 0 0 0 0 1 0| |---------------| |7 6 5 4 3 2 1 0|
Sa pagtingin sa seksyon ng control bits nakita namin na lamang ang bit number 1 (SYN) ay nakatakda. Ipagpapalagay na ang oktet numero 13 ay isang 8-bit unsigned integer sa byte ng network ng order, ang binary na halaga ng oktet na ito ay: 00000010 Ang pagkatawan nito ay: 7 6 5 4 3 2 1 00*2 + 0*2 + 0*2 + 0*2 + 0*2 + 0*2 + 1*2 + 0*2 = 2
Kami ay halos tapos na, dahil ngayon alam namin na kung lamang SYN ay nakatakda, ang halaga ng ika-13 na octet sa header ng TCP, kapag binigyang-kahulugan bilang isang 8-bit unsigned na integer sa byte ng order ng network, ay dapat eksaktong 2. Ang relasyon na ito ay maaaring ipahayag bilang tcp 13 == 2 Maaari naming gamitin ang expression na ito bilang filter para sa tcpdump upang panoorin ang mga packet na may lamang SYN set: tcpdump -i xl0 tcp 13 == 2 Ang pahayag ay nagsasabi "hayaan ang ika-13 na octet ng isang TCP datagram ay may decimal na halaga 2," kung saan ay eksakto kung ano ang gusto namin. Ngayon, ipagpalagay natin na kailangan namin upang makuha ang mga pack ng SYN, ngunit wala kaming pakialam kung ang ACK o anumang iba pang mga bit control TCP ay nakatakda sa parehong oras. Tingnan kung ano ang mangyayari sa Oktubre 13 kapag dumating ang isang TCP datagram na may SYN-ACK set: | C | E | U | A | P | R | S | F | |---------------| |0 0 0 1 0 0 1 0| |---------------| |7 6 5 4 3 2 1 0|
Ang Mga Bits 1 at 4 ay naitakda na ngayon sa ika-13 na octet. Ang binary na halaga ng octet 13 ay: 00010010 na isinasalin sa decimal: 7 6 5 4 3 2 1 00*2 + 0*2 + 0*2 + 1*2 + 0*2 + 0*2 + 1*2 + 0*2 = 18
Hindi namin magagamit lamang ang 'tcp 13 == 18' sa tcpdump filter na expression, dahil na pipili lamang ang mga packet na may SYN-ACK set, ngunit hindi ang mga may lamang SYN set. Tandaan na wala kaming pakialam kung ang ACK o anumang iba pang control bit ay nakatakda hangga't ang SYN ay nakatakda. Upang makamit ang aming layunin, kailangan naming lohikal AT ang binary na halaga ng octet 13 na may ilang iba pang mga halaga upang mapanatili ang SYN bit. Alam namin na gusto naming itakda ang SYN sa anumang kaso, kaya lohikal kami AT ang halaga sa ika-13 na octet na may binary na halaga ng isang SYN: 00010010 SYN-ACK 00000010 SYN AT 00000010 (nais nating SYN) AT 00000010 (nais nating SYN) -------- -------- = 00000010 = 00000010
Nakita namin na ang ganitong operasyon AT ay naghahatid ng parehong resulta anuman ang ACK o iba pang bitbit na kontrol ng TCP. Ang pagkatawan ng decimal ng AND halaga pati na rin ang resulta ng operasyong ito ay 2 (binary 00000010), kaya alam namin na para sa mga packet na may SYN itakda ang sumusunod na kaugnayan ay dapat na totoo: ((halaga ng octet 13) AT (2)) == (2) Ito ang nagtuturo sa amin sa tcpdump filter na expression tcpdump -i xl0 'tcp 13 & 2 == 2' Tandaan na dapat mong gamitin ang mga solong quotes o isang backslash sa expression upang itago ang AT ('&') espesyal na character mula sa shell. Mga UDP packet. Inilalarawan ang format ng UDP ng paketeng ito: actinide.who> broadcast.who: udp 84
Sinasabi nito na ang port sino sa host actinide nagpadala ng udp datagram sa port sino sa host broadcast , ang address ng Internet broadcast. Ang packet ay naglalaman ng 84 bytes ng data ng user. Ang ilang mga serbisyo ng UDP ay kinikilala (mula sa pinagmulan o patutunguhan na numero ng port) at ang impormasyong pang-itaas na antas ng protocol na nakalimbag-lalo na, mga kahilingan sa serbisyo ng Pangalan ng Domain (RFC-1034/1035) at Sun RPC na tawag (RFC-1050) sa NFS. Mga kahilingan sa server ng pangalan ng UDP (N.B.: Ang sumusunod na paglalarawan ay ipinapalagay na pamilyar sa protocol ng Domain Service na inilarawan sa RFC-1035. Kung hindi ka pamilyar sa protocol, ang sumusunod na paglalarawan ay hindi gaanong nauunawaan.) Naka-format ang mga kahilingan sa server ng pangalan bilang: src> dst: id op? flags qtype qclass name (len) h2opolo.1538> helios.domain: 3+ A? ucbvax.berkeley.edu. (37)
Host h2opolo tinanong ang domain server sa helios para sa isang tala ng address (qtype = A) na nauugnay sa pangalan ucbvax.berkeley.edu. Ang query id ay '3'. Ang '+' ay nagpapahiwatig ng nais na recursion bandila ay naitakda. Ang haba ng query ay 37 bytes, hindi kasama ang UDP at IP header ng protocol. Ang pagpapatakbo ng query ay ang normal, Tanong , kaya ang op field ay tinanggal. Kung ang op ay anumang bagay, ito ay naipinta sa pagitan ng '3' at ang '+'. Katulad nito, ang qclass ay ang normal na isa, C_IN , at tinanggal. Anumang iba pang mga qclass ay naipinta kaagad pagkatapos ng 'A'. Ang ilang mga anomalya ay sinusuri at maaaring magresulta sa mga dagdag na larangan na nakapaloob sa mga parisukat na bracket: Kung ang isang query ay naglalaman ng isang sagot, mga talaan ng awtoridad o karagdagang seksyon ng mga rekord, ancount , nscount , o arcount ay nakalimbag bilang ' n isang ',' n n ', o' n au 'kung saan n ang naaangkop na bilang. Kung ang alinman sa mga bit na tugon ay nakatakda (AA, RA, o rcode) o alinman sa mga `dapat ay zero 'na mga bits ay nakatakda sa dalawang at tatlong byte,` b2 & 3 = x 'ay nakalimbag, kung saan x ay ang hex na halaga ng mga byte ng header dalawa at tatlong. Mga tugon ng server ng pangalan ng UDP. Naka-format ang mga tugon ng server ng pangalan bilang: src> dst: id sa rcode flags isang / n / au uri klase data (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)
Sa unang halimbawa, helios tumugon sa query id 3 mula sa h2opolo na may tatlong talaan ng sagot, tatlong talaan ng server ng pangalan, at pitong karagdagang rekord. Ang unang tala ng sagot ay type A (address), at ang data nito ay internet address 128.32.137.3. Ang kabuuang sukat ng tugon ay 273 bytes, hindi kasama ang UDP at mga header ng IP. Ang op (Query) at sagot code (NoError) ay tinanggal, gaya ng klase (C_IN) ng A record. Sa pangalawang halimbawa, helios Tumugon sa query 2 sa isang tugon code ng nonexistent domain (NXDomain) na walang mga sagot, isang pangalan ng server, at walang mga rekord ng awtoridad. Ang '*' ay nagpapahiwatig na ang makapangyarihan na sagot bit ay naitakda. Dahil walang mga sagot, walang uri, klase, o data ang naipinta. Ang iba pang mga character ng bandila na maaaring lumitaw ay '-' (magagamit ang recursion, RA, hindi itakda) at '|' (pinutol mensahe, TC, itakda). Kung ang seksyon ng 'tanong' ay hindi naglalaman ng eksaktong isang entry, ' n ay naka-print. Tandaan na ang mga kahilingan sa pangalan ng server at mga tugon ay may malaking, at ang default snaplen ng 68 bytes ay hindi maaaring makuha ng sapat na packet upang i-print. Gamitin ang-s bandila upang madagdagan ang snaplen kung kailangan mo upang sineseryoso imbestigahan ang pangalan ng trapiko ng server. '-s 128'ay gumawang mabuti para sa akin. Pagkabasa ng SMB / CIFS. tcpdump Kasama ang medyo malawak na SMB / CIFS / NBT decoding para sa data sa UDP / 137, UDP / 138, at TCP / 139. Ang ilang mga primitive decoding ng data ng IPX at NetBEUI SMB ay tapos na rin. Sa pamamagitan ng default isang medyo minimal decode ay tapos na, na may mas detalyadong decode tapos na kung -v ay ginagamit. Mag-babala na may -v isang solong SMB packet ay maaaring tumagal ng hanggang isang pahina o higit pa, kaya gamitin lamang -v kung talagang gusto mo ang lahat ng mga detalye ng madugo. Kung nagde-decode ka ng SMB session na naglalaman ng mga string ng unicode, maaari mong hilingin na itakda ang variable ng kapaligiran USE_UNICODE sa 1. Ang isang patch upang awtomatikong makita ang mga string ng unicode ay malugod na tatanggapin. Para sa impormasyon tungkol sa mga format ng SMB packet at kung ano ang ibig sabihin ng lahat ng mga patlang tingnan www.cifs.org o ang pub / samba / specs / direktoryo sa iyong mga paboritong samba.org site mirror. Ang SMB patch ay isinulat ni Andrew Tridgell ([email protected]). Mga kahilingan at tugon ng NFS. Ang Sun NFS (Network File System) na mga kahilingan at mga tugon ay naka-print bilang: src.xid> dst.nfs: len op args src.nfs> dst.xid: sumagot stat len op results sushi.6709> wrl.nfs: 112 readlink fh 21,24 / 10.73165wrl.nfs> sushi.6709: reply ok 40 readlink "../var"sushi.201b> wrl.nfs: 144 lookup fh 9,74 / 4096.6878 "xcolors"wrl.nfs> sushi.201b: reply ok 128 lookup fh 9,74 / 4134.3150
Sa unang linya, host sushi nagpadala ng isang transaksyon na may id 6709 sa wrl (tandaan na ang numerong sumusunod sa src host ay isang transaksyon id, hindi ang source port). Ang kahilingan ay 112 bytes, hindi kasama ang UDP at mga header ng IP. Ang operasyon ay isang readlink (basahin ang simbolikong link) sa file handle ( fh ) 21,24 / 10.731657119. (Kung ang isa ay masuwerteng, gaya ng sa kasong ito, ang hawakan ng file ay maaaring ipakahulugan bilang isang pangunahing, maliit na pares ng numero ng aparato, na sinusundan ng inode number at generation number.) Wrl sumasagot 'ok' sa mga nilalaman ng link. Sa ikatlong linya, sushi tanong niya wrl upang hanapin ang pangalan ' xcolors 'sa direktoryo ng file 9,74 / 4096.6878. Tandaan na ang data na naka-print ay depende sa uri ng operasyon. Ang format ay inilaan upang maging maliwanag kung basahin kasama sa isang spec ng protocol ng NFS. Kung ang flag na -v (masalita) ay ibinigay, ang karagdagang impormasyon ay naka-print. Halimbawa: sushi.1372a> wrl.nfs: 148 basahin fh 21,11 / 12,195 8,192 bytes @ 24576wrl.nfs> sushi.1372a: Tumugon ok 1472 basahin REG 100664 ids 417/0 sz 29388
(Nag-print din ang IP header TTL, ID, haba, at mga fragmentation field, na tinanggal mula sa halimbawang ito.) Sa unang linya, sushi tanong niya wrl upang mabasa ang 8192 bytes mula sa file 21,11 / 12,195, sa byte offset 24576. Wrl sumagot ang '
Tcpdump Output Format