
Netcat مع اجتياز NAT تلقائي، وP2P آمن، وميزات متقدمة للوصول إلى shell، ونقل الملفات، ووكالة الشبكة.
README باللغة الصينية و الإنجليزية
gonc هي أداة netcat مبنية بلغة Golang، مصممة لتسهيل الاتصال من نظير إلى نظير. تشمل ميزاتها الرئيسية:
🔁 اختراق NAT تلقائي: بدون أي إعدادات. يحتاج الطرفان فقط إلى الاتفاق على عبارة مرور. باستخدام المعامل -p2p، يمكن للنظيرين اكتشاف عناوين الشبكة الخاصة ببعضهما تلقائيًا وإنشاء اتصال نقطة بنقطة عبر اختراق NAT، بالاستفادة من خدمات STUN و MQTT العامة لتبادل العناوين.
🔒 تشفير من طرف إلى طرف مع مصادقة متبادلة: يدعم TLS لاتصالات TCP و DTLS لاتصالات UDP المشفرة، مع مصادقة هوية متبادلة قائمة على عبارة المرور.
🧩 تكوين مرن للخدمات: باستخدام المعامل -e، يمكنك بمرونة ضبط التطبيق لتقديم خدمة لكل اتصال. على سبيل المثال، -e /bin/sh يمكن أن يوفر صدفة أوامر عن بُعد. يمكنك أيضًا استخدام الأوامر الافتراضية المدمجة لتوفير خدمة SOCKS5 مريحة، وخدمة ملفات HTTP، وإعادة توجيه حركة المرور.
gonc: اتصال مباشر P2P مريح بين الأجهزة والشبكات المختلفة ونقل ملفات آمن. ما عليك سوى مشاركة عبارة مرور (أو مسح رمز QR)؛ لا حاجة لسطر الأوامر.استخدمها مثل nc:
gonc www.baidu.com 80
gonc -tls www.baidu.com 443
يمكنها فقط إنشاء اتصالات نقطة بنقطة بناءً على IP والمنفذ.
الآن، يمكنك أيضًا إنشاء اتصالات نقطة بنقطة بناءً على عبارة مرور مشتركة، مع اختراق NAT تلقائي.
يوضح المخطط التالي عملية إنشاء gonc لاتصال P2P بين شبكة نطاق عريض منزلي (NAT صعب) ونظير على شبكة جوال (NAT متماثل). نظرًا لأن كلا الطرفين يمتلكان IPv6، تم استخدام الخيار -4 على كلا الطرفين لإجبار IPv4 من أجل إظهار اختراق NAT.

