في هذا المقال سأقوم بشرح مثال جديد على قوة أداة Scapy وذلك من خلال توضيح كيفية تنفيذ ARP Discovery. بالطبع نحنُ نعلم أن أن الـARP هو بروتوكول يعمل في الطبقة الثانية، لن أشرح وظيفته فهذا خارج نطاق هذا المقال.
لمن لا يعرف ما هي أداة Scapy، بشكل مبسط هي أداة قوية جدًا تستخدم في العديد من الأمور منها التقاط وتحليل و التلاعب أو حتى إنشاء الـTraffic الخاصة بالشبكة. بالرغم من أنها يمكن استخدامها بشكل منفصل إلا أنها تعتبر أيضًا مكتبة يمكن الاستفادة منها في بايثون.
سأقوم بتنفيذ هذه العملية بين نظامين، أحدهم كالي والأخر ويندوز:
دعنا أولاً نرى مما تتكون حزمة الـARP:
كما يتضح لنا من الصورة السابقة تم تحديد الـMAC والـIP بشكل آلي بحيث تم إعطائهم القيمة الخاصة بالمصدر الذي أعمل عليه وهو في هذه الحالة نظام كالي والذي يملك الـIP والـMAC الموضحين في الصورة السابقة.
بما أننا نعلم الآن تكوين حزمة الـARP، دعنا ننفذ العملية الآن:
سأقوم بإنشاء متغير جديد وأضع قيمته وهي حزمة من نوع ARP، وبعدها سأحدد عنوان الـIP المستهدف من خلال تغيير المتغير الداخلي لحزمة الـARP المسمى بـpdst إلى العنوان الذي أريد إيصال الحزمة إليه وبعدها سأعرض محتويات الحزمة.
كما تلاحظون في الصورة السابقة لقد تغير عنوان الـIP الخاص بالمصدر بالإضافة إلى عنوان الـMAC أيضًا، لماذا!! ذلك لأنني أقوم بتشغيل كرتين شبكة على نظام كالي، الكارت الأول يعمل على النطاق 192.168.1.1 والكارت الثاني يعمل على النطاق 192.168.56.1 ولأنني قمت باستهداف عنوان IP يعمل على النطاق الثاني فتم استخدام الكارت الثاني كمصدر للحزمة.
حتى الآن كل ما قمنا به هو تكوين الحزمة الخاصة بنا المراد إرسالها للهدف، سأقوم الآن باستخدام دالة sr1 وذلك لإرسال الطلب واستقبال أول استجابة من الهدف.
كما هو موضح في الصورة السابقة، فقد قمنا باستقبال أول استجابة من الهدف وبعدها توقفنا عن الإرسال. بالطبع يمكننا الاستغناء عن كل الخطوات السابقة وإرسال نفس الحزمة للهدف ولكن بدون إنشاء متغير جديد لحفظ الطلب الخاص بنا وذلك كما هو موضح في الصورة التالية:
حسنٌ، ماذا في رأيك سيحدث لو قمنا بإرسال الحزمة إلى هدف ليس موجود على النطاق الخاص بنا؟ دعنا نرى ماذا سيحدث!! سأقوم بإنشاء حزم وإرسالها إلى هدف ليس موجود، دعنا نرى ما سيحدث عندما نفعل ذلك!!
هذه هي النتيجة، الانتظار إلى الأبد لحل هذه المشكلة، أما أن نقوم بإيقاف العملية بشكل يدوي كما فعلت في الصورة السابقة وذلك باستخدام الطريقة المعتادة وهي CTRL + C أو يمكننا تحديد مدة معينة لانتظار الاستجابة وذلك باستخدام دالة timeout كما هو موضح في المثال التالي:
كما نرى في الصورة السابقة، فقد تم إيقاف الانتظار بعد ثانيتين وكما نرى فقد تم إرسال 5 حزم ولم يتم استقبال أي استجابات وذلك لأننا نقوم بإرسال الحزم لهدف ليس موجود. يجب عليك وبشدة عندما تستخدم أداة Scapy من خلال بايثون أن تستخدم دالة timeout لأنها ستوفر عليك الكثير من الانتظار.
يمكننا أيضًا حفظ نتيجة الطلب الخاص بنا في متغير نقوم بمعاينة محتواه كما نريد وذلك من خلال الأمر التالي:
الختام: في هذا المقال قمنا باستخدام Scapy لتنفيذ ARP Discovery وذلك للتحقق من إن كان هدفنا يعمل حقًا أم لا.