Bagaimana saya membuat tcpdump tidak mencetak header tcp?

28

Saya mencoba ini:

tcpdump -s 1500 -A -l -i eth0 '(port 6667) and (length > 74)'

Saya hanya perlu bagian ascii itu. Bagaimana cara menghapus sisanya?

pembuat kode
sumber
1
dengan tshark Anda dapat melakukannya dengan: tshark -l -i eth0 -f 'port 6667 dan lebih besar 74' -T field -e data -e
Marcin
Dikatakan 28 paket ditangkap tetapi tidak mencetak apa pun untuk STDOUT.
coder
Apakah maksud Anda ASCII7?
Mircea Vutcovici

Jawaban:

15

Seperti yang disarankan Josh, tcpflow hanya dapat mencetak data paket TCP ke file atau STDOUT. Anda dapat mengirimkan tcpdump ke tcpflow seperti ini:

tcpdump -i lo -l -w - port 23 | tcpflow -C -r -

Untuk hanya melihat satu sisi percakapan, Anda dapat menggunakan filter untuk tcpdump, mis dst port 23.

tentu saja
sumber
4
Mengapa Anda harus memulai tcpflowsebagai root?
Ruslan
5

Saya tidak yakin tentang sintaks yang tepat untuk tcpdump... pada kenyataannya, saya telah menandai pertanyaan ini sebagai favorit karena saya ingin tahu! Tetapi sebagai solusi alternatif, Anda bisa mencoba menggunakannya tcpflow. Ini pada dasarnya bekerja dengan cara yang sama, tetapi mencetak output ASCII jauh lebih baik; itu mengecualikan header dan paket cetakan secara berurutan sebagai aliran, sehingga lebih mudah untuk membaca dan mengikuti pada waktu daripada tcpdump.

Josh
sumber
5

Saya merasa solusi yang paling elegan adalah dengan membuang tcpdump. Tidak ada pipa dalam bentuk apa pun:

tcpflow -c port 6667

Dan itu saja.

BarsMonster
sumber
Kau menyelamatkan hidupku, aku ingin membelikanmu kue
gdaras
4

Cara cepat dan kotor untuk melakukan ini adalah memfilter output melalui string:

tcpdump -nli eth0 '(port 6667) and (length > 74)' -s 0 -w - | strings

Terkadang Anda tidak memiliki alat lain dan untuk mengintip ke dalam payload ini sudah cukup. Ini tidak baik jika Anda membutuhkan muatan yang tepat untuk injeksi atau analisis yang tepat, tentu saja.

Eduardo Ivanec
sumber
1

Jika Anda hanya membutuhkan bagian ASCII, Anda dapat menggunakan: tcpdump -s 1500 -A -l -i eth0 '(port 6667) and (length > 74)'|sed 's/\.//g'atau dengan ngrep:ngrep -d eth0 -lq . '(port 6667) and (length > 74)' |sed -rn '/^ /s/\.//gp'

Mircea Vutcovici
sumber
1

Saya memiliki masalah yang sama minggu lalu - saya menggunakan wireshark gui dan melakukan "copy ascii yang dapat dibaca" untuk paket yang menarik.

Saya (berhasil) mencoba menjabarkan masalah dengan permintaan http ke layanan web dan XML-jawabannya.

Nils
sumber