GNU/Linux >> Tutoriales Linux >  >> Linux

Comando Netcat (nc) con ejemplos

Netcat (o nc ) es una utilidad de línea de comandos que lee y escribe datos a través de conexiones de red, utilizando los protocolos TCP o UDP. Es una de las herramientas más poderosas en el arsenal de los administradores de redes y sistemas, y se considera una navaja suiza de las herramientas de redes.

Netcat es multiplataforma y está disponible para Linux, macOS, Windows y BSD. Puede usar Netcat para depurar y monitorear conexiones de red, buscar puertos abiertos, transferir datos, como proxy y más.

El paquete Netcat está preinstalado en macOS y distribuciones populares de Linux como Ubuntu, Debian o CentOS.

Sintaxis de Netcat #

La sintaxis más básica de la utilidad Netcat tiene la siguiente forma:

nc [options] host port

En Ubuntu, puede usar netcat o nc . Ambos son enlaces simbólicos a la versión openBSD de Netcat.

De forma predeterminada, Netcat intentará iniciar una conexión TCP con el host y el puerto especificados. Si desea establecer una conexión UDP, use -u opción:

nc -u host port

Escaneo de puertos #

El escaneo de puertos es uno de los usos más comunes de Netcat. Puede escanear un solo puerto o un rango de puertos.

Por ejemplo, para buscar puertos abiertos en el rango 20-80, usaría el siguiente comando:

nc -z -v 10.10.8.8 20-80

El -z opción le dirá a nc para escanear solo los puertos abiertos, sin enviarles ningún dato y el -v opción para proporcionar información más detallada.

La salida se verá así:

nc: connect to 10.10.8.8 port 20 (tcp) failed: Connection refused
nc: connect to 10.10.8.8 port 21 (tcp) failed: Connection refused
Connection to 10.10.8.8 22 port [tcp/ssh] succeeded!
nc: connect to 10.10.8.8 port 23 (tcp) failed: Connection refused
...
nc: connect to 10.10.8.8 port 79 (tcp) failed: Connection refused
Connection to 10.10.8.8 80 port [tcp/http] succeeded!

Si desea imprimir solo las líneas con los puertos abiertos, puede filtrar los resultados con grep comando.

nc -z -v 10.10.8.8 20-80 2>&1 | grep succeeded
Connection to 10.10.8.8 22 port [tcp/ssh] succeeded!
Connection to 10.10.8.8 80 port [tcp/http] succeeded!

También puede usar Netcat para encontrar el software del servidor y su versión. Por ejemplo, si envía un comando "SALIR" al servidor en el puerto SSH predeterminado 22:

echo "EXIT" | nc 10.10.8.8 22

La salida se verá así:

SSH-2.0-OpenSSH_7.6p1 Ubuntu-4
Protocol mismatch.

Para buscar puertos UDP, simplemente agregue -u opción al comando como se muestra a continuación:

nc -z -v -u 10.10.8.8 20-80

Por lo general, Nmap es una mejor herramienta que Netcat para el escaneo de puertos complejos.

Enviar archivos a través de Netcat #

Netcat se puede utilizar para transferir datos de un host a otro mediante la creación de un modelo básico de cliente/servidor.

Esto funciona configurando Netcat para escuchar en un puerto específico (usando -l opcional) en el host receptor y luego establecer una conexión TCP normal desde el otro host y enviar el archivo a través de él.

En la recepción, ejecute el siguiente comando que abrirá el puerto 5555 para la conexión entrante y redirigirá la salida al archivo:

nc -l 5555 > file_name

Desde el host de envío, conéctese al host de recepción y envíe el archivo:

nc receiving.host.com 5555 < file_name

Para transferir un directorio puedes usar tar para archivar el directorio en el host de origen y extraer el archivo en el host de destino.

En el host receptor, configure la herramienta Netcat para escuchar una conexión entrante en el puerto 5555. Los datos entrantes se canalizan al tar comando, que extraerá el archivo:

nc -l 5555 | tar xzvf -

En el host de envío, empaque el directorio y envíe los datos conectándose al nc de escucha. proceso en el host receptor:

tar czvf - /path/to/dir | nc receiving.host.com 5555

Puede ver el progreso de la transferencia en ambos extremos. Una vez completado, escriba CTRL+C para cerrar la conexión.

Creación de un servidor de chat simple #

El procedimiento para crear un chat en línea entre dos o más anfitriones es el mismo que para transferir archivos.

En el primer host, inicie un proceso de Netcat para escuchar en el puerto 5555:

nc -l 5555

Desde el segundo host, ejecute el siguiente comando para conectarse al puerto de escucha:

nc first.host.com 5555

Ahora, si escribes un mensaje y presionas ENTER se mostrará en ambos hosts.

Para cerrar la conexión, escriba CTRL+C .

Realización de una solicitud HTTP #

Aunque hay herramientas mucho mejores para solicitudes HTTP como curl , también puede usar Netcat para enviar varias solicitudes a servidores remotos.

Por ejemplo, para recuperar la página de manual de Netcat del sitio web de OpenBSD, escribiría:

printf "GET /nc.1 HTTP/1.1\r\nHost: man.openbsd.org\r\n\r\n" | nc man.openbsd.org 80

La respuesta completa, incluidos los encabezados HTTP y el código HTML, se imprimirá en la terminal.

Conclusión #

En este tutorial, ha aprendido a utilizar la utilidad Netcat para establecer y probar conexiones TCP y UDP.

Para obtener más información, visite la página de manual de Netcat y lea sobre todas las demás opciones poderosas del comando Netcat.

Si tiene alguna pregunta o comentario, deje un comentario a continuación.


Linux
  1. Comando wc Linux con ejemplos

  2. Comando Linux Tee con ejemplos

  3. Comando de cabeza de Linux con ejemplos

  4. Comando Nohup con ejemplos

  5. Comando JQ en Linux con ejemplos

15 comandos ps de Linux con ejemplos

Comando de CD de Linux con ejemplos

Comando de vigilancia de Linux con ejemplos

Comando de espera en Linux con ejemplos

Comando IP de Linux con ejemplos

Comando de historial con ejemplos