Gestion du réseau

nc (netcat) - La boite à outils réseau

Table des matières

Introduction



nc (pour netcat) est un outil qui permet de lire et écrire de la donnée en ligne de commande à travers le réseau.
Dans cet article, on va voir quelques options intéressante de cet outil

Test de port TCP ou UDP



Pour tester le statut d'une connexion, on utilisera l'option -z.
Cette option va nous permettre de nous informer sur le statut du port.

Pour le test d'un port en TCP, on va utiliser la commande avec les options suivantes :

Code BASH :
nc -z -v serveur port


Voici un exemple sur le serveur 192.168.21.251, port 80 (HTTP) :

Code BASH :
nc -z -v 192.168.21.251 80


Lorsque le port est ouvert, on a une réponse de ce type :
Code TEXT :
Connection to 192.168.21.251 80 port [tcp/http] succeeded!


Voici un exemple de port fermé (ici pas de SSH sur le port 22) :
Code TEXT :
nc: connect to 192.168.21.251 port 22 (tcp) failed: Connection refused



Pour le test d'un port en UDP, on va utiliser la commande avec les options suivantes :

Code BASH :
nc -z -v -u serveur port


On ajoute l'option -u. Exemple avec le serveur 192.168.21.251, port 68 UDP (DHCP) :
Code BASH :
nc -z -v -u 192.168.21.251 68


Lorsque le port est ouvert, on a une réponse de ce type :
Code TEXT :
Connection to 192.168.21.251 68 port [udp/bootpc] succeeded!



On pourra tester le code retour de la commande avec $? en BASH.
La valeur 0 indique un succès de la commande, donc un port ouvert.
Une autre valeur indique une erreur.


Echanger des fichiers



Comme son nom l'indique, netcat peut faire la même chose que cat (afficher un fichier) mais à travers le réseau.

Prenons un exemple, je veux transférer le fichier adrien.txt d'une machine à une autre.
On va utiliser le port 1234 (ici évidemment, si on dispose d'un pare-feu, il faudra ouvrir le port 1234/TCP)

Sur la machine de réception, je vais lancer nc en écoute avec l'option -l et spécifier le port avec l'option -p :

Code BASH :
nc -l -p 1234 > fichier_receptionne.txt


Sur la machine qui possède le fichier (machine d'envoi), on va injecter le contenu du fichier à transférer.
On va utiliser l'option -w pour définir un timeout au cas où (défini en secondes).
On va également préciser la machine de destination (192.168.21.251), ainsi que le port à utiliser (1234) :

Code BASH :
nc -w 2 192.168.21.251 1234 < adrien.txt


La commande se termine instantanément.
Sur la machine de réception, le fichier est arrivé, et la commande nc -l se termine, nous redonnant la main.

Chatter entre 2 machines



On peut aussi chatter entre 2 machines.
En effet, le texte saisi dans la commande nc est envoyé sur l'autre machine en écoute.

Sur la première machine, lancer nc en écoute sur un port (exemple 1234) :

Code BASH :
nc -l -p 1234


Sur l'autre machine, on se connecte à celle qui vient de lancer l'écoute :

Code BASH :
nc -w 2 192.168.21.251 1234


On peut alors envoyer du texte. Pour valider l'envoi, on utilise tout simplement la touche entrée.

On quittera nc avec un simple Ctrl+C
Cette page a été vue 16528 fois