Vai al contenuto

Netcat

sabato 18 ottobre , 2008

Cos’è Netcat?

E’ una utility per la gestione di connessioni, che permettere di leggere o scrivere dati via TCP/IP, e data la sua versatilità e flessibilità si adatta agli usi più disparati.

Netcat supporta protocolli TCP e UDP nonchè la possibilità di tunnelling attraverso porte specifiche, può effettuare scan di porte (Attenzione a quello che fate).. insomma un sacco di possibilità.

La sintassi per l’utilizzo è davvero elementare: in sostanza si tratta di lanciare questo tool in una macchina ponendolo in ascolto (server) e connettersi ad esso da remoto (client).

In particolare ho provato il trasferimento di un file via rete.

La situazione è la seguente: vogliamo inviare il file ambaccabanane.txt da un portatile che chiameremo mac1 ad un altro (mac2), che supponiamo essere connesso dietro router. Naturalmente anche mac1 deve disporre di una qualche connessione.

Innanzitutto, poichè il ricevente Mac2 si trova dietro router è  necessario “nattare” una porta ovvero dire al router di inoltrare le richieste in arrivo su una determinata porta ad un ip specifico della rete locale. Per fare ciò mac2 deve connettersi mediante ip statico e deve impostare sul suo router una regola, di norma nella scheda di configurazione LAN o virtual server. Sempre dalla pagina di impostazione del router potremo leggere l’ip del router che mac1 può “vedere”.

A questo punto siamo pronti:

Su mac2 diamo un

nc -l -q 3 -p [porta_che_abbiamo_configurato_prima] > file_destinazione.txt

-l indica la modalità di ricezione (listening)

-q 3 dice di terminare l’esecuzione dopo 3 secondi dall’EOF (end of file) di stdin

-p [porta] indica di restare in ascolto sulla specifica porta

il resto è una normale ridirezione dell’output.

Ed ecco che potremo osservare… assolutamente nulla. A questo punto il terminale non da segni di vita, semplicemente perchè è in attesa come gli abbiamo chiesto. Dal mac1 diamo:

nc -w 3 -n [IP_del_router_mac2] [porta] < ambaccabanane.txt

-w 3 indica un Wait time di 3 secondi; così che alla fine del trasferimento la connessione termini (altrimenti continua a restare in attesa)

-n indica che l’ip è numerico

A questo punto anche qui non sembra accadere nulla, ma monitorando il traffico di rete potrete seguire il trasferimento, nel mio caso avvenuto a circa 40 k/sec (limitato dalla mia capacità di upload probabilmente).

In teoria comunque aggiungendo l’opzione -v o meglio -vv (verbose) netcat dovrebbe dare maggiori informazioni sulle azioni in corso..dico in teoria perchè non l’ho testato. Di sicuro il programma supporta il buffering in send-mode quindi problemi non dovrebbero nascere a riguardo.

Questo tool può essere installato anche da utenti Mac e Windows. Naturalmente in Ubuntu è presente di default.

N.b. per utenti Macintosh, la sintassi è leggermente differente.

Mac2 deve dare:
sudo nc -l -v 80 > file_destinazione.txt
 
Poichè il timeout alla fine dello stream di stdin è già di default per il terminale OSX, in combinazione con l’opzione -l verranno ignorate le opzioni -w, mentre si dovrà specificare se si vuole attendere una nuova connessione tramite l’opzione -k.
Come si può notare per specificare la porta non occorre utilizzare la sintassi -p prima del numero stesso.

 

Attezione: come tutti gli attrezzi potenti può essere estremamente utile quanto pericoloso, quindi suggerisco sempre cautela nell’uso.

2 commenti leave one →
  1. domenica 19 ottobre , 2008 10:47 am

    🙂 ma che caruccio!

    Ho anche io i tuoi stessi problemi a volte é_è

    Non oso immaginare il massacro di onde che si prendono 😀

Trackbacks

  1. Wpanswer « Opera Omnia

Lascia un commento