
Utilidad de redireccionamiento de puertos TCP en C
Un reenviador de puertos TCP de alto rendimiento para Windows con listas blancas de IP opcionales y capacidades de registro detallado.
cl PortForwarder.c /Fe:PortForwarder.exe ws2_32.lib
gcc PortForwarder.c -o PortForwarder.exe -lws2_32
PortForwarder.exe <puerto_local> <host_remoto> <puerto_remoto> [ip_permitida] [-v]
<puerto_local> - Puerto local en el que escuchar (1-65535)<host_remoto> - Nombre de host o dirección IP remota a la que reenviar el tráfico<puerto_remoto> - Puerto remoto al que reenviar el tráfico (1-65535)[ip_permitida] - Opcional - Solo aceptar conexiones desde esta dirección IP[-v] - Opcional - Habilitar modo detallado (mostrar conexiones rechazadas)Reenviar el puerto local 8080 al servidor remoto 192.168.1.100 puerto 80:
PortForwarder.exe 8080 192.168.1.100 80
Solo aceptar conexiones desde 192.168.1.50:
PortForwarder.exe 8080 192.168.1.100 80 192.168.1.50
Mostrar intentos de conexión rechazados:
PortForwarder.exe 8080 192.168.1.100 80 192.168.1.50 -v
PortForwarder.exe 3306 database.example.com 3306
PortForwarder.exe 2222 10.0.0.50 22 192.168.1.100
Escuchar en el puerto SMB 445 y reenviar a un punto final SMB remoto. Cuando 445 es el
puerto local, la herramienta primero libera el puerto del servidor SMB integrado de Windows:
PortForwarder.exe 445 10.0.0.50 445 192.168.1.100
Cuando el puerto local es 445, antes de enlazar, la herramienta automáticamente:
System, PID 4, a través del controlador de kernel srvnet).LanmanServer y los controladores srv2 /
srvnet (deteniendo recursivamente cualquier servicio dependiente), imprimiendo cada
paso para visibilidad.Ejemplo de salida:
[445] === Port 445 / SMB takeover ===
[445] Privilege check: running elevated (administrator). OK
[445] Port 445 currently held by PID 4 (System (kernel / srvnet))
[445] Disabling SMB server and releasing port 445...
[445] Stopping 'LanmanServer'...
[445] service 'LanmanServer' stopped
[445] Stopping 'srv2'...
[445] service 'srv2' stopped
[445] Stopping 'srvnet'...
[445] service 'srvnet' stopped
[445] Port 445 is now free. Proceeding to bind.
[445] (Restore SMB later with: net start LanmanServer)
⚠️ Detener estos servicios deshabilita el uso compartido de archivos/impresoras en el host durante la duración del compromiso. Restáurelo después con
net start LanmanServer(los controladores se reinician bajo demanda o en el próximo arranque). Úselo solo en sistemas que esté autorizado a probar.
El reenviador proporciona un registro detallado:
[INFO] Configuration:
Local port: 8080
Remote host: 192.168.1.100
Remote port: 80
Allowed IP: 192.168.1.50 (filtered mode)
Verbose: OFF
[INFO] Listening on port 8080...
[INFO] Press Ctrl+C to stop
[INFO] New connection from 192.168.1.50:54321 ACCEPTED
[INFO] Connected to remote 192.168.1.100:80
[INFO] Connection established, forwarding traffic...
[INFO] Closing connection (Sent: 1024 bytes, Received: 2048 bytes, Total: 3072 bytes)
Cuando la bandera -v está habilitada, también se registran las conexiones rechazadas:
[INFO] Connection from 192.168.1.99:54322 REJECTED (IP not allowed)
Cada conexión genera un hilo de reenvío dedicado que:
El reenviador maneja errores comunes de red de forma grácil:
WSAECONNRESET - Conexión reiniciada por el parWSAECONNABORTED - Conexión abortadaWSAENETRESET - La red causó la desconexiónWSAETIMEDOUT - Tiempo de espera de conexión agotadorunning para cierre limpio⚠️ Notas importantes de seguridad:
[ip_permitida] en producción para restringir el acceso[ERROR] bind() failed: 10048
Solución: Otra aplicación está usando el puerto. Elija un puerto local diferente o detenga el servicio en conflicto.
[ERROR] connect() to remote failed: 10061
Solución: Verifique que el host remoto sea accesible y que el servicio se esté ejecutando en el puerto especificado.
[ERROR] bind() failed: 10013
Solución: Los puertos por debajo de 1024 pueden requerir privilegios de administrador. Ejecute como Administrador o use un número de puerto más alto.
[INFO] Connection from X.X.X.X:XXXXX REJECTED (IP not allowed)
Solución: Habilite el modo detallado (-v) para ver las IPs rechazadas, o elimine el filtrado de IP.
Presione Ctrl+C para detener el reenviador de forma grácil. Hará lo siguiente:
Posibles características para versiones futuras:
Este software se proporciona tal cual para propósitos educativos y de administración legítima de redes. Úselo de manera responsable y en cumplimiento de las leyes y regulaciones aplicables.
¡Las contribuciones son bienvenidas! Por favor, asegúrese de:
Para problemas, preguntas o solicitudes de características, por favor abra un issue en el repositorio del proyecto.
También puede apoyar mi trabajo en Patreon