GNU/Linux >> Linux Esercitazione >  >> Linux

Come utilizzare i comandi Netcat con gli esempi

Il comando Netcat (nc) è un potente strumento per analizzare le connessioni di rete, cercare porte aperte, trasferire dati, ecc. È un'utilità di rete per leggere e scrivere su connessioni di rete utilizzando i protocolli TCP o UDP.

Come installare netcat

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

L'installazione tramite apt è piuttosto semplice, devi solo digitare il seguente comando nel terminale:

sudo apt install netcat

Su CentOS 8

Il ncat può essere installato con il pacchetto nmap su RHEL 8/CentOS 8. Usa il comando dnf come di seguito

sudo dnf install nmap

Come installare netcat dal codice sorgente

La compilazione di netcat dal codice sorgente non è facile come l'installazione tramite apt install , ma se segui i passaggi seguenti puoi installarlo facilmente.

Scarica il codice sorgente dal sito web 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 farlo puoi eseguire:

tar -xzvf netcat-0.7.1.tar.gz

cd nella directory contenente il codice sorgente del pacchetto e digita ./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" durante l'esecuzione del comando ./configure, assicurati di aver installato il compilatore gcc. Per installarlo digita il seguente comando:

apt-get install build-essential

Esecuzione di configure ci vuole un po'.

Una volta che la configurazione è stata completata con successo, esegui:

sudo make

e

sudo make install

Puoi rimuovere i file binari del programma e i file oggetto dalla directory del codice sorgente digitando make clean . Per rimuovere anche i file che configure creato, esegui make distclean comando.

Esempi Netcat

Prima di iniziare a esplorare alcuni comandi netcat è importante sapere che se si esegue il binding a porte note (0-1023) con nc, è necessario il privilegio di root. Altrimenti, puoi eseguire nc come un utente normale.

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

nc -vn 192.168.40.146 2424

Output 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. 22 porte)

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

2) Esegui 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) Esegui la scansione delle porte UDP su un host remoto

nc -vnzu 192.168.40.146 1-65535

L'output mostrerà solo le porte che consentono 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) Copia un file (ad es. test.txt) da un host all'altro

Sull'host ricevente (192.168.40.146 nel mio caso) esegui:

nc -lp 2424 > test.txt

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

nc 192.168.40.146 2424 < test.txt

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

6) Trasferisci un'intera directory (incluso il suo contenuto) da un host all'altro

Sull'host del ricevitore esegui:

nc -l 2424 | tar xvf -

Sull'host del mittente eseguire il comando seguente:

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

7) Crea un backup compresso del disco rigido (ad es. /dev/sdc) su un host remoto

Sull'host remoto eseguito:

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

Sull'host locale eseguire il comando seguente:

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

8) Ripristina un disco rigido (ad es. /dev/sdc) da un'immagine disco compressa archiviata in un host remoto

Sull'host locale eseguito:

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

Sull'host remoto eseguire il comando seguente:

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) esegui 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 entrambe le macchine host.

10) Esegui un server web con una pagina web statica

Esegui il comando seguente sull'host locale (ad es. 192.168.40.144) per avviare un server Web che serva test.html sulla porta 80. Nota che devi eseguire con privilegi sudo poiché 80 è nell'intervallo di porte ben note (1-1023)

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

Ora apri 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 comando seguente per consentire a nc di utilizzare l'indirizzo IPv6 durante l'ascolto su una porta TCP.

nc -6 -l 2424

Verifica se funziona con il comando seguente

sudo netstat -nap | grep 2424

L'output sarà simile a questo

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

12) Trasmetti in streaming un file video da un server affinché il client possa guardare il video in streaming utilizzando il lettore video (ad es. 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 usare Linux Netcat Command come Port Scanner
  • Come creare una chat semplice con netcat in Linux

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 risolvere problemi di rete e sperimentazioni. Ecco perché molte distribuzioni Linux vengono fornite con netcat preinstallato.


Linux
  1. Come utilizzare i comandi "cat" e "tac" con esempi in Linux

  2. Come utilizzare il comando ethtool con esempi

  3. Come utilizzare il comando Hexdump di Linux con esempi pratici

  4. SSH per il porting diverso da 22:come farlo (con esempi)

  5. Come utilizzare il comando Rmmod su Linux con esempi

Come utilizzare il comando gunzip di Linux con esempi

Come utilizzare il comando Linux rm con esempi

Come utilizzare i comandi Netcat con gli esempi

Comandi Nmap con esempi

Come utilizzare Netcat per scansionare le porte aperte in Linux

Come usare il comando di spegnimento con esempi