Aktualizace:
Jak poukázal Michal v komentářích:Od tcpflow verze 1.3 se pro zadání jména skeneru používá volba -e. Vypíše se tedy chyba „Neplatný název skeneru '8983'“. Správný příkaz je
sudo tcpflow -i any -C -J port 1234
(také -J
byl změněn na -g
v nejnovější verzi)
Děkuji yves, že mě upozornil na "tcpflow". Zde je příkazový řádek:
tcpflow -i any -C -e port 1234 # as root, or with sudo
To dělá vše, co chci
- zobrazuje data bajt po bajtu tak, jak jsou k dispozici
- nezobrazuje žádná další metadata
- naslouchá na všech rozhraních (takže zachycuje data přicházející ze zařízení i zvenčí)
"-C
" říká, že se má vypsat do konzole místo do souboru. "-e
" umožňuje barvy, takže klient->server a server->klient jsou vizuálně odlišné.
Nainstaloval jsem tcpflow jednoduchým postupem
sudo apt-get install tcpflow
socat je nástroj, který požadujete. Může fungovat jako proxy:
$socat -v TCP-LISTEN:4444 TCP:localhost:1234
hello
pak vaše aplikace musí připojit port 4444 namísto přímého připojení k 1234
Volba -v znamená, že socat vytiskne vše, co obdrží při standardní chybě (stderr).
Aktualizace:
Pokud socat není na vašem počítači k dispozici, můžete jej tímto způsobem emulovat pomocí netcat:
$netcat -l -p 4444 | tee output_file | netcat localhost 1234
upozornění:tato možnost je jednosměrná. druhá instance netcat vytiskne jakoukoli odpověď z vašeho serveru na standardní výstup. Stále můžete udělat:
$mkfifo my_fifo
$netcat -l -p 4444 < my_fifo | tee output_file | netcat localhost 1234 > my_fifo
Zkuste Wireshark. Je to vynikající analyzátor protokolů určený pro Linux i Windows.