Skip to content
KitploitKITPLOIT
أدواتعمليات الاستغلالالمدونة
Log in
إرسال
أدواتعمليات الاستغلالالمدونة
إرسال

أدوات الاختراق واختبار الاختراق والأمن السيبراني لترسانتك الأمنية!

Kitploit هو دليل لأدوات الاختراق والأمن السيبراني واختبار الاختراق. اكتشف آخر تحديثات المشاريع للعثور على الثغرات وتحليل الأنظمة وأتمتة الاختبارات وتعزيز أمنك.

··الخلاصات·اتصال·الخصوصية·© 2026 Kitploit

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
FormatFuzzer — مولد اختبارات اختراق للصيغ الثنائية يعتمد على القوالب، يقوم بتوليد وتحليل مدخلات اختبار صالحة بسرعة عالية، مع تكامل مع AFL++ لاختبار الاختراق الموجه بالتغطية. | Kitploit
أدوات/GitHubGitHub/uds-se/formatfuzzer
الاختبار العشوائيتحليل الملفات الثنائية
GitHubuds-se/formatfuzzer

FormatFuzzer

مولد اختبارات اختراق للصيغ الثنائية يعتمد على القوالب، يقوم بتوليد وتحليل مدخلات اختبار صالحة بسرعة عالية، مع تكامل مع AFL++ لاختبار الاختراق الموجه بالتغطية.

عرض المستودعالموقع الإلكتروني
4463819منذ 7 أشهرتمت المراجعة من قبل Kitploit

الأكثر شعبية

عرض الكل →

اكتشف الأدوات الأكثر استخدامًا من قبل مجتمعنا.

استكشف جميع الأدوات

تصفح مجموعتنا من الأدوات

عرض جميع الأدوات →
مشاركة

FormatFuzzer

FormatFuzzer هو إطار عمل لتوليد وتحليل المدخلات الثنائية عالية الكفاءة وعالية الجودة. يأخذ قالبًا ثنائيًا يصف تنسيق مدخل ثنائي وينتج ملفًا تنفيذيًا يقوم بإنتاج وتحليل التنسيق الثنائي المُعطى. على سبيل المثال، من قالب ثنائي لـ GIF، يُنتج FormatFuzzer مولدًا لـ GIF - يُعرف أيضًا باسم مُدقق GIF.

المولدات التي ينتجها FormatFuzzer عالية الكفاءة، حيث تنتج آلاف المدخلات الصالحة في الثانية - وهذا يتناقض بشكل حاد مع المُدققات القائمة على الطفرات، حيث تكون الغالبية العظمى من المدخلات غير صالحة. المدخلات التي يولدها FormatFuzzer مستقلة عن البرنامج قيد الاختبار (أو في الواقع، أي برنامج)، لذا يمكنك استخدامها في الإعدادات ذات الصندوق الأسود أيضًا. ومع ذلك، يتكامل FormatFuzzer أيضًا مع AFL++ لإنتاج مدخلات صالحة تهدف أيضًا إلى أقصى تغطية. في تجاربنا، يتفوق نهج "أفضل عالَمَين" هذا على جميع الإعدادات الأخرى؛ انظر ورقتنا للتفاصيل.

القوالب الثنائية التي يستخدمها FormatFuzzer تأتي من 010 editor. يوجد أكثر من 170 قالبًا ثنائيًا، والتي يمكن استخدامها مباشرة مع FormatFuzzer أو تعديلها لاستخدامه. خارج الصندوق، ينتج FormatFuzzer تنسيقات مثل AVI و BMP و GIF و JPG و MIDI و MP3 و MP4 و PCAP و PNG و WAV و ZIP؛ ونواصل توسيع هذه القائمة كل أسبوع.

المساهمون مرحب بهم! زر صفحة مشروع FormatFuzzer لتقديم الأفكار والمشكلات، أو إضافة طلبات السحب. للحصول على تفاصيل حول كيفية عمل FormatFuzzer وكيفية مقارنته، اقرأ ورقتنا لمزيد من المعلومات.

الحصول على

FormatFuzzer متاح من صفحة مشروع FormatFuzzer. يمكنك تنزيل وفك ضغط أحدث إصدار من صفحة الإصدارات.

للحصول على أحدث وأفضل الإصدارات، يمكنك أيضًا استنساخ مستودع git الخاص به:

git clone https://github.com/uds-se/FormatFuzzer.git

جميع الإجراءات الإضافية تتم في مجلده الرئيسي:

