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?
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?
Jawaban:
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
.
tcpflow
sebagai root?
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
.
Saya merasa solusi yang paling elegan adalah dengan membuang tcpdump. Tidak ada pipa dalam bentuk apa pun:
tcpflow -c port 6667
Dan itu saja.
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.
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'