Tabla de Contenidos

Netcat

En las nuevas versiones de nc ya no hace falta el -p para indicar el puerto

Ejemplos de uso

Chat

Servidor

nc -l 2000 

Cliente

nc localhost 2000

Transferencia de ficheros

Receptor:

nc -l 2000 > nombrefichero 

Emisor

nc localhost 2000 < ficheroaenviar 

Si queremos enviar el fichero comprimido desde el emisor hacemos

 cat entrada.txt | gzip | nc remote.host 2000 -q 0 

Otra forma de hacerlo es :

Receptor

"nc -l 4000 | tar xvf -"

Emisor

"tar -cf - . | nc ipdestino 4000"

Transferir un disco o partición

Receptor

nc -l 2000|bzip2 -d|dd bs=16M of=/dev/sdb

Emisor

dd bs=16M if=/dev/sda|bzip2 -c|nc servidor_receptor 2000

Servidor de echo

Ponemos un servidor que ejecuta cat de modo que devolverá todo lo que se le envíe Servidor

nc -l 2000 -e /bin/cat 

Cliente

nc localhost 2000 

Servidor de daytime

Exactamente lo mismo que el ejemplo anterior pero ejecutando date en lugar de cat.

nc -l 2000 -e /bin/date

Y al conectarnos desde otra consola

nc localhost 2000 

shell remota

Servidor

nc -l -p 2000 -e /bin/bash

Cliente

 nc ipservidor 2000
Shell remoto en windows

Servidor

nc -l -d -e cmd.exe -p 6000 

Cliente

nc -vv ipservidor 6000 

Copia de seguridad remota

Receptor

netcat -l -p 3333 -v > backup.tgz 

Emisor

tar -czvpf - /path/to/files | netcat -q 0 remote.host 3333 

Para hacer una copia en plan bestia de todo el sistema puedes hacer:

tar -cjvpf - / --exclude /proc --exclude /dev --exclude /sys --exclude /tmp | netcat -q 0 remote.host 3333

Telnet inverso

En esta ocasión es el cliente quien pone el terminal remoto

Servidor

 nc -l -p 2000

Cliente

 nc server.example.org 2000 -e /bin/bash

HTTP

Es sencillo conseguir un cliente y un servidor HTTP rudimentarios. Servidor

 nc -l -p http -c “cat index.html”

Al cual podemos conectar con cualquier navegador HTTP, como por ejemplo firefox. Cliente

echo “GET /” | nc www.google.com 80 > index.html

Streaming de audio

Un sencillo ejemplo para hacer streaming de un fichero .mp3: Servidor

 nc -l -p 2000 < fichero.mp3

y para servir todos los .mp3 de un directorio:

cat *.mp3 | nc -l -p 2000

Cliente

nc server.example.org 2000 | madplay –

Streaming de video

Servidor

nc -l -p 2000 < pelicula.avi

Cliente

nc server.example.org 2000 | mplayer –

Proxy

Sirva para redirigir una conexión a otro puerto u otra máquina:

 nc -l -p 2000 -c “nc example.org 22” 

El tráfico recibido en el puerto 2000 de esta máquina se redirige a la máquina example.org:22. Permite incluso que la conexión entrante sea UDP pero la redirección sea TCP o viceversa!

Clonar un disco a través de la red

Esto se debe usar con muchísima precaución. Se puede meter la pata y sobreescribir el disco duro origen

Es este ejemplo voy a copiar un pen drive USB que está conectado al servidor a un fichero en el cliente y después lo voy a montar para acceder al contenido. Servidor

dd if=/dev/sda1 | nc -l -p 2000 

Cliente

nc server.example.org 2000 | dd of=pendrive.dump 
mount pendrive.dump -r -t vfat -o loop /mnt/usb

Si queremos hacer una copia comprimida

 dd if=/dev/sda1 conv=noerror,sync | gzip | netcat -q 0 remote.host 2000

Y en la parte cliente:

 nc -l -p 2000 -v > dev_sda1.gz

Para restaurarla bastaría con:

  gzip -dc dev_sda1.gz | dd of=/dev/sda1

Ratón remoto

Es decir, usar el ratón conectado a una máquina para usar el entorno gráfico de otra. El ejemplo está pensado para Xorg. Servidor

nc -l -p 2000 < /dev/input/mice

Cliente Editar el fichero /etc/X11/xorg.conf y modificar la configuración del ratón para que queda así:

Section "InputDevice"
    Driver     "mouse"
    ...
    Option    "Device"    "/tmp/fakemouse"
    ....
EndSection
 mkfifo /tmp/fakemouse 
nc server.example.org 2000 > /tmp/fakemouse 
/etc/init.d/gdm restart 

Medir el ancho de banda

Servidor

nc -l -p 2000 | pv > /dev/null 

Cliente

nc server.example.org 2000 < /dev/zero 

Imprimir un documento en formato PostScript

Funciona en impresoras que soporten el estándar AppSocket/JetDirect, que son la mayoría de las que se conectan por Ethernet.

cat fichero.ps | nc -q 1 nombre.o.ip.de.la.impresora 9100 

Referencias