Skip to main content

Tcpdump: Contoh, Opsi, dan Lainnya

[sniffing] ettercap dan tcpdump (Februari 2025)

[sniffing] ettercap dan tcpdump (Februari 2025)
Anonim

Tcpdump adalah perintah yang digunakan pada berbagai sistem operasi Linux (OS) yang mengumpulkan paket TCP / IP yang melewati adapter jaringan. Mirip seperti alat packet sniffer, tcpdump tidak hanya dapat menganalisis lalu lintas jaringan tetapi juga menyimpannya ke file.

Tidak seperti beberapa perintah yang disediakan oleh sistem operasi secara default, Anda mungkin menemukan bahwa Anda tidak dapat menggunakan tcpdump karena tidak diinstal. Untuk menginstal tcpdump, jalankan apt-get install tcpdump atau yum install tcpdump, tergantung pada OS Anda.

Cara Kerja Tcpdump

Tcpdump mencetak header paket pada antarmuka jaringan yang sesuai dengan Boolean ekspresi . Ini juga bisa dijalankan dengan-w flag, yang menyebabkannya untuk menyimpan data paket ke file untuk analisis nanti, dan / atau dengan-r flag, yang menyebabkannya membaca dari file paket yang disimpan daripada membaca paket dari antarmuka jaringan. Dalam semua kasus, hanya paket yang cocok ekspresi akan diproses oleh tcpdump .

Tcpdump akan, jika tidak dijalankan dengan-c flag, terus menangkap paket sampai terganggu oleh sinyal SIGINT (dibuat, misalnya, dengan mengetik karakter interupsi Anda, biasanya Ctrl + C) atau sinyal SIGTERM (biasanya dihasilkan denganmembunuh(1) perintah); jika dijalankan dengan-c flag, ia akan menangkap paket-paket sampai terputus oleh sinyal SIGINT atau SIGTERM atau jumlah paket yang ditentukan telah diproses.

Saklar yang disebutkan di atas dijelaskan secara rinci nanti dalam artikel ini.

Kapan tcpdump selesai menangkap paket, itu akan melaporkan jumlah:

  • Paket "diterima oleh filter."
    • Arti ini tergantung pada OS yang Anda jalankan tcpdump , dan mungkin di jalan OS telah dikonfigurasi. Jika suatu filter ditentukan pada baris perintah, pada beberapa OS itu menghitung paket-paket tanpa memperhatikan apakah mereka dicocokkan oleh ekspresi filter, dan pada yang lain itu menghitung hanya paket yang dicocokkan oleh ekspresi filter dan diproses oleh tcpdump.
  • Paket "dijatuhkan oleh kernel."
    • Ini adalah jumlah paket yang dijatuhkan, karena kurangnya ruang buffer, oleh mekanisme paket capture di OS di mana tcpdump sedang berjalan, jika OS melaporkan informasi itu ke aplikasi. Jika tidak, itu akan dilaporkan sebagai 0.

Pada platform yang mendukung sinyal SIGINFO, seperti sebagian besar BSD (Berkeley Software Distributions), ini akan melaporkan jumlah tersebut ketika menerima sinyal SIGINFO (dihasilkan, misalnya, dengan mengetikkan karakter "status" Anda, biasanya Ctrl + T) dan akan terus menangkap paket.

Kompatibilitas Tcpdump

Membaca paket dari antarmuka jaringan dengan perintah tcpdump mungkin mengharuskan Anda memiliki hak istimewa ( bacaan file paket yang disimpan tidak memerlukan hak istimewa seperti itu):

  • SunOS 3.x atau 4.x dengan NIT atau BPF: Anda harus memiliki akses baca / dev / nit atau dev / bpf * .
  • Solaris dengan DLPI: Anda harus memiliki akses baca / tulis ke perangkat semu jaringan, seperti / dev / le . Setidaknya pada beberapa versi Solaris, bagaimanapun, ini tidak cukup untuk memungkinkan tcpdump untuk menjepret dalam mode promiscuous; pada versi Solaris itu, Anda harus menjadi root, atau tcpdump harus diinstal setuid ke root, untuk menangkap dalam mode promiscuous. Perhatikan bahwa, pada banyak (mungkin semua) antarmuka, jika Anda tidak menangkap dalam mode promiscuous, Anda tidak akan melihat paket yang keluar, sehingga pengambilan tidak dilakukan dalam mode promiscuous mungkin tidak sangat berguna.
  • HP-UX dengan DLPI: Anda harus menjadi root atau tcpdump harus diinstal setuid ke root.
  • IRIX dengan snoop: Anda harus menjadi root atau tcpdump harus diinstal setuid ke root.
  • Linux: Anda harus menjadi root atau tcpdump harus diinstal setuid ke root.
  • Ultrix dan UNIX Digital / Tru64 UNIX: Setiap pengguna dapat menangkap lalu lintas jaringan dengan tcpdump . Namun, tidak ada pengguna (bahkan pengguna super) yang dapat menangkap dalam mode promiscuous pada antarmuka kecuali super-pengguna telah mengaktifkan operasi mode promiscuous pada antarmuka tersebut menggunakan pfconfig (8), dan tidak ada pengguna (bahkan bukan pengguna super) yang dapat menangkap lalu lintas unicast yang diterima atau dikirim oleh perangkat pada antarmuka kecuali super-pengguna telah mengaktifkan operasi semua-mode-salin pada antarmuka tersebut menggunakan pfconfig , jadi berguna capture paket pada suatu antarmuka mungkin mengharuskan bahwa mode promiscuous-mode atau copy-all-mode, atau kedua mode operasi, diaktifkan pada antarmuka itu.
  • BSD: Anda harus memiliki akses baca / dev / bpf * .

Tcpdump Command Syntax

Seperti semua perintah komputer, perintah tcpdump berfungsi dengan baik hanya jika sintaksnya benar:

tcpdump -adeflnNOpqRStuvxX -c menghitung

-C ukuran file -F mengajukan

-saya antarmuka -m modul -r mengajukan

-s snaplen -T mengetik -U pengguna -w mengajukan

-E algo: rahasia ekspresi

Opsi Perintah Tcpdump

