Benvenuto su Sebastien Costa
 Create an AccountHome | Content | Downloads | Gallery | Guestbook  

Modules
 Home
 Archivio Articoli
 Argomenti
 Contatti
 Contenuti
 Downloads
 Galleria Foto
 Guestbook
 Meteo
 Profilo Utente
 Sudoku

Who's Online
In questo momento ci sono, 5 Visitatori(e) e 0 Utenti(e) nel sito.

Non ci conosciamo ancora? Registrati gratuitamente Qui

Banners


Qui i miei siti amici:
ManuChaoIt
Weblord.it PHPNuke Italiano
Mr.Webmaster

 
NETCAT il coltellino svizzero della rete

Nel presentare un articolo precedente ho sviluppato un semplice server TCP/IP che permetteva di raccogliere messaggi di log provenienti da un'applicazione.

Questa fatica (minima per la verità, mi è stato sufficiente copiare e incollare pezzi di codice dal manuale di PHP) poteva essere risparmiata utilizzando quello che viene considerato il coltellino svizzero della rete: netcat.


Qui di seguito viene presentato il funzionamento di base di netcat: vi prego di segnalarmi eventuali inesattezze o errori, considerate che non sono proprio un esperto...

Netcat è uno strumento molto potente che permette di eseguire delle operazioni di I/O con protocolli TCP e UDP. Riferendomi alla versione per Windows, per ottenere lo stesso risultato del mio server con PHP mi sarebbe bastato scrivere

nc -L -p 2000

In questo caso utilizzo Netcat come server, il -l indica “listen” e -p indica la porta da aprire; nel caso specifico ho utilizzato l'opzione -L (specifica della versione per Windows) in quanto Netcat esce al chiusura della connessione. Provate ad esempio

nc -l -p 2000

vedrete che l'esecuzione termina alla prima stringa ricevuta, questo perchè per ogni riga di log eseguiamo ogni volta la connessione al server.
Su Linux questo può essere risolto con un semplice script:

#!/bin/bash
while true;
do nc -l 2000
done

Nel provarlo su Linux ho notato che, con la versione che utilizzavo, il -p non è necessario: nel proseguo specificherò sempre il -p che sarà eventualmente da togliere se non accettato dalla vostra versione.

Connessione client-server
Abbiamo visto come predisporre un semplice server, ma netcat può essere utilizzato anche come client, così come telnet. Lanciate il server

nc -l -p 2000

Quindi eseguite (da un'altra shell o prompt dei comandi):

nc localhost 2000

Otterrete una connessione fra client e server: tutto quello che scriverete sull'uno verrà spedito all'altro.
Se fosse tutto qui ci sarebbe poco di utile, vediamo allora qualche utile funzionalità (sia mai che queste possano trarvi d'impaccio in qualche situazione delicata).

Trasferimento files

Netcat mette in comunicazione lo stdin e stdout di due macchine in rete: il nome stesso fa capire che il funzionamento di base riprende quello del tool cat di Unix (anche se poteva starci bene come “gatto delle reti”).

Lanciate il server

nc -l -p 2000 > ricevuto.txt

(notare che qui ho utilizzato -l, e non -L, in modo che alla fine del trasferimento il programma termini) quindi predisponete un file spedito.txt da inviare ed eseguite:

nc -w1 localhost 2000 < spedito.txt

In ricevuto.txt vi ritroverete il contenuto del file spedito.txt, facile vero? In realtà ho dovuto aggiungere il parametro -w1 che indica che dopo 1 secondo di inattività il socket venga chiuso: omettendo tale parametro, per terminare la connessione non vi è altro modo che dare Control-C.

Consolle remota

Avete necessità di accedere al prompt dei comandi di una macchina remota? Lanciate netcat utilizzando l'opzione -e che permette di specificare un programma da lanciare al ricevimento della connessione:

nc -l -p 2000 -e cmd.exe

(su Linux basta sostituire /bin/bash a cmd.exe)

dalla vostra postazione lanciate

nc nomemacchina 2000

e avrete accesso alla macchina remota; per uscirne è sufficiente digitare exit.
Ho provato questa stessa cosa sotto Linux: per il funzionamento dell'opzione -e è necessario ricompilare attivando l'opzione GAPING_SECURITY_HOLE. Molto probabilmente se utilizzate un netcat precompilato, già presente nelle principali distribuzioni Linux, questa opzione di compilazione non è attiva quindi dovrete procurarvi i sorgenti e ricompilare.

Conclusioni
Quelle elencate qui sopra sono solo alcune delle funzionalità di questo utilissimo programma: quello che vi suggerisco è di scaricare questo tool e lanciare nc -h ed iniziare ad esplorare le opzioni.









Copyright © by Sebastien Costa All Right Reserved.

Pubblicato su: 2008-03-02 (376 letture)

[ Indietro ]








All logos and trademarks in this site are property of their respective owner. The comments are property of their posters, all the rest © 2005 by me.
You can syndicate our news using the file backend.php or ultramode.txt
PHP-Nuke Copyright © 2005 by Francisco Burzi. This is free software, and you may redistribute it under the GPL. PHP-Nuke comes with absolutely no warranty, for details, see the license.
Generazione pagina: 0.08 Secondi