miércoles, 18 de octubre de 2006

Primeros pasos con Netcat (como cp por TCP/IP)


Bueno, seguimos con el copy&paste - mira que hay que ser cutre para autoplagiar algo tan malo xDD

Este mini-articulo es en homenaje a un tio que conocí en la Campus-party que pilotaba de linux un rato largo y me enseñó lo que puede dar de sí Netcat... (hola Yshi/Plue ;-))


Como en la descripción de su ayuda indica el netcat es la “navaja suiza de TCP/IP”, lo que hace “solamente” es escribir o leer a traves de la red. Precisamente en su simplicidad está su potencia (ya sabeis, la filosofía Unix de pequeñas herramientas para combinarlas bla, bla, bla ;-))

Una de su mayores ventajas es que se comporta exáctamente igual independientemente del puerto en el que trabaje, de ahí que muchos lammers malos malísimos utilicen esta herramienta para simular un servidor ftp o un telnet y conseguir contraseñas (¿De verdad hay gente tan g$l$p$ll$s? XDDDD).


Yo principalmente uso netcat (o nc) para intercambiar ficheros cuando no quiero perder el tiempo instalando samba, nfs, scp o lo que sea. Esto va directo a vena ;-). Este articulo intentará explicar como utilizar netcat como un cp a traves de la red.


Aquí es donde llega el como instalarlo y tal, vamos a intentarlo:

Para Debian: apt-get install netcat
Para gentoo: emerge -va netcat
Para mandrake/Red Hat: urpmi netcat

Habeis cojido la idea, ¿no?. Bueno, para los machotes de slack, BSD o LFS, no sé que cojones hacéis leyendo esto ~_^

Al tomate:

Primero elegimos un puerto por el que se comunicarán (p.e. el 6600)

IP de la máquina origen: 172.26.0.10

IP de la máquina destino: 172.26.0.20

Para pasar un archivo:

Ponemos la máquina destino en escucha:

netcat -l -p 6600 172.260.10 < archivo

Y en la máquina origen escribimos:

netcat 172.26.0.20 -p 6600 > archivo

Paso a explicarlo:

-l Indica que lanzamos netcat en modo escucha (listen)

-p 6600 Puerto en el que espera la conexión

172.26.0.x Cuando en la máquina que escucha especificamos una IP, restringimos quien le manda la información, de forma que si recibiese información de otra IP, simplemente terminaría. En la máquina que escucha podemos omitir la IP sin problemas, todo depende de como de hostil sea tu red :-p

Pero es un coñazo hacer un nc con cada archivo que queramos pasar, ¿no?, ¿recordáis aquello de la filosofía Unix y combinar las pequeñas herramientas?, pues ahora vamos a tirar de tar que para eso está.

Como copiar un directorio por red:

Ponemos la máquina destino en escucha:

netcat -l -p 6600 172.26.0.10 |tar xvjf -

|tar xvjf - No voy a enumerar cada opción del tar porque no es el objetivo de este articulo, ya sabéis RTFM ^_^. Simplemente saber que el tar desempaquetará y descomprimirá todo lo que reciba. (si andais jodidos de espacio y sobrados de ancho de banda, podéis omitir la “j”)

Y en la máquina origen que envía los archivos:

tar cvjf – directorio_que_queremos_enviar/ | nc 172.26.0.20 6600

Como supondréis, lo que hace es compactar y comprimir un directorio para mandarlo por netcat en un solo archivo.

Como rollo anecdótico podemos usar el nc como servidor web con algo tan tonto como:

nc -l -p 80 index.html

Por supuesto, tiene otros muchos usos: Como chat, para conseguir información de servidores, etc.

Links de interes:

Tutorial de LINUCA bastante más completo que este :-)


Tutorial de lammers que encontré buscando info de netcat para no meter demasiado la pata (¡por favor, no me jakeeis la aspiradora!)XDDDD


Si alguien tiene dudas de como funciona esto de las tuberías ( “<”,“>”,”|”,”-”, etc), nada mejor que TLDP-ES/LuCAS


Y eso es todo, ¡espero que os haya sido de utilidad!

Seguidores