Ini adalah semua opsi yang dapat Anda gunakan dengan perintah tcpdump:

  • -Sebuah: Mencoba mengubah jaringan dan menyiarkan alamat ke nama.
  • -c: Keluar setelah menerima menghitung paket-paket.
  • -C: Sebelum menulis paket raw ke savefile, periksa apakah file saat ini lebih besar dari ukuran file dan, jika ya, tutup savefile saat ini dan buka yang baru.Savefiles setelah savefile pertama akan memiliki nama yang ditentukan dengan-w bendera, dengan angka setelahnya, mulai dari 2 dan terus ke atas. Satuan ukuran file adalah jutaan byte (1.000.000 byte, bukan 1.048.576 byte).
  • -d: Buang kode paket-pencocokan yang dikompilasi dalam bentuk yang dapat dibaca manusia ke output standar dan berhenti.
  • -DD: Dump kode pencocokan paket sebagaiC fragmen program.
  • -ddd: Masukkan kode pencocokan-paket sebagai angka desimal (didahului dengan hitungan).
  • -e: Cetak tajuk tingkat tautan pada setiap baris pembuangan.
  • -E: Gunakan algo: rahasia untuk mendekripsi paket IPsec ESP. Algoritma mungkindes-cbc, 3des-cbc, blowfish-cbc, rc3-cbc, cast128-cbc, atautidak ada. Standarnya adalahdes-cbc. Kemampuan untuk mendekripsi paket hanya ada jika tcpdump dikompilasi dengan kriptografi diaktifkan. rahasia teks ascii untuk kunci rahasia ESP. Kami tidak dapat mengambil nilai biner acak pada saat ini. Pilihannya mengasumsikan RFC2406 ESP, bukan RFC1827 ESP. Pilihan ini hanya untuk keperluan debugging, dan penggunaan opsi ini dengan kunci 'rahasia' yang sebenarnya tidak disarankan. Dengan menghadirkan kunci rahasia IPsec ke baris perintah, Anda membuatnya terlihat oleh orang lain, melalui ps (1) dan kesempatan lainnya.
  • -f: Mencetak alamat internet 'asing' secara numerik dan bukan secara simbolis (opsi ini dimaksudkan untuk mengatasi kerusakan otak yang serius di server yp Sun - biasanya hang selamanya menerjemahkan nomor internet non-lokal).
  • -F: Gunakan mengajukan sebagai masukan untuk ekspresi filter. Ekspresi tambahan yang diberikan pada baris perintah diabaikan.
  • -saya: Dengarkan antarmuka . Jika tidak ditentukan, tcpdump mencari daftar antarmuka sistem untuk antarmuka dengan nomor terendah, terkonfigurasi (tidak termasuk loopback). Dasi dipatahkan dengan memilih pertandingan paling awal. Pada sistem Linux dengan kernel 2.2 atau yang lebih baru, sebuah antarmuka Argumen "any '' dapat digunakan untuk menangkap paket dari semua antarmuka. Perhatikan bahwa menangkap pada perangkat" any 'tidak akan dilakukan dalam mode promiscuous.
  • -l: Buat garis stdout buffered. Berguna jika Anda ingin melihat data saat mengambilnya. Misalnya, "tcpdump -l | tee dat '' atau" tcpdump -l> dat & tail -f dat ''.
  • -m: Muat definisi modul SMI MIB dari file modul . Pilihan ini dapat digunakan beberapa kali untuk memuat beberapa modul MIB ke dalam tcpdump .
  • -n: Jangan mengonversi alamat host ke nama. Ini dapat digunakan untuk menghindari pencarian DNS.
  • -nn: Jangan mengonversi protokol dan nomor port dll. Ke nama baik.
  • -N: Jangan cetak nama domain kualifikasi nama host. Misalnya, jika Anda memberikan bendera ini, maka tcpdump akan mencetak "nic '' bukan" nic.ddn.mil ''.
  • -HAI: Jangan menjalankan optimizer kode pencocokan-pasangan. Ini berguna hanya jika Anda mencurigai adanya bug di pengoptimal.
  • -p: Jangan menempatkan antarmuka ke mode promiscuous. Perhatikan bahwa antarmuka mungkin dalam mode promiscuous karena beberapa alasan lain; karenanya, '-p' tidak dapat digunakan sebagai singkatan untuk 'eter host {local-hw-addr} atau siaran eter'.
  • -q: Cepat (tenang) keluaran. Cetak informasi protokol yang kurang sehingga jalur output lebih pendek.
  • -R: Asumsikan paket ESP / AH didasarkan pada spesifikasi lama: RFC1825 ke RFC1829. Jika ditentukan, tcpdump tidak akan mencetak bidang pencegahan replay. Karena tidak ada bidang versi protokol dalam spesifikasi ESP / AH, tcpdump tidak dapat menyimpulkan versi protokol ESP / AH.
  • -r: Baca paket dari mengajukan (yang dibuat dengan opsi -w). Masukan standar digunakan jika mengajukan aku s "-''.
  • -S: Mencetak mutlak, daripada relatif, nomor urut TCP.
  • -s: Snarf snaplen byte data dari setiap paket dan bukan default 68; dengan SunOS NIT, minimumnya adalah 96. Enam puluh delapan byte cukup untuk IP, ICMP, TCP, dan UDP tetapi dapat memotong informasi protokol dari server nama dan paket NFS (lihat di bawah). Paket terpotong karena snapshot terbatas ditunjukkan dalam output dengan "| proto '', di mana proto adalah nama level protokol tempat pemotongan terjadi. Perhatikan bahwa mengambil snapshot yang lebih besar akan meningkatkan jumlah waktu yang diperlukan untuk memproses paket dan, secara efektif, mengurangi jumlah buffering paket. Ini dapat menyebabkan paket hilang. Anda harus membatasi snaplen ke nomor terkecil yang akan menangkap informasi protokol yang Anda minati. Pengaturan snaplen ke 0 berarti gunakan panjang yang diperlukan untuk menangkap seluruh paket.
  • -T: Paksa paket yang dipilih oleh " ekspresi "untuk ditafsirkan yang ditentukan mengetik . Jenis yang diketahui saat ini adalahcnfp (Protokol Cisco NetFlow),rpc (Panggilan Prosedur Jarak Jauh),rtp (Protokol Aplikasi Waktu Nyata),rtcp (Protokol kontrol Aplikasi Waktu Nyata),snmp (Protokol Manajemen Jaringan Sederhana),tong (Alat Audio Visual), danwb (didistribusikan White Board).
  • -t: Jangan cetak stempel waktu pada setiap saluran pembuangan.
  • -tt: Cetak stempel waktu yang tidak diformat pada setiap saluran pembuangan.
  • -U: Menjatuhkan hak akses root dan mengubah ID pengguna menjadi pengguna dan ID grup ke grup utama pengguna .
  • Catatan: Red Hat Linux secara otomatis menghapus hak istimewa ke pengguna "pcap" jika tidak ada yang ditentukan.
  • -ttt: Cetak delta (dalam mikrodetik) antara garis saat ini dan sebelumnya pada setiap saluran pembuangan.
  • -tttt: Cetak stempel waktu dalam format default yang diteruskan berdasarkan tanggal pada setiap saluran pembuangan.
  • -u: Cetak menangani NFS undecoded.
  • -v: (Sedikit lebih banyak) output verbose. Misalnya, waktu untuk hidup, identifikasi, panjang total, dan opsi dalam paket IP dicetak. Juga memungkinkan pemeriksaan integritas paket tambahan seperti memverifikasi IP dan checksum header ICMP.
  • -vv: Bahkan lebih banyak output verbose. Misalnya, bidang tambahan dicetak dari paket balasan NFS, dan paket SMB sepenuhnya diterjemahkan.
  • -vvv: Bahkan lebih banyak output verbose. Misalnya, telnetSBSE pilihan dicetak penuh. Dengan -X Pilihan telnet dicetak dalam hex juga.
  • -w: Tuliskan paket mentah ke mengajukan daripada mengurai dan mencetaknya. Mereka nantinya dapat dicetak dengan opsi -r. Output standar digunakan jika mengajukan aku s "-''.
  • -x: Cetak setiap paket (minus header level link-nya) dalam hex. Lebih kecil dari seluruh paket atau snaplen byte akan dicetak. Perhatikan bahwa ini adalah seluruh paket lapisan-tautan, jadi untuk lapisan tautan pad itu (mis., Ethernet), byte pengisi juga akan dicetak ketika paket lapisan yang lebih tinggi lebih pendek daripada pengisi yang diperlukan.
  • -X: Saat mencetak hex, cetak ascii juga. Jadi jika-x juga diatur, paket dicetak dalam hex / ascii. Ini sangat berguna untuk menganalisis protokol baru. Bahkan jika-x tidak juga diatur, beberapa bagian dari beberapa paket dapat dicetak dalam hex / ascii.
  • ekspresi : Memilih paket mana yang akan dibuang. Jika tidak ekspresi diberikan, semua paket di internet akan dibuang. Kalau tidak, hanya paket untuk yang ekspresi apakah 'benar' akan dibuang. Itu ekspresi terdiri dari satu atau lebih primitif. Primitif biasanya terdiri dari id (nama atau nomor) didahului oleh satu atau lebih kualifikasi. Ada tiga jenis kualifikasi yang berbeda:
  • mengetik : Kualifier mengatakan apa yang dimaksud oleh id name atau number. Tipe yang memungkinkan adalahtuan rumah, bersih, danPelabuhan-Misalnya, 'host foo', 'net 128.3', 'port 20'. Jika tidak ada kualifikasi jenis,tuan rumah diasumsikan.
  • dir : Kualifier menentukan arah transfer tertentu ke dan / atau dari id . Petunjuk yang memungkinkan adalahsrc, dst, src atau dst dansrc dan dst (mis., 'src foo', 'dst net 128.3', 'src atau dst port ftp-data'). Jika tidak ada kualifikasi dir,src atau dst diasumsikan. Untuk layer tautan 'null' (yaitu, protokol point-to-point seperti slip) masuk dan keluar kualifikasi dapat digunakan untuk menentukan arah yang diinginkan.
  • proto : Kualifikasi membatasi pertandingan ke protokol tertentu. Protos yang mungkin adalah: eter, fddi, tr, aku p, ip6, arp, rarp, decnet, tcp, danudp-Misalnya, 'ether src foo', 'arp net 128.3', 'tcp port 21'. Jika tidak ada proto qualifier, semua protokol yang konsisten dengan tipe diasumsikan. Misalnya, 'src foo' berarti '(ip atau arp atau rarp) src foo' (kecuali yang terakhir bukan sintaks yang sah), 'net bar' berarti '(ip atau arp atau rarp) net bar' dan 'port 53' berarti port '(tcp atau udp) 53'.
    • 'fddi' sebenarnya adalah alias untuk 'ether'; parser memperlakukannya secara identik sebagai "tingkat tautan data yang digunakan pada antarmuka jaringan yang ditentukan". Tajuk FDDI berisi alamat sumber dan tujuan yang mirip dengan Ethernet, dan sering mengandung jenis paket mirip-Ethernet, sehingga Anda dapat memfilter bidang FDDI ini hanya seperti halnya dengan bidang-bidang Ethernet analog, header FDDI juga mengandung bidang lain, tetapi Anda tidak dapat menamai mereka secara eksplisit dalam ekspresi filter.
    • Demikian pula, 'tr' adalah alias untuk 'ether'; pernyataan paragraf sebelumnya tentang header FDDI juga berlaku untuk header Token Ring.

