Saya ingin cara sederhana untuk menunjukkan semua data TCP (bukan header TCP atau yang lainnya) melalui antarmuka apa pun di kotak Linux saya.
Sebagai contoh, saya ingin perintah ajaib yang jika saya lakukan:
magic_commmand_I_want port=1234
maka jika ada server mendengarkan pada port 1234 di komputer saya, dan seseorang melakukannya:
echo hello | nc localhost 1234
# Note: "nc" (aka "netcat") is a simple tool that sends data to a Host/port
Maka perintah magis hanya akan mencetak:
hello
Saya sudah mencoba "tcpdump", "Ethereal", "tethereal", "tshark", dan lainnya, tetapi tidak jelas bagaimana Anda membuatnya:
Ya, Anda mungkin bisa merangkai satu set perintah unix untuk melakukan ini, tapi itu tidak mudah diingat untuk waktu berikutnya :)
Jika Anda memiliki contoh sederhana dari baris perintah persis yang melakukan ini, itulah yang saya inginkan.
Pembaruan:
Seperti yang ditunjukkan oleh Michal dalam komentar: From tcpflow versi 1.3 opsi -e digunakan untuk menentukan nama pemindai. Jadi kesalahan "Nama pemindai tidak sah '8983'" dicetak. Perintah yang benar adalah
Sudo tcpflow -i any -C -J port 1234
(juga -J
telah diubah menjadi -g
dalam rilis terbaru)
Terima kasih kepada Yves karena mengarahkan saya ke " tcpflow ". Inilah baris perintah:
tcpflow -i any -C -e port 1234 # as root, or with Sudo
Ini melakukan semua yang saya inginkan
"-C
" memberitahukannya untuk membuang ke konsol alih-alih file. "-e
" memungkinkan warna sehingga client-> server dan server-> client berbeda secara visual.
Saya menginstal tcpflow hanya dengan melakukan
Sudo apt-get install tcpflow
socat adalah alat yang Anda minta. Itu dapat bertindak sebagai proxy:
$socat -v TCP-LISTEN:4444 TCP:localhost:1234
hello
maka aplikasi Anda harus menghubungkan port 4444 bukannya langsung terhubung ke 1234
Opsi -v adalah untuk socat untuk mencetak semua yang diterimanya pada kesalahan standar (stderr).
Memperbarui:
Jika socat tidak tersedia di mesin Anda, Anda mungkin masih meniru seperti itu dengan netcat:
$netcat -l -p 4444 | tee output_file | netcat localhost 1234
peringatan: opsi ini searah. contoh netcat kedua akan mencetak respons dari server Anda ke output standar. Anda masih dapat melakukannya:
$mkfifo my_fifo
$netcat -l -p 4444 < my_fifo | tee output_file | netcat localhost 1234 > my_fifo
Coba Wireshark . Ini adalah penganalisa protokol yang sangat baik yang ditargetkan untuk Linux dan Windows.
tcpflow adalah apa yang Anda inginkan. Ekstrak dari halaman manual:
DESKRIPSI
tcpflow adalah program yang menangkap data yang ditransmisikan sebagai bagian dari koneksi TCP (mengalir), dan menyimpan data dengan cara yang nyaman untuk analisis protokol atau debugging. Program seperti tcpdump (4) menunjukkan ringkasan paket yang terlihat pada kabel, tetapi biasanya tidak menyimpan data yang sebenarnya sedang dikirim. Sebaliknya, tcpflow merekonstruksi aliran data aktual dan menyimpan setiap aliran dalam file terpisah untuk analisis nanti. tcpflow memahami TCP nomor urut dan akan merekonstruksi aliran data dengan benar terlepas dari pengiriman ulang atau pengiriman yang tidak sesuai pesanan.tcpflow menyimpan semua data yang diambil dalam file yang memiliki nama formulir
192.168.101.102.02345-010.011.012.013.45103
di mana isi dari file di atas adalah data yang dikirimkan dari Host 192.168.101.102 port 2345, ke Host 10.11.12.13 port 45103.
Siapkan koneksi dari aplikasi aplikasi Anda ke server Anda. Saat koneksi aktif dan berjalan, tcpflow masih dapat mengambil data darinya Sebagai contoh:
$ Sudo tcpflow -i lo port 5555
tcpflow[3006]: listening on lo
Setiap data akan disimpan dalam file bernama 127.000.000.001.48842-127.000.000.001.05555.
Anda masih dapat mengarahkan ini pada output standar dengan opsi -Cs. Baca halaman manual untuk bermain dengan ekspresi untuk menyetel paquets yang Anda ingin tcpflow tangkap.
ngrep
sangat bagus untuk ini. Dibutuhkan string BPF dan string opsional untuk mencari di dalam paket, dan kemudian membuang konten paket ke layar dalam format yang sangat berguna. Opsinya juga membuang ke file pcap_dump yang dapat Anda periksa lebih dekat di Wireshark nanti.
Lihatlah Chaosreader . Meskipun sedikit lebih banyak dari yang Anda minta dan sedikit berbeda, mungkin Anda bisa memodifikasi kode untuk melakukan apa yang Anda inginkan.