
Utilitário de Encaminhamento de Portas TCP em C
Um encaminhador de portas TCP de alto desempenho para Windows com opções de lista de permissões de IP e logs detalhados.
cl PortForwarder.c /Fe:PortForwarder.exe ws2_32.lib
gcc PortForwarder.c -o PortForwarder.exe -lws2_32
PortForwarder.exe <porta_local> <host_remoto> <porta_remota> [ip_permitido] [-v]
<porta_local> - Porta local para escutar (1-65535)<host_remoto> - Nome do host ou endereço IP remoto para onde encaminhar o tráfego<porta_remota> - Porta remota para onde encaminhar o tráfego (1-65535)[ip_permitido] - Opcional - Aceitar conexões apenas deste endereço IP[-v] - Opcional - Ativar modo detalhado (mostrar conexões rejeitadas)Encaminhar a porta local 8080 para o servidor remoto 192.168.1.100 porta 80:
PortForwarder.exe 8080 192.168.1.100 80
Aceitar conexões apenas de 192.168.1.50:
PortForwarder.exe 8080 192.168.1.100 80 192.168.1.50
Mostrar tentativas de conexão rejeitadas:
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
Escutar na porta SMB 445 e encaminhar para um endpoint SMB remoto. Quando 445 for a
porta local, a ferramenta primeiro libera a porta do servidor SMB interno do Windows:
PortForwarder.exe 445 10.0.0.50 445 192.168.1.100
Quando a porta local é 445, antes de vincular, a ferramenta irá automaticamente:
System, PID 4, através do driver de kernel srvnet).LanmanServer e os drivers srv2 /
srvnet (parando recursivamente quaisquer serviços dependentes), exibindo cada
etapa para visibilidade.Exemplo de saída:
[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)
⚠️ Parar estes serviços desabilita o compartilhamento de arquivos/impressoras no host durante o compromisso. Restaure-o posteriormente com
net start LanmanServer(os drivers reiniciam sob demanda ou na próxima reinicialização). Use apenas em sistemas que você está autorizado a testar.
O encaminhador fornece logs detalhados:
[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)
Quando a flag -v está habilitada, as conexões rejeitadas também são registradas:
[INFO] Connection from 192.168.1.99:54322 REJECTED (IP not allowed)
Cada conexão cria uma thread de encaminhamento dedicada que:
O encaminhador lida graciosamente com erros comuns de rede:
WSAECONNRESET - Conexão reiniciada pelo peerWSAECONNABORTED - Conexão abortadaWSAENETRESET - Rede causou desconexãoWSAETIMEDOUT - Tempo limite da conexão excedidorunning volátil para desligamento limpo⚠️ Notas Importantes de Segurança:
[ip_permitido] em produção para restringir o acesso[ERROR] bind() failed: 10048
Solução: Outra aplicação está usando a porta. Escolha uma porta local diferente ou pare o serviço conflitante.
[ERROR] connect() to remote failed: 10061
Solução: Verifique se o host remoto está acessível e se o serviço está em execução na porta especificada.
[ERROR] bind() failed: 10013
Solução: Portas abaixo de 1024 podem exigir privilégios de administrador. Execute como Administrador ou use um número de porta mais alto.
[INFO] Connection from X.X.X.X:XXXXX REJECTED (IP not allowed)
Solução: Ative o modo detalhado (-v) para ver os IPs rejeitados ou remova a filtragem de IP.
Pressione Ctrl+C para parar graciosamente o encaminhador. Ele irá:
Possíveis recursos para versões futuras:
Este software é fornecido "como está" para fins educacionais e de administração legítima de redes. Use com responsabilidade e em conformidade com as leis e regulamentos aplicáveis.
Contribuições são bem-vindas! Por favor, certifique-se de que:
Para problemas, perguntas ou solicitações de recursos, abra uma issue no repositório do projeto.
Você também pode apoiar meu trabalho no Patreon