يتفق الطرفان على نفس عبارة المرور. على جانب المرسل، ابدأ خادم ملفات HTTP لكشف الملفات أو المجلدات المراد مشاركتها. يقبل الخيار -httpserver مسارات متعددة، ويمكن أن يكون كل مسار إما ملفًا واحدًا أو مجلدًا:
gonc -p2p <passphrase> -httpserver c:/RootDir1 c:/RootDir2
على جانب الاستقبال، هناك خياران:
تنزيل المجلد بالكامل تلقائيًا
بعد تشغيل الأمر التالي، سيتم تنزيل جميع الملفات بشكل تكراري إلى الجهاز المحلي. إذا انقطعت العملية، فإن إعادة تشغيل الأمر ستستأنف تلقائيًا من حيث توقفت:
gonc -p2p <passphrase> -download c:/SavePath
التصفح والتنزيل الانتقائي عبر المتصفح
هذا الخيار لا يبدأ التنزيل تلقائيًا. بدلاً من ذلك، تحتاج إلى فتح متصفح يدويًا وزيارة http://127.0.0.1:9999 لعرض قائمة ملفات النظير وتنزيل الملفات حسب الحاجة:
gonc -p2p <passphrase> -httplocal-port 9999
إذا كنت بحاجة إلى تنزيل مجلد فرعي محدد، يصبح المتصفح غير مريح، لكن يمكنك القيام بذلك هكذا:
gonc -http-download c:/SavePath http://127.0.0.1:9999/subdir
أنشئ اتصال P2P مشفرًا آمنًا بين شبكتين مختلفتين بالاتفاق على عبارة مرور (استخدم gonc -psk . لتوليد عبارة مرور عالية العشوائية لتحل محل passphrase). تُستخدم عبارة المرور هذه للاكتشاف المتبادل واشتقاق الشهادات، مما يضمن أمان الاتصال باستخدام TLS 1.3.
gonc -p2p passphrase
على الجانب الآخر، استخدم نفس المعاملات (سيحاول البرنامج تلقائيًا اتصال TCP أو UDP (يفضل TCP)، والتفاوض على الأدوار (عميل/خادم TLS)، وإكمال بروتوكول TLS):
gonc -p2p passphrase
لاحظ أنه إذا تأخر الطرف الآخر في وقت التشغيل، فسيخرج إذا لم يتمكن من العثور على الطرف الآخر لتبادل المعلومات خلال حوالي نصف دقيقة. لذلك، يدعم أيضًا آلية انتظار قائمة على اشتراك رسائل MQTT، باستخدام -mqtt-wait و -mqtt-hello لمزامنة توقيت بدء الطرفين لـ P2P. على سبيل المثال، يستخدم ما يلي -mqtt-wait للانتظار باستمرار،
gonc -p2p passphrase -mqtt-wait
على الجانب الآخر،
gonc -p2p passphrase -mqtt-hello
تحقق من نوع NAT لديك
gonc -nat-checker
سيتحقق هذا من عناوين NAT الخاصة بـ IPv6 و IPv4 TCP و UDP ويحلل تغييرات المنافذ بعد NAT. إذا لم يتم إدراج أي عناوين TCP6 أو UDP6، فهذا يعني أنك لا تمتلك IPv6. ينتهي كل عنوان بروتوكول بـ "(easy)"، مما يشير إلى أعلى معدل نجاح لاختراق الثقوب؛ "(hard)" يشير إلى معدل نجاح أعلى؛ و"(symm)" هو الأصعب. يتطلب النوع المتماثل أن يكون الطرف الآخر إما "easy" أو "hard" لكي يعمل P2P.
-keep-open، يقبل اتصالًا واحدًا فقط؛ بدون مصادقة باستخدام -psk):
gonc -tls -exec ":sh /bin/bash" -l 1234
gonc -tls -pty x.x.x.x 1234
passphrase تُستخدم للمصادقة، مما يضمن اتصالًا آمنًا باستخدام TLS 1.3):
gonc -exec ":sh /bin/bash" -p2p passphrase
على الجانب الآخر:
gonc -pty -p2p passphrase
/dev/zero و /dev/urandom مدمجان):
gonc.exe -send /dev/zero -P x.x.x.x 1234
مثال على المخرجات:
IN: 76.8 MiB (80543744 bytes), 3.3 MiB/s | OUT: 0.0 B (0 bytes), 0.0 B/s | 00:00:23
على جانب الاستقبال:
gonc -P -l 1234 > NUL
انتظر حتى يتم إنشاء النفق:
gonc -p2p passphrase -linkagent
على الجانب الآخر، ابدأ خدمة وكيل SOCKS5 / HTTP محلية على المنفذ 3080 للوصول إلى الشبكة البعيدة:
# The link option controls how the local and remote proxy endpoints are created.
# Use none to indicate that no listening port is opened on that side:
gonc -p2p passphrase -link "3080;none"
بعد ذلك، على سبيل المثال، إذا كنت تريد الاتصال بـ 10.0.0.1:3389 في الشبكة البعيدة، يمكنك ببساطة إدخال العنوان التالي في عميل سطح المكتب البعيد المحلي:
10.0.0.1-3389.gonc.cc:3080
سيتم تحويل هذا النطاق إلى IP بالشكل 127.b.c.d. ونتيجة لذلك، سيتصل عميل سطح المكتب البعيد بوكيل SOCKS5 المحلي على المنفذ 3080، ثم سيقوم gonc بإجراء تحليل عكسي لعنوان 127.b.c.d لاستخراج المعلومات 10.0.0.1-3389 من اسم النطاق.
تنسيق تكوين link
# Based on the established tunnel, both local and remote sides listen on port 1080.
# The proxy supports both HTTP and SOCKS5 protocols, with transparent proxy capability enabled.
gonc -p2p <passphrase> -link "1080;1080"
# Below is the configuration method for the URL format. The parameter value of -link must be enclosed in quotes; otherwise, parsing problems may occur.
# The left side x://0.0.0.0:1080?tproxy=1 is equivalent to simply writing 1080.
# The right side enables port 1080 on the remote host, without transparent proxy support.
gonc -p2p <passphrase> -link "x://0.0.0.0:1080?tproxy=1;x://127.0.0.1:1080"
# The left side f://127.0.0.1:1080?to=1.2.3.4:80
# means listening locally on port 1080 and forwarding traffic to 1.2.3.4:80 on the remote side.
# The right side 'none' indicates that no port is opened remotely.
gonc -p2p <passphrase> -link "f://127.0.0.1:1080?to=1.2.3.4:80;none"
# The right side f://0.0.0.0:80?to=127.0.0.1:80
# means listening on port 80 on the remote side and forwarding traffic back to 127.0.0.1:80 locally.
gonc -p2p <passphrase> -link "none;f://0.0.0.0:80?to=127.0.0.1:80"
# The left side x+tls means the proxy protocol with TLS encryption and allows for certificate configuration. The right side specifies the outbound IP address via `outbound_bind` (suitable for multi-IP environments).
gonc -p2p <口令> -link "x+tls://user:[email protected]:1080?cert=ca.pem&key=key.pem;none?outbound_bind=10.0.0.5"