cd FormatFuzzer

المتطلبات الأساسية

لتشغيل FormatFuzzer، تحتاج إلى ما يلي:

  • Python 3
  • مُجمّع C++ مع مكتبات GNU (خاصة getopt_long()) مثل clang أو gcc
  • حزم Python py010parser و six و intervaltree
  • مكتبة zlib (لدوال الضغط)
  • مكتبة boost (لدوال المجموع الاختباري)

إذا كنت تخطط لتحرير نصوص البناء والتكوين (ملفات .ac و .am)، فستحتاج أيضًا إلى:

  • GNU autoconf
  • GNU automake

تثبيت المتطلبات على Linux (حزم Debian، باستخدام بيئة python افتراضية)

sudo apt install git g++ make automake python3-full zlib1g-dev libboost-dev
python3 -m venv ~/fuzz
source ~/fuzz/bin/activate
pip3 install py010parser six intervaltree

تثبيت المتطلبات على MacOS (مع Xcode و Homebrew)

xcode-select --install
brew install python3 automake boost
pip3 install py010parser six intervaltree

تثبيت حزم Python فقط (جميع أنظمة التشغيل)

على جميع الأنظمة، باستخدام pip:

pip install py010parser
pip install six
pip install intervaltree

البناء

ملاحظة: جميع أوامر البناء تتطلب منك أن تكون في نفس المجلد الذي يوجد به ملف README هذا. بناء مُدقق خارج هذا المجلد غير مدعوم بعد.

الطريقة 1: استخدام نص build.sh

يوجد نص build.sh الذي يقوم بأتمتة جميع خطوات البناء. ببساطة قم بتشغيل

./build.sh gif

لإنشاء مُدقق GIF.

يعمل هذا لجميع تنسيقات الملفات المتوفرة في templates/؛ إذا كان هناك ملف templates/FOO.bt، فإن ./build.sh FOO سيبني مُدققًا.

الطريقة 2: استخدام Make

يوجد Makefile (المصدر في Makefile.am) الذي يقوم بأتمتة جميع خطوات البناء. (يتطلب GNU make.) أولاً قم بتشغيل

touch configure Makefile.in

ثم

./configure

ثم

make gif-fuzzer

لإنشاء مُدقق GIF.

يعمل هذا لجميع تنسيقات الملفات المتوفرة في templates/؛ إذا كان هناك ملف templates/FOO.bt، فإن make FOO-fuzzer سيبني مُدققًا.

الطريقة 3: الخطوات اليدوية

إذا لم تعمل طريقة make أعلاه، أو إذا كنت تريد تحكمًا أكبر، فقد تضطر إلى المتابعة يدويًا.

الخطوة 1: تجميع ملفات القوالب الثنائية إلى كود C++

قم بتشغيل مُجمّع ffcompile لتجميع القالب الثنائي إلى كود C++. يأخذ وسيطين: القالب الثنائي .bt، وملف .cpp C++ الذي سيتم إنشاؤه.

./ffcompile templates/gif.bt gif.cpp

الخطوة 2: تجميع كود C++

استخدم الأوامر التالية لإنشاء مُدقق gif-fuzzer. أولاً، قم بتجميع مُحرك سطر الأوامر العام:

g++ -c -I . -std=c++17 -g -O3 -Wall fuzzer.cpp

(-I . يشير إلى موقع ملف bt.h؛ -std=c++17 يحدد معيار C++.)

ثم، قم بتجميع المحلل/المُجمّع الثنائي:

g++ -c -I . -std=c++17 -g -O3 -Wall gif.cpp

أخيرًا، قم بربط المحلل/المُجمّع الثنائي مع مُحرك سطر الأوامر للحصول على ملف تنفيذي. إذا كنت تستخدم أي مكتبات إضافية (مثل -lz)، فتأكد من تحديدها هنا أيضًا.

g++ -O3 gif.o fuzzer.o -o gif-fuzzer -lz

تشغيل المُدقق

يمكن تشغيل FormatFuzzer كمُحلل مستقل، أو مولد، أو مُطفر لتنسيقات محددة. بالإضافة إلى ذلك، يمكن استدعاؤه بواسطة مُدققات عامة مثل AFL++ لدمج هذه القدرات الخاصة بالتنسيق في عملية التدقيق (انظر القسم أدناه حول التكامل مع AFL++).

يأخذ المُدقق المُنشأ أمرًا كوسيط أول، متبوعًا بخيارات ووسائط لهذا الأمر.

