
أداة لالتقاط حزم الشبكة تم تطويرها بلغة Python 3.
مراقب حركة شبكة لنظام GNU/Linux. يتم التقاط الإطارات من واجهة شبكة عبر مقبس خام (raw socket)، وفك ترميزها طبقة بطبقة باستخدام مكتبة NETProtocols، وعرضها على الشاشة فور وصولها:
[>] Frame #4 at 15:42:07 (wlan0, 74 bytes)
[+] Ethernet 3c:7c:3f:1a:be:22 -> 9c:1e:95:aa:01:5f
EtherType: IPv4
[+] IPv4 192.168.1.96 -> 142.250.79.78
TTL: 64 | Flags: Don't fragment (DF) | Total Length: 60 | ID: 39754
Protocol: TCP | Checksum: 0x2b51
[+] TCP 51888 -> 443
Flags: 0x002 (SYN) | Seq: 3598801521 | Ack: 0
Window: 64240 | Checksum: 0x2008 | Options: 20 bytes
فكّ الترميز مُدرِك للخيارات (يُراعى IPv4 IHL وTCP data offset)، ويتم تشخيص الإطارات التالفة أو المقتطعة بدلًا من التسبب في انهيار الالتقاط، وتنهي البروتوكولات غير المعروفة سلسلة فك الترميز بأناقة — الالتقاط يتحمّل مهما جاءت به الشبكة.
pipx install "git+https://github.com/EONRaider/Packet-Sniffer.git"
(أو uv tool install باستخدام نفس الرابط. التطبيق غير منشور على PyPI بهذا الاسم — هذا الظهور محجوز لاسمه القادم بعد إعادة التسمية.)
أو شغّله من نسخة مستنسخة باستخدام uv:
git clone https://github.com/EONRaider/Packet-Sniffer.git
cd Packet-Sniffer
uv sync
packet-sniffer [-h] [-i INTERFACE] [-d] [--version]
options:
-i, --interface interface to capture frames from (default: all interfaces)
-d, --data also display each frame's raw payload
يتطلب الالتقاط مقبسًا خامًا، وهو ما يعني على لينكس إما صلاحيات الجذر:
sudo packet-sniffer -i eth0
...أو منح المفسّر capability CAP_NET_RAW. من نسخة مستنسخة، شغّله كالتالي: sudo .venv/bin/python -m packet_sniffer.
يقوم capture.py بإنتاج إطارات خام من مقبس AF_PACKET؛ ويسير decoder.py عبر سلسلة بروتوكولات كل إطار (Ethernet ← ARP / IPv4 / IPv6 ← ICMP / TCP / UDP) ليحوّلها إلى DecodedFrame غير قابل للتغيير؛ وتقوم أدوات العرض في output.py بالتوجيه بناءً على أنواع الطبقات المفكوكة. الجولة الكاملة — بما في ذلك سبب بقاء الذاكرة ثابتة أثناء الالتقاطات الطويلة وكيفية إضافة أداة عرض — موجودة في ARCHITECTURE.md.
كل شيء باستثناء المقبس الخام يعمل على أي نظام تشغيل، لذلك لا تحتاج مجموعة الاختبارات (فك الترميز والعرض على إطارات مسجّلة) إلى صلاحيات الجذر أو لينكس:
uv run pytest
SO_TIMESTAMPNS)استخدام الكود الموجود في هذا المستودع، سواء جزئيًا أو كليًا، لاستهداف أطراف دون موافقة مسبقة متبادلة هو أمر غير قانوني. تقع على عاتق المستخدم النهائي مسؤولية الامتثال لجميع القوانين المحلية والولائية والفيدرالية المعمول بها.
يُصرّح المطوّرون بأنهم غير مسؤولين ولا يتحمّلون أي مسؤولية عن إساءة الاستخدام أو الأضرار الناجمة عن أي كود موجود في هذا المستودع في أي حال، سواء عن طريق الصدفة أو غير ذلك، إذا تم استخدامه من قبل وكيل تهديد أو كيان غير مصرّح به كوسيلة للمساس بأمن أو خصوصية أو سرية أو تكاملية و/أو توافر الأنظمة ومواردها المرتبطة بها. في هذا السياق، يُفهم مصطلح "المساس" على أنه استغلال ثغرات معروفة أو غير معروفة في تلك الأنظمة، بما في ذلك على سبيل المثال لا الحصر، تنفيذ ضوابط أمنية، سواء بشرية أو إلكترونية.
استخدام هذا الكود مدعوم فقط من قبل المطوّرين في الظروف المرتبطة مباشرة بـ البيئات التعليمية أو اختبارات الاختراق المصرّح بها التي يكون غرضها المعلن هو إيجاد نقاط الضعف في الأنظمة وتخفيفها، والحد من تعرضها للاختراقات والاستغلالات التي يستخدمها الوكلاء الخبيثون وفقًا لنماذج التهديد الخاصة بهم.