اهلا ومرحبا بكم في مدونه : Cyber1101 انظم للمجتمع

مكتبة scapy python

 




مكتبة scapy بايثون


تعتبر مكتبة Scapy لغة بايثون أحد الأدوات الرائعة في مجال تطوير واختبار شبكات الحاسوب. تم تصميمها خصيصًا للعمل على شبكات TCP/IP وتساعد المبرمجين على إنشاء وإرسال وتحليل حزم البيانات في الشبكة.

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

يمكن استخدام مكتبة Scapy في مجموعة متنوعة من المهام، بما في ذلك اختبار الأمان، وكشف الثغرات، وعمليات التحليل والمراقبة والتصحيح في الشبكات.

استخدام مكتبة scapy


تستخدم مكتبة Scapy في لغة Python لإنشاء وتحليل حركة الشبكة. تسمح هذه المكتبة للمطورين بإرسال واستقبال حزم البيانات في شبكات TCP/IP، والتلاعب بها، وتحليلها. يمكن استخدام Scapy في إنشاء أدوات اختبار الأمان والدفاع عن الشبكات وفحص الثغرات.

لتثبيت Scapy باستخدام pip، يمكنك فتح محرر الأوامر وإدخال الأمر التالي:

pip install scapy



بعد التثبيت، يمكنك استيراد Scapy في برنامج Python الخاص بك مع الأمر التالي:

from scapy.all import *



يمكنك الآن استخدام وظائف Scapy لإنشاء وتحليل حركة الشبكة.

دوال مكتبة scapy 


مكتبة Scapy هي مكتبة برمجية للعمل مع حزم الشبكات في Python. وهي توفر العديد من الدوال المفيدة لعمليات التحليل والاختبار على حزم الشبكات. ومن بين هذه الدوال:


sr()

 دالة لإرسال حزم واستقبال الردود. تستخدم لإجراء اختبارات الشبكة والتحقق من الاتصال.


sniff()

دالة لاستقبال حزم شبكة. تستخدم لمراقبة حركة البيانات والتحليل.


Ether()

 دالة لإنشاء حزم Ethernet.


IP()

 دالة لإنشاء حزم IP.


TCP()

 دالة لإنشاء حزم TCP.


UDP()

دالة لإنشاء حزم UDP.


ICMP()

 دالة لإنشاء حزم ICMP.


ARP()

 دالة لإنشاء حزم ARP.


sendp()

 دالة لإرسال حزم باستخدام واجهة الشبكة المحددة.


wrpcap()

 دالة لحفظ حزم الشبكة في ملف pcap.

هذه بعض الأمثلة على استخدام هذه الدوال:

from scapy.all import *
# Send and receive packets
ans, unans = sr(IP(dst="www.google.com")/ICMP())
# Sniff packets
packets = sniff(filter="tcp", count=10) # Create and send Ethernet packet packet = Ether(dst="00:11:22:33:44:55")/IP(dst="www.google.com")/TCP() sendp(packet) # Save packets to a pcap file wrpcap("packets.pcap", packets)


دالة sr() 


دالة sr() هي دالة موجودة في مكتبة scapy للبايثون، وهي تستخدم لإرسال طلبات ARP و ICMP في الشبكة واستقبال الردود عليها.

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

على سبيل المثال، يمكن استخدام الدالة sr() لإرسال طلب ARP لطلب عنوان MAC لعنوان IP محدد على الشبكة، كما يلي:

from scapy.all import sr, ARP
# Define the target IP address
target_ip = "192.168.1.1"
# Create an ARP request packet
arp_request = ARP(pdst=target_ip)
# Send the packet and receive the response
response, _ = sr(arp_request)



في هذا المثال، تم استخدام الدالة sr() لإرسال طلب ARP للحصول على عنوان MAC لجهاز يستخدم عنوان IP 192.168.1.1، وتم استقبال الردود على هذا الطلب وحفظها في المتغير response.

دالة Ether() 


دالة Ether() هي وظيفة في مكتبة Scapy للبناء والتحليل الفعال لحزم الشبكات. تستخدم هذه الدالة لإنشاء عنوان Ethernet. وهي تأخذ عنوان MAC المستهدف والمرسل كمدخلات.


فيما يلي مثال بسيط يستخدم دالة Ether() في Scapy:


from scapy.all import Ether
# create an Ethernet frame with source and destination addresses
ether_frame = Ether(src='00:11:22:33:44:55', dst='66:77:88:99:AA:BB')



وفي هذا المثال يتم إنشاء إطار Ethernet جديد باستخدام عناوين MAC محددة.

دالة sniff() 


دالة sniff() في مكتبة Scapy للبيثون تستخدم لاستقبال حزم (packets) من الشبكة. يمكن استخدام هذه الدالة للاستماع إلى حزم المرور الشبكي وتحليلها وتفسيرها بطريقة مخصصة.