Selain di atas, ada beberapa kata kunci "primitif" khusus yang tidak mengikuti pola:pintu gerbang, siaran, kurang, lebih besar, dan hitung ekspresi. Semua ini dijelaskan di bawah ini.

Ekspresi filter yang lebih kompleks dibangun dengan menggunakan kata-katadan, atau, dantidak untuk menggabungkan primitif - misalnya, "host foo dan bukan port ftp dan bukan port ftp-data". Untuk menyimpan pengetikan, daftar kualifikasi identik dapat dihilangkan (mis., "Tcp dst port ftp atau ftp-data atau domain" sama persis dengan "tcp dst port ftp atau tcp dst port ftp-data atau tcp dst port domain".)

Ini adalah primitif yang diizinkan dengan perintah tcpdump:

  • dst host tuan rumah
    • Benar jika bidang tujuan IPv4 / v6 dari paket tersebut tuan rumah , yang bisa berupa alamat atau nama.
  • src host tuan rumah
    • Benar jika bidang sumber IPv4 / v6 paket tuan rumah .
  • tuan rumah tuan rumah
    • Benar jika salah satu sumber IPv4 / v6 atau tujuan paket tuan rumah . Ekspresi host di atas dapat ditambahkan dengan kata kunci,aku p, arp, rarp, atauip6, seperti dalam ip host tuan rumah (yang setara dengan eter proto aku p dan tuan rumah tuan rumah).
    • Jika tuan rumah adalah nama dengan beberapa alamat IP, setiap alamat akan diperiksa untuk sebuah pertandingan.
  • eter dst ehost
    • Benar jika alamat tujuan Ethernet ehost . Ehost bisa berupa nama dari / etc / ethers atau nomor (lihat eter (3N) untuk format numerik).
  • eter src ehost
    • Benar jika alamat sumber Ethernet ehost .
  • tuan rumah eter ehost
    • Benar jika sumber Ethernet atau alamat tujuan ehost .
  • pintu gerbang tuan rumah
    • Benar jika paket yang digunakan tuan rumah sebagai gateway (yaitu, sumber Ethernet atau alamat tujuan tuan rumah tetapi baik sumber IP maupun tujuan IP tidak tuan rumah ).
    • Tuan rumah harus berupa nama dan harus ditemukan baik oleh mekanisme resolusi host-name-to-IP-address mesin (file nama host, DNS, NIS, dll.) dan oleh mekanisme resolusi host-name-to-Ethernet-address mesin (/ etc / ethers, dll.).
    • Ekspresi ekuivalen adalah tuan rumah eter ehost dan sekarang tuan rumah tuan rumah , yang dapat digunakan dengan nama atau nomor untuk tuan rumah / ehost .) Sintaksis ini tidak berfungsi dalam konfigurasi yang mendukung IPv6 saat ini.
  • dst net bersih
    • Benar jika alamat tujuan IPv4 / v6 paket memiliki nomor jaringan bersih . Bersih bisa berupa nama dari / etc / networks atau nomor jaringan (lihat jaringan (4) untuk detail).
  • src net bersih
    • Benar jika alamat sumber IPv4 / v6 paket memiliki nomor jaringan bersih .
  • bersih bersih
    • Benar jika sumber IPv4 / v6 atau alamat tujuan paket memiliki nomor jaringan bersih .
  • bersih bersih topeng netmask
    • Benar jika alamat IP cocok bersih dengan spesifik netmask . Mungkin memenuhi syaratsrc ataudst. Perhatikan bahwa sintaks ini tidak berlaku untuk IPv6 bersih .
  • bersih bersih / len
    • Benar jika alamat IPv4 / v6 cocok bersih dengan netmask len bit lebar. Mungkin memenuhi syaratsrc ataudst.
  • port dst Pelabuhan
    • Benar jika paketnya adalah ip / tcp, ip / udp, ip6 / tcp, atau ip6 / udp dan memiliki nilai port tujuan dari Pelabuhan . Itu Pelabuhan bisa berupa angka atau nama yang digunakan di / etc / services (lihat tcp (4P) dan udp (4P)). Jika nama digunakan, nomor port dan protokol diperiksa. Jika nomor atau nama ambigu digunakan, hanya nomor port yang dicentang (misalnya,dst port 513 akan mencetak tcp / login traffic dan udp / yang traffic, dandomain port akan mencetak tcp / domain dan udp / domain traffic).
  • src port Pelabuhan
    • Benar jika paket memiliki nilai port sumber Pelabuhan .
  • Pelabuhan Pelabuhan
    • Benar jika port sumber atau tujuan paket itu Pelabuhan . Setiap ekspresi port di atas dapat ditambahkan dengan kata kunci,tcp atauudp, seperti dalam tcp src port Pelabuhan , yang hanya cocok dengan paket tcp yang port sumbernya Pelabuhan .
  • kurang panjangnya
    • Benar jika paket memiliki panjang kurang dari atau sama dengan panjangnya . Ini setara dengan len <= Panjangnya .
  • lebih besar panjangnya
    • Benar jika paket memiliki panjang yang lebih besar dari atau sama dengan panjangnya . Ini setara dengan len> = Panjangnya .
  • ip proto protokol
    • Benar jika paket adalah paket IP (lihat aku p (4P)) tipe protokol protokol . Protokol bisa berupa angka atau salah satu nama icmp , icmp6 , igmp , igrp , pim , ah , esp , vrrp , udp , atau tcp . Perhatikan bahwa pengenal tcp , udp , dan icmp juga kata kunci dan harus diloloskan melalui backslash (), yang merupakan di C-shell. Perhatikan bahwa primitif ini tidak mengejar rantai header protokol.
  • ip6 proto protokol
    • Benar jika paket adalah paket protokol tipe IPv6 protokol . Perhatikan bahwa primitif ini tidak mengejar rantai header protokol.
  • protochain ip6 protokol
    • Benar jika paketnya adalah paket IPv6, dan berisi header protokol dengan tipe protokol dalam rantai header protokolnya. Sebagai contoh, ipv6 protochain 6 cocok dengan paket IPv6 apa pun dengan header protokol TCP dalam rantai header protokol. Paket mungkin berisi, misalnya, header otentikasi, header routing, atau header opsi hop-by-hop, antara header IPv6 dan header TCP. Kode BPF yang dipancarkan oleh primitif ini rumit dan tidak dapat dioptimalkan oleh kode pengoptimasi BPF di tcpdump , jadi ini bisa agak lambat.
  • ip protochain protokol
    • Setara denganprotochain ip6 protokol , tapi ini untuk IPv4.
  • siaran eter
    • Benar jika paketnya adalah paket broadcast Ethernet. Itu eter kata kunci adalah opsional.
  • siaran ip
    • Benar jika paket adalah paket siaran IP. Ini memeriksa baik semua-nol dan semua konvensi siaran, dan mencari subnet mask lokal.
  • eter multicast
    • Benar jika paketnya adalah paket multicast Ethernet. Itu eter kata kunci adalah opsional. Ini singkatan untuk 'eter 0 & 1! = 0'.
  • multicast ip
    • Benar jika paketnya adalah paket multicast IP.
  • multicast ip6
    • Benar jika paketnya adalah paket multicast IPv6.
  • eter proto protokol
    • Benar jika paketnya adalah tipe eter protokol . Protokol bisa berupa angka atau salah satu nama aku p , ip6 , arp , rarp , percakapan , aarp , decnet , sca , lat , mopdl , moprc , iso , stp , IPX , atau netbeui . Perhatikan pengidentifikasi ini juga kata kunci dan harus diloloskan melalui backslash ().
    • Dalam kasus FDDI (misalnya, 'protokol fddi arp') dan Token Ring (misalnya,'tr protokol arp'), untuk sebagian besar protokol tersebut, identifikasi protokol berasal dari header 802.2 Logical Link Control (LLC), yang biasanya berlapis di atas header FDDI atau Token Ring.
    • Saat memfilter sebagian besar pengenal protokol di FDDI atau Token Ring, tcpdump periksa hanya bidang ID protokol dari header LLC dalam format SNAP yang disebut dengan Pengidentifikasi Unit Organisasi (OUI) 0x000000, untuk enkapsulasi Ethernet; tidak memeriksa apakah paket tersebut dalam format SNAP dengan OUI 0x000000.
    • Pengecualian adalah iso , yang akan memeriksa bidang DSAP (Titik Akses Layanan Tujuan) dan SSAP (Sumber Layanan Access Point) dari header LLC, stp dan netbeui , di mana ia memeriksa DSAP dari header LLC, dan percakapan , di mana ia memeriksa paket SNAP-format dengan OUI dari 0x080007 dan etype Appletalk.
    • Dalam kasus Ethernet, tcpdump periksa bidang jenis Ethernet untuk sebagian besar protokol tersebut; pengecualiannya adalah iso , getah , dan netbeui , untuk yang memeriksa frame 802.3 dan kemudian memeriksa header LLC seperti halnya untuk FDDI dan Token Ring; percakapan , di mana ia memeriksa baik untuk etype Appletalk dalam bingkai Ethernet dan untuk paket format SNAP seperti halnya untuk FDDI dan Token Ring; aarp , di mana ia memeriksa etype Appletalk ARP baik dalam bingkai Ethernet atau 802.2 SNAP frame dengan OUI dari 0x000000; dan IPX , di mana ia memeriksa untuk IPX etype dalam bingkai Ethernet, IPX DSAP di header LLC, 802.3 tanpa enkapsulasi header LLC dari IPX, dan IPX etype dalam bingkai SNAP.
  • decnet src tuan rumah
    • Benar jika alamat sumber DECNET adalah tuan rumah , yang mungkin merupakan alamat dari formulir "10.123 '', atau nama host DECNET. Dukungan nama host DECNET hanya tersedia pada sistem Ultrix yang dikonfigurasi untuk menjalankan DECNET.
  • decnet dst tuan rumah
    • Benar jika alamat tujuan DECNET adalah tuan rumah .
  • tuan rumah decnet tuan rumah
    • Benar jika salah satu sumber DECNET atau alamat tujuan tuan rumah .
  • aku p, ip6, arp, rarp, percakapan, aarp, decnet, iso, stp, IPX, netbeui
    • Singkatan untuk eter proto p dimana p adalah salah satu protokol di atas.
  • lat, moprc, mopdl
    • Singkatan untuk eter proto p dimana p adalah salah satu protokol di atas. Perhatikan itu tcpdump saat ini tidak tahu cara mengurai protokol ini.
  • vlan vlan_id
    • Benar jika paket adalah paket VLAN IEEE 802.1Q. Jika vlan_id ditentukan, hanya benar jika paket memiliki yang ditentukan vlan_id . Perhatikan bahwa yang pertamavlan kata kunci yang ditemui di ekspresi mengubah offset dekode untuk sisa ekspresi dengan asumsi bahwa paket tersebut adalah paket VLAN.
  • tcp, udp, icmp
    • Singkatan untuk ip proto p atau proto ip6 p dimana p adalah salah satu protokol di atas.
  • iso proto protokol
    • Benar jika paket merupakan paket jenis protokol OSI protokol . Protokol bisa berupa angka atau salah satu nama clnp , esis , atau isis .
  • clnp, esis, isis
    • Singkatan untuk iso proto p dimana p adalah salah satu protokol di atas. Perhatikan itu tcpdump melakukan pekerjaan parsing yang tidak lengkap dari protokol ini.
  • expr relop expr
    • Benar jika relasinya berlaku, di mana kembali adalah salah satu>, <,> =, <=, =,! =, dan expr adalah ekspresi aritmatik yang terdiri dari konstanta integer (dinyatakan dalam sintaks C standar), operator biner normal +, -, *, /, &, |, operator panjang, dan akses data paket khusus. Untuk mengakses data di dalam paket, gunakan sintaks berikut: proto expr: size .

