GNU/Linux >> Tutoriels Linux >  >> Linux

Comment utiliser les commandes Netcat avec des exemples

La commande Netcat (nc) est un outil puissant pour analyser les connexions réseau, rechercher les ports ouverts, transférer des données, etc. Il s'agit d'un utilitaire réseau permettant de lire et d'écrire sur les connexions réseau à l'aide des protocoles TCP ou UDP.

Comment installer netcat

C'est un outil multiplateforme et il est disponible pour Linux, macOS, Windows et BSD. Nous allons installer netcat sur la machine Ubuntu 18.04 en utilisant apt install ou en le compilant à partir du code source.

L'installation avec apt est assez simple, il vous suffit de taper la commande suivante dans le terminal :

sudo apt install netcat

Sur CentOS 8

Le ncat peut être installé avec le package nmap sur RHEL 8/CentOS 8. Utilisez la commande dnf comme ci-dessous

sudo dnf install nmap

Comment installer netcat à partir du code source

Compiler netcat à partir du code source n'est pas aussi simple que de l'installer via apt install , mais si vous suivez les étapes ci-dessous, vous pouvez l'installer facilement.

Téléchargez le code source du site Web de netcat avec la commande suivante

wget http://sourceforge.net/projects/netcat/files/netcat/0.7.1/netcat-0.7.1.tar.gz

Extrayez l'archive nouvellement téléchargée. Pour ce faire, vous pouvez exécuter :

tar -xzvf netcat-0.7.1.tar.gz

cd dans le répertoire contenant le code source du package et tapez ./configure pour configurer le package pour votre système.

cd netcat-0.7.1
./configure

Si vous obtenez un message d'erreur comme celui-ci - "aucun compilateur C acceptable trouvé dans $PATH" lors de l'exécution de la commande ./configure , assurez-vous d'avoir installé le compilateur gcc. Pour l'installer tapez la commande suivante :

apt-get install build-essential

Exécution de configure prend un certain temps.

Une fois la configuration terminée, exécutez :

sudo make

et

sudo make install

Vous pouvez supprimer les fichiers binaires du programme et les fichiers objet du répertoire du code source en tapant make clean . Pour supprimer également les fichiers qui configure créé, exécutez make distclean commande.

Exemples Netcat

Avant de commencer à explorer certaines commandes netcat, il est important de savoir que si vous vous liez à des ports bien connus (0-1023) avec nc, vous avez besoin du privilège root. Sinon, vous pouvez exécuter nc en tant qu'utilisateur normal.

1) Tester si un port TCP particulier d'un hôte distant est ouvert

nc -vn 192.168.40.146 2424

Sortie si le port 2424 sur le serveur distant est fermé

nc: connect to 192.168.40.146 port 2424 (tcp) failed: Connection refused

Sortie si le port sur le serveur distant est ouvert (par exemple, 22 ports)

