¿Hay alguna utilidad básica para abrir un puerto TCP de red específico en mi máquina?
Necesito probar cómo mi programa maneja los puertos en estado de escucha.
¿Hay alguna utilidad básica para abrir un puerto TCP de red específico en mi máquina?
Necesito probar cómo mi programa maneja los puertos en estado de escucha.
Respuestas:
netcat debe hacer lo que quieras. Haga que escuche en su máquina y haga eco de cosas en STDOUT:
nc -4 -k -l -v localhost 1026
cuando desee que se cierre cuando finalice la conexión, no use -k
Tienes
TCP Listen: http://www.allscoop.com/tcp-listen.php
Port Peeker: http://www.linklogger.com/portpeeker.htm
Utilidad de línea de comandos de Microsoft Portqry.exe
Prueba iperf. Hay una versión para Windows. Simplemente puede ejecutarlo como iperf -s -p 1234
, y escuchará en el puerto 1234. Luego puede conectarse a ese puerto desde una máquina remota haciendo algo como:
telnet 192.168.1.1 1234
iperf -c 192.168.1.1 1234
portqry -n 192.168.1.1 -e 1234
Necesitaría obtener iperf.exe
o portqry.exe
para los dos últimos. iPerf no está estrictamente diseñado para esta tarea, pero es excelente para solucionar problemas de conectividad, disponibilidad de ancho de banda, enlaces de prueba de estrés, etc.
Parece que esta utilidad hará exactamente lo que desea, incluso mostrando los datos recibidos si lo desea: http://www.drk.com.ar/builder.php
Tiene una GUI en lugar de solo una línea de comando, una ventaja para algunos.
El grifo y la manguera de herramientas netpipes siempre me han servido bien, simplificando y para que mis programas los utilicen a través de la red.stdin
stdout
Similar a netcat .
Descripción de Ubuntu:
El paquete netpipes hace que las transmisiones TCP / IP puedan utilizarse en scripts de shell. También puede simplificar el código cliente / servidor al permitir que el programador omita todos los tediosos bits de programación relacionados con los sockets y se concentre en escribir un filtro u otro servicio.
EXAMPLES
This creates a TCP-IP socket on the local machine bound to port 3000.
example$ faucet 3000 --out --verbose tar -cf - .
Every time some process (from any machine) attempts to connect to port 3000 on this machine the faucet program will fork(2) a process and the child
will exec(2) a
tar -cf - .
Este es el uso perfecto para Wireshark , un analizador de paquetes y protocolos que se encuentra entre la pila de redes de Windows / Linux.
Le permitirá ver todos los paquetes TCP / UDP que recibe toda su máquina, independientemente del puerto. También puede indicarle al programa que filtre solo los paquetes enviados a través de un determinado puerto para su posterior análisis. La ventaja de Wireshark es que proporciona mensajes muy detallados para cada paquete: origen, destino, puerto, direcciones MAC, datos, fechas, sumas de verificación, etc. Herramienta muy útil (¡y gratuita!).
TCP Listen es la MEJOR respuesta en mi humilde opinión. Miré y me gustó TCP Builder, pero NECESITAS derechos de administrador para ejecutar esa aplicación, NO los necesitas con TCP listener, y también necesitas instalar TCP Builder, descomprimir y copiar un montón de archivos, mientras que TCP Listener es 1 EXE, nada más.
TCP Listener tampoco necesitaba derechos de administrador, y cuando lo escaneé AV, nada dijo que fuera malicioso. Builder tenía 1 AV en Virustotal que decía que era malo, pero resultó ser un falso positivo (espero) :)
Si bien conseguí que Builder ejecutara sin derechos de administrador, no pudo conectar el socket mientras que Listener sí. Una vez que hice todas mis pruebas, pude eliminar el archivo 1 de Listener y todo fue como antes.
Netcat hubiera sido agradable, pero no encontré una versión que funcionara con el servidor 2012 o posterior. Entonces, para probar completamente si el firewall de la red y los firewalls locales permiten la conexión de puertos TCP específicos, TCP listener parece ser la mejor herramienta para este trabajo.
¡Disfrutar!
Puedes usar la versión de Windows de netcat :
nc -l -v localhost -p 7
Me gusta netcat en Windows, pero no siempre es posible descargar e instalar cosas de Internet. Quizás esté configurando un servidor de producción y quiera probar las reglas de su firewall antes (y sin) instalar nada.
La mayoría (¿todos?) De los servidores de Windows tienen un compilador JScript.net. Puede escribir un simple archivo por lotes de Windows antiguo que también sea un programa JScript.net válido, un programa políglota .
tl; dr;
polyglot-listener.bat 1234
para escuchar en el puerto 1234
.La idea es encontrar el jsc.exe
ejecutable en su sistema:
for /f "tokens=* delims=" %%v in ('dir /b /s /a:-d /o:-n "%SystemRoot%\Microsoft.NET\Framework\*jsc.exe"') do (
set "jsc=%%v"
)
Y úselo para compilar el archivo por lotes.
"!jsc!" /nologo /out:"%APPDATA%\listener.exe" "%~dpsfnx0"
El archivo por lotes contiene código JScript.Net básico que crea un socket sincrónico, escúchalo, acepta la conexión y suelta todo lo que viene a él:
listener.Bind(localEndPoint);
listener.Listen(10);
// Start listening for connections.
while (true) {
var data:byte[] = new byte[1024];
Console.WriteLine("Waiting for a TCP connection on {0}:{1}...", ipAddress, port);
var handler = listener.Accept();
Console.WriteLine("Connected to {0}", handler.RemoteEndPoint);
try {
// An incoming connection needs to be processed.
while (handler.Receive(data) > 0);
} finally {
Console.WriteLine("Disconected\n");
}
handler.Shutdown(SocketShutdown.Both);
handler.Close();
}
El programa compilado se guardará como %APPDATA%\listener.exe
. Puede ejecutarse por sí solo, copiado en un servidor, pero la compilación del archivo por lotes políglota funcionará independientemente de cualquier obstáculo de seguridad en su camino.
TCPView del kit de herramientas Sysinternals proporciona una visión general muy agradable.