🛠️ 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**.

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.


📋 Table des Matières

  1. Syntaxe Netcat
  2. Analyse des Ports
  3. Envoi de Fichiers via Netcat
  4. Création d'un Serveur de Conversation Simple
  5. Exécution d'une Requête HTTP
  6. Conclusion

1. Syntaxe Netcat

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 :

nc -u host port

2. Analyse des Ports

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.

Analyser une plage de ports TCP

Pour rechercher des ports ouverts dans une plage (par exemple, 20-80), utilisez l'option -z (mode scan) et -v (mode verbose) :

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 :

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!

Analyse des ports UDP

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.


3. Envoi de Fichiers via 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.

Transfert d'un seul fichier

  1. Sur l'hôte de réception : Ouvrez le port 5555 (ou tout autre port) avec -l (mode écoute) et redirigez la sortie vers le fichier :
nc -l 5555 > file_name
  1. Sur l'hôte d'envoi : Connectez-vous à l'hôte de réception et redirigez le fichier en entrée :
nc receiving.host.com 5555 < file_name

Transfert d'un répertoire (avec tar)

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.

  1. Sur l'hôte de réception : Écoutez le port 5555 et acheminez les données entrantes vers tar pour extraire l'archive :
nc -l 5555 | tar xzvf -
  1. Sur l'hôte d'envoi : Compressez le répertoire avec tar et acheminez les données vers le processus d'écoute Netcat :
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.


4. Création d'un Serveur de Conversation Simple

La même logique client/serveur permet de créer un simple chat en ligne entre deux hôtes ou plus.

  1. Sur le premier hôte (Serveur) : Démarrez Netcat en mode écoute sur le port 5555 :
nc -l 5555
  1. À partir du deuxième hôte (Client) : Connectez-vous au port d'écoute :
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.


5. Exécution d'une Requête HTTP

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.

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.


Conclusion

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).

Auteur: Mvondo bekey anael

ceo | founder
COMPETENCES
  • • Maitrise des environnements Unix, Linux, Mac, Windows, IOS et Android
  • • Programmation Orientée Objet : Python, Ruby, C++, Java, PHP, Js
  • • Certifier linux Lpi (101, 102, 202, 203, 301, 303)
  • • Certifier Adwords Professional , Certifier Ceh (6, 7, 8, 9, 10, 11)
  • • Maîtrise parfaite de : Docker, VMware sphère, Microsoft Hyper, Citrix, Virtual box,promox vm