Connection to 192.168.40.146 22 port [tcp/*] succeeded!
SSH-2.0-OpenSSH_7.6p1 Ubuntu-4

2) Effectuez une analyse de port TCP sur un hôte distant

La commande ci-dessous vérifiera les ports de 20 à 25 sur l'hôte distant et imprimera le résultat.

nc -vnz -w 1 192.168.40.146 20-25

La sortie ressemblera à ceci

nc: connect to 192.168.40.146 port 20 (tcp) failed: Connection refused
nc: connect to 192.168.40.146 port 21 (tcp) failed: Connection refused
Connection to 192.168.40.146 22 port [tcp/*] succeeded!
nc: connect to 192.168.40.146 port 23 (tcp) failed: Connection refused
nc: connect to 192.168.40.146 port 24 (tcp) failed: Connection refused
nc: connect to 192.168.40.146 port 25 (tcp) failed: Connection refused

3) Effectuez une analyse de port UDP sur un hôte distant

nc -vnzu 192.168.40.146 1-65535

La sortie n'affichera que les ports qui autorisent les connexions udp.

Connection to 192.168.40.146 2424 port [udp/*] succeeded!
Connection to 192.168.40.146 12354 port [udp/*] succeeded!

4) Envoyer un paquet UDP de test à un hôte distant

echo -n "udp test" | nc -u -w1 192.168.40.146 2424

La commande ci-dessus enverra un paquet UDP de test avec un délai d'attente d'une seconde à un hôte distant sur le port 2424

5) Copier un fichier (par exemple, test.txt) d'un hôte à un autre

Sur l'hôte récepteur (192.168.40.146 dans mon cas), exécutez :

nc -lp 2424 > test.txt

Sur l'hôte expéditeur (192.168.40.144), exécutez la commande suivante :

nc 192.168.40.146 2424 < test.txt

Cela copiera le fichier test.txt de l'hôte expéditeur vers l'hôte récepteur via le port 2424. assurez-vous d'autoriser les connexions entrantes sur le port 2424 sur l'hôte récepteur.

6) Transférer un répertoire entier (y compris son contenu) d'un hôte à un autre

Sur l'hôte récepteur, exécutez :

nc -l 2424 | tar xvf -

Sur l'hôte expéditeur, exécutez la commande suivante :

tar cvf - /path/to/dir | nc 192.168.40.146 2424

7) Créer une sauvegarde compressée du disque dur (par exemple, /dev/sdc) sur un hôte distant

Sur l'hôte distant, exécutez :

nc -lp 2424 | sudo dd of=/path/to/image.img.gz

Sur l'hôte local, exécutez la commande suivante :

dd if=/dev/sdc | gzip -c | nc 192.168.40.146 2424

8) Restaurer un disque dur (par exemple /dev/sdc) à partir d'une image disque compressée stockée sur un hôte distant

Sur l'hôte local, exécutez :

nc -lp 2424 | gunzip -c | sudo dd of=/dev/sdc

Sur l'hôte distant, exécutez la commande suivante :

cat /path/to/image.img.gz | nc 192.168.40.144 2424

9) Exécutez un chat en ligne non sécurisé entre deux hôtes

Sur un hôte (par exemple, 192.168.40.144), exécutez la commande ci-dessous :

nc -lp 2424

Sur un autre hôte (par exemple 192.168.40.146) exécutez la commande suivante :

nc 192.168.40.144 2424

Après avoir exécuté ces commandes, tout ce qui est saisi dans les deux terminaux sera visible sur les deux machines hôtes.

10) Exécutez un serveur Web avec une page Web statique

Exécutez la commande ci-dessous sur l'hôte local (par exemple, 192.168.40.144) pour démarrer un serveur Web qui sert test.html sur le port 80. Notez que vous devez exécuter avec les privilèges sudo car 80 se trouve dans la plage des ports bien connus (1-1023)

while true; do sudo nc -lp 80 < test.html; done

Ouvrez maintenant http://192.168.40.144/test.html d'un autre hébergeur pour y accéder.

11) Écouter sur un port TCP en utilisant une adresse IPv6

Vous pouvez utiliser la commande suivante pour autoriser nc à utiliser l'adresse IPv6 lors de l'écoute sur un port TCP.

nc -6 -l 2424

Vérifiez si cela fonctionne avec la commande ci-dessous

sudo netstat -nap | grep 2424

La sortie ressemblera à ceci

tcp6 0 0 :::2424 :::* LISTEN 15665/nc

12) Diffusez un fichier vidéo à partir d'un serveur pour que le client puisse regarder la vidéo diffusée à l'aide d'un lecteur vidéo (par exemple, mplayer)

Sur un serveur vidéo (192.168.40.144) :

cat sample_video.avi | nc -l 2424

Sur un hôte client (192.168.40.146) :

nc 192.168.40.144 2424 | mplayer -vo x11 -cache 3000 -

Lire aussi :

  • Comment utiliser la commande Linux Netcat comme analyseur de ports
  • Comment créer une conversation simple avec netcat sous Linux

Comme vous pouvez le voir, netcat est un excellent outil pour la mise en réseau TCP/IP et c'est l'un des outils les plus appréciés des administrateurs système lorsqu'il s'agit de dépannage et d'expérimentation liés à la mise en réseau. C'est pourquoi de nombreuses distributions Linux sont livrées avec netcat préinstallé.


Linux
  1. Comment utiliser les commandes 'cat' et 'tac' avec des exemples sous Linux

  2. Comment utiliser la commande ethtool avec des exemples

  3. Comment utiliser la commande Linux Hexdump avec des exemples pratiques

  4. SSH vers un port autre que 22 :comment le faire (avec exemples)

  5. Commande SCP sous Linux :comment l'utiliser, avec des exemples

Comment utiliser la commande Linux gunzip avec des exemples

Comment utiliser la commande Linux rm avec des exemples

Comment utiliser les commandes Netcat avec des exemples

Commandes Nmap avec exemples

Comment utiliser Netcat pour analyser les ports ouverts sous Linux

Comment utiliser la commande shutdown avec des exemples