====== 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 ==== * http://crysol.org/es/netcat * http://www.sans.org/security-resources/sec560/netcat_cheat_sheet_v1.pdf * http://www.guia-ubuntu.com/index.php?title=Netcat {{tag> netcat}}