مكتبة سكابي scapy في لغة بايثون
مكتبة ( scapy ) هي مكتبة رائعة و قوية في إجراء عمليات السنيفنغ sniffing على حزم الشبكات و التعديل عليها. درسنا اليوم عن الـ sniffing لكن يتركز على مكتبة scapy و تحدثت سابقاً بأن هذه المكتبة افضل بيئة للعمل عليها هي لينكس لضمان عدم حدوث أي مشاكل نهائياً و إنها مكتبة قوية في مجالها و هي تتعامل مع حزم الشبكات في الدرجة الأولى حيث يمكنها إعادة صياغة و فك الشيفرات لمجموعة كبيرة من الحزم للبروتوكولات المختلفة ثم تقوم بإلتقاط هذه الحزم و إعادة إرسالها إلى الشبكة.
يمكن لمكتبة سكابي scapy مسح الشبكة و تتبع مسار الشبكة و فحص الوحدات في الشبكة و الهجمات.
- يمكن لمكتبة سكابي scapy أن تقوم بما يقارب 80% من عمل أداة nmap و tcpdump و العديد من العمليات.
- يمكن لمكتبة سكابي حقن الإطار 802.11 و فك تشفير voip على القنوات المشفرة WEP.
مكتبة Scapy هي إحدى المكتبات الشهيرة في لغة Python لمعالجة حزم الشبكة. وتُستخدم هذه المكتبة على نطاق واسع في مجال تحليل حركة الشبكة وأمن المعلومات.
بعض الخصائص الرئيسية لمكتبة Scapy:
- بناء وتحليل الحزم: تسمح لك Scapy ببناء وتحليل حزم الشبكة بطريقة برمجية. يمكنك تعريف الحزم المخصصة والتعامل معها.
- البث والمسح: باستخدام Scapy، يمكنك إجراء عمليات البث والمسح على الشبكة لاستكشاف الأجهزة والخدمات النشطة.
- هجمات الشبكة: Scapy تُمكِّنك من تنفيذ العديد من هجمات الشبكة مثل Man-in-the-Middle و ARP Poisoning و DNS Spoofing وغيرها.
- التشغيل المتعدد: Scapy يدعم التشغيل المتعدد للحزم، مما يُسهِّل إجراء عمليات المسح والهجوم بشكل متزامن.
- برامج الإضافة: Scapy توفر أدوات إضافية للقيام بمهام متخصصة مثل تحليل البريد الإلكتروني وتحليل الخوارزميات الأمنية.
في ما يلي مثال على استخدام Scapy لإرسال حزمة ICMP Ping:
from scapy.all import *
# إرسال حزمة ICMP Ping
packet = IP(dst="8.8.8.8")/ICMP()
response = sr1(packet, timeout=2, verbose=0)
if response:
print(f"الجهاز {response.src} متاح على الشبكة")
else:
print("لا استجابة من الجهاز المستهدف")
هذا المثال يُظهِر كيفية استخدام Scapy لإرسال حزمة ICMP Ping إلى عنوان IP 8.8.8.8 والتحقق من وصول الاستجابة. Scapy توفر الكثير من الإمكانيات الأخرى للتعامل مع حزم الشبكة وتحليلها.
كيفية تثبيت مكتبة سكابي scapy
1- يجب أن يكون لدينا python3 و نستخدم الأمر التالي.
sudo apt-get install python3-pip
بهذا الأمر سوف يُخبرنا أنها مثبتة لأن البايثون3 مثبتة من الأساس في لينكس.
2- نستخدم الأمر التالي لتنزيل scapy.
pip install scapy-python3
بهذه الخطوة سوف يبدأ بتنزيل المكتبة لكن سيطال الأمر قليلاً حتى يتم الاتصال connection.
نقوم بفتح الشل python3 بصلاحيات الروت و نكتب
>>> from scapy.all import * >>> def pk_print(pkt): pkt.show() >>> sniff(iface="eth0" ,prn=pk_print,filter="tcp",store=0)
في البداية إستدعينا كل* مكتبة scapy عبر الأمر scapy.all و سوف ينتظر قليلاً حتى يستدعيها و بعده بدأنا بكتابة دالة لإستقبال البيانات بشكل دائم من pkt و طبعها, و بعدها كتبنا show.pkt يعني إعرض لنا الـ pkt. الـ iface هي الإنترفيس لدينا و أتينا بها من الأمر ifconfig.
و prn هي إسم الدالة و filter هي البيانات التي نُريد إستخراجها من عملية sniffing, و عند حدوث أي إتصال tcp سوف يبدأ السكربت بالعمل مثلاً نفتح تيرمنال جديدة و نعمل فحص عن طريق أداة nmap لموقع ما و نرى بأن السكربت بدأ يعمل بشكل طبيعي, و نستطيع تبديل الإتصال إلى icmp ايضاً لرصد إتصالات ICMP مثلاً عمل ping لموقع ما.
مكتبة scapy افضل بيئة لها لينكس و مكتبة socket الويندوز.