Proto adalah salah satunyaeter, fddi, tr, ppp, menyelinap, link, aku p, arp, rarp, tcp, udp, icmp, atau ip6, dan menunjukkan lapisan protokol untuk operasi indeks (eter, fddi, tr, ppp, menyelinap, danlink semua mengacu pada lapisan tautan). Perhatikan itu tcp, udp , dan jenis protokol lapisan atas lainnya hanya berlaku untuk IPv4, bukan IPv6 (ini akan diperbaiki di masa mendatang). Offset byte, relatif terhadap lapisan protokol yang ditunjukkan, diberikan oleh expr . Ukuran bersifat opsional dan menunjukkan jumlah byte di bidang minat; dapat berupa salah satu, dua, atau empat, dan default untuk satu. Operator panjang, ditunjukkan oleh kata kuncilen, memberi panjang paket.

Sebagai contoh, 'eter 0 & 1! = 0'menangkap semua lalu lintas multicast. Ekspresi 'ip 0 & 0xf! = 5'menangkap semua paket IP dengan opsi. Ekspresi 'ip 6: 2 & 0x1fff = 0'menangkap hanya datagrams yang tidak terfragmentasi dan frag nol dari datagram yang terfragmentasi. Pemeriksaan ini secara implisit diterapkan padatcp danudp operasi indeks. Contohnya, tcp 0 selalu berarti byte pertama dari TCP tajuk , dan tidak pernah berarti byte pertama dari fragmen intervensi.

