netcat est connu comme un couteau suisse pour le protocole TCP/IP. En lisant le man page de netcat : netcat is a simple unix utility which reads and writes data across network connections, using TCP or UDP protocol. It is designed to be a reliable "back-end" tool that can be used directly or easily driven by other programs and scripts. At the same time, it is a feature-rich network debugging and exploration tool, since it can create almost any kind of connection you would need and has several interesting built-in capabilities.
On utilisera 2 systèmes dans cet article
Netcat doit être installé sur les deux systèmes - Vérifier grâce à la commande :
which nc
Et pour en apprendre plus avec les possibilitès de netcat :
man nc
Nous voulons copier un fichier MonFichier depuis le server1 vers le server2. Executer ceci
server2:
nc -lp 1234 > MonFichier
(1234 est un port arbitraire mais non utilisé). server2 attendra le fichier MonFichier sur le port 1234.
Sur le server1:
nc -w 1 server2.example.com 1234 < MonFichier
pour démarrer le transfert de fichier.
Vous pouvez utiliser netcat pour cloner un disque dur ou une partition à travers le réseau. Dans cet example, nouvs voulons cloner /dev/sda du server1 vers le server2. Bien sur pur être cloné les partitions doivent être démonté du système, ainsi il faut démarrer le serveur cible (server2) depuis un CD de secours tel que Knoppix.
Utiliser ifconfig pour obtenir l'adresse IP (server2 IP addresse est 192.168.0.12 au lieu de 192.168.0.101).
Sur le server2 :
nc -l -p 1234 | dd of=/dev/sda
Ensuite sur le server1 :
dd if=/dev/sda | nc 192.168.0.12 1234
et le processus de clonage démarre. Cela peut prendre un certain temps, dépendant de la taille du disque ou de la partition.
Sur le server1, pour scanner les ports ouverts sur le server2 :
server1:
nc -v -w 1 server2.example.com -z 1-1000
(1-1000 means: scan ports from port number 1 to port number 1000.)
Scan de ports sur le système local :
nc -v -w 1 localhost -z 1-1000
Utiliser netcat comme un serveur web :
while true; do nc -l -p 80 -q 1 < somepage.html; done
fournira la page somepage.html jusqu'a ce que le terminal soit fermé.
Demande de page web avec netcat :
nc ispconfig.org 80
Modifier les headers comme ceci :
GET / HTTP/1.1
Host: ispconfig.org
Referrer: mypage.com
User-Agent: my-browser
Après avoir entré les headers, pressé ENTREE deux fois, et la page demandé devrait apparaître (avec les nouveaux headers envoyés par le serveur)
server2:~# nc exampple.com 80
GET / HTTP/1.1
Host: example.com
Referrer: mypage.com
User-Agent: my-browser
HTTP/1.1 200 OK
Date: Fri, 28 Nov 2008 14:11:49 GMT
Server: Apache/2.2.3 (Debian) mod_ssl/2.2.3 OpenSSL/0.9.8c
Last-Modified: Wed, 26 Nov 2008 19:34:17 GMT
ETag: "228c707-21b1-b6b7e040"
Accept-Ranges: bytes
Content-Length: 8625
Content-Type: text/html
[...]
Chatter avec netcat entre les deux systèmes.
server2:
nc -lp 1234
Le server2 attend que le server1 se connecte sur le port 1234.
server1:
nc server2.example.com 1234
Mainteant il est possible d'envoyer des messages entre les deux systèmes avec la toche ENTREE. Pour fermer le chat, utiliser CTRL+C sur les deux systèmes.