Vous connaissez netcat ? Un vieux protocole bien connu des admins système et des utilisateurs Linux permettant de diffuser un flux TCP/IP (voir UDP) sur un réseau alias « le couteau suisse du TCP/IP » comme dirait l’autre. J’avais vu ça en première année d’école sur Linux et jusqu’à récemment je ne savais pas qu’il était incorporé de base sous Mac OS, l’occasion de partager avec vous son utilisation simple.
Pourquoi utiliser NetCat ?
Honnêtement avec les outils existants aujourd’hui pour le transfert de fichiers en réseau, il y a a peu de chance que vous utilisiez cette méthode qui reste compliquée pour l’utilisateur lambda… Cependant, il permet de faire des choses un peu plus avancées que le simple transfert et reste un outil à connaitre pour votre culture.
Pour rappel, sous Mac vous pouvez transférer en:
- Utilisant un logiciel de cloud comme Dropbox pour échanger vos fichiers ( passage par Internet, donc exit les fichiers volumineux si vous n’êtes pas fibrés).
- Utiliser un protocole comme AFP ou SAMBA après avoir partagé un élément de votre Finder dans préférences systèmes/partage/partage de fichiers
- Utiliser AirDrop, le système de partage sans fil d’Apple qui vous permet de partager un fichier entre Mac/Mac ou iOS/iOS (pas encore iOS/Mac mais je pense que ça va venir) sans même être sur le même réseau…
- Envoyer un eMail (la méthode de vos parents surement 😉, pas pratique quand on a un fichier de 2 Go à transférer)
- Utiliser un système de partage de fichier comme WeTransfert (cela passe là aussi par Internet… pas pratique en cas de fichiers lourds si vous n’êtes pas fibrés).
Pourquoi l’utiliser alors ? Et bien pour plusieurs raisons. D’une part il est mutli plateforme et vous pourrez ainsi échanger des fichiers avec n’importe quel OS doté de netcat (c’est un vieux protocole, même un vieux Mac pourrait donc l’utiliser). D’autre part, il suffit simplement d’avoir un terminal (et un navigateur dans notre cas) pour l’utiliser simplement ce qui peut s’avérer utile selon la machine que vous utilisez.
Comment ça marche ?
NetCat utilise donc votre connexion locale pour transférer des fichiers ce qui permet d’avoir débits proportionnels à la qualité de votre connexion entre vos deux postes. Sur le poste numéro 1 nous allons ouvrir un flux TCP/IP et partager notre fichier et sur le poste 2 nous irons chercher son contenu.
Je vous invite donc à ouvrir le terminal pour un petit test :
- La machine 1 ( MacBook Pro 15″, ip : 192.168.0.29 )
- La machine 2 (iMac 21″, ip : on s’en fout, tant que la plage est la même et que les ordinateurs communiquent entre eux).
Pour ouvrir le flux TCP/IP voici la commande :
nc -l 8000
Le flux est alors ouvert, en serveur sur le port 8000 (à condition que ce dernier soit utilisable, netcat peut aussi être utilisé pour du scan de port sur un réseau, ou du ping sur un serveur pour tester sa connexion).
Pour partager un fichier sur le flux TCP :
nc -l 8000 < chemin/de/mon-fichier.jpg
Pour récupérer le fichier sur la machine distante, vous pouvez utiliser votre navigateur et taper dans l’url, l’adresse ip de la machine 1 : le port utilisé. S’il s’agit d’une image par exemple :
On retrouve bien notre fichier image partagé et l’utilisateur, sur le poste 2 peut enregistrer l’image.
Récupérer le contenu en terminal sur notre poste 2 :
Il vous suffit d’aller récupérer le flux via la commande :
nc 192.168.0.29 8000 < /chemin/ou/vous/voulez/recuperer/le/fichier.jpg
Sachez, pour finir, que le transfert du fichier met fin à la la session de transfert et met fin au streaming du flux TCP sur l’hôte utilisant netcat. Le port utilisé est fermé.
Et voilà, vous en savez en peu plus sur netcat. Si vous voulez vraiment bucher la commande, l’ensemble des options (port scanning etc…) est détaillé dans le manuel.
man nc
dans votre terminal
2 commentaires
Sam · 6 avril 2014 à 12 h 24 min
Je chat de Neo et Trinity 🙂 .
Je ne connaissais pas cette utilisation, c’est fun 😀 .
matthieu · 7 juin 2014 à 16 h 50 min
Gné ? 🙂