Welcome to Our Website

Linux nc command (Español)

Updated: 03/06/2020 by Computer Hope

en sistemas operativos tipo Unix, el comando nc ejecuta Netcat, una utilidad para enviar datos sin procesar a través de una conexión de red.

este documento cubre la versión Linux DE nc.

Descripción

Netcat es una utilidad que lee y escribe datos a través de conexiones de red, utilizando el protocolo TCP o UDP. Está diseñado para ser una herramienta «back-end» confiable que puede ser utilizada directamente o conducida por otros programas y scripts., Al mismo tiempo, es una herramienta de depuración y exploración de red rica en características, ya que puede crear casi cualquier tipo de conexión que necesite y tiene varias capacidades integradas interesantes. Los usos comunes incluyen:

  • proxies TCP simples
  • clientes y servidores HTTP basados en Shell-script
  • prueba de demonio de red
  • Un Socks o HTTP ProxyCommand para ssh

sintaxis

opciones

-4 obliga a nc a usar solo direcciones IPv4.
-6 obliga a nc a usar solo direcciones IPv6.,
b Permitir la emisión.
C Enviar CRLF como final de línea.
-D Habilitar la depuración en el zócalo.
-d no intente leer de la entrada estándar.
-h Imprime nc ayuda.
– I length especifica el tamaño del búfer de recepción TCP.
-I interval especifica un intervalo de tiempo de retardo entre las líneas de texto enviadas y recibidas. Además, causa un tiempo de retardo entre las conexiones a varios puertos.,
– K obliga a nc a permanecer escuchando para otra conexión después de que se complete su conexión actual. Es un error usar esta opción sin la opción-L.
– l se usa para especificar que nc debe escuchar una conexión entrante en lugar de iniciar una conexión a un host remoto. Es un error usar esta opción junto con las opciones-p, -s o-Z. Además, los tiempos de espera especificados con la opción-w se ignoran.
– n no realice búsquedas de DNS o servicios en direcciones, nombres de host o puertos especificados.,
– o length especifica el tamaño del búfer de envío TCP.
-P proxy_username Especifica un nombre de usuario para presentar a un servidor proxy que requiere autenticación. Si no se especifica ningún nombre de usuario, no se intentará la autenticación. La autenticación Proxy solo es compatible con proxies HTTP CONNECT en la actualidad.
– p source_port especifica el puerto de origen que nc debe usar, sujeto a restricciones de privilegios y disponibilidad.,
– q segundos después de EOF en stdin, espere el número especificado de segundos y luego salga. Si los segundos son negativos, espere para siempre.
– R especifica que los puertos de origen o destino deben elegirse aleatoriamente en lugar de secuencialmente dentro de un rango o en el orden que el sistema les asigna.
– s habilita la opción de firma RFC 2385 TCP MD5.
– s source especifica la IP de la interfaz que se utiliza para enviar los paquetes., Para sockets de datagramas de dominio UNIX, especifica el archivo de socket temporal local a crear y usar para que los datagramas puedan ser recibidos. Es un error usar esta opción junto con la opción-L.
– t toskeyword cambiar el valor de TOS de IPv4. toskeyword puede ser uno de critical, inetcontrol, lowcost, lowdelay, netcontrol, throughput, reliability, o uno de los puntos de código DiffServ: ef, af11 … af43, cs0 … cs7; o un número en hexadecimal o decimal.
– t hace que nc envíe respuestas RFC 854 no y no a las solicitudes RFC 854 DO Y WILL., Esto hace posible utilizar nc para programar sesiones de telnet.
-U Especifica el uso de sockets de dominio UNIX.
– u Use UDP en lugar de la opción predeterminada de TCP. Para sockets de dominio UNIX, use un socket de datagramas en lugar de un socket de flujo. Si se usa un socket de dominio UNIX, se crea un socket de Recepción temporal en /tmp a menos que se dé la bandera-S.
-V rtable Configurar la tabla de enrutamiento para ser utilizado. El valor predeterminado es 0.
– V Have nc give more verbose output.,
– W timeout las conexiones que no se pueden establecer o están inactivas timeout después de timeout segundos. La bandera-w no tiene efecto sobre la opción-l, es decir, nc escuchará para siempre una conexión, con o sin la bandera-W. El valor predeterminado es no timeout.
– X proxy_protocol solicita que nc use el protocolo especificado al hablar con el servidor proxy. Los protocolos soportados son «4» (SOCKS V.4), «5» (SOCKS V. 5) y «connect» (proxy HTTPS). Si no se especifica el Protocolo, se usa SOCKS versión 5.,
– x proxy_address solicita que nc se conecte al destino utilizando un proxy en proxy_address y port. Si no se especifica el puerto, se utiliza el puerto conocido para el protocolo proxy (1080 para SOCKS, 3128 para HTTPS).
Z DCCP modo.
– z especifica que nc solo debe buscar demonios de escucha, sin enviarles ningún dato. Es un error usar esta opción junto con la opción-L.,

el destino puede ser una dirección IP numérica o un nombre de host simbólico (a menos que se dé la opción-n). En general, se debe especificar un destino, a menos que se dé la opción-l (en cuyo caso se utiliza el host local). Para los sockets de dominio UNIX, se requiere un destino y es la ruta del socket a la que conectarse (o escuchar si se da la opción-l).

el puerto puede ser un único entero o un rango de puertos. Los rangos están en la forma nn-mm. en general, se debe especificar un puerto de destino, a menos que se dé la opción-U.,

modelo Cliente / Servidor

es bastante simple construir un modelo cliente / servidor muy básico usando nc. En una consola, inicie la escucha nc en un puerto específico para una conexión. Por ejemplo:

nc -l 1234