الأمر الأكثر أهمية هو fuzz، لإنتاج المخرجات. وسائطه هي الملفات التي سيتم إنشاؤها بالتنسيق المناسب.

قم بتشغيل المولد كالتالي:

./gif-fuzzer fuzz output.gif

لإنشاء ملف ثنائي عشوائي output.gif، أو

./gif-fuzzer fuzz out1.gif out2.gif out3.gif

لإنشاء ثلاثة ملفات GIF: out1.gif و out2.gif و out3.gif.

لاحظ أن القالب gif.bt الذي نقدمه قد تم تحسينه بوظائف خاصة لتسهيل إنشاء ملفات صالحة. إذا كنت تستخدم ملفات .bt أصلية دون تعديلات، فقد تحصل على تحذيرات أثناء الإنشاء وقد تُنشئ ملفات غير صالحة.

تشغيل المحللات

يمكنك أيضًا تشغيل المُدقق كـ محلل للملفات الثنائية، باستخدام الأمر parse. هذا مفيد إذا كنت تريد اختبار دقة القالب الثنائي، أو إذا كنت تريد طفر مدخل (انظر 'ملفات القرار' أدناه).

لتشغيل المحلل، استخدم:

./gif-fuzzer parse input.gif

سترى رسائل خطأ إذا تعذر تحليل input.gif بنجاح.

ملفات القرار

أثناء التحليل، يمكنك أيضًا تخزين جميع قرارات التحليل (أي أي بدائل تحليل تم اتخاذها) في ملف قرار. هذا هو سلسلة من البايتات التي تُعدّد القرارات المتخذة. كل بايت يمثل قرار تحليل واحد. قيمة بايت 0 تعني أنه تم اتخاذ البديل الأول، وقيمة بايت 1 تعني أنه تم اتخاذ البديل الثاني، وهكذا.

يمكنك إنشاء ملف قرار كهذا عند تحليل مدخل:

./gif-fuzzer parse --decisions input.dec input.gif

هنا، يقوم input.dec بتخزين القرارات المتخذة لتحليل input.gif.

يمكنك أيضًا استخدام ملف قرار كهذا عند إنشاء المدخلات. سيتخذ المُدقق بعد ذلك نفس القرارات تمامًا التي تم العثور عليها أثناء التحليل. الأمر التالي يُنشئ ملف GIF جديد باستخدام القرارات المحددة أثناء تحليل input.gif:

./gif-fuzzer fuzz --decisions input.dec input2.gif

إذا كان كل شيء يعمل بشكل جيد، يجب أن يكون كلا الملفين متطابقين:

cmp input.gif input2.gif

عن طريق تطويع ملف قرار (مثل استبدال بايتات فردية)، يمكنك إنشاء مدخلات مشابهة للملف الأصلي الذي تم تحليله. هذا مفيد للتفاعل مع استراتيجيات اختبار محددة ومُدققات مثل AFL، حيث يمكنك استخدام gif-fuzzer وما شابه ذلك كـ مُترجمين من ملفات القرار إلى ملفات ثنائية والعكس: سيقوم AFL بتطويع ملفات القرار، وسيعمل البرنامج قيد الاختبار على الملفات الثنائية المُترجمة. على عكس تطويع الملفات الثنائية مباشرة (كما يفعل AFL عادةً)، فإن هذا سيكون له ميزة وجود مدخلات صالحة دائمًا - وبالتالي التقدم بشكل أسرع نحو التغطية.

التكامل مع AFL++

بالإضافة إلى المُدققات الخاصة بالتنسيق، مثل gif-fuzzer، يمكن أيضًا تجميع FormatFuzzer في مكتبات مشتركة خاصة بالتنسيق، مثل gif.so (لهذا، قم بتشغيل ./build.sh gif أو make gif.so). يمكن تحميل هذه المكتبات المشتركة بواسطة مُدققات عامة، مثل AFL++.

لتشغيل AFL++ مع FormatFuzzer، ما عليك سوى اتباع التعليمات الموجودة على نسختنا المعدلة من AFL++. ندعم استراتيجيات تدقيق مختلفة، بما في ذلك:

  • AFL+FFMut: يُشغّل AFL++ باستخدام FormatFuzzer لتوفير طفرات ذكية خاصة بالتنسيق.

  • AFL+FFGen: يستخدم FormatFuzzer كمولد خاص بالتنسيق، بينما يُطوّع AFL++ بذور قراراته.

إنشاء وتخصيص القوالب الثنائية

تنزيل الأداة