وهذه بعض المعلمات التي يمكن تعيينها عند استخدام دالة sniff() :


  • - count : يحدد عدد الحزم التي سوف يتم استقبالها.
  • - filter : يمكن استخدامه لتحديد نوع الحزم الشبكية التي تريد استقبالها.
  • - iface : يمكن استخدامه لتحديد واجهة الشبكة التي تريد الاستماع إليها.


وهذا مثال بسيط يوضح كيفية استخدام دالة sniff() :


from scapy.all import *
def packet_callback(packet):
    print(packet.show())
    sniff(prn=packet_callback, count=1)



في هذا المثال، تم تعريف دالة packet_callback() التي تقوم بطباعة معلومات الحزمة المرورية في الشبكة باستخدام الدالة show() . تم استدعاء دالة sniff() بوضع معلمة prn لتمرير دالة packet_callback() كوظيفة التشغيل ومعلمة count لتحديد عدد الحزم التي يجب استقبالها (في هذه الحالة، تم تحديد 1).


دالة IP()


دالة IP() في مكتبة scapy بايثون تستخدم لإنشاء حزم IP. تأخذ عدة مدخلات، بما في ذلك العنوان المرسل، والعنوان المستقبلي، وبعض الأوامر الإضافية مثل التحكم في نوع الخدمة (TOS) والطول الكلي للحزمة. يمكن استخدامها لإنشاء حزم IP بشكل برمجي وإضافة بيانات إضافية إلى رأس الحزمة. وفيما يلي مثال عن كيفية استخدام دالة IP():

from scapy.all import *
ip = IP(src="192.168.1.1", dst="192.168.1.2")
packet = ip/ICMP()
send(packet)



في هذا المثال، يتم إنشاء حزمة IP بعنوان المرسل "192.168.1.1" وعنوان المستقبل "192.168.1.2". تم إضافة بروتوكول ICMP إلى الحزمة بواسطة العامل '/'، ثم تم إرسال الحزمة باستخدام دالة send().

دالة TCP()


دالة TCP() هي وظيفة في مكتبة scapy للتعامل مع بروتوكول النقل (TCP) في إطار بروتوكول الإنترنت. يمكن استخدامها لإنشاء حزم TCP وإضافة بيانات إلى تلك الحزم.

فيما يلي مثال عن استخدام دالة TCP() في scapy:

from scapy.all import *
packet = IP(dst="www.example.com")/TCP(sport=12345, dport=80)/"GET / HTTP/1.1\r\nHost: www.example.com\r\n\r\n"
send(packet)



يتم استخدام TCP() هنا لإنشاء حزمة TCP وتعيين منفذ مصدر (sport) ومنفذ وجهة (dport) وإضافة بيانات GET لطلب المورد الأساسي من المضيف www.example.com. يتم إرسال الحزمة باستخدام send().

دالة UDP()


دالة UDP() في مكتبة Scapy لغة بايثون هي دالة تستخدم لإنشاء حزم بروتوكول User Datagram Protocol (UDP) باستخدام Scapy.

تأخذ هذه الدالة آرغمانات مختلفة من بينها:

  • - dport: وهو رقم المنفذ الهدف الذي يجب أن يصل إليه الحزمة.
  • - sport: وهو رقم المنفذ المرسل.
  • - len: وهو طول الحزمة.
  • - chksum: وهو قيمة التحقق من الصحة لحزمة UDP.

يمكن استخدام دالة UDP() لإنشاء حزم UDP والعمل عليها باستخدام مكتبة Scapy. على سبيل المثال، يمكن استخدام UDP() كجزء من برنامج Python لبناء حزم UDP مخصصة وإرسالها إلى جهاز آخر.

دالة ICMP()


دالة ICMP() في مكتبة scapy بايثون هي دالة تستخدم لإنشاء حزم الرسائل التحكم في بروتوكول الإنترنت (ICMP)، وهي عبارة عن بروتوكول يستخدم لتبادل الرسائل بين جهازي كمبيوتر على شبكة الإنترنت.

تستخدم دالة ICMP() في مكتبة scapy لإنشاء حزم ICMP، ويمكن استخدامها في أغراض مختلفة مثل اختبارات الشبكة، وفحص إتصال الشبكة، وفحص سلامة الشبكة. ويمكن استخدام هذه الدالة لإرسال رسائل الطلب والاستجابة (Ping)، وفحص صحة وجودة الاتصال بين الأجهزة على الشبكة.

يمكن استخدام دالة ICMP() في مكتبة scapy على النحو التالي:

from scapy.all import *
packet = IP(dst="192.168.1.1")/ICMP()
response = sr1(packet, timeout=2)
if response:
    response.show()
else:
    print("No response received!")



في هذا المثال، تم استخدام دالة ICMP() لإنشاء حزمة ICMP التي سترسل إلى عنوان IP المحدد والتي ستكون فارغة. ثم تم استخدام دالة sr1() لإرسال الحزمة، وإذا تم الرد عليها في الوقت المحدد، يتم عرض الاستجابة باستخدام دالة show()، وإلا فإنه يتم طباعة رسالة "No response received!".

