Welcome to Our Website

Linux nc command (Italiano)

Aggiornato il: 03/06/2020 da Computer Hope

Sui sistemi operativi Unix-like, il comando nc esegue Netcat, un’utility per l’invio di dati grezzi su una connessione di rete.

Questo documento copre la versione Linux di nc.

Descrizione

Netcat è un programma di utilità che legge e scrive i dati attraverso le connessioni di rete, utilizzando il protocollo TCP o UDP. È progettato per essere uno strumento affidabile “back-end” che può essere utilizzato direttamente o guidato da altri programmi e script., Allo stesso tempo, è uno strumento di debug ed esplorazione di rete ricco di funzionalità poiché può creare quasi ogni tipo di connessione di cui avresti bisogno e ha diverse interessanti funzionalità integrate. Gli usi più comuni sono:

  • Semplice TCP proxy
  • Shell-script basato HTTP client e server
  • Rete demone test
  • Un Calzini o HTTP ProxyCommand per ssh

la Sintassi

Opzioni

-4 Forze nc utilizzare solo indirizzi IPv4.
-6 Costringe nc a usare solo gli indirizzi IPv6.,
-b Consenti la trasmissione.
-C Invia CRLF come fine riga.
-D Abilita il debug sul socket.
-d Non tentare di leggere da stdin.
-h Stampa l’aiuto nc.
-I length Specifica la dimensione del buffer di ricezione TCP.
-i interval Specifica un intervallo di tempo di ritardo tra le righe di testo inviate e ricevute. Inoltre, provoca un ritardo tra le connessioni a più porte.,
-k costringe nc a rimanere in ascolto per un’altra connessione dopo che la connessione corrente è stata completata. È un errore usare questa opzione senza l’opzione-l.
-l Usato per specificare che nc dovrebbe ascoltare una connessione in entrata piuttosto che avviare una connessione a un host remoto. È un errore usare questa opzione insieme alle opzioni-p,- s o-z. Inoltre, tutti i timeout specificati con l’opzione-w vengono ignorati.
-n Non eseguire ricerche DNS o di servizio su indirizzi, nomi host o porte specificati.,
-O length Specifica la dimensione del buffer di invio TCP.
-P proxy_username Specifica un nome utente da presentare a un server proxy che richiede l’autenticazione. Se non viene specificato alcun nome utente, l’autenticazione non verrà tentata. Al momento, l’autenticazione proxy è supportata solo per i proxy di CONNESSIONE HTTP.
-p source_port Specifica la porta sorgente che nc deve utilizzare, soggetta a restrizioni di privilegi e disponibilità.,
-q secondi dopo EOF su stdin, attendere il numero specificato di secondi e poi uscire. Se secondi è negativo, attendere per sempre.
-r Specifica che le porte di origine o di destinazione devono essere scelte in modo casuale anziché sequenziale all’interno di un intervallo o nell’ordine che il sistema le assegna.
-S Abilita l’opzione di firma TCP MD5 RFC 2385.
-s source Specifica l’IP dell’interfaccia utilizzata per inviare i pacchetti., Per i socket datagram dominio UNIX, specifica il file socket temporaneo locale da creare e utilizzare in modo che i datagrammi possano essere ricevuti. È un errore usare questa opzione insieme all’opzione-l.
– T toskeyword Cambia il valore TOS IPv4. toskeyword può essere uno dei critical, inetcontrol, lowcost, lowdelay, netcontrol, throughput, reliability o uno dei punti di codice DiffServ: ef, af11 … af43, cs0 … cs7; o un numero in esadecimale o decimale.
-t Fa sì che nc invii RFC 854 NON risponde e NON risponde alle richieste RFC 854 DO e WILL., In questo modo è possibile utilizzare nc per script sessioni telnet.
-U Specifica di usare socket UNIX-domain.
-u Usa UDP invece dell’opzione predefinita di TCP. Per i socket del dominio UNIX, utilizzare un socket datagram anziché un socket stream. Se viene utilizzato un socket di dominio UNIX, viene creato un socket di ricezione temporaneo in / tmp a meno che non venga specificato il flag-S.
-V rtable Impostare la tabella di routing da utilizzare. Il valore predefinito è 0.
-v Avere nc dare un output più dettagliato.,
-w timeout Connessioni che non possono essere stabilite o sono timeout inattivo dopo i secondi di timeout. Il flag-w non ha alcun effetto sull’opzione-l, cioè nc ascolterà per sempre una connessione, con o senza il flag-w. Il valore predefinito non è timeout.
-X proxy_protocol Richiede che nc utilizzi il protocollo specificato quando parla con il server proxy. I protocolli supportati sono ” 4 ” (SOCKS v. 4), “5” (SOCKS v. 5) e “connect” (proxy HTTPS). Se il protocollo non è specificato, viene utilizzata SOCKS versione 5.,
-x proxy_address Richiede che nc si connetta alla destinazione usando un proxy su proxy_address e port. Se la porta non è specificata, viene utilizzata la porta ben nota per il protocollo proxy (1080 per SOCKS, 3128 per HTTPS).
-Z Modalità DCCP.
-z Specifica che nc dovrebbe eseguire la scansione solo per i demoni in ascolto, senza inviare loro alcun dato. È un errore usare questa opzione insieme all’opzione-l.,

