一款高性能的 Windows TCP 端口转发工具,支持可选的 IP 白名单和详细日志功能。
cl PortForwarder.c /Fe:PortForwarder.exe ws2_32.lib
gcc PortForwarder.c -o PortForwarder.exe -lws2_32
PortForwarder.exe <local_port> <remote_host> <remote_port> [allowed_ip] [-v]
<local_port> - 监听本地的端口(1-65535)<remote_host> - 转发流量的远程主机名或 IP 地址<remote_port> - 转发流量的远程端口(1-65535)[allowed_ip] - 可选 - 仅接受来自此 IP 地址的连接[-v] - 可选 - 启用详细模式(显示被拒绝的连接)将本地端口 8080 转发至远程服务器 192.168.1.100 的端口 80:
PortForwarder.exe 8080 192.168.1.100 80
仅接受来自 192.168.1.50 的连接:
PortForwarder.exe 8080 192.168.1.100 80 192.168.1.50
显示被拒绝的连接尝试:
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
监听 SMB 端口 445 并转发至远程 SMB 端点。当本地端口为 445 时,工具会首先从 Windows 内置 SMB 服务器释放该端口:
PortForwarder.exe 445 10.0.0.50 445 192.168.1.100
当本地端口为 445 时,在绑定前工具会自动:
System,PID 4,通过 srvnet 内核驱动)。LanmanServer 以及 srv2 / srvnet 驱动(递归停止所有依赖服务),并输出每一步以供查看。示例输出:
[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)
⚠️ 停止这些服务将在测试期间禁用主机上的文件/打印机共享。之后使用
net start LanmanServer恢复(驱动会在需要时或下次启动时重新启动)。仅在你获得授权测试的系统上使用。
转发器提供详细日志:
[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)
当启用 -v 标志时,被拒绝的连接也会被记录:
[INFO] Connection from 192.168.1.99:54322 REJECTED (IP not allowed)
每个连接会生成一个专用的转发线程,该线程:
转发器能优雅处理常见网络错误:
WSAECONNRESET - 对端重置连接WSAECONNABORTED - 连接中止WSAENETRESET - 网络导致断开WSAETIMEDOUT - 连接超时running 标志实现干净关闭⚠️ 重要安全提示:
[allowed_ip] 参数限制访问[ERROR] bind() failed: 10048
解决方案:其他应用程序正在使用该端口。请选择不同的本地端口或停止冲突的服务。
[ERROR] connect() to remote failed: 10061
解决方案:请确认远程主机可达,并且服务在指定端口上运行。
[ERROR] bind() failed: 10013
解决方案:1024 以下端口可能需要管理员权限。请以管理员身份运行或使用更高端口号。
[INFO] Connection from X.X.X.X:XXXXX REJECTED (IP not allowed)
解决方案:启用详细模式(-v)查看被拒绝的 IP,或移除 IP 过滤。
按下 Ctrl+C 可优雅停止转发器。它将:
未来版本可能增加的功能:
本软件按“原样”提供,用于教育及合法的网络管理目的。请负责任地使用并遵守适用法律法规。
欢迎贡献!请确保:
如有问题、疑问或功能请求,请在项目仓库中提交 issue。
你也可以通过 Patreon 支持我的工作。