
nDPI v6.0
مجموعة أدوات برمجية مفتوحة المصدر لفحص الحزم العميق
nDPI
ما هو nDPI؟
nDPI® هي مكتبة مفتوحة المصدر مرخصة تحت LGPLv3 للفحص العميق للحزم.
يتوفر أسئلة شائعة عامة حول nDPI هنا
كيفية ترجمة nDPI
لتجميع هذا المشروع، قم بما يلي:
- ./autogen.sh && ./configure
- make
إذا واجهت بعض الأخطاء أثناء ترجمة croaring.c، جرب:
- ./autogen.sh && ./configure --enable-old-croaring
- make
لتجميع المكتبة دون أي أدوات أو اختبارات:
- ./autogen.sh && ./configure --with-only-libndpi
- make
البناء خارج شجرة الدليل مدعوم:
- ./autogen.sh
- mkdir build
- cd build
- ../configure && make
لتشغيل الاختبارات بالإضافة إلى ذلك:
- ./tests/do.sh # إنشاء والتحقق من الفروقات في ملفات PCAP
- ./tests/do-unit.sh # تشغيل اختبارات الوحدة
- ./tests/do-dga.sh # تشغيل اختبار كشف DGA
أو تشغيل الكل بـ: make check
يرجى ملاحظة أن المتطلبات الأساسية (الدنيا) للترجمة تشمل:
- أدوات GNU (autoconf automake libtool pkg-config gettext flex bison)
- مترجم GNU C (gcc) أو Clang
على أنظمة Debian/Ubuntu قم بما يلي:
- sudo apt-get install build-essential git gettext flex bison libtool autoconf automake pkg-config libpcap-dev libjson-c-dev libnuma-dev libpcre2-dev libmaxminddb-dev librrd-dev
على Arch Linux:
- sudo pacman -S gcc git gettext flex bison libtool autoconf automake pkg-config libpcap json-c numactl pcre2 libmaxminddb rrdtool
على FreeBSD:
- sudo pkg install gcc git gettext flex bison libtool autoconf automake devel/pkgconf gmake libpcap json-c pcre2 libmaxminddb rrdtool
تذكر استخدام gmake بدلاً من make على FreeBSD
على macOS:
- brew install coreutils gcc git gettext flex bison libtool autoconf automake pkg-config libpcap json-c pcre2 libmaxminddb rrdtool
على Windows:
هناك ثلاث طرق مدعومة لبناء nDPI:
-
MSYS2 (بافتراض تثبيت MSYS2 مسبقًا):
- msys2 -c "pacman --noconfirm -S --needed --overwrite '*' git mingw-w64-x86_64-toolchain automake1.16 automake-wrapper autoconf libtool make mingw-w64-x86_64-json-c mingw-w64-x86_64-crt-git mingw-w64-x86_64-pcre2 mingw-w64-x86_64-libpcap"
-
Mingw-w64
-
Visual Studio (راجع
windows/nDPI.sln)
ملاحظة: جميع إصدارات Windows تتطلب npcap مع تمكين وضع التوافق مع WinPcap.
كيفية بناء الوثائق
- pip install --upgrade pip
- pip install -r doc/requirements.txt
- make doc
استخدم خادم الويب المدمج في python3 لعرض الوثائق:
- make doc-view
كيفية إضافة محلل بروتوكول جديد
الإجراء الكامل لإضافة بروتوكولات جديدة بالتفصيل:
- أضف البروتوكول الجديد مع معرفه الفريد إلى:
src/include/ndpi_protocol_ids.h - أنشئ بروتوكولًا جديدًا في:
src/lib/protocols/ - المتغيرات التي يجب الاحتفاظ بها طوال مدة التدفق بالكامل (كمتغيرات حالة) يجب وضعها في:
src/include/ndpi_typedefs.hفيndpi_flow_tcp_struct(لـ TCP فقط)، أوndpi_flow_udp_struct(لـ UDP فقط)، أوndpi_flow_struct(لكليهما). - أضف إدخالًا جديدًا لوظيفة البحث للبروتوكول الجديد في:
src/include/ndpi_private.h - اختر (لا تغير شيئًا) قناع بتات للاختيار من:
src/include/ndpi_define.h - عيّن المنافذ الافتراضية للبروتوكول في
ndpi_init_protocol_defaultsفي:src/lib/ndpi_main.c - تأكد من دعم nBPF عن طريق نسخ
PF_RINGفي نفس الدليل حيث قمت بنسخnDPI:git clone https://github.com/ntop/PF_RING/ && cd PF_RING/userland/nbpf && ./configure && make. يمكنك تجاهل الخطأ/bin/sh: 1: ../lib/pfring_config: not found - من الدليل الجذر لـ
nDPI، نفذ./autogen.sh && ./configure --with-pcre2(nBPF و PCRE2 عادةً اختياريان، لكنهما ضروريان لتشغيل/تحديث كل اختبارات الوحدة) makemake check- حدّث الوثائق بإضافة هذا البروتوكول الجديد إلى
doc/protocols.rst - حدّث تهيئة Visual Studio على Windows بإضافة ملف c الجديد في
windows/nDPI.vcxproj
كيفية استخدام nDPI لحظر حركة المرور المحددة
يمكنك استخدام nDPI لحظر حركة مرور إنترنت محددة بشكل انتقائي عن طريق تضمينه في تطبيق (تذكر أن nDPI مجرد مكتبة). كل من ntopng و nProbe cento يمكنهما القيام بذلك.
استشهاد بورقة nDPI
- Deri, Luca, et al. nDPI: Open-source high-speed deep packet inspection 2014 International Wireless Communications and Mobile Computing Conference (IWCMC). IEEE, 2014.
فيديوهات وعروض تقديمية
- The Ultimate Guide to nDPI [2025]
- Using nDPI to solve real life problems: from First Packet Classification to Obfuscated Traffic detection [PacketFest, 2025]
- Passive Network Traffic Fingerprinting [FOSDEM, 2025]
- A Deep Dive Into Traffic Fingerprints using Wireshark [SharkFest, 2024]
- Network Traffic Classification for Cybersecurity and Monitoring [FOSDEM, 2022]
- Using nDPI for Monitoring and Security [FOSDEM, 2021]
- Knowing the Unknown: How to Monitor and Troubleshoot an Unfamiliar Network [SharkFest, 2017]
مشاريع متعلقة بـ nDPI
إخلاء المسؤولية
بينما نبذل قصارى جهدنا لاكتشاف بروتوكولات الشبكة، لا يمكننا ضمان أن برنامجنا خالٍ من الأخطاء ودقيق بنسبة 100% في اكتشاف البروتوكول. يرجى التأكد من احترام خصوصية المستخدمين وأن لديك الإذن المناسب للاستماع والتقاط وفحص حركة مرور الشبكة.
nDPI هي علامة تجارية مسجلة في الولايات المتحدة والاتحاد الأوروبي.