la destinazione può essere un indirizzo IP numerico o un nome host simbolico (a meno che non venga fornita l’opzione-n). In generale, è necessario specificare una destinazione, a meno che non venga fornita l’opzione-l (nel qual caso viene utilizzato l’host locale). Per i socket del dominio UNIX, è richiesta una destinazione ed è il percorso del socket a cui connettersi (o ascoltare se viene fornita l’opzione-l).

la porta può essere un singolo numero intero o un intervallo di porte. Gli intervalli sono nella forma nn-mm. In generale, è necessario specificare una porta di destinazione, a meno che non venga fornita l’opzione-U.,

Modello client/Server

È abbastanza semplice costruire un modello client / server molto semplice usando nc. Su una console, avviare l’ascolto nc su una porta specifica per una connessione. Ad esempio:

nc -l 1234

nc è ora in ascolto sulla porta 1234 per una connessione. Su una seconda console (o una seconda macchina), connettersi alla macchina e alla porta in ascolto:

nc 127.0.0.1 1234

Ora dovrebbe esserci una connessione tra le porte. Tutto ciò che viene digitato sulla seconda console verrà concatenato alla prima e viceversa., Dopo che la connessione è stata impostata, nc non si preoccupa realmente di quale lato viene utilizzato come “server” e quale lato viene utilizzato come “client”. La connessione può essere terminata utilizzando un EOF (’^D’).

Non esiste un’opzione-c o-e nel moderno netcat, ma è comunque possibile eseguire un comando dopo che la connessione è stata stabilita reindirizzando i descrittori di file. Sii cauto qui perché aprire una porta e lasciare che chiunque sia connesso esegua comandi arbitrari sul tuo sito è PERICOLOSO., Se si ha realmente bisogno di fare questo, ecco un esempio:

Su ” server-side:

rm -f /tmp/f; mkfifo /tmp/f
cat /tmp/f | /bin/sh -i 2>&1 | nc -l 127.0.0.1 1234 > /tmp/f

Su ” client-side:

nc host.example.com 1234

(dal prompt della shell host.example.com)

in questo modo, si crea una fifo in /tmp/f e rendere nc ascoltare a porta 1234 di indirizzo 127.0.0.1 su ‘server’, quando un “cliente”, stabilisce una connessione con successo verso la porta, /bin/sh viene eseguito su ‘server’, e il prompt della shell è dato a ‘client’ lato.

Quando la connessione è terminata, anche nc si chiude., Usa-k se vuoi continuare ad ascoltare, ma se il comando si chiude questa opzione non la riavvierà o manterrà nc in esecuzione. Inoltre, non dimenticare di rimuovere il descrittore di file una volta che non ne hai più bisogno:

