
C 기반 TCP 포트 포워딩 유틸리티
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인 경우, 바인딩 전에 도구가 자동으로:
srvnet 커널 드라이버를 통해 PID 4의 System).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를 눌러 포워더를 정상적으로 중지합니다. 다음을 수행합니다:
향후 버전에서 추가될 수 있는 기능:
이 소프트웨어는 교육 및 합법적인 네트워크 관리 목적으로 제공됩니다. 관련 법규 및 규정을 준수하여 책임감 있게 사용하십시오.
기여를 환영합니다! 다음을 준수해 주십시오:
문제, 질문 또는 기능 요청이 있으면 프로젝트 저장소에 이슈를 열어 주십시오.
또한 Patreon에서 제 작업을 지원할 수 있습니다.