دالة ARP() 


دالة ARP() في مكتبة scapy بايثون هي عبارة عن دالة تستخدم لإنشاء حزم ARP (Address Resolution Protocol) في برامج Python. وظيفتها هي إنشاء حزم ARP التي يتم استخدامها في شبكات الحاسوب لتحديد عناوين MAC (Media Access Control) للأجهزة المراد الاتصال بها عبر الشبكة.

يمكن استخدام الدالة ARP() في برامج Python لإنشاء حزم ARP بسهولة، كما يمكن تعديل خصائص هذه الحزم (مثل العنوان المراد الاتصال به أو عنوان MAC المراد البحث عنه) باستخدام خصائص الحزمة المختلفة التي تقدمها مكتبة Scapy. علاوة على ذلك، يمكن استخدام الدالة ARP() لإرسال الحزم ARP إلى أجهزة محددة في الشبكة باستخدام دالة send() المقدمة من قبل مكتبة Scapy.

دالة sendp()


دالة sendp() هي واحدة من دوال مكتبة Scapy في Python والتي تستخدم لإرسال حزم الشبكة بطريقة مخصصة. تستخدم هذه الدالة عادةً في أنظمة الشبكات وأجهزة الراوتر.

تستخدم دالة sendp() لإرسال حزم الشبكة في طبقة الربط البيانات، وهي تعمل بشكل مماثل لدالة send() في البروتوكولات المستخدمة في TCP/IP، ولكن بدلاً من إرسال حزم TCP/IP فإنها تستخدم حزم Ethernet.

يتم استخدام هذه الدالة في مكتبة Scapy لتخصيص حزم الشبكة، ويمكن استخدامها لتغيير المحتوى الداخلي لحزمة الشبكة قبل إرسالها. يمكن استخدام هذه الدالة مع جميع أنواع الحزم Ethernet مثل ARP و ICMPv6، وغيرها.

وهذه بعض المثال لاستخدام دالة sendp():

from scapy.all import *
# Create a simple packet
packet = Ether()/IP(dst="8.8.8.8")/ICMP()
# Send the packet
sendp(packet)



تم إنشاء حزمة Ethernet وحزمة IP وحزمة ICMP في المثال أعلاه، ثم تم استخدام دالة sendp() لإرسال الحزمة المخصصة.

دالة wrpcap() 


دالة wrpcap() هي دالة متوفرة في مكتبة Scapy للبايثون وتستخدم لحفظ حزم البيانات (packets) إلى ملف pcap.

يمكن استخدامها بالشكل التالي:

from scapy.all import *
# قم بإنشاء قائمة من حزم البيانات التي تريد حفظها
packets_list = [packet1, packet2, packet3]
# استخدم الدالة wrpcap() لحفظ الحزم الموجودة في القائمة إلى ملف pcap
wrpcap('packets.pcap', packets_list)



حيث:

  • - packets_list هو قائمة من حزم البيانات التي تريد حفظها.
  • - 'packets.pcap' هو اسم الملف الذي تريد حفظ الحزم فيه. يمكن تغيير اسم الملف حسب الحاجة.


يمكن استخدام الأمر rdpcap() لقراءة ملف pcap واستخراج حزم البيانات الموجودة فيه.


استخدامات مكتبة scapy في بايثون


مكتبة Scapy هي مكتبة قوية للتلاعب بحركة المرور عبر الشبكات باستخدام Python. يمكن استخدامها لإنشاء وتحليل حزم الشبكة والتفاعل مع الشبكة من خلال بروتوكولات مختلفة مثل TCP و UDP و ICMP و ARP وغيرها.

تتيح مكتبة Scapy للمستخدمين إنشاء حزم مخصصة، وإرسالها إلى الشبكة، وتحليل الحزم التي تم الحصول عليها من الشبكة. كما يمكن استخدامها في إنشاء أدوات للكشف عن الثغرات في الشبكات وتنفيذ هجمات القرصنة الأخرى.

فيما يلي بعض الاستخدامات الشائعة لمكتبة Scapy:
  • - الكشف عن الثغرات في الشبكات
  • - تطوير أدوات الأمان والكشف عن الاختراق
  • - تطوير أدوات اختبار الأداء والتنظيم للشبكات
  • - تحليل حركة المرور عبر الشبكات وفهم كيفية عمل البروتوكولات المختلفة
  • - إنشاء برامج تطبيقات الشبكات
  • - إنشاء أدوات لتحليل حزم الشبكة والتعديل عليها.

إرسال تعليق

Cookie Consent
We serve cookies on this site to analyze traffic, remember your preferences, and optimize your experience.
Oops!
It seems there is something wrong with your internet connection. Please connect to the internet and start browsing again.
AdBlock Detected!
We have detected that you are using adblocking plugin in your browser.
The revenue we earn by the advertisements is used to manage this website, we request you to whitelist our website in your adblocking plugin.
Site is Blocked
Sorry! This site is not available in your country.