Comando Netcat

Netcat es una de las herramientas más potentes y flexibles que existen en el campo de la programación, depuración, análisis y manipulación de redes y servicios TCP/IP.

Este artículo incluye varios ejemplos de uso de netcat.

Funcionamiento

Aunque netcat puede hacer muchas cosas, su función principal es muy simple:

  • Crea un socket con el destino indicado si es cliente, o en el puerto indicado, si es servidor.
  • Una vez conectado, envía por el socket todo lo que llegue en su entrada estándar y envía a su salida estándar todo lo que llegue por el socket

Parámetros básicos 

  • -l: modo ‘listen’, queda a la espera de conexiones entrantes.
  • -p: puerto local
  • -u: modo UDP
  • -e: ejecuta el comando dado después de conectar
  • -c: ejecuta órdenes de shell (hace /bin/sh -c [comando] después de conectar

 

A continuación veremos unos ejemplos con netcat.

Un chat para 2

Servidor

nc -l -p 2000

Cliente

nc localhost 2000


Transferencia de ficheros

La instancia de nc que escucha recibe el fichero. El receptor ejecuta:

nc -l -p 2000 > fichero.recibido

Y el emisor:

nc localhost 2000 < fichero


Transferencia de directorios

La instancia de nc que escucha recibe el directorio. El receptor ejecuta:

netcat -v -l -p 6969 | tar x

Y el emisor:

tar -cf - DIR | nc -v SERVER 6969


Shell remota estilo telnet

Servidor

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

Cliente

nc localhost 2000

 

Copiar un disco

Es este ejemplo vamos a copiar un pendrive 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

 

Medir el ancho de banda

Servidor

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

Cliente

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