rm -f /tmp/f

Trasferimento dati

L’esempio nella sezione precedente può essere espanso per creare un modello di trasferimento dati di base. Qualsiasi informazione immessa in un’estremità della connessione verrà emessa all’altra estremità e l’input e l’output possono essere facilmente catturati per emulare il trasferimento di file.,

Inizia usando nc per ascoltare su una porta specifica, con l’output catturato in un file:

nc -l 1234 > filename.out

Utilizzando una seconda macchina, connettiti al processo nc in ascolto, alimentandolo con il file da trasferire:

nc host.example.com 1234 < filename.in

Dopo il trasferimento del file, la connessione si chiuderà automaticamente.

Parlare con i server

A volte è utile parlare con i server “a mano” piuttosto che attraverso un’interfaccia utente., Può aiutare nella risoluzione dei problemi, quando potrebbe essere necessario verificare quali dati un server sta inviando in risposta ai comandi emessi dal client. Ad esempio, per recuperare la home page di un sito web:

printf "GET / HTTP/1.0\r\n\r\n" | nc host.example.com 80

Si noti che questo visualizza anche le intestazioni inviate dal server web. Possono essere filtrati, utilizzando uno strumento come sed, se necessario.

È possibile creare esempi più complicati quando l’utente conosce il formato delle richieste richieste dal server., Come altro esempio, un’e-mail può essere inviata a un server SMTP utilizzando:

Port scanning

Può essere utile sapere quali porte sono aperte e servizi in esecuzione su una macchina di destinazione. Il flag-z può essere usato per dire a nc di segnalare le porte aperte, piuttosto che avviare una connessione. Di solito, è utile attivare l’output dettagliato su stderr usando questa opzione insieme all’opzione-v.

Ad esempio:

nc -zv host.example.com 20-30
Connection to host.example.com 22 port succeeded!Connection to host.example.com 25 port succeeded!

L’intervallo di porte è stato specificato per limitare la ricerca alle porte 20 – 30 e viene scansionato aumentando l’ordine.,

È anche possibile specificare un elenco di porte da scansionare, ad esempio:

nc -zv host.example.com 80 20 22

Le porte vengono scansionate in base all’ordine specificato.

In alternativa, potrebbe essere utile sapere quale software server è in esecuzione e quali versioni. Questa informazione è spesso contenuta nei banner di saluto. Per recuperarli, è necessario prima effettuare una connessione e quindi interrompere la connessione quando il banner è stato recuperato., Questo è possibile specificare un timeout piccolo con l’-w bandiera, o forse con l’emissione di un “QUIT” comando per il server:

echo "QUIT" | nc host.example.com 20-30
SSH-1.99-OpenSSH_3.6.1p2 Protocol mismatch. 220 host.example.com IMS SMTP Receiver Version 0.84 Ready

Esempi

nc -p 31337 -w 5 host.example.com 42

si Apre una connessione TCP alla porta 42 del host.example.com utilizzando la porta 31337 come la porta di origine, con un timeout di 5 secondi.

nc -u host.example.com 53

Apre una connessione UDP alla porta 53 di host.example.com.

nc -s 10.1.2.3 host.example.com 42

Apre una connessione TCP alla porta 42 di host.example.com utilizzando 10.1.2.3 come IP per la fine locale della connessione.,

nc -lU /var/tmp/dsocket

Crea e ascolta su un socket di flusso di dominio UNIX.

nc -x10.2.3.4:8080 -Xconnect host.example.com 42

Si collega alla porta 42 di host.example.com tramite un proxy HTTP a 10.2.3.4, porta 8080. Questo esempio potrebbe essere utilizzato anche da ssh.

nc -x10.2.3.4:8080 -Xconnect -Pruser host.example.com 42

Lo stesso dell’esempio precedente, ma questa volta abilitando l’autenticazione proxy con il nome utente “ruser” se il proxy lo richiede.

ifconfig-Visualizzare o modificare la configurazione delle interfacce di rete.

Lascia un commento

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