cara membuat tcpdump untuk menampilkan ip dan nomor port tetapi tidak hostname dan protokol

42

Saya menggunakan tcpdump untuk beberapa tes saya ingin melihat nomor IP dan port tetapi output dari tcpdump seperti

IP pl1snu.koren.kr.http > kitch.pl.sophia.inria.fr.dnp: Flags [P.], seq 54:72, ack 1, win 5792, length 18

itu hanya menunjukkan nama host dan protokol untuk http, mudah untuk mengetahui itu 80 tetapi untuk dnp saya harus mencari

jadi mungkinkah cara membuat tcpdump untuk menampilkan nomor ip dan port tetapi tidak hostname dan protokol jika demikian, bagaimana? Terima kasih

Misteri
sumber

Jawaban:

44

Tambahkan -nke tcpdumpbaris perintah Anda .

Dari manual tcpdump :

-n Don't convert addresses (i.e., host addresses, port numbers, etc.) to names.

Perlu juga dicatat bahwa pada Fedora (dan mungkin turunan lainnya: RHEL, CentOS, dll.) Mereka telah menambal versi tcpdump asli untuk menyertakan opsi terpisah -nnuntuk menghapus nomor port. Dari halaman manual :

-n     Don't convert host addresses to names.   This  can  be  used  to
              avoid DNS lookups.

-nn    Don't convert protocol and port numbers etc. to names either.
astaga
sumber
nomor port masih dikonversi ke nama protokol menggunakan-n
misteryes
"nomor port masih dikonversikan menjadi nama protokol menggunakan -n" Tidak dengan, misalnya, tcpdump 4.1.1 yang datang dengan OS X Mountain Lion atau dengan tcpdump yang dibangun dari atas trunk Git tcpdump.org. Pada versi tcpdump apa yang Anda lihat -n tidak menekan konversi nomor port ke nama protokol?
5

Saya menggunakan -nnparameter.

-nn: Jangan atasi nama host atau nama port.

Jalankan sebagai:

tcpdump -nn 
ATMC
sumber
2

-nhanya berfungsi untuk nama host, tetapi tidak berfungsi untuk nomor port. -nnmelakukan trik untuk keduanya. Ini menjalankan tcpdump versi 4.5.1 di Fedora 20 gnu / linux. Jawaban downATAT dari @ATMc adalah yang benar. Sayangnya saya tidak dapat memperbaiki atau menulis komentar di bawahnya karena karma rendah.

Adam Kurkiewicz
sumber
1

Saya pikir pendekatan terbaik adalah:

sudo tcpdump -ni any

Langkah-langkah untuk menguji:

  1. Buka konsol dan ketik:

    sudo nc -l -p 6666
    
  2. Buka konsol lain dan ketik:

    sudo tcpdump -ni any
    

    Jika output terlalu verbose, Anda dapat memfilternya ( | grep -v "patter1n|pattern2")

  3. Buka konsol ketiga dan ketik:

    telnet localhost 6666
    

Output yang diharapkan:

10:37:13.770997 IP 127.0.0.1.56920 > 127.0.0.1.443: Flags [S], seq 2822288041, win 43690, options [mss 65495,sackOK,TS val 1028779 ecr 0,nop,wscale 7], length 0

Jika Anda menggunakan, sudo tcpdump -i anyAnda akan melihat sesuatu seperti ini:

10:38:22.106022 IP localhost.56924 > localhost.https: Flags [S], seq 3147104744, win 43690, options [mss 65495,sackOK,TS val 1045863 ecr 0,nop,wscale 7], length 0
Javier
sumber
1
Itu sama dengan jawaban yang lain - -i anytidak perlu jika Anda ingin menekan konversi alamat / port-ke-nama, hanya itu -nyang penting.
-2
tcpdump -i eth0 -p -nn | grep "IP" | awk '{print$3 ,$4 ,$5}' | sed 's/://'
segera
sumber
1
saya tidak mengerti
Pierre.Vriens
1
Sementara pertanyaan mengatakan "tampilkan nomor port dan ip tetapi bukan nama host dan protokol", saya ragu bahwa itu berarti "nomor tampilan port dan ip tetapi tidak ada informasi lainnya". (Saya bisa saja salah, tetapi tampaknya tidak ada orang lain yang menafsirkan pertanyaan seperti yang Anda lakukan.) Jadi, jawaban Anda tampaknya menjadi dua bagian: (1) gunakan  -nnuntuk menampilkan layanan seperti "http" dan "dnp" sebagai port nomor bukan nama (yang telah disajikan dalam tiga jawaban sebelumnya), dan (2) digunakan  awkuntuk membuang data pada isi paket (yang mungkin tidak diinginkan).
Scott