نقل Netcat في Node.js. استخدام سطر الأوامر.
لتضمينه في تطبيق Node.js، استخدم حزمة netcat بدلاً من ذلك. من المفترض أن يتم استخدام هذا كأداة مستقلة، لكنه لا يساوي تمامًا التنفيذ الأصلي لـ netcat.
لينكس | نظام التشغيل ماك | ويندوز |
---|---|---|
$ npm install -g nc
$ nc -l -p port [- options] [hostname] [port]
الخيارات المتاحة:
-c shell commands as `-e’; use /bin/sh to exec [dangerous!!]
-e filename program to exec after connect [dangerous!!]
-b allow broadcasts
-h this cruft
-i secs delay interval for lines sent, ports scanned
-k set keepalive option on socket
-l listen mode, for inbound connects
-n numeric-only IP addresses, no DNS
-o file hex dump of traffic
-p port local port number
-r randomize local and remote ports
-s addr local source address
-u UDP mode
-U Listen or connect to a UNIX domain socket
-v verbose
-w secs timeout for connects and final net reads (client-side)
-z zero-I/O mode [used for scanning]
$ nc -l -p 2389
$ nc localhost 2389
فتح اتصال خام بالمنفذ 2389
.
جانب الخادم | جانب العميل |
---|---|
nc -l 2389 > test | cat testfile | nc localhost 2389 |
$ nc -w 10 localhost 2389
سيتم إنهاء الاتصال أعلاه بعد 10 ثوانٍ.
$ nc -kl 2389
وبهذه الطريقة يظل الخادم قائمًا حتى لو تم قطع اتصال العميل.
الأمر الأكثر إثارة هو الحصول على غلاف سريع يعمل على جهاز بعيد باستخدام خيار -l
أو خيار listen
وخيار -e
أو execute
. عند إجراء اتصال، يقوم Netcat بتنفيذ البرنامج الذي تختاره ويربط stdin
و stdout
الخاصين بالبرنامج باتصال الشبكة.
$ nc -l -p 23 -e /bin/sh
لنقم بإنشاء ملف طلب HTTP get.txt
الذي يحتوي على السطر التالي ثم سطرًا فارغًا:
GET / HTTP/1.0
لاستخدام Netcat لاسترداد الصفحة الرئيسية لموقع ويب، استخدم:
$ nc -v www.website.com 80 < get.txt
سترى أن Netcat يجري اتصالاً بالمنفذ 80، ويرسل النص الموجود في الملف get.txt
، ثم يُخرج استجابة خادم الويب لـ stdout
.
في السيناريو العادي، إذا قطع اتصال عميل nc، فلن يقوم بإعادة محاولة الاتصال. باستخدام المعلمة --retry <secs>
أو -R <secs>
، ستتم إعادة محاولة الاتصال بعد عدة ثوانٍ.
$ nc -R 5 localhost 2389
إذا كان لديك عامل إرساء، فلنحاول إدراج صور حاوياتنا المتصلة بملف مأخذ التوصيل الخاص بـ docker unix:
$ echo -e " GET /images/json HTTP/1.0rn " | nc -U /var/run/docker.sock
ملاحظة: في هذا المثال، أذونات الجذر مطلوبة: sudo su
.
$ mkfifo /tmp/fifo
$ nc -l -k -p 8080 < /tmp/fifo | nc website.com 80 > /tmp/fifo
$ nc -z 192.168.1.100 1-255
إذا استخدمت الخيار -o
، فيمكنك تفريغ كل حركة المرور السداسية.
$ nc 127.0.0.1 4445 -o /tmp/log.txt
بشكل افتراضي، كافة المقابس التي تنشئها الأداة المساعدة nc هي بروتوكولات TCP ولكن هذه الأداة المساعدة تعمل أيضًا مع بروتوكول UDP. لتمكين بروتوكول UDP، يتم استخدام العلامة -u.
جانب الخادم | جانب العميل |
---|---|
nc -u -l -p 2389 | nc -u localhost 2389 |
$ echo 'message' | nc -w 1 -u 192.168.1.111 514
قم بالتوجيه عبر UDP (-u) مع وقت انتظار (-w) قدره ثانية واحدة إلى 192.168.1.111
على المنفذ 514
.
يتطابق التصحيح مع الوضع المطول. يمكنك تمكينه باستخدام المعلمة -v
أو env var DEBUG=nc
. تستخدم هذه الوحدة تطبيق عقدة netcat أسفل الغطاء، لتصحيح الأخطاء، استخدم كلاً من: DEBUG=netcat:*,nc
.
روكو موسولينو (@روكوموسو)