Una herramienta de red TCP/UDP multipropósito
Netcrab es una herramienta de red de línea de comandos que puede hacer muchas cosas. Es un homenaje a netcat y puede hacer muchas de las cosas que puede. Una breve descripción general de las cosas que puede hacer:
Para un uso completo, ejecute netcrab --help
.
netcrab HOST:PORT
Esto se conecta al servidor TCP especificado. Ahora su entrada estándar se enviará al servidor y se imprimirá la salida estándar.
El formato IPv6 para el nombre de host debe usar corchetes entre corchetes, por ejemplo localhost es [::1]
.
netcrab -L ADDR:PORT
netcrab -l ADDR:PORT
Puede escuchar como servidor TCP en uno o más puertos arbitrarios. El uso de -l
sale del programa después de que se desconecta la primera conexión entrante. Utilice -L
para "escuchar con más atención": continúe escuchando después de la desconexión.
La sintaxis ADDR:PORT
admite algunas variantes especiales:
localhost:5000
:5000
*:5000
De forma predeterminada, el servidor TCP solo permite que una única conexión entrante esté activa a la vez por dirección de escucha, pero el indicador -m max_inbound_clients
permite que se conecte más de una.
Al igual que con el modo cliente, la entrada estándar se envía a todos los sockets conectados y los datos entrantes de todos los sockets se envían a la salida estándar. Esto se puede cambiar usando los argumentos de modo de entrada y salida a continuación.
El argumento -z
hace que el socket se desconecte inmediatamente sin permitir enviar ningún dato. Útil solo para probar la conectividad.
netcrab -u -L ADDR:PORT
netcrab -u HOST:PORT
UDP es extraño porque realmente no te "conectas" con él. Usted se vincula a un puerto local y luego envía/recibe datagramas hacia/desde pares remotos. El modo de escucha y el modo de conexión para UDP funcionan exactamente igual, excepto que en el modo de conexión, el primer interlocutor al que enviar la entrada estándar se conoce desde el principio, y en el modo de escucha, el tráfico de la entrada estándar no se puede enviar a ninguna parte hasta que el oyente reciba al menos un datagrama de un par.
Para -L
esto admite la misma sintaxis ADDR:PORT
que la anterior para TCP.
El tamaño del datagrama tiene por defecto 1 byte, pero puede controlarse mediante el argumento --ss
.
netcrab -L ADDR1:PORT1 -L ADDR2:PORT2
netcrab -u -L ADDR1:PORT1 -L ADDR2:PORT2
Netcrab admite escuchar en múltiples direcciones y puertos locales al mismo tiempo. Aceptará conexiones que lleguen por cualquiera de ellos. Esto admite TCP y UDP.
netcrab -u --mc HOST:PORT
Netcrab admite la unión de sockets UDP a grupos de multidifusión agregando el argumento --mc
. También proporciona controles para el TTL para paquetes de multidifusión ( --ttl
) y si se deben recibir paquetes de multidifusión en bucle desde que el programa está unido al grupo ( --mc_no_loop
).
netcrab -u -b HOST:PORT
Netcrab admite el envío de datagramas de difusión UDP.
netcrab -i MODE
El modo de entrada se puede controlar. De forma predeterminada, la entrada proviene de stdin. Acepta los siguientes otros modos:
none
: no es posible realizar ninguna entrada. El único tráfico que se procesará será el de pares remotos.stdin-nochar
: funciona igual que stdin, pero no activa el "modo carácter". Esto funciona peor para usos interactivos.echo
: cualquier tráfico recibido se devolverá al remitente.rand
: se generarán datos aleatorios. Los tamaños aleatorios de los datos se pueden controlar con --rsizemin
y --rsizemax
, y el tipo de datos se puede controlar con --rvals
.fixed
: solo es realmente útil para pruebas de rendimiento. El mismo mensaje de tamaño fijo con datos fijos se enviará infinitamente. Puedes controlar el tamaño usando --ss
y el tipo de datos aleatorios que contiene con --rvals
pfqoscli
: mide la latencia frente a las balizas de calidad de servicio de PlayFab.pfqossrv
: actúa como un servidor de baliza de calidad de servicio de PlayFab al que los clientes apuntan para medir la latencia. Cuando utilice uno de los modos stdin como entrada, puede especificar --exit-after-input
para salir del programa después de que el flujo de entrada llegue al final del archivo.
netcrab -o MODE
De forma predeterminada, la salida va a la salida estándar, pero a menudo es útil cambiarla a -o none
para omitir toda la salida. Esto es especialmente útil cuando se pasa una gran cantidad de tráfico, ya que puede ralentizar la salida.
El modo predeterminado de Netcrab es usar stdin y stdout, por lo que puede redirigir la entrada desde un archivo y enviar la salida a un archivo (o canalizar entre programas).
netcrab HOST:PORT < file
echo message | netcrab HOST:PORT
netcrab -6
netcrab -4
Puede restringir el uso únicamente de familias de direcciones IPv6 o IPv4. Esto marca una mayor diferencia cuando se conecta a nombres de host que pasan por la resolución DNS o cuando se escucha sin especificar una dirección de origen explícita.
netcrab -s ADDR:PORT
Al realizar una conexión TCP saliente o enviar datagramas UDP, Netcrab se vincula de forma predeterminada a las direcciones comodín IPv4 e IPv6 (0.0.0.0:0 y [::]:0). En su lugar, puede pasar -s
para vincularse explícitamente a una dirección. Esto admite todas las variantes de ADDR:PORT
descritas en la sección "Servidor TCP".
netcrab HOST1:PORT1 HOST2:PORT2
Netcrab permite conectarse a más de un par remoto al mismo tiempo. De manera similar a escuchar múltiples conexiones simultáneas, el tráfico desde la máquina local se enviará a todos los pares conectados, entrantes o salientes.
netcrab -L ADDR:PORT HOST:PORT
Netcrab admite tanto escuchar conexiones entrantes como realizar conexiones salientes al mismo tiempo. Esto podría resultar útil para enviar tráfico de una dirección local a otra, ya que puede especificar de forma independiente tanto la dirección para escuchar como la dirección de origen para usar en la conexión saliente.
netcrab HOST:PORTxNUM
A veces resulta útil poder conectarse al mismo punto final varias veces, especialmente en escenarios de canales. Por ejemplo, para conectarse a un nombre de host 12 veces, puede usar netcrab localhost:5000x12
. Intentará realizar 12 conexiones salientes simultáneas al mismo nombre de host y puerto.
Esto también se puede combinar con múltiples objetivos. Aquí nos conectamos a localhost en IPv4 cinco veces y en IPv6 trece veces. netcrab 127.0.0.1:5000x5 [::1]:5000x13
.
netcrab -r
netcrab -R
En el modo de conexión saliente, puede pedirle a Netcrab que restablezca una conexión interrumpida. -r
se restablece al cerrar la conexión correctamente. -R
se restablece en caso de error desagradable. Ambos se pueden especificar al mismo tiempo, ya sea -r -R
o -rR
.
netcrab --fm channels
netcrab --fm linger-channels
Ahora llegamos a las partes realmente útiles. Netcrab puede convertirse en un enrutador y reenviar tráfico entre múltiples puntos finales. El modo "Canales" permite emparejar puntos finales y reenviar el tráfico bidireccionalmente de un punto final al otro, actuando como un proxy transparente. El tráfico no se reenvía entre canales. Imagine el siguiente diagrama:
+-------------+ +-----------------------------+ +-------------+
| | | netcrab | | |
| HOST1:PORT1 <----> HOST2:PORT1 <-> HOST2:PORT2 <----> HOST3:PORT1 |
| HOST1:PORT2 <----> HOST2:PORT3 <-> HOST2:PORT4 <----> HOST3:PORT2 |
| | | | | |
+-------------+ +-----------------------------+ +-------------+
El primer y segundo canal pasan completamente pero no cruzan los arroyos. Si el Host 1 o el Host 3 desconectan un punto final, la desconexión también se "reenvía" al otro extremo del canal. Si ese comportamiento no le funciona, puede cambiar al modo Canales persistentes.
Cuando está en el modo de canales, el número máximo de clientes aumenta automáticamente a 10 por dirección de escucha bajo el supuesto de que el usuario probablemente quiera más de una conexión a la vez para poder usar los canales. Esto se puede anular con -m
.
netcrab --fm hub
El modo Hub es similar al modo de canales, pero más simple: todo el tráfico de todas las fuentes de la red se reenvía a todos los demás sockets. Podrías usarlo para configurar una sala de chat o algo así.
Al igual que en el modo de canales, cuando está en modo concentrador, el número máximo de clientes aumenta automáticamente a 10 por dirección de escucha, pero se puede anular con -m
.
netcrab -e COMMAND
Netcrab puede ejecutar otro programa y conectar su entrada estándar y salida estándar a la red. Podría usarlo fácilmente para exponer un shell remoto o algo así, aunque, por supuesto, querrás tener cuidado con eso. En este modo, la entrada y salida normal estarán deshabilitadas.
La cadena de comando se ejecuta a través del shell actual.
Prácticamente todas las capacidades descritas anteriormente se pueden combinar y utilizar al mismo tiempo. Por ejemplo, puede escuchar en varias direcciones y conectarse a varios destinos en la misma sesión mientras utiliza el concentrador para reenviar entre todas las conexiones.