LINUX

Come utilizzare i comandi Netcat con esempi

Installa il comando netcat linux

Il comando Netcat (nc) è un potente strumento per analizzare le connessioni di rete, scansionare le porte aperte, trasferire dati, ecc. È un’utilità di rete per la lettura e la scrittura di connessioni di rete utilizzando i protocolli TCP o UDP.

Come installa netcat

È uno strumento multipiattaforma ed è disponibile per Linux, macOS, Windows e BSD. Installeremo netcat sulla macchina Ubuntu 18.04 usando apt install o compilandolo dal codice sorgente.

L’installazione tramite apt è piuttosto semplice, basta digitare il seguente comando nel terminale:

sudo apt install netcat

Su CentOS 8

Ncat può essere installato con il pacchetto nmap su RHEL 8/CentOS 8. Utilizzare il comando dnf come di seguito

sudo dnf install nmap

Come installare netcat dal codice sorgente

La compilazione di netcat dai sorgenti non è facile come l’installazione tramite apt installma se segui i passaggi seguenti puoi installarlo facilmente.

Scarica il codice sorgente da sito netcat con il seguente comando

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

Estrarre l’archivio appena scaricato. Per fare ciò, puoi eseguire:

tar -xzvf netcat-0.7.1.tar.gz

cd nella directory contenente il codice sorgente e il tipo di pacchetto ./configure per configurare il pacchetto per il tuo sistema.

cd netcat-0.7.1
./configure

Se ricevi un messaggio di errore come questo – “nessun compilatore C accettabile trovato in $PATH” quando esegui il comando ./configure, assicurati di aver installato il compilatore gcc. Per installarlo digitare il seguente comando:

apt-get install build-essential

In esecuzione configure ci vuole un po’ di tempo.

Una volta che l’installazione è stata completata correttamente, eseguire:

sudo make

e

sudo make install

È possibile rimuovere i programmi binari ei file oggetto dalla directory del codice sorgente digitando make clean. Per rimuovere anche i file che configure creato, eseguito make distclean comando.

Esempi di netcat

Prima di iniziare a esplorare alcuni comandi netcat, è importante sapere che se ti colleghi a porte conosciute (0-1023) con nc, hai bisogno dei privilegi di root. Altrimenti, puoi eseguire nc come utente normale.

1) Verifica se una porta TCP specifica di un host remoto è aperta

nc -vn 192.168.40.146 2424

Esci se la porta 2424 sul server remoto è chiusa

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

Output se la porta sul server remoto è aperta (es. porta 22)

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

2) Eseguire la scansione della porta TCP su un host remoto

Il comando seguente controllerà le porte da 20 a 25 sull’host remoto e stamperà il risultato.

nc -vnz -w 1 192.168.40.146 20-25

L’output sarà simile a questo

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) Eseguire la scansione della porta UDP su un host remoto

nc -vnzu 192.168.40.146 1-65535

L’output mostrerà solo le porte che consentono le connessioni udp.

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

4) Invia un pacchetto UDP di prova a un host remoto

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

Il comando precedente invierà un pacchetto UDP di prova con un timeout di 1 secondo a un host remoto sulla porta 2424

5) Copiare un file (es. test.txt) da un host all’altro

Sull’host del ricevitore (192.168.40.146 nel mio caso) esegui:

nc -lp 2424 > test.txt

Sull’host del mittente (192.168.40.144) eseguire il seguente comando:

nc 192.168.40.146 2424 < test.txt

Questo copierà il file test.txt dall’host del mittente all’host del destinatario tramite la porta 2424. assicurati di consentire le connessioni in entrata sulla porta 2424 sull’host del destinatario.

6) Trasferire un’intera directory (compreso il suo contenuto) da un host all’altro

Nell’host del ricevitore eseguire:

nc -l 2424 | tar xvf -

Nell’host del mittente, eseguire il seguente comando:

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

7) Creare un backup del disco rigido compresso (ad esempio /dev/sdc) su un host remoto

Sull’host remoto eseguire:

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

Su localhost, esegui il seguente comando:

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

8) Ripristinare un disco rigido (ad esempio /dev/sdc) da un’immagine disco compressa memorizzata su un host remoto

Su localhost esegue:

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

Sull’host remoto, eseguire il seguente comando:

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

9) Esegui chat online non sicure tra due host

Su un host (ad es. 192.168.40.144) eseguire il comando seguente:

nc -lp 2424

Su un altro host (ad es. 192.168.40.146) esegui il seguente comando:

nc 192.168.40.144 2424

Dopo aver eseguito questi comandi, qualsiasi cosa digitata in entrambi i terminali verrà visualizzata su entrambi i computer host.

10) Eseguire un server web con una pagina web statica

Eseguire il comando seguente su localhost (ad es. 192.168.40.144) per avviare un server Web che serve test.html sulla porta 80. Si noti che è necessario eseguire con privilegi sudo poiché 80 è nell’intervallo di porte noto (1-1023)

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

Ora aperto http://192.168.40.144/test.html da un altro host per accedervi.

11) Ascolta su una porta TCP utilizzando l’indirizzo IPv6

È possibile utilizzare il seguente comando per consentire a nc di utilizzare l’indirizzo IPv6 durante l’ascolto su una porta TCP.

nc -6 -l 2424

Controlla se funziona con il comando qui sotto

sudo netstat -nap | grep 2424

L’output sarà simile a questo

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

12) Eseguire lo streaming di un file video da un server affinché il client guardi il video in streaming utilizzando il lettore video (ad esempio mplayer)

Su un server video (192.168.40.144):

cat sample_video.avi | nc -l 2424

Su un host client (192.168.40.146):

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

Leggi anche:

Come puoi vedere, netcat è un ottimo strumento per le reti TCP/IP ed è uno degli strumenti preferiti dagli amministratori di sistema quando si tratta di risoluzione dei problemi di rete e sperimentazione. Ecco perché molte distribuzioni Linux vengono fornite con netcat preinstallato.

Related Articles

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Back to top button
Close