nc ahora está escuchando en el puerto 1234 para una conexión. En una segunda consola (o en una segunda máquina), conéctese a la máquina y al puerto en el que se está escuchando:

nc 127.0.0.1 1234

ahora debería haber una conexión entre los puertos. Cualquier cosa escrita en la segunda consola será concatenada a la primera, y viceversa., Después de que se configuró la conexión, a nc realmente no le importa qué lado se está utilizando como un ‘servidor’ y qué lado se está utilizando como un ‘cliente’. La conexión puede ser terminada usando un EOF (‘^D’).

no hay ninguna opción-c o-e en modern netcat, pero aún puede ejecutar un comando después de establecer la conexión redireccionando descriptores de archivo. Tenga cuidado aquí porque abrir un puerto y permitir que cualquier persona conectada ejecute comandos arbitrarios en su sitio es peligroso., Si realmente necesita hacer esto, aquí hay un ejemplo:

en el lado del ‘servidor’:

rm -f /tmp/f; mkfifo /tmp/f
cat /tmp/f | /bin/sh -i 2>&1 | nc -l 127.0.0.1 1234 > /tmp/f

en el lado del ‘cliente’:

nc host.example.com 1234

host.example.com)

al hacer esto, crea un fifo en /tmp/f y hace que nc escuche en el puerto 1234 de la dirección 127.0.0.1 en el lado del ‘servidor’, cuando un ‘cliente’ establece una conexión con éxito a ese puerto, /bin/sh se ejecuta en el lado del ‘servidor’ y el símbolo del shell se da al lado del ‘cliente’.

Cuando se termina la conexión, nc también se cierra., Use -k si desea que siga escuchando, pero si el comando se cierra, esta opción no la reiniciará ni mantendrá funcionando nc. Además, no olvide eliminar el descriptor de archivo una vez que ya no lo necesite:

rm -f /tmp/f

Data transfer

El ejemplo de la sección anterior se puede expandir para construir un modelo básico de transferencia de datos. Cualquier entrada de información en un extremo de la conexión se enviará al otro extremo, y la entrada y la salida se pueden capturar fácilmente para emular la transferencia de archivos.,

comience usando nc para escuchar en un puerto específico, con la salida capturada en un archivo:

nc -l 1234 > filename.out

Usando una segunda máquina, conéctese al proceso de escucha nc, alimentándolo con el archivo que se va a transferir:

nc host.example.com 1234 < filename.in

después de transferir el archivo, la conexión se cerrará automáticamente.

hablar con los servidores

a veces es útil hablar con los servidores «a mano» en lugar de a través de una interfaz de usuario., Puede ayudar en la solución de problemas, cuando podría ser necesario verificar qué datos está enviando un servidor en respuesta a los comandos emitidos por el cliente. Por ejemplo, para recuperar la página de inicio de un sitio web:

printf "GET / HTTP/1.0\r\n\r\n" | nc host.example.com 80

tenga en cuenta que esto también muestra los encabezados enviados por el servidor web. Se pueden filtrar, utilizando una herramienta como sed, si es necesario.

se pueden construir ejemplos más complicados cuando el Usuario conoce el formato de las solicitudes requeridas por el servidor., Como otro ejemplo, un correo electrónico puede ser enviado a un servidor SMTP usando:

exploración de puertos

puede ser útil saber qué puertos están abiertos y ejecutando servicios en una máquina de destino. El indicador-z se puede usar para decirle a nc que informe de puertos abiertos, en lugar de iniciar una conexión. Por lo general, es útil activar la salida detallada a stderr usando esta opción junto con la opción-V.

por ejemplo:

nc -zv host.example.com 20-30
Connection to host.example.com 22 port succeeded!Connection to host.example.com 25 port succeeded!

el rango de puertos se especificó para limitar la búsqueda a los puertos 20 – 30, y se escanea en orden creciente.,

también puede especificar una lista de puertos para escanear, por ejemplo:

nc -zv host.example.com 80 20 22

Los puertos se escanean en el orden que usted dio.

alternativamente, podría ser útil saber qué software de servidor se está ejecutando y qué versiones. Esta información a menudo está contenida en los banners de saludo. Para recuperarlos, es necesario primero hacer una conexión y luego romper la conexión cuando se recuperó el banner., Esto se puede lograr especificando un pequeño tiempo de espera con el indicador-w, O tal vez emitiendo un comando «QUIT» al servidor:

echo "QUIT" | nc host.example.com 20-30
SSH-1.99-OpenSSH_3.6.1p2 Protocol mismatch. 220 host.example.com IMS SMTP Receiver Version 0.84 Ready

Examples

nc -p 31337 -w 5 host.example.com 42

abre una conexión TCP al puerto 42 de host.example.com, usando el puerto 31337 como el puerto de origen, con un tiempo de espera de 5 segundos.

nc -u host.example.com 53

abre una conexión UDP al puerto 53 de host.example.com.

nc -s 10.1.2.3 host.example.com 42

abre una conexión TCP al puerto 42 de host.example.com usar 10.1.2.3 como IP para el extremo local de la conexión.,

nc -lU /var/tmp/dsocket

crea y escucha en un socket de flujo de dominio UNIX.

nc -x10.2.3.4:8080 -Xconnect host.example.com 42

Se conecta al puerto 42 de host.example.com a través de un proxy HTTP en 10.2.3.4, puerto 8080. Este ejemplo también podría ser usado por ssh.

nc -x10.2.3.4:8080 -Xconnect -Pruser host.example.com 42

lo mismo que en el ejemplo anterior, pero esta vez habilitando la autenticación proxy con el nombre de usuario «ruser» si el proxy lo requiere.

ifconfig-ver o modificar la configuración de las interfaces de red.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *