Echanger rapidement des données en TCP via netcat

I. Présentation

Dans ce petit article je vous présente une méthode simple et rapide pour échanger des données d'une machine Linux à une autre. On utilisera en effet le "couteau suisse TCP/IP", j'ai nommé netcat.

 A noter que cette méthode fonctionne aussi sous Windows, mais il faut installer l'utilitaire netcat

La commande netcat ou nc est présente nativement sur la majorité des systèmes d'exploitation Linux. Cette commande peut être utilisée pour envoyer des données et ouvrir des ports sur sa machine. On se mettra donc en écoute sur la machine qui doit recevoir les données (on mettra netcat en écoute sur un port), et l'autre machine enverra les données sur le port attendu via netcat également. L'outil netcat se chargera d'établir la connexion TCP.

II. Avertissement de sécurité

Je lève ici une alerte de sécurité pour souligner que cette méthode de transfert des données n'est absolument pas sécurisée. Les données échangées transitent en clair sur le réseau, aucun chiffrement n'est implémenté. Il est donc nécessaire d'être extrêmement vigilant concernant le type de données échangées. Aussi pratique et rapide soit-elle, c'est méthode est à bannir pour les données sensibles.

III. Utilisation

Nous souhaitons par exemple envoyer une simple phrase via cette méthode. Sur la machine en écoute en tant qu'utilisateur standard ou en tant que root, nous allons donc nous mettre en écoute sur le port "1234"

nc -lp 1234

Sur l'autre machine (celle qui envoi les données), il nous suffit d'établir une connexion TCP sur ce port et d'y envoyer nos données

echo "Message transmis via netcat en TCP"  | nc IP_machine_en_ecoute 1234

Le GIF ci-dessous montre comment cette méthode peut être utilisée entre deux machines pouvant communiquer via le réseau. La machine du haut (terminal Debian 01) envoi ici une donnée à la machine du bas (terminal Debian 02) via netcat (commande netcat ou nc) en utilisant le port 1234.

Utilisation de netcat pour envoyer une simple phrase d'une machine à l'autre
Utilisation de netcat pour envoyer une simple phrase d'une machine à l'autre

Cette méthode fonctionne aussi pour des fichiers, il suffit pour cela d'envoyer le contenu du fichier via netcat et d'écrire les données reçues (sortie de netcat en écoute) dans un fichier également.

cat monfichier.txt| nc IP_machine_en_ecoute 1234

Ici, la commande cat va se charger d'afficher le contenu du fichier indiqué, l'utilisation du pipe "|" puis de netcat va rediriger cet affichage (la sortie de cat) vers l'adresse IP et le port indiqué. la machine en écoute recevra donc le contenu du fichier et celui-ci sera affiché dans son terminal.

Pour enregistrer directement le contenu reçu dans un fichier, on utilisera le chevron après la commande netcat sur la machine d'écoute.

nc -lp 1234 > fichier_recu.txt

Voici une démonstration dans le GIF ci-dessous.

Echange d'un fichier avec netcat
Echange d'un fichier avec netcat

Pour rappel, les données échangées transitent en clair sur le réseau, il faut donc faire attention aux données que l'on transmet de cette manière. Cela reste néanmoins un moyen efficace et rapide d'échange de données, qui peut être utilisé pour d'autres fonctions, tester une connectivité réseau entre deux machines autrement que via le ping par exemple.

Partagez cet article Partager sur Twitter Partager sur Facebook Partager sur Linkedin Partager sur Google+ Envoyer par mail

Mickael Dorigny

Fondateur d'IT-Connect.fr et d'Information-security.fr. Auditeur sécurité chez Amossys.

    mickael a publié 476 articles sur IT-Connect.See all posts by mickael

    Laisser un commentaire

    Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *