Tcpdump adalah perintah yang digunakan pada pelbagai sistem operasi Linux (OS) yang mengumpulkan paket TCP / IP yang melalui penyesuai rangkaian. Sama seperti alat sniffer paket, tcpdump bukan sahaja dapat menganalisis lalu lintas rangkaian tetapi juga menyimpannya ke fail.
Tidak seperti beberapa arahan yang disediakan oleh sistem operasi secara lalai, anda mungkin mendapati bahawa anda tidak boleh menggunakan tcpdump kerana ia tidak dipasang. Untuk memasang tcpdump, jalankan memasang apt-get tcpdump atau yum install tcpdump, bergantung pada OS anda.
Bagaimana Tcpdump berfungsi
Tcpdump mencetak tajuk paket pada antara muka rangkaian yang sepadan dengan Boolean ungkapan . Ia juga boleh dijalankan dengan-w bendera, yang menyebabkannya menyimpan data paket ke fail untuk analisis kemudian, dan / atau dengan-r bendera, yang menyebabkan ia dibaca dari fail paket yang disimpan dan bukannya untuk membaca paket dari antara muka rangkaian. Dalam semua kes, hanya paket yang sepadan ungkapan akan diproses oleh tcpdump .
Tcpdump akan, jika tidak berlari dengan-c bendera, terus menangkap paket sehingga terganggu oleh isyarat SIGINT (dijana, contohnya, dengan menaip aksara mengganggu anda, biasanya Ctrl + C) atau isyarat SIGTERM (biasanya dijana denganbunuh(1) arahan); jika dijalankan dengan-c bendera, ia akan menangkap paket sehingga diganggu oleh isyarat SIGINT atau SIGTERM atau bilangan paket tertentu yang telah diproses.
Suis-suis yang disebutkan di atas dijelaskan secara terperinci kemudian dalam artikel ini.
Bila tcpdump selesai menangkap paket, ia akan melaporkan tuduhan:
- Paket "yang diterima oleh penapis."
- Maksud ini bergantung pada OS yang anda jalankan tcpdump , dan mungkin dalam perjalanan OS dikonfigurasikan. Jika penapis telah ditentukan pada baris arahan, pada beberapa OS ia mengira paket tidak kira sama ada ia dipadankan dengan ungkapan penapis, dan pada yang lain ia hanya mengira paket yang dipadankan dengan ungkapan penapis dan diproses oleh tcpdump.
- Paket "digugurkan oleh kernel."
- Ini adalah bilangan paket yang dijatuhkan, disebabkan oleh kekurangan ruang penampan, oleh mekanisme tangkapan paket di OS yang mana tcpdump sedang berjalan, jika OS melaporkan maklumat tersebut kepada aplikasi. Jika tidak, ia akan dilaporkan sebagai 0.
Pada platform yang menyokong isyarat SIGINFO, seperti kebanyakan BSDs (Berkeley Software Distributions), ia akan melaporkan jumlahnya apabila ia menerima isyarat SIGINFO (dihasilkan, sebagai contoh, dengan menaip watak "status" anda, biasanya Ctrl + T) dan akan terus menangkap paket.
Keserasian Tcpdump
Membaca paket dari antara muka rangkaian dengan arahan tcpdump mungkin memerlukan anda mempunyai keistimewaan istimewa ( membaca fail paket yang disimpan tidak memerlukan keistimewaan sedemikian):
- SunOS 3.x atau 4.x dengan NIT atau BPF: Anda mesti membaca akses / dev / nit atau dev / bpf * .
- Solaris dengan DLPI: Anda mesti mempunyai akses membaca / menulis ke peranti pseudo rangkaian, seperti / dev / le . Sekurang-kurangnya beberapa versi Solaris, bagaimanapun, ini tidak mencukupi untuk dibenarkan tcpdump untuk menangkap dalam mod rambang; pada versi Solaris, anda mesti menjadi root, atau tcpdump mesti dipasang setuid ke akar, untuk ditangkap dalam mod rambang. Perhatikan bahawa, pada banyak (mungkin semua) antara muka, jika anda tidak menangkap dalam mod rambang, anda tidak akan melihat sebarang paket keluar, jadi tangkapan yang tidak dilakukan dalam mod rambang mungkin tidak berguna.
- HP-UX dengan DLPI: Anda mesti menjadi root atau tcpdump mesti dipasang setuid ke akar.
- IRIX dengan pengintipan: Anda mesti menjadi root atau tcpdump mesti dipasang setuid ke akar.
- Linux: Anda mesti menjadi root atau tcpdump mesti dipasang setuid ke akar.
- Ultrix dan Digital UNIX / Tru64 UNIX: Mana-mana pengguna boleh menangkap trafik rangkaian dengan tcpdump . Walau bagaimanapun, tiada pengguna (malah pengguna super) boleh menangkap dalam mod rambang di antara muka melainkan jika pengguna super telah mengaktifkan operasi mod rambang pada muka yang menggunakan pfconfig (8), dan tiada pengguna (bahkan pengguna super) dapat menangkap lalu lintas unicast yang diterima oleh atau dihantar oleh mesin pada satu muka surat melainkan pengguna super telah mengaktifkan operasi salinan-semua-mod pada antara muka yang menggunakan pfconfig , jadi berguna tangkapan paket pada antara muka mungkin memerlukan sama ada operasi mod-rawak atau operasi salinan-semua-mod, atau kedua-dua mod operasi, diaktifkan pada antara muka itu.
- BSD: Anda mesti membaca akses / dev / bpf * .
Sintaks Perintah Tcpdump
Sama seperti semua arahan komputer, arahan tcpdump berfungsi dengan betul hanya jika sintaks adalah betul:
tcpdump -adeflnNOpqRStuvxX -c kiraan
-C saiz fail -F fail
-i antara muka -m modul -r fail
-s snaplen -T jenis -U pengguna -w fail
-E algo: rahsia ungkapan
Pilihan Perintah Tcpdump
Ini adalah semua pilihan yang boleh anda gunakan dengan arahan tcpdump:
- -a: Cuba untuk menukar alamat rangkaian dan penyiaran ke nama.
- -c: Keluar selepas menerima kiraan paket.
- -C: Sebelum menulis paket mentah ke fail simpan, periksa sama ada fail pada masa ini lebih besar daripada saiz fail dan, jika ya, tutup fail simpan semasa dan buka yang baru.Savefiles selepas fail save pertama akan mempunyai nama yang ditentukan dengan-w bendera, dengan nombor selepas itu, bermula pada 2 dan terus ke atas. Unit saiz fail berjuta-juta bait (1,000,000 bait, bukan 1,048,576 bait).
- -d: Dumpkan kod padanan paket yang disusun dalam bentuk yang boleh dibaca manusia kepada output standard dan hentikan.
- -dd: Kod padanan paket dump sebagaiC pecahan program.
- -ddd: Kod padanan paket dump sebagai nombor perpuluhan (didahului dengan bilangan).
- -e: Cetak tajuk peringkat pautan pada setiap baris sampah.
- -E: Gunakan algo: rahsia untuk menyahsulit paket ESP IPsec. Algoritma mungkindes-cbc, 3des-cbc, blowfish-cbc, rc3-cbc, cast128-cbc, atautiada. Lalai adalahdes-cbc. Keupayaan untuk menyahsulitkan paket hanya ada jika tcpdump disusun dengan cryptography enabled. rahsia teks ascii untuk kunci rahsia ESP. Kita tidak boleh mengambil nilai binari sewenang-wenang pada masa ini. Opsyen itu menganggap RFC2406 ESP, bukan RFC1827 ESP. Pilihan ini hanya untuk tujuan penyahpepijatan, dan penggunaan pilihan ini dengan kunci 'rahsia' tidak digalakkan. Dengan menyampaikan kunci rahsia IPsec ke baris arahan anda menjadikannya kelihatan kepada orang lain, melalui ps (1) dan acara-acara lain.
- -f: Mencetak alamat internet 'asing' secara numerik dan bukannya secara simbolik (pilihan ini bertujuan untuk merosakkan kerosakan otak yang serius di pelayan yp Sun - biasanya digantung selamanya menerjemahkan nombor internet nonlocal).
- -F: Gunakan fail sebagai input untuk ungkapan penapis. Ungkapan tambahan yang diberikan pada baris perintah diabaikan.
- -i: Dengarkan antara muka . Sekiranya tidak dinyatakan, tcpdump mencari senarai antara muka sistem untuk antara muka yang bernombor dan dikonfigurasi yang paling rendah (tidak termasuk loopback). Dikatakan patah dengan memilih perlawanan paling awal. Pada sistem Linux dengan biji 2.2 atau lebih, satu antara muka argumen "mana-mana" boleh digunakan untuk menangkap paket dari semua antara muka. Perhatikan bahawa menangkap pada peranti "mana-mana" tidak akan dilakukan dalam mod rambang.
- -l: Buat stdout line buffered. Berguna jika anda mahu melihat data semasa menangkapnya. Sebagai contoh, "tcpdump -l | tee dat '' atau" tcpdump -l> dat & tail -f dat ''.
- -m: Muatkan definisi mod SMI MIB dari fail modul . Pilihan ini boleh digunakan beberapa kali untuk memuat beberapa modul MIB ke dalam tcpdump .
- -n: Jangan menukar alamat hos ke nama. Ini boleh digunakan untuk mengelakkan pemeriksaan DNS.
- -nn: Jangan menukar nombor protokol dan port ke nama lain.
- -N: Jangan cetak nama domain kelayakan nama hos. Sebagai contoh, jika anda memberikan bendera ini, maka tcpdump akan mencetak "nic '' bukannya" nic.ddn.mil ''.
- -O: Jangan menjalankan pengoptimuman kod padanan paket. Ini berguna hanya jika anda mengesyaki bug dalam pengoptimuman.
- -p: Jangan letakkan antara muka ke mod rambang. Perhatikan bahawa antara muka mungkin berada dalam mod rambang untuk beberapa sebab lain; Oleh itu, '-p' tidak boleh digunakan sebagai singkatan untuk 'tuan rumah eter {tempatan-hw-addr} atau siaran eter'.
- -q: Pantas (tenang) output. Cetak kurang maklumat protokol supaya garis output lebih pendek.
- -R: Menganggap paket ESP / AH berdasarkan spesifikasi lama: RFC1825 hingga RFC1829. Sekiranya dinyatakan, tcpdump tidak akan mencetak medan pencegahan semula. Oleh kerana tidak ada medan versi protokol dalam spesifikasi ESP / AH, tcpdump tidak boleh menyimpulkan versi protokol ESP / AH.
- -r: Baca paket dari fail (yang telah dibuat dengan pilihan -w). Input standard digunakan jika fail adalah "- ''.
- -S: Mencetak nombor rangkaian TCP mutlak, bukannya relatif.
- -s: Snarf snaplen bait data dari setiap paket daripada kegagalan 68; dengan NIT SunOS, minima sebenarnya 96. Enam puluh lapan bait mencukupi untuk IP, ICMP, TCP, dan UDP tetapi boleh memotong maklumat protokol dari pelayan nama dan paket NFS (lihat di bawah). Packet dipotong kerana snapshot terhad ditunjukkan dalam output dengan "| proto '', di mana proto adalah nama paras protokol di mana pemotongan telah berlaku. Ambil perhatian bahawa mengambil snapshot yang lebih besar kedua-duanya meningkatkan jumlah masa yang diperlukan untuk memproses paket dan, secara efektif, mengurangkan jumlah buffering paket. Ini boleh menyebabkan paket hilang. Anda perlu had snaplen ke nombor terkecil yang akan menangkap maklumat protokol yang anda minati. Menetapkan snaplen kepada 0 bermakna menggunakan panjang yang diperlukan untuk menangkap seluruh paket.
- -T: Pek kuasa yang dipilih oleh " ungkapan "untuk ditafsirkan yang dinyatakan jenis . Jenis yang diketahui pada masa inicnfp (Protokol Cisco NetFlow),rpc (Panggil Prosedur Jauh),rtp (Protokol Aplikasi Sebenar),rtcp (Protokol kawalan aplikasi masa nyata),snmp (Protokol Pengurusan Rangkaian Mudah),tong (Alat Audio Visual), danwb (Lembaga Putih yang diedarkan).
- -t: Jangan mencetak cap waktu pada setiap baris sampah.
- -tt: Mencetak cap waktu yang tidak terformat di setiap garis sampah.
- -U: Menurun keistimewaan root dan menukar ID pengguna ke pengguna dan ID kumpulan kepada kumpulan utama pengguna .
- Catatan: Red Hat Linux secara automatik menurunkan keistimewaan kepada pengguna "pcap" jika tiada yang lain ditentukan.
- -ttt: Mencetak delta (dalam microseconds) antara baris semasa dan sebelumnya pada setiap garis sampah.
- -tttt: Cetak cap waktu dalam format lalai yang diteruskan mengikut tarikh pada setiap baris sampah.
- -u: Mencetak pegangan NFS yang tidak dikodkan.
- -v: (Sedikit lebih) output verbose. Sebagai contoh, masa untuk hidup, pengenalpastian, jumlah panjang, dan pilihan dalam paket IP dicetak. Juga membolehkan pemeriksaan integriti paket tambahan seperti mengesahkan checksum header IP dan ICMP.
- -vv: Malah lebih banyak keluaran verbose. Sebagai contoh, medan tambahan dicetak dari paket NFS reply, dan paket SMB sepenuhnya didekodkan.
- -vvv: Malah lebih banyak keluaran verbose. Sebagai contoh, telnetSB … SE pilihan dicetak sepenuhnya. Dengan -X Opsyen telnet dicetak dalam hex juga.
- -w: Tuliskan paket mentah kepada fail bukannya menghuraikan dan mencetaknya. Mereka kemudiannya boleh dicetak dengan pilihan -r. Output standard digunakan jika fail adalah "- ''.
- -x: Cetak setiap paket (tolak tajuk paras pautannya) dalam hex. Lebih kecil daripada keseluruhan paket atau snaplen bait akan dicetak. Ambil perhatian bahawa ini adalah keseluruhan paket-lapisan paket, jadi untuk lapisan pautan yang pad (mis., Ethernet), bait padding juga akan dicetak apabila paket lapisan yang lebih tinggi adalah lebih pendek daripada padding yang diperlukan.
- -X: Apabila mencetak hex, cetak ascii juga. Jadi jika-x juga ditetapkan, paket dicetak dalam hex / ascii. Ini sangat berguna untuk menganalisis protokol baru. Walaupun-x tidak juga ditetapkan, beberapa bahagian beberapa paket boleh dicetak dalam hex / ascii.
- ungkapan : Memilih paket mana yang akan dibuang. Jika tidak ungkapan diberikan, semua paket di internet akan dibuang. Jika tidak, hanya paket yang mana ungkapan 'benar' akan dibuang. The ungkapan terdiri daripada satu atau lebih primitif. Primitif biasanya terdiri daripada a ID (nama atau nombor) didahului oleh satu atau lebih penyertaan. Terdapat tiga jenis kelayakan:
- jenis : Qualifiers mengatakan apa jenis nama atau nombor id merujuk kepada. Jenis yang mungkintuan rumah, bersih, danpelabuhan-Maka contohnya, 'host foo', 'net 128.3', 'port 20'. Sekiranya tiada jenis kelayakan,tuan rumah diandaikan.
- dir : Qualifiers menentukan arah pemindahan tertentu ke dan / atau dari ID . Arah yang mungkin ialahsrc, dst, src atau sebagainya dansrc dan dst (cth., 'src foo', 'dst net 128.3', 'src atau dst port ftp-data'). Sekiranya tidak ada kualifier,src atau sebagainya diandaikan. Untuk lapisan pautan 'null' (iaitu, protokol titik-ke-titik seperti slip) masuk dan keluar kualifikasi boleh digunakan untuk menentukan arah yang dikehendaki.
- proto : Qualifiers menyekat perlawanan untuk protokol tertentu. Protos yang mungkin adalah: eter, fddi, tr, ip, ip6, arp, rarp, decnet, tcp, danudp-Maka contohnya, 'ether src foo', 'arp net 128.3', 'tcp port 21'. Sekiranya tiada penyokong proto, semua protokol yang konsisten dengan jenis tersebut diandaikan. Sebagai contoh, 'src foo' bermaksud '(ip atau arp atau rarp) src foo' (kecuali yang kedua adalah sintaksis undang-undang), 'net bar' bermaksud 'net bar' dan 'port 53' bermaksud '(tcp atau udp) port 53'.
- 'fddi' sebenarnya merupakan alias untuk 'eter'; parser memperlakukan mereka secara identik sebagai bermaksud "paras pautan data yang digunakan pada antara muka rangkaian yang ditentukan. '' Tajuk FDDI mengandungi sumber dan alamat destinasi seperti Ethernet, dan sering mengandungi jenis paket Ethernet, jadi anda boleh menapis pada bidang FDDI ini hanya seperti bidang Ethernet yang sama. Tajuk FDDI juga mengandungi medan lain, tetapi anda tidak boleh menyebutnya dengan jelas dalam ungkapan penapis.
- Begitu juga, 'tr' adalah alias untuk 'eter'; pernyataan perenggan yang terdahulu mengenai tajuk FDDI juga terpakai kepada tajuk Token Ring.
Di samping itu, ada beberapa kata kunci "primitif" khas yang tidak mengikuti corak:pintu masuk, siaran, kurang, lebih besar, dan aritmetik ungkapan. Semua ini diterangkan di bawah.
Ungkapan penapis yang lebih kompleks dibina dengan menggunakan kata-katadan, atau, dantidak untuk menggabungkan primitives-contohnya, "host foo dan bukan port ftp dan bukan port ftp-data". Untuk menyimpan taip, senarai kualifikasi yang sama boleh ditinggalkan (mis., "Tcp dst port ftp atau data ftp atau domain" sama persis dengan "tcp dst port ftp atau tcp dst port ftp-data atau tcp dst port domain".)
Ini adalah primitif yang dibenarkan dengan perintah tcpdump:
- dst hos tuan rumah
- Benar jika bidang destinasi IPv4 / v6 adalah paket tuan rumah , yang mungkin sama ada alamat atau nama.
- host hos tuan rumah
- Benar jika medan sumber IPv4 / v6 dari paket itu tuan rumah .
- tuan rumah tuan rumah
- Benar jika sama ada sumber IPv4 / v6 atau destinasi paket itu tuan rumah . Mana-mana ekspresi tuan rumah di atas boleh dibuat dengan kata kunci,ip, arp, rarp, atauip6, seperti dalam hos ip tuan rumah (yang bersamaan dengan eter proto ip dan tuan rumah tuan rumah).
- Jika tuan rumah adalah nama yang mempunyai banyak alamat IP, setiap alamat akan diperiksa untuk perlawanan.
- ether dst hantu
- Benar jika alamat destinasi Ethernet adalah hantu . Ehost mungkin sama ada nama dari / etc / eters atau nombor (lihat eter (3N) untuk format angka).
- eter src hantu
- Benar jika alamat sumber Ethernet adalah hantu .
- tuan rumah eter hantu
- Benar jika sama ada sumber Ethernet atau alamat destinasi adalah hantu .
- pintu masuk tuan rumah
- Benar jika paket digunakan tuan rumah sebagai pintu masuk (iaitu, sumber Ethernet atau alamat destinasi adalah tuan rumah tetapi tidak pun sumber IP mahupun destinasi IP tuan rumah ).
- Hos mestilah nama dan mesti dijumpai oleh mekanisme penyelesaian hos-nama-ke-IP-alamat mesin (nama fail hos, DNS, NIS, dan sebagainya) dan mekanisme resolusi alamat-nama-ke-Ethernet (/ etc / eters, dsb.).
- Ungkapan yang sama ialah tuan rumah eter hantu dan sekarang menjadi tuan rumah tuan rumah , yang boleh digunakan sama ada nama atau nombor untuk tuan rumah / hantu .) Sintaks ini tidak berfungsi dalam konfigurasi yang didayakan IPv6 pada masa ini.
- dst bersih bersih
- Benar jika alamat destinasi IPv4 / v6 pada paket mempunyai nombor rangkaian bersih . Bersih mungkin sama ada nama dari / etc / networks atau nombor rangkaian (lihat rangkaian (4) untuk maklumat lanjut).
- src net bersih
- Benar jika alamat sumber IPv4 / v6 pada paket mempunyai nombor rangkaian bersih .
- bersih bersih
- Benar jika sama ada alamat IPv4 / v6 atau destinasi alamat paket mempunyai nombor rangkaian bersih .
- bersih bersih topeng netmask
- Benar jika alamat IP sepadan bersih dengan spesifik netmask . Boleh dilayakkan dengansrc ataudst. Perhatikan bahawa sintaks ini tidak sah untuk IPv6 bersih .
- bersih bersih / len
- Benar jika alamat IPv4 / v6 sepadan bersih dengan netmask len bit lebar. Boleh dilayakkan dengansrc ataudst.
- dst pelabuhan pelabuhan
- Benar jika paket ip / tcp, ip / udp, ip6 / tcp, atau ip6 / udp dan mempunyai nilai pelabuhan destinasi pelabuhan . The pelabuhan boleh menjadi nombor atau nama yang digunakan dalam / etc / services (lihat tcp (4P) dan udp (4P)). Jika nama digunakan, kedua-dua nombor dan protokol pelabuhan diperiksa. Jika nombor atau nama samaran digunakan, hanya nombor port yang diperiksa (contohnya,dst port 513 akan mencetak trafik tcp / login dan trafik udp / siapa, dandomain pelabuhan akan mencetak kedua-dua tcp / domain dan trafik udp / domain).
- port src pelabuhan
- Benar jika paket mempunyai nilai port sumber pelabuhan .
- pelabuhan pelabuhan
- Benar jika sama ada pelabuhan sumber atau destinasi paket itu pelabuhan . Sebarang ekspresi pelabur di atas boleh disediakan dengan kata kunci,tcp atauudp, seperti dalam tcp src port pelabuhan , yang sepadan dengan hanya paket tcp yang sumbernya adalah port pelabuhan .
- kurang panjang
- Benar jika paket mempunyai panjang kurang daripada atau sama dengan panjang . Ini bersamaan dengan len <= Panjang .
- lebih besar panjang
- Benar jika paket mempunyai panjang lebih besar daripada atau sama dengan panjang . Ini bersamaan dengan len> = Panjang .
- ip proto protokol
- Benar jika paket itu adalah paket IP (lihat ip (4P)) jenis protokol protokol . Protokol boleh menjadi nombor atau salah satu nama icmp , icmp6 , igmp , igrp , pim , ah , esp , vrrp , udp , atau tcp . Perhatikan bahawa pengenal tcp , udp , dan icmp juga kata kunci dan harus melarikan diri melalui backslash (), iaitu dalam c-shell. Perhatikan bahawa primitif ini tidak mengejar rantai pengepala protokol.
- ip6 proto protokol
- Benar jika paket adalah paket protokol IPv6 protokol . Perhatikan bahawa primitif ini tidak mengejar rantai pengepala protokol.
- ip6 protochain protokol
- Benar jika paket itu adalah paket IPv6, dan mengandungi header protokol dengan jenis protokol dalam rantaian header protokolnya. Sebagai contoh, protochain ipv6 6 memadankan mana-mana paket IPv6 dengan tandatangan protokol TCP di rantai pengepala protokol. Paket ini mungkin mengandungi, sebagai contoh, pengesahan pengepala, pengepala pelayaran, atau pengepala pilihan hop-hop-hop, antara header IPv6 dan header TCP. Kod BPF yang dipancarkan oleh primitif ini adalah kompleks dan tidak boleh dioptimumkan oleh kod pengoptimuman BPF di tcpdump , jadi ini agak perlahan.
- protochain ip protokol
- Bersamaan denganip6 protochain protokol , tetapi ini adalah untuk IPv4.
- siaran eter
- Benar jika paket itu adalah paket penyiaran Ethernet. The eter kata kunci adalah pilihan.
- siaran siaran
- Benar jika paket itu adalah paket penyiaran IP. Ia menyemak semua konvensyen siaran semua dan semua orang, dan melihat topeng subnet tempatan.
- eter multicast
- Benar jika paket itu adalah paket multicast Ethernet. The eter kata kunci adalah pilihan. Ini adalah 'eter 0 & 1! = 0'.
- multicast ip
- Benar jika paket itu adalah paket IP multicast.
- ip6 multicast
- Benar jika paket itu adalah paket multicast IPv6.
- eter proto protokol
- Benar jika paket adalah jenis eter protokol . Protokol boleh menjadi nombor atau salah satu nama ip , ip6 , arp , rarp , atalk , aarp , decnet , sca , lat , mopdl , moprc , iso , stp , ipx , atau netbeui . Perhatikan pengecam ini juga kata kunci dan harus melarikan diri melalui backslash ().
- Dalam kes FDDI (mis., 'fddi protokol arp') dan Token Ring (mis.,'tr protokol arp'), bagi sebahagian besar protokol tersebut, pengenalan protokol ini datang dari header 802.2 Logical Link Control (LLC), yang biasanya diletakkan di atas tajuk FDDI atau Token Ring.
- Apabila menyaring kebanyakan pengecam protokol pada FDDI atau Token Ring, tcpdump semak hanya medan ID protokol header LLC dalam format SNAP yang dipanggil dengan Pengenal Unit Organisasi (OUI) 0x000000, untuk Ethernet yang terkandung; ia tidak memeriksa sama ada paket itu dalam format SNAP dengan OUI 0x000000.
- Pengecualian adalah iso , yang mana ia menyemak medan DSAP (Titik Akses Perkhidmatan Destinasi) dan SSAP (Titik Akses Perkhidmatan Sumber) di tajuk LLC, stp dan netbeui , di mana ia menyemak DSAP tajuk LLC, dan atalk , di mana ia menyemak paket format SNAP dengan OUI 0x080007 dan Appletalk etype.
- Dalam kes Ethernet, tcpdump memeriksa medan jenis Ethernet untuk sebahagian besar protokol tersebut; pengecualian adalah iso , sap , dan netbeui , yang mana ia menyemak bingkai 802.3 dan kemudian mengesahkan tajuk LLC seperti yang dilakukan oleh FDDI dan Token Ring; atalk , di mana ia memeriksa kedua-dua Appletalk etype dalam bingkai Ethernet dan untuk paket SNAP-format seperti yang dilakukan untuk FDDI dan Token Ring; aarp , di mana ia menyemak untuk Etet Appletalk ARP dalam sama ada bingkai Ethernet atau kerangka SNAP 802.2 dengan OUI 0x000000; dan ipx , di mana ia memeriksa IPX etype dalam bingkai Ethernet, IPX DSAP di header LLC, 802.3 tanpa pengkapsul header IPX IPX dan etip IPX dalam bingkai SNAP.
- decnet src tuan rumah
- Benar jika alamat sumber DECNET adalah tuan rumah , yang mungkin menjadi alamat borang "10.123" atau nama tuan rumah DECNET. Sokongan nama tuan rumah DECNET hanya terdapat pada sistem Ultrix yang dikonfigurasikan untuk menjalankan DECNET.
- decnet dst tuan rumah
- Benar jika alamat destinasi DECNET adalah tuan rumah .
- hos decnet tuan rumah
- Benar jika sama ada sumber DECNET atau alamat destinasi adalah tuan rumah .
- ip, ip6, arp, rarp, atalk, aarp, decnet, iso, stp, ipx, netbeui
- Singkatan untuk eter proto p di mana p adalah salah satu daripada protokol di atas.
- lat, moprc, mopdl
- Singkatan untuk eter proto p di mana p adalah salah satu daripada protokol di atas. Perhatikan bahawa tcpdump saat ini tidak tahu cara untuk menghuraikan protokol ini.
- vlan vlan_id
- Benar jika paket itu adalah paket VLAN IEEE 802.1Q. Jika vlan_id dinyatakan, hanya benar jika paket telah ditentukan vlan_id . Perhatikan yang pertamavlan kata kunci yang ditemui dalam ungkapan mengubah penyahkodan penyahkodan untuk selebihnya ungkapan pada andaian bahawa paket itu adalah paket VLAN.
- tcp, udp, icmp
- Singkatan untuk ip proto p atau ip6 proto p di mana p adalah salah satu daripada protokol di atas.
- iso proto protokol
- Benar jika paket itu merupakan paket protokol OSI protokol . Protokol boleh menjadi nombor atau salah satu nama clnp , esis , atau isis .
- clnp, esis, isis
- Singkatan untuk iso proto p di mana p adalah salah satu daripada protokol di atas. Perhatikan bahawa tcpdump melakukan kerja yang tidak lengkap untuk menguraikan protokol ini.
- expr relop expr
- Benar jika perhubungan itu berlaku, di mana relop adalah salah satu>, <,> =, <=, =,! = dan expr adalah ungkapan aritmetik yang terdiri daripada pemalar integer (dinyatakan dalam sintaks standard C), pengendali binari biasa +, -, *, /, &,, pengendali panjang, dan aksesor data paket khas. Untuk mengakses data di dalam paket, gunakan sintaks berikut: proto expr: size .
Proto adalah salah satueter, fddi, tr, ppp, tergelincir, pautan, ip, arp, rarp, tcp, udp, icmp, atau ip6, dan menunjukkan lapisan protokol untuk operasi indeks (eter, fddi, tr, ppp, tergelincir, danpautan semua merujuk kepada lapisan pautan). Perhatikan bahawa tcp, udp , dan jenis protokol lapisan atas yang lain hanya digunakan untuk IPv4, bukan IPv6 (ini akan ditetapkan pada masa depan). Offset byte, berbanding dengan lapisan protokol yang ditunjukkan, diberikan oleh expr . Saiz adalah pilihan dan menunjukkan bilangan bait dalam bidang minat; ia boleh menjadi satu, dua, atau empat, dan mungkir kepada satu. Operator panjang, ditunjukkan oleh kata kuncilen, memberikan panjang paket itu.
Sebagai contoh, 'eter 0 & 1! = 0'menangkap semua lalu lintas multicast. Ekspresi 'ip 0 & 0xf! = 5'menangkap semua paket IP dengan pilihan. Ekspresi 'ip 6: 2 & 0x1fff = 0'menangkap hanya datagrams yang tidak fragmentasi dan sifar frag datagram terfragmentasi. Cek ini secara tersirat digunakan untuktcp danudp operasi indeks. Contohnya, tcp 0 sentiasa bermakna bait pertama TCP kepala , dan tidak pernah bermaksud umpan pertama dari serpihan yang campur tangan.
Sesetengah nilai offset dan medan boleh dinyatakan sebagai nama dan bukan sebagai nilai angka. Offset bidang tajuk protokol berikut boleh didapati: icmptype (Medan jenis ICMP),icmpcode (Medan kod ICMP), dantcpflags (Medan bendera TCP).
Nilai medan jenis ICMP berikut boleh didapati: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.
Nilai medan bendera TCP berikut boleh didapati:tcp-fin, tcp-syn, tcp-rst, tcp-push, tcp-push, tcp-ack, tcp-urg.
Primitif boleh digabungkan menggunakan mana-mana yang berikut:
- Sekumpulan tanda kurung dan operator (tanda kurung adalah istimewa kepada Shell dan harus melarikan diri)
- Penafian ('!'atau `tidak')
- Penyelesaian ('&&'atau'dan')
- Alternasi ('||'atau'atau')
Negasi mempunyai keutamaan yang paling tinggi. Gantian dan penyambungan mempunyai keutamaan yang sama dan bersekutu ke kiri. Perhatikan yang jelasdan token, bukan juxtaposition, diperlukan untuk concatenation.
Sekiranya pengenal diberi tanpa kata kunci, kata kunci yang paling terkini adalah diandaikan. Sebagai contoh, bukan tuan rumah vs dan ace adalah pendek bukan tuan rumah vs dan tuan rumah ace. Walau bagaimanapun, ini tidak sepatutnya dikelirukan tidak (tuan rumah vs atau ace).
Hujah ekspresi boleh dihantar kepada tcpdump sebagai hujah tunggal atau sebagai argumen berganda, yang mana lebih mudah. Umumnya, jika ungkapan mengandungi metakarakter Shell, lebih mudah untuk menyampaikannya sebagai hujah yang dipetik tunggal. Hujah berbilang disatukan dengan ruang sebelum diasingkan.
Contoh Tcpdump
tcpdump tuan rumah matahari terbenam
Perintah tcpdump di atas digunakan untuk mencetak semua paket yang tiba atau berlepas matahari terbenam. tcpdump host helios dan (hot or ace )
Contoh tcpdump ini mencetak trafik antara helios dan sama ada panas atau ace. tcpdump ip host ace and not helios
Anda boleh menggunakan arahan tcpdump ini untuk mencetak semua paket IP antara ace dan mana-mana tuan rumah kecuali helios. tcpdump net ucb-eter
Dalam contoh di atas, tcpdump mencetak semua trafik antara tuan rumah dan tuan rumah di Berkeley. tcpdump 'gerbang snup dan (port ftp atau ftp-data)'
Contoh perintah tcpdump seterusnya digunakan untuk mencetak semua lalu lintas FTP melalui gerbang internet snup . Perhatikan bahawa ungkapan tersebut dipetik untuk mengelakkan shell daripada salah tafsir kurungan. tcpdump ip dan tidak bersih localnet
Dalam contoh tcpdump di atas, arahan mencetak trafik tidak bersumber dari atau ditakdirkan untuk tuan rumah setempat. tcpdump 'tcp tcpflags & (tcp-syn | tcp-fin)! = 0 dan tidak src dan dst net localnet '
Untuk contoh tcpdump di atas, perintah itu digunakan untuk mencetak paket permulaan dan akhir (paket SYN dan FIN) bagi setiap perbualan TCP yang melibatkan tuan rumah bukan tuan rumah. gerbang tcpdump 'snup dan ip 2: 2> 576'
Perintah di atas akan mencetak paket IP lebih lama daripada 576 bait yang dihantar melalui gerbang snup. tcpdump 'ether 0 & 1 = 0 dan ip 16> = 224'
Perintah tcpdump yang ditunjukkan di atas cetakan IP siaran atau paket multicast yang telah tidak dihantar melalui penyiaran Ethernet atau multicast. tcpdump 'icmp icmptype! = icmp-echo dan icmp icmptype! = icmp-echoreply'
Dalam contoh terakhir tcpdump ini, perintah mencetak semua paket ICMP yang tidak echo permintaan atau balasan (iaitu, bukan ping paket). Pengeluaran tcpdump adalah protokol yang bergantung. Berikut ini memberikan penerangan ringkas dan contoh kebanyakan format. Pautan Peringkat Pautan. Sekiranya pilihan '-e' diberikan, tajuk tahap pautan akan dicetak. Pada rangkaian Ethernet, alamat dan alamat destinasi, protokol, dan panjang paket dicetak. Pada rangkaian FDDI, pilihan '-e' menyebabkan tcpdump untuk mencetak medan 'kawalan frame', alamat sumber dan tujuan, dan panjang paket. (Bidang 'kawalan frame' mengawal tafsiran seluruh paket.) Paket biasa (seperti yang mengandungi datagram IP) adalah paket 'async', dengan nilai prioriti antara 0 dan 7: contohnya, `async4'. Packet itu diandaikan mengandungi paket 802.2 Logical Link Control (LLC); tajuk LLC dicetak jika ia berlaku tidak datagram ISO atau paket SNAP yang dipanggil. Pada rangkaian Token Ring, pilihan '-e' menyebabkan tcpdump untuk mencetak medan 'kawalan akses' dan 'kawalan frame', alamat sumber dan tujuan, dan panjang paket. Seperti pada rangkaian FDDI, paket diandaikan mengandungi paket LLC. Tidak kira sama ada pilihan '-e' ditentukan atau tidak, maklumat penghalaan sumber dicetak untuk paket yang diarahkan sumber. (N.B .: Penerangan berikut mengasaskan kebiasaan dengan algoritma pemampatan SLIP yang diterangkan dalam RFC-1144.) Pada pautan SLIP, petunjuk arah ("Saya" untuk masuk, "O" untuk keluar), jenis paket, dan maklumat mampatan dicetak. Jenis paket dicetak terlebih dahulu. Ketiga jenis ini ip , utcp , dan ctcp . Tiada maklumat pautan lanjut dicetak untuk ip paket. Untuk paket TCP, pengecam sambungan dicetak mengikut jenisnya. Jika paket dimampatkan, pengepala yang dikodkan dicetak. Kes-kes khas dicetak sebagai* S + n dan* SA + n , di mana n adalah amaun yang mana nombor urutan (atau nombor urutan dan ack) telah berubah. Jika bukan kes khas, sifar atau lebih banyak perubahan dicetak. Perubahan yang ditunjukkan oleh U (penunjuk segera), W (tetingkap), A (ack), S (nombor urutan) dan I (ID paket), diikuti oleh delta (+ n atau -n) (= n). Akhirnya, jumlah data dalam panjang header paket dan dimampatkan akan dicetak. Sebagai contoh, baris berikut menunjukkan paket TCP dimampatkan keluar, dengan pengecam sambungan tersirat; ack telah berubah sebanyak 6, nombor urutan dengan 49, dan ID paket oleh 6; terdapat 3 bait data dan 6 bait tajuk mampat: O ctcp * A + 6 S + 49 I + 6 3 (6)
Arp / rarp paket. Arp / rarp output menunjukkan jenis permintaan dan hujah-hujahnya. Format ini bertujuan untuk menerangkan dengan jelas. Berikut adalah contoh ringkas yang diambil dari permulaan 'rlogin' daripada tuan rumah rtsg untuk mengacara csam : arp yang mempunyai csam memberitahu rtsgJawapan arp csam adalah di CSAM
Baris pertama mengatakan bahawa rtsg menghantar paket arp meminta alamat Ethernet dari host internet csam. Jawapan Csam dengan alamat Ethernetnya (dalam contoh ini, alamat Ethernet berada di topi dan alamat internet dalam kes kecil). Ini akan kelihatan kurang berlebihan jika kita telah melakukannya tcpdump -n : arp yang mempunyai 128.3.254.6 memberitahu 128.3.254.68Jawapan arp 128.3.254.6 adalah pada 02:07: 01: 00: 01: c4
Sekiranya kita sudah selesai tcpdump -e , hakikat bahawa paket pertama disiarkan dan yang kedua adalah point-to-point akan dapat dilihat: Penyiaran RTSG 0806 64: arp yang mempunyai csam memberitahu rtsgCSAM RTSG 0806 64: jawapan arp csam adalah di CSAM
Untuk paket pertama ini, alamat alamat Ethernet adalah RTSG, destinasi adalah alamat penyiaran Ethernet, medan jenis yang terkandung hex 0806 (taip ETHER_ARP), dan jumlah keseluruhan adalah 64 bait. Paket TCP (N.B.: huraian berikut menganggap kebiasaan dengan protokol TCP yang diterangkan dalam RFC-793. Jika anda tidak biasa dengan protokol ini, perihalan atau tcpdump ini tidak akan digunakan untuk anda) . Format umum baris protokol tcp ialah: src> dst: flags data-seqno ack window options urgent
Src dan dst adalah alamat IP dan port sumber dan destinasi. Bendera adalah gabungan beberapa S (SYN), F (FIN), P (PUSH) atau R (RST) atau satu '.' (tiada bendera). Data-seqno menerangkan bahagian ruang urutan yang dilindungi oleh data dalam paket ini (lihat contoh di bawah). Ack adalah nombor urutan data seterusnya yang diharapkan arah lain pada sambungan ini. Tetingkap adalah bilangan bait yang menerima ruang penampan yang ada arah lain pada sambungan ini. Urg menunjukkan terdapat data 'mendesak' dalam paket. Pilihan adalah pilihan tcp yang dilampirkan dalam kurungan sudut (mis., Src, dst, dan bendera sentiasa hadir. Bidang lain bergantung kepada kandungan header protokol tcp paket dan output hanya jika sesuai. Berikut adalah bahagian pembukaan rlogin dari tuan rumah rtsg untuk mengacara csam . rtsg.1023> csam.login: S 768512: 768512 (0) menang 4096 Baris pertama mengatakan bahawa tcp port 1023 pada rtsg menghantar satu paket ke port log masuk pada csam. TheS menunjukkan bahawa SYN bendera telah ditetapkan. Nombor urutan paket adalah 768512 dan ia tidak mengandungi data. (Notasi adalah 'pertama: terakhir (nbytes)', yang bermaksud 'nombor urutan pertama sehingga tetapi tidak termasuk lepas iaitu nbytes bait data pengguna '.) Tidak ada sokongan piggy-backed, tetingkap menerima yang tersedia ialah 4096 bait, dan terdapat pilihan saiz maksimum segmen yang meminta mss sebanyak 1024 bait. Jawapan Csam dengan paket yang sama kecuali ia termasuk ack piggybacked untuk rtsg's SYN. Rtsg kemudian SYN acks csam. The '.' bermaksud tiada bendera ditetapkan. Paket tidak mengandungi data sehingga tiada nombor urutan data. Ambil perhatian bahawa nombor urutan ack adalah integer kecil (1). Kali pertama tcpdump melihat perbualan tcp ', ia mencetak nombor urutan dari paket. Pada paket perbualan berikutnya, perbezaan antara nombor urutan paket dan nombor urutan awal dicetak. Ini bermakna nombor urutan selepas yang pertama dapat ditafsirkan sebagai kedudukan byte relatif dalam aliran data perbualan (dengan data pertama byte setiap arah menjadi '1'). '-S' akan mengatasi ciri ini, menyebabkan nombor urutan asal menjadi output. Pada baris keenam, rtsg menghantar csam 19 bytes data (bytes 2 hingga 20 di sisi rtsg -> csam perbualan). Bendera PUSH ditetapkan dalam paket. Pada baris ketujuh, csam mengatakan ia menerima data yang dihantar oleh rtsg sehingga tetapi tidak termasuk byte 21. Sebagian besar data ini nampaknya duduk di soket soket kerana tetingkap penerimaan csam telah mendapat 19 bytes lebih kecil. Csam juga menghantar satu byte data ke rtsg dalam paket ini. Pada baris kelapan dan sembilan, csam menghantar dua byte segera, mendorong data ke rtsg. Jika snapshot itu cukup kecil itu tcpdump tidak menangkap tajuk TCP penuh, ia menafsirkan banyak tajuk yang boleh dan kemudian melaporkan "| tcp 'untuk menunjukkan selebihnya tidak boleh ditafsirkan. Jika tajuk mengandungi pilihan palsu (satu dengan panjang sama ada terlalu kecil atau di luar akhir header), tcpdump melaporkannya sebagai " pilihan buruk '' dan tidak menafsirkan sebarang pilihan lain (kerana tidak mungkin untuk memberitahu di mana ia bermula). Sekiranya panjang header menunjukkan opsyen hadir tetapi panjang datagram IP tidak cukup lama untuk pilihan untuk benar-benar berada di sana, tcpdump melaporkannya sebagai " panjang hdr yang buruk ''. Tangkap paket dengan kombinasi bendera tertentu. Terdapat lapan bit dalam bahagian bit kawalan tajuk TCP: CWR | ECE | URG | ACK | PSH | RST | SYN | FIN Mari kita anggap bahawa kita mahu menonton paket yang digunakan dalam mewujudkan sambungan TCP. Ingat bahawa TCP menggunakan protokol jabat tangan tiga hala apabila ia memulakan sambungan baru; urutan sambungan berkaitan dengan bit kawalan TCP adalah: Sekarang kita berminat untuk menangkap paket yang hanya mempunyai set SYN (Langkah 1). Perhatikan bahawa kami tidak mahu paket dari langkah 2 (SYN-ACK), hanya SYN awal biasa. Apa yang kita perlukan adalah ungkapan penapis yang betul untuk tcpdump . Ingat struktur tajuk TCP tanpa pilihan: 0 15 31-----------------------------------------------------------------| pelabuhan sumber | destinasi destinasi | |-----------------------------------------------------------------| nombor urutan |-----------------------------------------------------------------| nombor pengiktirafan |-----------------------------------------------------------------| HL | rsvd | C | E | U | A | P | R | S | F | saiz tingkap |-----------------------------------------------------------------| TCP checksum | penunjuk segera |-----------------------------------------------------------------
Pengepala TCP biasanya memegang 20 oktet data, kecuali pilihan ada. Garis pertama graf mengandungi oktet 0-3, baris kedua menunjukkan oktet 4-7, dan lain-lain. Bermula untuk mengira dengan 0, bit kawalan TCP yang berkaitan terkandung dalam oktet 13: 0 7| 15| 23| 31----------------|---------------|---------------|----------------| HL | rsvd | C | E | U | A | P | R | S | F | saiz tingkap |----------------|---------------|---------------|----------------| | Oktet ke-13 | | |
Mari kita lihat lebih dekat pada octet no. 13: | | |---------------| | C | E | U | A | P | R | S | F | |---------------| |7 5 3 0|
Ini adalah bit kawalan TCP di mana kami berminat. Kami telah bernombor bit di oktet ini dari 0 hingga 7, kanan ke kiri, jadi bit PSH sedikit nombor 3, manakala bit URG adalah nombor 5. Ingat bahawa kami mahu menangkap paket dengan set SYN sahaja. Mari kita lihat apa yang berlaku pada octet 13 jika datagram TCP tiba dengan set SYN bit di tajuknya: | C | E | U | A | P | R | S | F | |---------------| |0 0 0 0 0 0 1 0| |---------------| |7 6 5 4 3 2 1 0|
Melihat seksyen bit kawalan kita melihat bahawa hanya nombor bit 1 (SYN) yang ditetapkan. Dengan mengandaikan bahawa bilangan oktet 13 adalah integer unsigned 8-bit dalam urutan byte rangkaian, nilai binari oktet ini ialah: 00000010 Perwakilan perpuluhan adalah: 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 hampir selesai, kerana sekarang kita tahu bahawa jika hanya SYN ditetapkan, nilai oktet ke-13 dalam tajuk TCP, apabila ditafsirkan sebagai integer unsigned 8-bit dalam urutan byte rangkaian, mestilah tepat 2. Hubungan ini boleh dinyatakan sebagai tcp 13 == 2 Kita boleh menggunakan ungkapan ini sebagai penapis untuk tcpdump untuk menonton paket yang hanya menetapkan SYN: tcpdump -i xl0 tcp 13 == 2 Ungkapan itu menyatakan "biarkan octet ke-13 TCP datagram mempunyai nilai perpuluhan 2," yang tepat seperti yang kita inginkan. Sekarang, mari kita ingatkan bahawa kita perlu menangkap paket SYN, tetapi kita tidak peduli jika ACK atau mana-mana bit kawalan TCP lain ditetapkan pada masa yang sama. Lihatlah apa yang berlaku pada oktet 13 apabila datagram TCP dengan set SYN-ACK tiba: | C | E | U | A | P | R | S | F | |---------------| |0 0 0 1 0 0 1 0| |---------------| |7 6 5 4 3 2 1 0|
Bit 1 dan 4 kini ditetapkan pada oktet ke-13. Nilai binari oktet 13 ialah: 00010010 yang diterjemahkan ke perpuluhan: 7 6 5 4 3 2 1 00*2 + 0*2 + 0*2 + 1*2 + 0*2 + 0*2 + 1*2 + 0*2 = 18
Kita tidak boleh menggunakan 'tcp 13 == 18' di tcpdump ungkapan penapis, kerana itu hanya akan memilih paket yang mempunyai set SYN-ACK, tetapi bukannya hanya dengan set SYN. Ingat bahawa kami tidak peduli jika ACK atau mana-mana bit kawalan lain ditetapkan selagi SYN ditetapkan. Untuk mencapai matlamat kami, kami perlu secara logik DAN nilai binari oktet 13 dengan nilai lain untuk mengekalkan sedikit SYN. Kami tahu bahawa kami mahu SYN ditetapkan dalam apa jua keadaan, jadi kami akan logik DAN nilai pada oktet ke-13 dengan nilai binari SYN: 00010010 SYN-ACK 00000010 SYN DAN 00000010 (kita mahu SYN) DAN 00000010 (kita mahu SYN) -------- -------- = 00000010 = 00000010
Kami melihat bahawa operasi AND ini menyampaikan hasil yang sama tanpa mengira sama ada ACK atau bit kawalan TCP lain ditetapkan. Perwakilan desimal dari nilai AND serta hasil dari operasi ini adalah 2 (binary 00000010), jadi kita tahu bahwa untuk paket dengan SYN menetapkan hubungan berikut harus berlaku: ((nilai oktet 13) DAN (2)) == (2) Ini menunjukkan kita kepada tcpdump ungkapan penapis tcpdump -i xl0 'tcp 13 & 2 == 2' Ambil perhatian bahawa anda harus menggunakan sebut harga tunggal atau backslash dalam ungkapan untuk menyembunyikan AND ('&') karakter khas dari shell. Paket UDP. Format UDP digambarkan oleh paket ini: actinide.who> broadcast.who: udp 84
Ini mengatakan pelabuhan itu yang pada hos actinide menghantar datagram udp ke pelabuhan yang pada hos siaran , alamat siaran Internet. Peket mengandungi 84 bait data pengguna. Sesetengah perkhidmatan UDP diiktiraf (dari sumber atau nombor port destinasi) dan maklumat protokol peringkat tinggi dicetak-khususnya, permintaan perkhidmatan Nama Domain (RFC-1034/1035) dan panggilan Sun RPC (RFC-1050) ke NFS. Permintaan pelayan nama UDP (N.B.:Huraian berikut menganggap kebiasaan dengan protokol Perkhidmatan Domain yang diterangkan dalam RFC-1035.Jika anda tidak biasa dengan protokol, huraian berikut akan masuk akal.) Permintaan pelayan nama diformat sebagai: src> dst: id op? flags qtype qclass name (len) h2opolo.1538> helios.domain: 3+ A? ucbvax.berkeley.edu. (37)
Hos h2opolo tanya pelayan domain helios untuk rekod alamat (qtype = A) yang berkaitan dengan nama itu ucbvax.berkeley.edu. ID pertanyaan ialah '3'. The '+' menunjukkan rekursi yang dikehendaki bendera telah ditetapkan. Panjang pertanyaan ialah 37 bait, tidak termasuk pengepala protokol UDP dan IP. Operasi pertanyaan adalah perkara biasa, Pertanyaan , jadi medan op tidak diabaikan. Sekiranya op telah menjadi sesuatu yang lain, ia akan dicetak di antara '3' dan '+'. Begitu juga, qclass adalah yang biasa, C_IN , dan ditinggalkan. Mana-mana qclass lain akan dicetak dengan segera selepas 'A'. Beberapa anomali diperiksa dan boleh menyebabkan medan tambahan tertutup dalam kurungan persegi: Jika pertanyaan mengandungi jawapan, rekod kuasa atau bahagian rekod tambahan, ancount , nscount , atau arcount dicetak sebagai ' n a ',' n n ', atau' n au 'di mana n adalah kiraan yang sesuai. Jika mana-mana bit tindak balas ditetapkan (AA, RA, atau rcode) atau mana-mana bit 'mesti sifar' ditetapkan dalam bait dua dan tiga, `b2 & 3 = x 'dicetak, di mana x adalah nilai hex of byte header dua dan tiga. Tanggapan pelayan nama UDP. Tanggapan pelayan nama diformat sebagai: src> dst: id op rcode flags a / n / au jenis data kelas (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)
Dalam contoh pertama, helios menjawab pertanyaan 3 dari h2opolo dengan tiga rekod jawapan, tiga rekod pelayan nama, dan tujuh rekod tambahan. Rekod jawapan pertama adalah jenis A (alamat), dan datanya ialah alamat internet 128.32.137.3. Saiz keseluruhan respons adalah 273 bait, tidak termasuk tajuk UDP dan IP. Kod op (Query) dan tindak balas (NoError) telah ditinggalkan, seperti kelas (C_IN) rekod A. Dalam contoh kedua, helios menjawab pertanyaan 2 dengan kod tindak balas domain tidak ada (NXDomain) tanpa jawapan, satu pelayan nama, dan tiada rekod pihak berkuasa. '*' Menunjukkan bahawa jawapan yang berwibawa bit telah ditetapkan. Oleh kerana tidak ada jawapan, tiada jenis, kelas, atau data dicetak. Watak-watak bendera lain yang mungkin muncul ialah '-' (rekursi tersedia, RA, tidak set) dan '|' (mesej dipotong, TC, tetapkan). Jika seksyen 'soalan' tidak mengandungi tepat satu entri, ' n q 'dicetak. Ambil perhatian bahawa permintaan dan tanggapan pelayan nama cenderung besar, dan lalai snaplen daripada 68 bait mungkin tidak menangkap cukup paket untuk mencetak. Menggunakan-s bendera untuk meningkatkan snaplen jika anda perlu serius menyiasat trafik pelayan nama. '-s 128'telah bekerja dengan baik untuk saya. Penyahkodan SMB / CIFS. tcpdump termasuk pengekodan SMB / CIFS / NBT yang agak luas untuk data pada UDP / 137, UDP / 138, dan TCP / 139. Sesetengah penyahkodan primitif data IPX dan NetBEUI SMB juga dilakukan. Secara lalai decod yang agak minimum dilakukan, dengan decod lebih terperinci dilakukan jika -v digunakan. Beri amaran bahawa dengan satu paket SMB boleh mengambil satu atau lebih halaman, jadi hanya gunakan -v jika anda benar-benar mahukan semua butir-butir gory. Jika anda menyahkod sesi SMB yang mengandungi string unicode, maka anda mungkin ingin menetapkan pembolehubah persekitaran USE_UNICODE ke 1. Satu patch untuk mengesan secara automatik unicode string akan dialu-alukan. Untuk maklumat mengenai format paket SMB dan apa yang semua bidang bermakna lihat www.cifs.org atau pub / samba / specs / direktori di laman cermin samba.org kegemaran anda. Tataletak SMB ditulis oleh Andrew Tridgell ([email protected]). Permintaan dan balasan NFS. Permintaan dan balasan Sun NFS (Sistem Fail Jaringan) seperti: src.xid> dst.nfs: len op args src.nfs> dst.xid: balas stat len op hasil sushi.6709> wrl.nfs: 112 readlink fh 21,24 / 10.73165wrl.nfs> sushi.6709: balas ok 40 readlink "../var"sushi.201b> wrl.nfs: 144 lookup fh 9,74 / 4096.6878 "xcolors"wrl.nfs> sushi.201b: Balas ok 128 lookup fh 9,74 / 4134.3150
Dalam baris pertama, tuan rumah sushi menghantar transaksi dengan id 6709 kepada wrl (ambil perhatian bahawa nombor yang mengikuti hos src adalah id transaksi, tidak pelabuhan sumber). Permintaannya adalah 112 bait, tidak termasuk pengepala UDP dan IP. Operasi itu adalah readlink (baca pautan simbolik) pada pemegang fail ( fh ) 21,24 / 10.731657119. (Jika ada yang bernasib baik, seperti dalam kes ini, pemegang fail boleh ditafsirkan sebagai pasangan nombor peranti utama, diikuti dengan nombor inod dan nombor penjanaan.) Wrl balasan 'ok' dengan kandungan pautan. Dalam baris ketiga, sushi bertanya wrl untuk melihat nama ' xcolors 'dalam fail direktori 9,74 / 4096.6878. Ambil perhatian bahawa data yang dicetak bergantung pada jenis operasi. Format ini dimaksudkan untuk dijelaskan dengan jelas jika dibaca bersama dengan protokol NFS. Jika bendera -v (verbose) diberikan, maklumat tambahan dicetak. Sebagai contoh: sushi.1372a> wrl.nfs: 148 baca fh 21,11 / 12,195 8192 bytes @ 24576wrl.nfs> sushi.1372a: Balas ok 1472 baca REG 100664 ids 417/0 sz 29388
(-v juga mencetak tajuk IP TTL, ID, panjang, dan pemecahan, yang telah ditinggalkan daripada contoh ini.) Dalam baris pertama, sushi bertanya wrl untuk membaca 8192 bytes dari fail 21,11 / 12.195, pada offset byte 24576. Wrl balasan 'ok'; paket yang ditunjukkan pada baris kedua adalah serpihan pertama jawapan, dan oleh itu hanya 1472 bait panjang (bait yang lain akan diikuti dalam serpihan berikutnya, tetapi serpihan ini tidak mempunyai NFS atau bahkan tajuk UDP dan tidak mungkin dicetak, bergantung pada ungkapan penapis yang digunakan). Oleh kerana bendera -v diberikan, beberapa atribut fail (yang dikembalikan sebagai tambahan kepada data fail) dicetak: jenis fail ("REG"), untuk fail biasa), mod fail (dalam oktaf), uid dan gid, dan saiz fail. Jika bendera -v diberikan lebih daripada sekali, lebih banyak butiran akan dicetak. Perhatikan bahawa permintaan NFS sangat besar dan banyak perincian tidak akan dicetak kecuali snaplen meningkat. Cuba gunakan '-s 192'untuk menonton trafik NFS. Pakej balas NFS tidak jelas mengenal pasti operasi RPC. Sebaliknya, tcpdump menjejaki permintaan "baru-baru ini", dan menyesuaikannya dengan balasan menggunakan ID transaksi. Jika balasan tidak mengikuti permintaan yang sepatutnya, ia mungkin tidak boleh dipersalahkan. Transarc AFS (Andrew File System) permintaan dan balasan. src.sport> dst.dport: rx packet-type src.sport> dst.dport: rx paket-type service call-name args src.sport> dst.dport: rx paket-type service reply call-name args elvis.7001> pike.afsfs: rx data fs memanggil semula nama fid lama 536876964/1/1 ".newsrc.new" fid baru 536876964/1/1 ".newsrc"pike.afsfs> elvis.7001: rx data fs reply rename
Dalam baris pertama, host elvis menghantar paket RX ke pike. Ini adalah paket data RX kepada perkhidmatan fs (fileserver), dan merupakan permulaan panggilan RPC.Panggilan RPC adalah nama semula, dengan id fail direktori lama 536876964/1/1 dan nama fail lama '.newsrc.new', dan id fail direktori baru 536876964/1/1 dan nama fail baru '. newsrc '. Pike tuan rumah bertindak balas dengan balasan RPC untuk panggilan nama semula (yang berjaya, kerana ia adalah paket data dan bukan paket yang membatalkan). Secara umum, semua RPC AFS dikodkan sekurang-kurangnya oleh nama panggilan RPC. Kebanyakan RPC AFS mempunyai sekurang-kurangnya beberapa argumen yang dibekalkan (biasanya hanya argumen 'menarik', untuk beberapa definisi yang menarik). Format ini bertujuan untuk menggambarkan diri sendiri, tetapi ia mungkin tidak berguna kepada orang yang tidak biasa dengan cara kerja AFS dan RX. Jika bendera -v (verbose) diberikan dua kali, paket pengenalan dan maklumat header tambahan dicetak, seperti ID panggilan RX, nombor panggilan, nombor urutan, nombor siri, dan bendera paket RX. Jika bendera -v diberikan dua kali, maklumat tambahan dicetak, seperti ID panggilan RX, nombor siri, dan bendera paket RX. Maklumat rundingan MTU juga dicetak dari paket RX ack. Jika bendera -v diberi tiga kali, indeks keselamatan dan id perkhidmatan dicetak. Kod ralat dicetak untuk paket abort, kecuali paket suar Ubik (kerana paket abort digunakan untuk menandakan satu undi yes untuk protokol Ubik). Ambil perhatian bahawa permintaan AFS sangat besar, dan banyak argumen tidak akan dicetak kecuali snaplen meningkat. Cuba gunakan `-s 256'untuk menonton trafik AFS. Pek balas AFS tidak jelas mengenal pasti operasi RPC. Sebaliknya, tcpdump menjejaki permintaan "baru-baru ini ', dan sepadan dengannya dengan balasan menggunakan nombor panggilan dan ID perkhidmatan. Jika balasan tidak mengikuti permintaan yang sepatutnya, ia mungkin tidak boleh dipersalahkan. KIP Appletalk (DDP dalam UDP). Paket DDP Appletalk yang dikemas dalam datagram UDP dikemas dan dibuang sebagai paket DDP (iaitu, semua maklumat header UDP dibuang). Fail /etc/atalk.names digunakan untuk menterjemahkan nombor netnet dan nod appletalk kepada nama. Talian dalam fail ini mempunyai borang ini: nama nombor 1.254 eter16.1 icsd-net1.254.110 ace
Dua baris pertama memberikan nama-nama rangkaian appletalk. Baris ketiga memberikan nama tuan rumah tertentu (tuan rumah dibezakan dari jaring oleh oktet ketiga dalam bilangan - nombor bersih mestilah mempunyai dua oktet dan nombor tuan rumah mestilah mempunyai tiga oktet). Nombor dan nama harus dipisahkan oleh ruang kosong (kosong atau tab). The /etc/atalk.names fail mungkin mengandungi garisan kosong atau garis komentar (baris bermula dengan `# '). Alamat Appletalk dicetak dalam bentuk: net.host.port 144.1.209.2> icsd-net.112.220office.2> icsd-net.112.220jssmag.149.235> icsd-net.2
(Jika /etc/atalk.names tidak ada atau tidak mengandungi entri untuk beberapa host / nombor net appletalk, alamat dicetak dalam bentuk berangka.) Dalam contoh pertama, NBP (DDP port 2) pada net 144.1 node 209 menghantar kepada apa saja yang didengar port 220 nod bersih icsd 112. Garis kedua adalah sama kecuali nama penuh nod sumber
Format Output Tcpdump