
أداة إعادة توجيه المنافذ TCP بلغة C
موجه منفذ 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، عبر برنامج تشغيل kernel 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 لإيقاف الموجه بأناقة. سيقوم بـ:
ميزات محتملة للإصدارات المستقبلية:
يتم توفير هذا البرنامج كما هو للأغراض التعليمية ولإدارة الشبكة المشروعة. استخدمه بمسؤولية وامتثالاً للقوانين واللوائح المعمول بها.
المساهمات مرحب بها! يرجى التأكد من:
للاستفسارات أو الأسئلة أو طلبات الميزات، يرجى فتح مشكلة في مستودع المشروع.
يمكنك أيضاً دعم عملي على Patreon