تفاصيل العمل

هذا السكربت البرمجي بلغة Python يستخدم مكتبة `scapy` لاستقبال حزم الشبكة (Network Packets) على واجهة الشبكة المحددة وطباعة معلومات حول الحزم التي تحتوي على الطبقات IP و TCP و UDP. إليك وصفًا سريعًا لوظيفته:

1. **استيراد المكتبات**: يقوم البرنامج بالاستيراد من مكتبة `scapy` لتحليل حزم الشبكة ومعالجتها، مثل `sniff`، `conf`، `IP`، `TCP`، و `UDP`.

2. **دالة اتصال الحزم (`packet_callback`)**:

- هذه الدالة تُستدعى لكل حزمة مُلتقطة (`packet`).

- تتحقق مما إذا كانت الحزمة تحتوي على طبقة IP (`IP in packet`).

- تقوم بجلب عناوين IP للمرسل (`ip_src`) والمستقبل (`ip_dst`) وبروتوكول الحزمة (`protocol`).

- تحدد ما إذا كانت الحزمة تحتوي على طبقة TCP أو UDP:

- إذا كانت TCP، يُعرف النوع بـ "TCP" ويُجلب منفذ المرسل (`sport`) ومنفذ المستقبل (`dport`).

- إذا كانت UDP، يُعرف النوع بـ "UDP" ويُجلب منفذ المرسل (`sport`) ومنفذ المستقبل (`dport`).

- إذا لم تكن الحزمة تحتوي على TCP أو UDP، يُعرف النوع بـ "Other" ويتم تعيين قيمة `None` للمنافذ.

- تقوم بطباعة معلومات مفصلة حول الحزمة المُلتقطة، بما في ذلك عناوين IP والبروتوكول ونوع الطبقة (TCP/UDP/Other) والمنافذ.

3. **دالة بدء الاستقبال (`start_sniffing`)**:

- تأخذ المعامل `interface` وتبدأ في استقبال الحزم على تلك الواجهة.

- تستخدم دالة `sniff` من `scapy` بالمعاملات التالية:

- `iface`: تحدد واجهة الشبكة التي يتم فيها استقبال الحزم.

- `prn`: تحدد الدالة الفرعية (`packet_callback`) لمعالجة كل حزمة مُلتقطة.

- `store=False`: يُضمن عدم تخزين الحزم المُلتقطة في الذاكرة لتوفير الموارد.

4. **استخدام مثالي (`if __name__ == "__main__"`)**:

- يعرّف متغير `interface` كاسم الواجهة التي يجب أن يتم فيها استقبال حزم الشبكة (مثلاً `"Ethernet"`).

- يستدعي دالة `start_sniffing(interface)` للبدء في التقاط وطباعة تفاصيل الحزم على الواجهة المحددة.

بشكل عام، يعمل هذا السكربت على تنفيذ دورية استقبال لحزم الشبكة باستخدام مكتبة `scapy`، ويقوم بعرض وطباعة التفاصيل المفصلة لكل حزمة تحتوي على طبقات IP و TCP و UDP على واجهة شبكة محددة.

بطاقة العمل

اسم المستقل محمد ع.
عدد الإعجابات 0
عدد المشاهدات 16
تاريخ الإضافة

المهارات المستخدمة