Beberapa offset dan nilai lapangan dapat dinyatakan sebagai nama bukan sebagai nilai numerik. Pengurangan bidang header perintah berikut ini tersedia: icmptype (Bidang tipe ICMP),icmpcode (Bidang kode ICMP), dantcpflags (Bidang bendera TCP).

Nilai bidang jenis ICMP berikut tersedia: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, icmas-maskreply.

Nilai bidang tajuk TCP berikut ini tersedia:tcp-fin, tcp-syn, tcp-rst, tcp-push, tcp-push, tcp-ack, tcp-urg.

Primitives dapat digabungkan menggunakan salah satu dari yang berikut:

  • Kelompok primitif dan operator yang disisipkan (tanda kurung khusus untuk Shell dan harus di-escape)
  • Negasi ('!'atau `tidak')
  • Penggabungan ('&&' atau 'dan')
  • Alternation ('||' atau 'atau')

Negasi memiliki prioritas tertinggi. Silih berganti dan rentetan memiliki prioritas yang sama dan menghubungkan kiri ke kanan. Perhatikan bahwa eksplisitdan token, bukan penjajaran, diperlukan untuk penggabungan.

Jika pengenal diberikan tanpa kata kunci, kata kunci terbaru diasumsikan. Sebagai contoh, bukan tuan rumah vs dan ace adalah kependekan dari bukan host vs dan host ace. Namun, ini tidak boleh dibingungkan tidak (host vs atau ace).

Argumen ekspresi dapat diteruskan ke tcpdump baik sebagai argumen tunggal atau sebagai beberapa argumen, mana yang lebih nyaman. Secara umum, jika ekspresi berisi metakarakter Shell, lebih mudah untuk menyampaikannya sebagai argumen tunggal yang dikutip. Beberapa argumen digabung dengan spasi sebelum diurai.

Contoh Tcpdump

tcpdump host sundown

Perintah tcpdump di atas digunakan untuk mencetak semua paket yang tiba pada atau berangkat dari terbenamnya matahari.

tcpdump host helios dan (hot or ace )

Contoh tcpdump ini mencetak lalu lintas antara helios dan lainnya panas atau kartu as.

tcpdump ip host ace dan bukan helios

Anda dapat menggunakan perintah tcpdump ini untuk mencetak semua paket IP kartu as dan semua host kecuali helios.

tcpdump net ucb-ether

Dalam contoh di atas, tcpdump mencetak semua lalu lintas antara host dan host lokal di Berkeley.

tcpdump 'gateway snup dan (port ftp atau ftp-data)'

Contoh perintah tcpdump berikut ini digunakan untuk mencetak semua lalu lintas FTP melalui gateway internet snup . Perhatikan bahwa ekspresi dikutip untuk mencegah shell dari salah menafsirkan tanda kurung.

tcpdump ip dan tidak bersih localnet

Dalam contoh tcpdump di atas, perintah mencetak lalu lintas yang tidak bersumber dari atau ditakdirkan untuk host lokal.

tcpdump 'tcp tcpflags & (tcp-syn | tcp-fin)! = 0 dan bukan src dan dst net localnet '

Untuk contoh di atas tcpdump, perintah digunakan untuk mencetak paket awal dan akhir (paket SYN dan FIN) dari setiap percakapan TCP yang melibatkan host nonlokal.

tcpdump 'gateway snup dan ip 2: 2> 576'

Perintah di atas akan mencetak paket IP lebih lama dari 576 byte yang dikirim melalui gateway snup.

tcpdump 'ether 0 & 1 = 0 dan ip 16> = 224'

Perintah tcpdump yang ditampilkan di atas mencetak siaran IP atau paket multicast yang tidak dikirim melalui broadcast Ethernet atau multicast.

tcpdump 'icmp icmptype! = icmp-echo dan icmp icmptype! = icmp-echoreply'

Dalam contoh terakhir tcpdump, perintah mencetak semua paket ICMP yang bukan permintaan echo atau balasan (yaitu, bukan paket ping).

Format Output Tcpdump

Output dari tcpdump bergantung pada protokol. Berikut ini memberikan deskripsi singkat dan contoh sebagian besar format.

Header Tingkat Tautan. Jika opsi '-e' diberikan, header level link akan dicetak. Pada jaringan Ethernet, alamat sumber dan tujuan, protokol, dan panjang paket dicetak.

Pada jaringan FDDI, opsi '-e' menyebabkan tcpdump untuk mencetak bidang 'frame control', alamat sumber dan tujuan, dan panjang paket. (Bidang 'frame control' mengatur interpretasi dari sisa paket. Paket normal (seperti yang mengandung IP datagram) adalah paket 'async', dengan nilai prioritas antara 0 dan 7: misalnya, `async4'. Paket-paket tersebut diasumsikan mengandung paket 802.2 Logical Link Control (LLC); Header LLC dicetak jika benar tidak datagram ISO atau paket SNAP yang disebut.

Pada jaringan Token Ring, opsi '-e' menyebabkan tcpdump untuk mencetak 'kontrol akses' dan 'kontrol bingkai', sumber dan alamat tujuan, dan panjang paket. Seperti pada jaringan FDDI, paket diasumsikan mengandung paket LLC. Terlepas dari apakah opsi '-e' ditentukan atau tidak, informasi routing sumber dicetak untuk paket source-routed.

(N.B .: Deskripsi berikut mengasumsikan keakraban dengan algoritma kompresi SLIP yang dijelaskan dalam RFC-1144.)

Pada tautan SLIP, indikator arah ("I 'untuk masuk," O' 'untuk keluar), jenis paket, dan informasi kompresi dicetak. Jenis paket dicetak terlebih dahulu. Ketiga jenis itu aku p , utcp , dan ctcp . Tidak ada informasi tautan lebih lanjut untuk dicetak aku p paket-paket. Untuk paket TCP, pengidentifikasi koneksi dicetak mengikuti jenis. Jika paket dikompres, header yang dikodekan akan dicetak. Kasus-kasus khusus dicetak sebagai* S + n dan* SA + n , dimana n adalah jumlah dimana nomor urut (atau nomor urut dan ack) telah berubah. Jika itu bukan kasus khusus, nol atau lebih banyak perubahan dicetak. Perubahan ditunjukkan oleh U (penunjuk mendesak), W (jendela), A (ack), S (nomor urut), dan I (ID paket), diikuti oleh delta (+ n atau -n), atau nilai baru (= n). Akhirnya, jumlah data dalam paket dan panjang header terkompresi dicetak.

Sebagai contoh, baris berikut menunjukkan paket TCP terkompresi keluar, dengan pengenal koneksi implisit; ack telah berubah sebesar 6, nomor urut sebesar 49, dan ID paket sebesar 6; ada 3 byte data dan 6 byte header terkompresi:

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

Paket Arp / rarp. Output Arp / rarp menunjukkan jenis permintaan dan argumennya. Format ini dimaksudkan untuk menjadi cukup jelas. Berikut ini contoh singkat yang diambil dari awal 'rlogin' dari host rtsg untuk menyelenggarakan csam :

arp who-has csam memberitahu rtsgarp balasan csam ada di CSAM

Baris pertama mengatakan bahwa rtsg mengirim paket arp yang menanyakan alamat Ethernet dari host internet csam. Csam menjawab dengan alamat Ethernet-nya (dalam contoh ini, alamat-alamat Ethernet ada dalam huruf besar dan alamat internet dalam huruf kecil).

Ini akan terlihat kurang berlebihan jika kita sudah selesai tcpdump -n :

arp who-have 128.3.254.6 beri tahu 128.3.254.68balasan rp 128.3.254.6 adalah pada jam 02: 07: 01: 00: 01: c4

Jika sudah selesai tcpdump -e , fakta bahwa paket pertama disiarkan dan yang kedua adalah point-to-point akan terlihat:

RTSG Broadcast 0806 64: arp who-has csam memberitahu rtsgCSAM RTSG 0806 64: arp reply csam adalah-di CSAM

Untuk paket pertama ini mengatakan alamat sumber Ethernet adalah RTSG, tujuan adalah alamat broadcast Ethernet, kolom jenis mengandung hex 0806 (tipe ETHER_ARP), dan panjang totalnya adalah 64 byte.

Paket TCP (N.B.:Deskripsi berikut mengasumsikan keakraban dengan protokol TCP yang dijelaskan dalam RFC-793. Jika Anda tidak akrab dengan protokol, baik deskripsi ini maupun tcpdump akan banyak berguna bagi Anda) . Format umum dari jalur protokol tcp adalah:

src> dst: flags data-seqno ack window opsi mendesak

Src dan dst adalah alamat IP dan port sumber dan tujuan. Bendera adalah beberapa kombinasi S (SYN), F (FIN), P (PUSH) atau R (RST) atau satu '.' (tidak ada bendera). Data-seqno menggambarkan porsi ruang urutan yang dicakup oleh data dalam paket ini (lihat contoh di bawah). Ack adalah nomor urut dari data berikutnya yang diharapkan ke arah lain pada koneksi ini. Jendela adalah jumlah byte dari menerima ruang buffer yang tersedia ke arah lain pada koneksi ini. Urg menunjukkan ada data 'mendesak' dalam paket. Pilihan adalah opsi tcp yang diapit oleh kurung sudut (misalnya, ).

Src, dst, dan bendera selalu hadir. Bidang lainnya tergantung pada isi dari tcp protocol header paket dan hanya keluaran jika sesuai.

Di sini adalah bagian pembukaan rlogin dari host rtsg untuk menyelenggarakan csam .

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

Baris pertama mengatakan bahwa tcp port 1023 pada rtsg mengirim paket ke port masuk di csam. ItuS menunjukkan bahwa SYN bendera telah diatur. Nomor urut paket adalah 768512 dan tidak mengandung data. (Notasinya adalah 'first: last (nbytes)', yang berarti 'nomor urut pertama hingga tetapi tidak termasuk terakhir yang mana nbytes byte data pengguna '.) Tidak ada piggy-backed ack, jendela penerimaan yang tersedia adalah 4096 byte, dan ada opsi ukuran segmen maksimum yang meminta mss 1024 byte.

Csam membalas dengan paket yang serupa kecuali ia menyertakan sebuah piggybacked ack untuk rtsg's SYN. Rtsg kemudian meng-acs SYN csam. The '.' berarti tidak ada bendera yang disetel. Paket tidak berisi data sehingga tidak ada nomor urut data. Perhatikan bahwa nomor urut ack adalah bilangan bulat kecil (1). Pertama kali tcpdump melihat 'percakapan' tcp, ia mencetak nomor urut dari paket. Pada paket percakapan berikutnya, perbedaan antara nomor urut paket saat ini dan nomor urut awal ini dicetak. Ini berarti bahwa nomor urut setelah yang pertama dapat diartikan sebagai posisi byte relatif dalam aliran data percakapan (dengan byte data pertama setiap arah menjadi '1'). '-S' akan mengesampingkan fitur ini, menyebabkan nomor urut asli menjadi output.

Pada baris keenam, rtsg mengirim csam 19 byte data (byte 2 hingga 20 di sisi rtsg -> csam dari percakapan). Bendera PUSH diatur dalam paket. Pada baris ketujuh, csam mengatakan itu menerima data yang dikirim oleh rtsg hingga tetapi tidak termasuk byte 21. Sebagian besar data ini tampaknya duduk di soket buffer sejak menerima jendela csam telah mendapat 19 byte lebih kecil. Csam juga mengirimkan satu byte data ke rtsg dalam paket ini. Pada baris kedelapan dan kesembilan, csam mengirimkan dua byte data mendesak, didorong ke rtsg.

Jika foto itu cukup kecil itu tcpdump tidak menangkap header TCP penuh, ia menginterpretasikan sebanyak mungkin header dan kemudian melaporkannya "| tcp '' untuk menunjukkan sisanya tidak bisa ditafsirkan. Jika tajuk berisi opsi palsu (satu dengan panjang yang terlalu kecil atau di luar ujung tajuk), tcpdump melaporkannya sebagai " pilihan buruk '' dan tidak menafsirkan opsi lebih lanjut (karena tidak mungkin untuk mengatakan di mana mereka memulai). Jika panjang tajuk menunjukkan opsi yang tersedia tetapi panjang datagram IP tidak cukup panjang untuk opsi untuk benar-benar ada, tcpdump melaporkannya sebagai " panjang hdr buruk ''.

Capture paket dengan kombinasi bendera tertentu. Ada delapan bit di bagian bit kontrol dari header TCP:

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

Mari kita berasumsi bahwa kita ingin menonton paket yang digunakan dalam membangun koneksi TCP. Ingat bahwa TCP menggunakan protokol handshake tiga arah ketika menginisialisasi koneksi baru; urutan koneksi yang berkaitan dengan bit kontrol TCP adalah:

  1. Pemanggil mengirim SYN.
  2. Penerima merespons dengan SYN, ACK.
  3. Pemanggil mengirim ACK.

Sekarang kami tertarik untuk menangkap paket yang hanya memiliki bit SYN (Langkah 1). Perhatikan bahwa kita tidak menginginkan paket dari langkah 2 (SYN-ACK), hanya SYN awal yang sederhana. Yang kami butuhkan adalah ekspresi filter yang benar untuk tcpdump .

Ingat struktur header TCP tanpa opsi:

0 15 31-----------------------------------------------------------------| port sumber | pelabuhan tujuan |-----------------------------------------------------------------| nomor urut-----------------------------------------------------------------| nomor pengakuan |-----------------------------------------------------------------| HL | rsvd | C | E | U | A | P | R | S | F | ukuran jendela |-----------------------------------------------------------------| TCP checksum | penunjuk mendesak |-----------------------------------------------------------------

Sebuah header TCP biasanya menyimpan 20 oktet data, kecuali ada opsi. Baris pertama dari grafik mengandung oktet 0–3, baris kedua menunjukkan oktet 4–7, dll.

Mulai menghitung dengan 0, bit kontrol TCP yang relevan terkandung dalam oktet 13:

0 7| 15| 23| 31----------------|---------------|---------------|----------------| HL | rsvd | C | E | U | A | P | R | S | F | ukuran jendela |----------------|---------------|---------------|----------------| | Oktet ke-13 | | |

Mari kita lihat oktet no. 13:

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

Ini adalah bit kontrol TCP di mana kami tertarik. Kami telah menghitung bit dalam oktet ini dari 0 hingga 7, kanan ke kiri, sehingga bit PSH adalah bit 3, sedangkan bit URG adalah nomor 5.

Ingat bahwa kita ingin menangkap paket hanya dengan set SYN. Mari kita lihat apa yang terjadi pada oktet 13 jika datagram TCP tiba dengan bit SYN yang disetel 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 bagian kontrol bit kita melihat bahwa hanya bit 1 (SYN) yang diatur.

Dengan asumsi bahwa nomor oktet 13 adalah bilangan bulat unsigned 8-bit dalam urutan byte jaringan, nilai biner oktet ini adalah:

00000010

Representasi desimalnya 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, karena sekarang kita tahu bahwa jika hanya SYN yang diset, nilai dari oktet ke-13 di header TCP, ketika ditafsirkan sebagai 8-bit unsigned integer dalam urutan byte jaringan, harus tepat 2.

Hubungan ini dapat dinyatakan sebagai

tcp 13 == 2

Kita dapat menggunakan ungkapan ini sebagai filter untuk tcpdump untuk menonton paket yang hanya memiliki set SYN:

tcpdump -i xl0 tcp 13 == 2

Ekspresi mengatakan "biarkan oktet ke-13 dari sebuah datagram TCP memiliki nilai desimal 2," yang persis seperti yang kita inginkan.

Sekarang, mari kita asumsikan bahwa kita perlu menangkap paket SYN, tetapi kita tidak peduli apakah ACK atau bit kontrol TCP lainnya diatur pada saat yang bersamaan. Lihatlah apa yang terjadi pada oktet 13 ketika sebuah 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 sekarang diatur dalam oktet ke-13. Nilai biner oktet 13 adalah:

00010010

yang diterjemahkan menjadi desimal:

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 bisa menggunakan 'tcp 13 == 18' di dalam tcpdump filter ekspresi, karena itu akan memilih hanya paket-paket yang memiliki SYN-ACK diatur, tetapi bukan hanya dengan set SYN. Ingat bahwa kami tidak peduli apakah ACK atau bit kontrol lainnya diatur selama SYN diatur.

Untuk mencapai tujuan kita, kita perlu secara logis DAN nilai biner oktet 13 dengan beberapa nilai lain untuk mempertahankan bit SYN. Kami tahu bahwa kami ingin SYN diatur dalam hal apa pun, jadi kami akan secara logis DAN nilai dalam oktet ke-13 dengan nilai biner SYN:

00010010 SYN-ACK 00000010 SYN DAN 00000010 (kami ingin SYN) DAN 00000010 (kami ingin SYN) -------- -------- = 00000010 = 00000010

Kami melihat bahwa operasi DAN ini memberikan hasil yang sama terlepas apakah ACK atau bit kontrol TCP lain diatur. Representasi desimal dari nilai AND serta hasil dari operasi ini adalah 2 (biner 00000010), jadi kita tahu bahwa untuk paket dengan SYN mengatur hubungan berikut harus berlaku:

((nilai oktet 13) DAN (2)) == (2)

Ini mengarahkan kita ke tcpdump ekspresi filter

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

Perhatikan bahwa Anda harus menggunakan tanda kutip tunggal atau backslash dalam ekspresi untuk menyembunyikan karakter khusus AND ('&') dari shell.

Paket UDP. Format UDP diilustrasikan oleh paket rwho ini:

actinide.who> broadcast.who: udp 84

Ini mengatakan port itu siapa pada host aktinide mengirim datagram udp ke port siapa pada host siaran , alamat penyiaran Internet. Paket itu berisi 84 byte data pengguna.

Beberapa layanan UDP dikenali (dari sumber atau nomor port tujuan) dan informasi protokol tingkat tinggi tercetak - khususnya, permintaan layanan Nama Domain (RFC-1034/1035) dan panggilan Sun RPC (RFC-1050) ke NFS.

Permintaan server nama UDP (N.B.:Deskripsi berikut ini mengasumsikan keakraban dengan protokol Layanan Domain yang dijelaskan dalam RFC-1035. Jika Anda tidak akrab dengan protokol, deskripsi berikut akan sedikit masuk akal.)

Permintaan server nama diformat sebagai:

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

Tuan rumah h2opolo tanya server domain helios untuk catatan alamat (qtype = A) yang terkait dengan nama ucbvax.berkeley.edu. Id kueri adalah '3'. Tanda '+' menunjukkan rekursi yang diinginkan bendera telah diatur. Panjang kueri adalah 37 byte, tidak termasuk header protokol UDP dan IP. Operasi kueri adalah operasi normal, Pertanyaan , jadi bidang op dihilangkan. Jika op itu ada yang lain, itu akan dicetak antara '3' dan '+'. Demikian pula, qclass adalah yang normal, C_IN , dan dihilangkan. Setiap qclass lainnya akan dicetak segera setelah 'A'.

Beberapa anomali diperiksa dan dapat mengakibatkan bidang tambahan diapit oleh tanda kurung siku: Jika suatu query berisi jawaban, catatan otoritas atau bagian catatan tambahan, salah , nscount , atau Arkount dicetak sebagai ' n Sebuah', ' n n ', atau' n au 'di mana n adalah hitungan yang tepat. Jika ada bit respons yang ditetapkan (AA, RA, atau rcode) atau salah satu dari bit `must be zero 'ditetapkan dalam byte dua dan tiga,` b2 & 3 = x 'dicetak, di mana x adalah nilai hex dari byte header dua dan tiga.

Tanggapan server nama UDP. Respons server nama diformat sebagai:

src> dst: id op rcode menandai data jenis kelas a / n / au (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 menanggapi permintaan id 3 dari h2opolo dengan tiga catatan jawaban, tiga catatan server nama, dan tujuh catatan tambahan. Catatan jawaban pertama adalah tipe A (alamat), dan datanya adalah alamat internet 128.32.137.3. Ukuran total respons adalah 273 byte, kecuali header UDP dan IP. Op (Query) dan kode respon (NoError) dihilangkan, seperti kelas (C_IN) dari A record.

Dalam contoh kedua, helios menanggapi permintaan 2 dengan kode respons domain tidak ada (NXDomain) tanpa jawaban, satu server nama, dan tidak ada catatan otoritas. '*' Menunjukkan bahwa jawaban otoritatif bit telah diatur. Karena tidak ada jawaban, tidak ada jenis, kelas, atau data yang dicetak.

Karakter bendera lain yang mungkin muncul adalah '-' (rekursi tersedia, RA, tidak set) dan '|' (pesan dipotong, TC, atur). Jika bagian 'pertanyaan' tidak berisi satu entri, ' n q 'dicetak.

Perhatikan bahwa permintaan dan respons server nama cenderung besar, dan default snaplen dari 68 byte mungkin tidak cukup menangkap paket untuk dicetak. Menggunakan-s bendera untuk meningkatkan snaplen jika Anda perlu menyelidiki secara serius lalu lintas server nama. '-s 128'telah bekerja dengan baik untukku.

Penguraian SMB / CIFS. tcpdump mencakup dekode SMB / CIFS / NBT yang cukup ekstensif untuk data tentang UDP / 137, UDP / 138, dan TCP / 139. Beberapa decoding primitif dari IPX dan NetBEUI SMB data juga dilakukan.

Secara default decode yang cukup minim dilakukan, dengan dekode yang jauh lebih rinci dilakukan jika -v digunakan. Berhati-hatilah bahwa dengan satu paket SMB dapat mengambil satu halaman atau lebih, jadi gunakan saja -v jika Anda benar-benar menginginkan semua detail yang mengerikan.

Jika Anda mendekodekan sesi SMB yang berisi string unicode, maka Anda mungkin ingin mengatur variabel lingkungan USE_UNICODE menjadi 1. Sebuah patch untuk string unicode otomatis mendeteksi akan diterima.

Untuk informasi tentang format paket SMB dan apa arti semua kolom lihat www.cifs.org atau direktori pub / samba / spesifikasi / di situs cermin samba.org favorit Anda. Tambalan SMB ditulis oleh Andrew Tridgell ([email protected]).

Permintaan dan balasan NFS. Permintaan dan balasan Sun NFS (Network File System) dicetak sebagai:

src.xid> dst.nfs: len op args src.nfs> dst.xid: balas hasil stat len ​​op 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

Di baris pertama, tuan rumah Sushi mengirim transaksi dengan id 6709 untuk wrl (perhatikan bahwa nomor yang mengikuti host src adalah id transaksi, tidak port sumber). Permintaan itu 112 byte, tidak termasuk header UDP dan IP. Operasi itu a readlink (baca simbol simbolis) pada pegangan file ( fh ) 21,24 / 10.731657119. (Jika beruntung, seperti dalam kasus ini, pegangan file dapat diartikan sebagai pasangan nomor perangkat besar, kecil, diikuti oleh nomor inode dan nomor generasi.) Wrl balasan 'ok' dengan konten tautan.

Di baris ketiga, Sushi bertanya wrl untuk mencari nama ' xcolors 'dalam file direktori 9,74 / 4096,6878. Perhatikan bahwa data yang dicetak bergantung pada jenis operasi. Format ini dimaksudkan untuk menjadi cukup jelas jika dibaca bersama dengan spesifikasi protokol NFS.

Jika flag -v (verbose) diberikan, informasi tambahan dicetak. Sebagai contoh:

sushi.1372a> wrl.nfs: 148 baca fh 21,11 / 12,195 8192 byte @ 24576wrl.nfs> sushi.1372a: balas ok 1472 baca REG 100664 id 417/0 sz 29388

(-v juga mencetak header IP TTL, ID, panjang, dan bidang fragmentasi, yang telah dihilangkan dari contoh ini.) Pada baris pertama, Sushi bertanya wrl untuk membaca 8192 byte dari file 21,11 / 12.195, pada byte offset 24576. Wrl balasan 'ok'; paket yang ditampilkan pada baris kedua adalah fragmen pertama dari balasan, dan karenanya hanya 1472 byte panjang (byte lain akan mengikuti fragmen berikutnya, tetapi fragmen ini tidak memiliki header NFS atau bahkan UDP dan jadi mungkin tidak dicetak, tergantung pada ekspresi filter yang digunakan). Karena flag -v diberikan, beberapa atribut file (yang dikembalikan selain data file) dicetak: jenis file ("REG '', untuk file biasa), mode file (dalam oktal), uid dan gid, dan ukuran file.

Jika bendera -v diberikan lebih dari satu kali, bahkan lebih banyak detail dicetak.

Perhatikan bahwa permintaan NFS sangat besar dan banyak detail tidak akan dicetak kecuali snaplen meningkat. Coba gunakan '-s 192'untuk menonton lalu lintas NFS.

Paket balasan NFS tidak secara eksplisit mengidentifikasi operasi RPC. Sebagai gantinya, tcpdump melacak permintaan "baru-baru ini", dan mencocokkannya dengan balasan menggunakan ID transaksi. Jika balasan tidak mengikuti dengan ketat permintaan yang terkait, itu mungkin tidak dapat diuraikan.

Permintaan dan balasan Transarc AFS (Andrew File System).

src.sport> dst.dport: rx tipe-paket src.sport> dst.dport: rx packet-type layanan panggilan panggilan-nama args src.sport> dst.dport: rx packet-type service reply panggilan-nama args elvis.7001> pike.afsfs: rx data fs call rename old fid 536876964/1/1 ".newsrc.new" new fid 536876964/1/1 ".newsrc"pike.afsfs> elvis.7001: rx data fs balas rename

Di baris pertama, host elvis mengirim paket RX ke tombak. Ini adalah paket data RX ke layanan fs (fileserver), dan merupakan awal dari panggilan RPC.Panggilan RPC adalah mengubah nama, dengan file direktori lama id dari 536876964/1/1 dan nama file lama '.newsrc.new', dan file direktori baru id dari 536876964/1/1 dan nama file baru '. newsrc '. Host tombak merespon dengan balasan RPC ke panggilan rename (yang berhasil, karena itu adalah paket data dan bukan paket batalkan).

Secara umum, semua AFS RPC didekodekan setidaknya oleh nama panggilan RPC. Kebanyakan AFS RPC memiliki setidaknya beberapa argumen yang diterjemahkan (umumnya hanya argumen 'menarik', untuk beberapa definisi yang menarik).

Format ini dimaksudkan untuk mendeskripsikan diri, tetapi mungkin tidak akan berguna bagi orang yang tidak akrab dengan cara kerja AFS dan RX.

Jika flag -v (verbose) diberikan dua kali, paket acknowledgment dan informasi header tambahan dicetak, seperti ID panggilan RX, nomor panggilan, nomor urut, nomor seri, dan bendera paket RX.

Jika flag -v diberikan dua kali, informasi tambahan dicetak, seperti ID panggilan RX, nomor seri, dan bendera paket RX. Informasi negosiasi MTU juga dicetak dari paket ack RX.

Jika bendera -v diberikan tiga kali, indeks keamanan dan ID layanan dicetak.

Kode kesalahan dicetak untuk paket abort, dengan pengecualian paket beacon Ubik (karena abort paket digunakan untuk menandakan ya suara untuk protokol Ubik).

Perhatikan bahwa permintaan AFS sangat besar, dan banyak argumen tidak akan dicetak kecuali snaplen meningkat. Coba gunakan `-s 256'untuk menonton lalu lintas AFS.

Paket balasan AFS tidak secara eksplisit mengidentifikasi operasi RPC. Sebagai gantinya, tcpdump melacak permintaan "baru-baru ini", dan mencocokkannya dengan balasan menggunakan nomor panggilan dan ID layanan. Jika balasan tidak mengikuti dengan ketat permintaan yang terkait, itu mungkin tidak dapat diuraikan.

KIP Appletalk (DDP dalam UDP). Paket DDP Appletalk yang dikemas dalam UDP datagrams di-encapsulated dan dibuang sebagai paket DDP (yaitu, semua informasi header UDP dibuang). Berkas /etc/atalk.names digunakan untuk menerjemahkan net appletalk dan nomor node ke nama.

Baris dalam file ini memiliki formulir ini:

nama nomor 1,254 eter16,1 icsd-net1.254.110 ace

Dua baris pertama memberi nama jaringan appletalk. Baris ketiga memberikan nama host tertentu (host dibedakan dari net dengan oktet ketiga dalam nomor - nomor net harus memiliki dua oktet dan sejumlah tuan rumah harus memiliki tiga oktet). Nomor dan nama harus dipisahkan oleh spasi kosong (kosong atau tab). Itu /etc/atalk.names file dapat berisi baris kosong atau baris komentar (baris dimulai 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 berisi entri untuk beberapa host appletalk / nomor net, alamat dicetak dalam bentuk angka.) Dalam contoh pertama, NBP (DDP port 2) pada net 144,1 node 209 mengirim ke apa pun yang sedang didengarkan port 220 dari icsd node bersih 112. Baris kedua adalah sama kecuali nama lengkap dari node sumber diketahui ('kantor'). Baris ketiga adalah pengiriman dari port 235 pada net jssmag node 149 untuk disiarkan pada port NBP icsd-net (perhatikan bahwa alamat broadcast (255) ditunjukkan dengan nama net tanpa nomor host, karena alasan ini, ini bagus ide untuk menjaga nama node dan nama net yang berbeda di /etc/atalk.names).

NBP (protokol pengikatan nama) dan paket ATP (Appletalk transaction protocol) telah diinterpretasikan isinya. Protokol lain hanya membuang nama protokol (atau nomor jika tidak ada nama yang terdaftar untuk protokol) dan ukuran paket.

Paket NBP diformat seperti contoh berikut:

icsd-net.112.220> jssmag.2: