🛠️ Introduction : Netcat (ou nc) est l'utilitaire de ligne de commande ultime, souvent surnommé le « couteau suisse » des outils de mise en réseau. Il permet de lire et d'écrire des données sur des connexions réseau en utilisant les protocoles **TCP** ou **UDP**.
nc
Netcat est multiplateforme (Linux, macOS, Windows, BSD) et est un outil indispensable pour les administrateurs réseau et système. Il est couramment utilisé pour le débogage, la surveillance des connexions, l'analyse des ports, le transfert de données, et bien plus encore.
La syntaxe de base pour établir une connexion avec l'utilitaire Netcat est la suivante :
nc host port
Par défaut, nc tentera d'établir une connexion **TCP** vers l'hôte et le port spécifiés. Pour établir une connexion **UDP**, utilisez l'option -u :
-u
nc -u host port
L'analyse de ports est l'une des utilisations les plus fréquentes de Netcat, permettant de vérifier la connectivité. Vous pouvez analyser un seul port ou une plage de ports.
Pour rechercher des ports ouverts dans une plage (par exemple, 20-80), utilisez l'option -z (mode scan) et -v (mode verbose) :
-z
-v
nc -z -v 10.10.8.8 20-80
La sortie affichera le statut de chaque port. Pour afficher uniquement les ports ouverts, vous pouvez filtrer la sortie avec grep :
grep
nc -z -v 10.10.8.8 20-80 2>&1 | grep succeeded
Exemple de sortie filtrée :
Connection to 10.10.8.8 22 port succeeded! Connection to 10.10.8.8 80 port succeeded!
Pour l'analyse des ports UDP, ajoutez l'option -u :
nc -z -v -u 10.10.8.8 20-80
Note : Pour des analyses de ports complexes, des outils spécialisés comme **Nmap** sont souvent plus performants que Netcat.
Netcat peut transférer des données d'un hôte à l'autre en créant un modèle client/serveur simple. Le processus implique la création d'un "serveur" écoutant sur un port et d'un "client" se connectant pour envoyer les données.
-l
nc -l 5555 > file_name
nc receiving.host.com 5555 < file_name
Pour transférer un répertoire entier, vous devez utiliser tar pour archiver le répertoire à la volée avant de l'envoyer via Netcat.
tar
nc -l 5555 | tar xzvf -
tar czvf - /path/to/dir | nc receiving.host.com 5555
Une fois le transfert terminé, tapez CTRL+C aux deux extrémités pour fermer la connexion.
CTRL+C
La même logique client/serveur permet de créer un simple chat en ligne entre deux hôtes ou plus.
nc -l 5555
nc first.host.com 5555
Désormais, tout message tapé et validé par ENTER sur l'un ou l'autre hôte sera affiché chez les autres participants. Tapez CTRL+C pour fermer la connexion.
ENTER
Bien que des outils comme curl soient préférables pour les requêtes web, Netcat peut être utilisé pour envoyer des requêtes HTTP brutes à des serveurs distants. Cela est particulièrement utile pour le débogage de bas niveau.
curl
L'exemple ci-dessous récupère la page de manuel de Netcat à partir du site web OpenBSD en envoyant une requête GET au port 80 :
printf "GET /nc.1 HTTP/1.1\r\nHost: man.openbsd.org\r\n\r\n" | nc man.openbsd.org 80
La réponse complète du serveur, y compris les en-têtes HTTP et le code HTML de la page, sera affichée dans le terminal.
Netcat est un utilitaire fondamental pour tester, diagnostiquer et manipuler les connexions réseau. Sa simplicité et sa polyvalence en font un outil incontournable pour l'administration système et la sécurité.
Pour explorer d'autres options et capacités puissantes de cette commande, consultez la page de manuel de Netcat (man nc).
man nc
Découvrez nos actualités, conseils et tutoriels pour rester à jour
Si vous êtes un administrateur syst&egrav...
Ici nous allons voir comment migrer une VM sous...
Server (alias PBS) vient compléter la so...
Vous pouvez rencontrer cette erreur lors d&rsqu...
Inscription en cours...
Restez informé de nos dernières actualités et recevez nos meilleurs conseils !
Chargement du formulaire de devis...