جدول المحتويات:

Netcat بلغة Python: 6 خطوات
Netcat بلغة Python: 6 خطوات

فيديو: Netcat بلغة Python: 6 خطوات

فيديو: Netcat بلغة Python: 6 خطوات
فيديو: تعلم البرمجة بلغة بايثون 2024, شهر نوفمبر
Anonim
نت كات في بايثون
نت كات في بايثون

ما هو النت كات؟ تقول الصفحة اليدوية لـ netcat ما يلي: "تُستخدم الأداة المساعدة nc (أو netcat) لأي شيء تقريبًا يتضمن منافذ مجال TCP أو UDP أو UNIX. يمكنها فتح اتصالات TCP ، وإرسال حزم UDP ، والاستماع بشكل عشوائي منافذ TCP و UDP ، قم بمسح المنفذ ، والتعامل مع كل من IPv4 و IPv6. على عكس telnet (1) ، فإن البرامج النصية nc بشكل جيد ، وتفصل رسائل الخطأ إلى خطأ قياسي بدلاً من إرسالها إلى الإخراج القياسي ، كما تفعل telnet (1) مع بعضها"

في الأساس ، يسمح لك netcat بالاتصال بخوادم أخرى باستخدام بروتوكول TCP أو UDP. يشير TCP إلى بروتوكول التحكم في الإرسال ، وهو موجه للاتصال. يرمز UDP إلى بروتوكول مخطط البيانات العالمي ، وهو غير متصل. يستخدم TCP بشكل شائع لتطبيقات الإنترنت ، بينما يستخدم UDP لدفق الوسائط أو الشبكات الافتراضية الخاصة.

الخطوة 1: كيف نبدأ؟

كيف نبدأ؟
كيف نبدأ؟

أعلاه هو كيف يتم استدعاء netcat. يمكنك أن ترى أن هناك وسيطتين في النهاية تسمى "الوجهة" و "المنفذ". تشير الوجهة إلى اسم مضيف أو عنوان IP للخادم الذي نحاول الاتصال به ، بينما يشير المنفذ إلى منفذ الخادم الذي نحاول الاتصال به.

الخطوة 2: لنبدأ

هيا نبدأ
هيا نبدأ

أعلاه هو بعض كود بيثون البداية. كما ترى ، نريد معالجة الحجج إلى البرنامج بشكل مشابه لكيفية عمل الأداة المساعدة الفعلية. سيكون اسم المضيف هو الوسيطة الأولى بعد اسم الملف التنفيذي ، بينما سيكون المنفذ هو الوسيط الثاني بعد اسم الملف التنفيذي في سطر الأوامر.

الخطوة 3: إنشاء اتصال

إنشاء اتصال
إنشاء اتصال

لنقم بإنشاء دالة netcat يمكننا استخدامها. ما نقوم به هنا بشكل أساسي هو إنشاء مقبس والاتصال بالخادم باستخدام المعلمات المعطاة. بالنسبة لأمر netcat ، المعلمات الحالية هي اسم المضيف ومنفذ الخادم الذي نحاول الاتصال به. يحتوي المقبس على المعلمات "socket. AF_INET" و "socket. SOCK_STREAM" لأننا نتجه بشكل افتراضي إلى اتصال TCP لهذا البرنامج التعليمي.

الخطوة 4: لنرسل بعض المحتوى

يتيح إرسال بعض المحتوى
يتيح إرسال بعض المحتوى

قمنا بتوسيع وظيفة netcat الخاصة بنا لتتخذ معاملاً ثالثًا ، "المحتوى". يوجد الكثير من المحتوى هنا ، لذا دعونا نقسمه حسب رقم السطر.

السطر 14-16: نرسل كل المحتوى عبر المقبس ، ننتظر قليلاً ، ثم نغلق المقبس لأي بيانات صادرة حتى يعرف المقبس أنه لا يوجد المزيد من البيانات القادمة.

السطر 18-26: نقوم بإنشاء مخزن مؤقت لتخزين استجابة الخادم ، وبينما يتلقى المقبس البيانات ، نلحق ما يصل إلى 1024 بايت من البيانات بالنتيجة طالما أن هناك بيانات للقراءة.

السطر 28-29: نريد أن يكون اتصال netcat هذا اتصالاً لمرة واحدة ، لذلك نعلن أن الاتصال مغلق ثم نغلق الاتصال.

السطر 31: هذا طلب HTTP قياسي. إذا قمت بتشغيل الشفرة باستخدام وسيطتي سطر الأوامر "google.com" و "80" ، فسترى استجابة HTTP مناسبة

الخطوة 5: يتيح اتصالاً مفتوحًا

يتيح اتصال مفتوح
يتيح اتصال مفتوح

الكود أعلاه (الموجود أسفل الكود من القسم السابق) يسمح لنا ببساطة بتشغيل أوامر netcat متعددة عبر اتصال شبه مفتوح. (في الواقع ، في كل مرة تقوم فيها بتشغيل أمر ما ، فإنه يفتح ثم يغلق اتصال TCP جديد ، لذلك فهو لا يحاكي فعلاً سلوك netcat ، فنحن نقوم بذلك ببساطة لأغراض التعلم). دعنا نقسم هذا سطرًا بسطر أيضًا:

السطر 31: نريد قراءة الأوامر إلى أجل غير مسمى من أجل الحفاظ على "التفاعل"

السطر 32: هذا هو المخزن المؤقت الخاص بنا الذي سيخزن محتوى طلبنا

السطر 36-45: سنقرأ في المخزن المؤقت حتى نقرأ سطرًا فارغًا

السطر 48: نحن ببساطة نطلق على وظيفة netcat الخاصة بنا باسم المضيف والمنفذ والمحتوى الذي تم إنشاؤه حديثًا (والذي تم ترميزه بشكل صحيح)

السطر 50: إذا كان محتوى المخزن المؤقت الخاص بنا يحتوي على "اتصال: إغلاق" (للإشارة إلى أننا نريد إغلاق الاتصال) ، فإننا ببساطة نخرج من الحلقة

الخطوة السادسة: الخاتمة

في نهاية هذا البرنامج التعليمي ، يجب أن يكون لديك حد أدنى من تنفيذ netcat. سأترك الأمر للمستخدم لتنفيذ ميزات مثل:

1. دعم البروتوكولات الأخرى

2. إصلاح الكود لعدم إغلاق الاتصال في كل مرة

3. إضافة العلامات التي يجب على netcat بالفعل تعديل السلوك

موصى به: