
C में TCP पोर्ट फ़ॉरवर्डिंग उपयोगिता
विंडोज के लिए एक उच्च-प्रदर्शन 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 स्थानीय पोर्ट होता है तो टूल पहले विंडोज के अंतर्निहित 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)
समाधान: अस्वीकृत IP देखने के लिए वर्बोज़ मोड (-v) सक्षम करें, या IP फ़िल्टरिंग हटाएं।
फ़ॉरवर्डर को सुचारू रूप से रोकने के लिए Ctrl+C दबाएं। यह:
भविष्य के संस्करणों के लिए संभावित सुविधाएं:
यह सॉफ़्टवेयर शैक्षिक और वैध नेटवर्क प्रशासन उद्देश्यों के लिए 'जैसा है' प्रदान किया गया है। जिम्मेदारी से और लागू कानूनों और विनियमों के अनुपालन में उपयोग करें।
योगदान का स्वागत है! कृपया सुनिश्चित करें:
समस्याओं, प्रश्नों या सुविधा अनुरोधों के लिए, कृपया प्रोजेक्ट रिपॉजिटरी पर एक इश्यू खोलें।
आप Patreon पर मेरे काम का समर्थन भी कर सकते हैं