هذا السكربت البرمجي بلغة 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 |
تاريخ الإضافة |