Mise à jour :
Comme l'a souligné Michal dans les commentaires :À partir de la version 1.3 de tcpflow, l'option -e est utilisée pour spécifier le nom du scanner. Ainsi, l'erreur "Nom de scanner invalide '8983'" est imprimée. La bonne commande est
sudo tcpflow -i any -C -J port 1234
(aussi -J
a été remplacé par -g
dans la dernière version)
Merci à yves de m'avoir indiqué "tcpflow". Voici la ligne de commande :
tcpflow -i any -C -e port 1234 # as root, or with sudo
Cela fait tout ce que je veux
- affiche les données octet par octet telles qu'elles arrivent
- n'affiche aucune autre métadonnée
- écoute sur toutes les interfaces (il capture donc les données provenant de l'intérieur et de l'extérieur de la machine)
Le "-C
" lui dit de vider la console au lieu d'un fichier. Le "-e
" active les couleurs afin que client->serveur et serveur->client soient visuellement distincts.
J'ai installé tcpflow en faisant simplement
sudo apt-get install tcpflow
socat est l'outil que vous demandez. Il peut faire office de proxy :
$socat -v TCP-LISTEN:4444 TCP:localhost:1234
hello
alors votre application doit se connecter au port 4444 au lieu de se connecter directement au 1234
L'option -v permet à socat d'imprimer tout ce qu'il reçoit sur l'erreur standard (stderr).
Mise à jour :
Si socat n'est pas disponible sur votre machine, vous pouvez toujours l'émuler de cette façon avec netcat :
$netcat -l -p 4444 | tee output_file | netcat localhost 1234
mises en garde :cette option est unidirectionnelle. la deuxième instance de netcat imprimera toute réponse de votre serveur sur la sortie standard. Vous pouvez toujours le faire :
$mkfifo my_fifo
$netcat -l -p 4444 < my_fifo | tee output_file | netcat localhost 1234 > my_fifo
Essayez Wireshark. C'est un excellent analyseur de protocole ciblé à la fois pour Linux et Windows.