Android

Commande Netcat (nc) avec des exemples

Testing port connectivity with Telnet

Testing port connectivity with Telnet

Table des matières:

Anonim

Netcat (ou nc) est un utilitaire de ligne de commande qui lit et écrit des données sur les connexions réseau, à l'aide des protocoles TCP ou UDP. C'est l'un des outils les plus puissants de l'arsenal des administrateurs réseau et système et il est considéré comme un couteau suisse des outils de mise en réseau.

Netcat est multiplateforme et il est disponible pour Linux, macOS, Windows et BSD. Vous pouvez utiliser Netcat pour déboguer et surveiller les connexions réseau, rechercher des ports ouverts, transférer des données, en tant que proxy et plus encore. Le package Netcat est préinstallé sur macOS et les distributions Linux populaires comme Ubuntu.

Syntaxe Netcat

La syntaxe la plus élémentaire de l'utilitaire Netcat prend la forme suivante:

nc host port

Sur Ubuntu, vous pouvez utiliser netcat ou nc . Ils sont tous deux des liens symboliques vers la version openBSD de Netcat.

Par défaut, Netcat tentera de démarrer une connexion TCP vers l'hôte et le port spécifiés. Si vous souhaitez établir une connexion UDP, utilisez l'option -u :

nc -u host port

Analyse des ports

L'analyse des ports est l'une des utilisations les plus courantes de Netcat. Vous pouvez analyser un seul port ou une plage de ports.

Par exemple, pour rechercher des ports ouverts dans la plage 20-80, vous utiliserez la commande suivante:

nc -z -v 10.10.8.8 20-80

L'option -z indique à nc de rechercher uniquement les ports ouverts, sans leur envoyer de données et l'option -v de fournir des informations plus détaillées.

La sortie ressemblera à ceci:

nc: connect to 10.10.8.8 port 20 (tcp) failed: Connection refused nc: connect to 10.10.8.8 port 21 (tcp) failed: Connection refused Connection to 10.10.8.8 22 port succeeded! nc: connect to 10.10.8.8 port 23 (tcp) failed: Connection refused… nc: connect to 10.10.8.8 port 79 (tcp) failed: Connection refused Connection to 10.10.8.8 80 port succeeded!

nc -z -v 10.10.8.8 20-80 2>&1 | grep succeeded

Connection to 10.10.8.8 22 port succeeded! Connection to 10.10.8.8 80 port succeeded!

Vous pouvez également utiliser Netcat pour rechercher le logiciel serveur et sa version. Par exemple, si vous envoyez une commande «EXIT» au serveur sur le port SSH par défaut 22:

echo "EXIT" | nc 10.10.8.8 22

La sortie ressemblera à ceci:

SSH-2.0-OpenSSH_7.6p1 Ubuntu-4 Protocol mismatch.

Pour rechercher des ports UDP, ajoutez simplement l'option -u à la commande comme indiqué ci-dessous:

nc -z -v -u 10.10.8.8 20-80

Dans la plupart des situations, Nmap est un meilleur outil que Netcat pour l'analyse de ports complexes.

Envoi de fichiers via Netcat

Netcat peut être utilisé pour transférer des données d'un hôte à un autre en créant un modèle client / serveur de base.

Cela fonctionne en configurant Netcat pour écouter sur un port spécifique (en utilisant l'option -l ) sur l'hôte de réception, puis en établissant une connexion TCP régulière à partir de l'autre hôte et en envoyant le fichier par-dessus.

Sur la réception, exécutez la commande suivante qui ouvrira le port 5555 pour la connexion entrante et redirigera la sortie vers le fichier:

nc -l 5555 > file_name

De l'hôte d'envoi, connectez-vous à l'hôte de réception et envoyez le fichier:

nc receiving.host.com 5555 < file_name

Pour transférer un répertoire, vous pouvez utiliser tar pour archiver le répertoire sur l'hôte source et extraire l'archive sur l'hôte de destination.

Sur l'hôte de réception, définissez l'outil Netcat pour écouter une connexion entrante sur le port 5555. Les données entrantes sont acheminées vers la commande tar qui extraira l'archive:

nc -l 5555 | tar xzvf -

Sur l'hôte d'envoi, emballez le répertoire et envoyez les données en vous connectant au processus d'écoute nc sur l'hôte de réception:

tar czvf - /path/to/dir | nc receiving.host.com 5555

Vous pouvez suivre la progression du transfert aux deux extrémités. Une fois terminé, tapez CTRL+C pour fermer la connexion.

Création d'un serveur de conversation simple

La procédure de création d'une conversation en ligne entre deux hôtes ou plus est la même que lors du transfert de fichiers.

Sur le premier hôte, démarrez un processus Netcat pour écouter sur le port 5555:

nc -l 5555

À partir du deuxième hôte, exécutez la commande suivante pour vous connecter au port d'écoute:

nc first.host.com 5555

Maintenant, si vous tapez un message et appuyez sur ENTER il sera affiché sur les deux hôtes.

Pour fermer la connexion, tapez CTRL+C

Exécution d'une requête HTTP

Bien qu'il existe de bien meilleurs outils pour les requêtes HTTP telles que curl, vous pouvez également utiliser Netcat pour envoyer diverses requêtes à des serveurs distants.

Par exemple, pour récupérer la page de manuel Netcat à partir du site Web OpenBSD, vous devez taper:

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, y compris les en-têtes HTTP et le code HTML, sera imprimée dans le terminal.

Conclusion

Dans ce didacticiel, vous avez appris à utiliser l'utilitaire Netcat pour établir et tester des connexions TCP et UDP.

Pour plus d'informations, visitez la page de manuel Netcat et lisez toutes les autres options puissantes de la commande Netcat.

terminal netcat