90 votes

Quel est le moyen le plus simple de renifler les données du trafic TCP sous Linux ?

Je veux un moyen simple de montrer toutes les données TCP (pas les en-têtes TCP ou autre chose) passant par n'importe quelle interface sur ma boîte Linux.

Par exemple, je veux une commande magique qui, si je fais :

magic_commmand_I_want port=1234

alors s'il y avait un serveur écoutant sur le port 1234 sur ma machine, et que quelqu'un le faisait :

echo hello | nc localhost 1234
# Note: "nc" (aka "netcat") is a simple tool that sends data to a host/port

Alors la commande magique s'imprimerait simplement :

hello

J'ai essayé "tcpdump", "ethereal", "tethereal", "tshark", et d'autres, mais il n'est pas évident de savoir comment les faire fonctionner :

  • ne pas montrer les adresses IP ou autres métadonnées
  • ne montrent que les "données" envoyées, et non les paquets individuels et leurs en-têtes.
  • imprimer les données telles quelles, pas en hexadécimal, et pas avec des marqueurs de décalage de paquet
  • renifler tous le trafic réseau (que ce soit sur eth0 o eth1 o lo etc...)

Oui, vous pourriez probablement enchaîner un ensemble de commandes unix pour faire cela, mais ce n'est pas très facile à retenir pour la prochaine fois :)

Si vous avez un exemple simple d'une ligne de commande exacte qui fait cela, c'est ce que j'aimerais.

0voto

Andrew Y Points 101

Jetez un coup d'œil à Chaosreader . Bien qu'il fasse un peu plus que ce que vous demandez et légèrement différemment, vous pourriez probablement modifier son code pour faire ce que vous voulez.

-1voto

dimba Points 773

Peut-être pouvez-vous écrire un wrapper pour tcpdump, par exemple, qui supprimera toutes les informations redondantes

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X