Este es el comando nc.openbsd que se puede ejecutar en el proveedor de alojamiento gratuito de OnWorks utilizando una de nuestras múltiples estaciones de trabajo en línea gratuitas, como Ubuntu Online, Fedora Online, emulador en línea de Windows o emulador en línea de MAC OS.
PROGRAMA:
NOMBRE
nc - Conexiones y escuchas arbitrarias de TCP y UDP
SINOPSIS
nc [-46bCDdhklnrStUuvZz] [-I de largo] [-i intervalo] [-O de largo] [-P nombre_de_usuario_proxy]
[-p Puerto de origen] [-q segundos] [-s fuente] [-T palabra clave] [-V mesa] [-w tiempo de espera]
[-X protocolo_proxy] [-x dirección proxy[:Puerto]] [destino] [Puerto]
DESCRIPCIÓN
Los nc (o netcat) se utiliza para casi cualquier cosa relacionada con TCP, UDP,
o sockets de dominio UNIX. Puede abrir conexiones TCP, enviar paquetes UDP, escuchar arbitrariamente
Puertos TCP y UDP, escaneo de puertos y maneja tanto IPv4 como IPv6. diferente a telnet(1) nc
scripts muy bien, y separa los mensajes de error en error estándar en lugar de enviarlos a
salida estándar, como telnet(1) lo hace con algunos.
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(1)
· y mucho, mucho más
Las opciones son las siguientes:
-4 Fuerzas nc para utilizar direcciones IPv4 únicamente.
-6 Fuerzas nc para utilizar direcciones IPv6 únicamente.
-b Permitir la transmisión.
-C Envíe CRLF como final de línea.
-D Habilite la depuración en el socket.
-d No intente leer desde stdin.
-h Imprime nc ayuda.
-I de largo
Especifica el tamaño del búfer de recepción de TCP.
-i intervalo
Especifica un intervalo de tiempo de retraso entre las líneas de texto enviadas y recibidas. También
provoca un retraso entre las conexiones a varios puertos.
-k Fuerzas nc para permanecer escuchando otra conexión después de que su conexión actual sea
terminado. Es un error utilizar esta opción sin la -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 utilizar esta opción en
en conjunción con el -p, -so -z opciones. Además, los tiempos de espera especificados
con el -w se ignoran las opciones.
-n No realice búsquedas de DNS o servicios en direcciones, nombres de host o puertos especificados.
-O de largo
Especifica el tamaño del búfer de envío de TCP.
-P nombre_de_usuario_proxy
Especifica un nombre de usuario para presentar a un servidor proxy que requiere autenticación. Si
no se especifica ningún nombre de usuario, entonces no se intentará la autenticación. Apoderado
La autenticación solo es compatible con los proxies HTTP CONNECT en la actualidad.
-p Puerto de origen
Especifica el puerto de origen 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 segundos
es negativo, espera para siempre.
-r Especifica que los puertos de origen y / o destino deben elegirse al azar 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 fuente
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 para crear
y utilícelo para que se puedan recibir datagramas. Es un error utilizar esta opción en
en conjunción con el -l .
-T palabra clave
Cambie el valor de TOS de IPv4. palabra clave puede ser uno de crítico, controlnet, lowcost,
retraso bajo, control de red, throughput, fiabilidad , o uno de los puntos de código DiffServ:
ef, af11 ... af43, cs0 ... cs7; o un número en hexadecimal o decimal.
-t Causas nc para enviar respuestas RFC 854 NO HACER y NO QUERÉ a las solicitudes RFC 854 HACER y QUERÉ.
Esto hace posible utilizar nc para programar sesiones de telnet.
-U Especifica utilizar sockets de dominio UNIX.
-u Utilice UDP en lugar de la opción predeterminada de TCP. Para sockets de dominio UNIX, utilice un
socket de datagrama en lugar de un socket de flujo. Si se utiliza un socket de dominio UNIX, un
El conector de recepción temporal se crea en / Tmp a menos que el -s se da la bandera.
-V mesa
Configure la tabla de enrutamiento que se utilizará. El valor predeterminado es 0.
-v ¿Tienes nc dar una salida más detallada.
-w tiempo de espera
Conexiones que no se pueden establecer o que están inactivas después de tiempo de espera segundos.
Los -w bandera no tiene ningún efecto en el -l opción, es decir nc escuchará por siempre por un
conexión, con o sin el -w bandera. El valor predeterminado es sin tiempo de espera.
-X protocolo_proxy
Solicita que nc debe utilizar el protocolo especificado al hablar con el servidor proxy.
Los protocolos admitidos son "4" (SOCKS v.4), "5" (SOCKS v.5) y "connect" (HTTPS
apoderado). Si no se especifica el protocolo, se utiliza SOCKS versión 5.
-x dirección proxy[:Puerto]
Solicita que nc debería conectarse a destino usando un proxy en dirección proxy y
Puerto. Si Puerto no se especifica, se utiliza el puerto conocido para el protocolo proxy
(1080 para CALCETINES, 3128 para HTTPS).
-Z Modo DCCP.
-z Especifica que nc solo debería escanear en busca de demonios de escucha, sin enviar ningún dato
a ellos. Es un error utilizar esta opción junto con la -l .
destino puede ser una dirección IP numérica o un nombre de host simbólico (a menos que el -n opción es
dado). En general, se debe especificar un destino, a menos que el -l se da la opción (en
cuyo caso se utiliza el host local). Para sockets de dominio UNIX, se requiere un destino y
es la ruta del socket al que conectarse (o escuchar si el -l se da la opción).
Puerto puede ser un solo entero o un rango de puertos. Los rangos tienen el formato nn-mm. En
general, se debe especificar un puerto de destino, a menos que el -U se da la opción.
SERVIDOR DE CLIENTE MODELO
Es bastante simple construir un modelo cliente / servidor muy básico usando nc. En una consola
comienzo nc escuchando 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 una segunda
machine), conéctese a la máquina y al puerto que se está escuchando en:
$nc 127.0.0.1 1234
Ahora debería haber una conexión entre los puertos. Cualquier cosa escrita en la segunda consola
se concatenará al primero y viceversa. Una vez establecida la conexión, nc
realmente no le importa qué lado se usa como 'servidor' y qué lado se usa como
un cliente'. La conexión se puede terminar usando un EOF ('^ D').
No hay -c or -e opción en este netcat, pero aún puede ejecutar un comando después
conexión que se establece mediante la redirección de descriptores de archivo. Tenga cuidado aquí porque
abrir un puerto y permitir que cualquier persona conectada ejecute un comando arbitrario 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.ejemplo.com 1234
$ (indicador de shell de 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 indicador de shell se entrega al lado del "cliente".
Cuando se termina la conexión, nc también se cierra. Usar -k si lo quieres sigue escuchando, pero
si el comando sale de esta opción, no la reiniciará ni mantendrá nc corriendo. Además, no te olvides de
elimine el descriptor de archivo una vez que ya no lo necesite:
$ rm -f / tmp / f
DATOS TRANSFERIR
El ejemplo de la sección anterior se puede ampliar para crear 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.
Empiece por usar nc para escuchar en un puerto específico, con la salida capturada en un archivo:
$ nc -l 1234> nombre de archivo.out
Usando una segunda máquina, conéctese a la escucha nc proceso, alimentándolo con el archivo que debe
ser transferido:
$ nc host.example.com 1234 <nombre de archivo.in
Una vez transferido el archivo, la conexión se cerrará automáticamente.
HABLANDO A 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 resolución de problemas, cuando podría ser necesario verificar qué datos es un servidor.
envío en respuesta a comandos emitidos por el cliente. Por ejemplo, para recuperar la casa
página 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,
usando una herramienta como SED(1), si es necesario.
Se pueden crear ejemplos más complicados cuando el usuario conoce el formato de las solicitudes.
requerido por el servidor. Como otro ejemplo, se puede enviar un correo electrónico a un servidor SMTP
mediante:
$ nc [-C] localhost 25 << EOF
Host HELO.ejemplo.com
CORREO DE:[email protected]>
RCPT PARA:[email protected]>
DATOS
Cuerpo del correo electrónico.
.
DEJAR
EOF
PORT EXPLORACIÓN
Puede resultar útil saber qué puertos están abiertos y ejecutan servicios en una máquina de destino. los
-z la bandera se puede usar para decir nc para informar sobre puertos abiertos, en lugar de iniciar una conexión.
Por lo general, es útil activar la salida detallada a stderr mediante el uso de esta opción junto
con -v .
Por ejemplo:
$ nc -zv host.ejemplo.com 20-30
Conexión con host.example.com 22 ¡El puerto [tcp / ssh] se realizó correctamente!
La conexión al puerto host.example.com 25 [tcp / smtp] se realizó correctamente.
El rango de puertos se especificó para limitar la búsqueda a los puertos 20-30, y es escaneado por
orden creciente.
También puede especificar una lista de puertos para escanear, por ejemplo:
$ nc -zv host.ejemplo.com 80 20 22
nc: conectarse a host.example.com 80 (tcp) falló: conexión rechazada
nc: conectarse a host.example.com 20 (tcp) falló: conexión rechazada
La conexión al puerto host.example.com [tcp / ssh] se realizó correctamente.
Los puertos se escanean según el orden que usted dio.
Alternativamente, puede ser útil saber qué software de servidor se está ejecutando y qué
versiones. Esta información suele estar contenida en los carteles de bienvenida. Con el fin de
recuperarlos, es necesario hacer primero una conexión y luego romper la conexión
cuando se haya recuperado el banner. Esto se puede lograr especificando un pequeño tiempo de espera
con el -w flag, o tal vez emitiendo un comando "QUIT" al servidor:
$ echo "SALIR" | nc host.example.com 20-30
SSH-1.99-OpenSSH_3.6.1p2
Discrepancia de protocolo.
220 host.example.com Receptor IMS SMTP Versión 0.84 Listo
EJEMPLOS
Abra una conexión TCP al puerto 42 de host.example.com, utilizando el puerto 31337 como puerto de origen,
con un tiempo de espera de 5 segundos:
$ nc -p 31337 -w 5 host.ejemplo.com 42
Abra una conexión UDP al puerto 53 de host.example.com:
$ nc -u host.ejemplo.com 53
Abra una conexión TCP al puerto 42 de host.example.com usando 10.1.2.3 como IP para el local.
fin de la conexión:
$ nc -s 10.1.2.3 host.ejemplo.com 42
Cree y escuche en un socket de flujo de dominio UNIX:
$ nc -lU / var / tmp / dsocket
Conéctese al puerto 42 de host.example.com a través de un proxy HTTP en 10.2.3.4, puerto 8080. Este
El ejemplo también podría ser utilizado por ssh(1); ver el Comando proxy directiva en ssh_config(5) para
más información.
$ nc -x10.2.3.4: 8080 -Xconnect host.example.com 42
El mismo ejemplo nuevamente, esta vez habilitando la autenticación de proxy con el nombre de usuario "ruser" si el
proxy lo requiere:
$ nc -x10.2.3.4: 8080 -Xconnect -Pruser host.example.com 42
Utilice nc.openbsd en línea utilizando los servicios de onworks.net