
هذه هي شجرة التطوير. التنزيلات الإنتاجية متاحة على:
bulk_extractor أداة عالية الأداء لاستخراج الأدلة الرقمية. وهي بمثابة زر «get evidence» يفحص بسرعة أي نوع من المدخلات (صور الأقراص، الملفات، مجلدات الملفات، إلخ) ويستخرج معلومات منظمة مثل عناوين البريد الإلكتروني وأرقام بطاقات الائتمان وملفات JPEG ومقاطع JSON دون تحليل نظام الملفات أو بنياته. تُخزَّن النتائج في ملفات نصية يسهل فحصها أو البحث فيها أو استخدامها كمدخلات لمعالجة جنائية أخرى. كما ينشئ bulk_extractor مدرجات تكرارية (histograms) لأنواع معينة من الميزات التي يعثر عليها، مثل مصطلحات البحث في Google وعناوين البريد الإلكتروني، إذ أظهرت الأبحاث السابقة أن هذه المدرجات مفيدة بشكل خاص في تطبيقات التحقيق وإنفاذ القانون.
خلافًا لأدوات التحقيق الرقمي الأخرى، يفحص bulk_extractor كل بايت من البيانات ليرى ما إذا كان بداية لتسلسل يمكن فك ضغطه أو فك ترميزه بطريقة أخرى. وإذا كان الأمر كذلك، تُعاد فحص البيانات المفكوكة بشكل متكرر. ونتيجة لذلك، يمكن لـ bulk_extractor العثور على أشياء مثل صور JPEG المشفرة بـ BASE64 وكائنات JSON المضغوطة التي تفوتها أدوات التنقيب (carving) التقليدية.
شجرة المصادر هذه تبني bulk_extractor 2.2.0. للاستخدام الإنتاجي، يُفضَّل الاعتماد على إصدار مُختبَر من https://github.com/simsong/bulk_extractor/releases.
bulk_extractorنوصي بالبناء من المصادر. نوفر عددًا من نصوص bash في مجلد etc/ لتهيئة آلة افتراضية نظيفة:
git clone https://github.com/simsong/bulk_extractor.git
./bootstrap.sh
./configure
make
make check
make install
للحصول على تعليمات مفصّلة حول تثبيت الحزم وبناء bulk_extractor، اقرأ صفحة الويكي هنا: https://github.com/simsong/bulk_extractor/wiki/Installing-bulk_extractor
لمزيد من المعلومات حول bulk_extractor، تفضل بزيارة: https://forensics.wiki/bulk_extractor
تُنشر أدلة PDF المُولَّدة على https://simsong.github.io/bulk_extractor/ بعد دمج التغييرات في main. يحتوي الموقع على دليلي التشغيل والتطوير لإصدار 2.2. تتلقى طلبات السحب (Pull Requests) ملفات PDF نفسها كأحد مخرجات سير العمل (workflow artifact).
يتطلب هذا الإصدار من bulk_extractor لغة C++17. يغطي التحقق الحالي:
make distcheck، 2026-07-19)نصوص تجهيز المنصات الأقدم الموجودة تحت etc/ ليست مكافئة لدعم CI الحالي وقد تحتاج إلى صيانة.
إذا كنت تكتب ورقة علمية وتستخدم bulk_extractor، فيُرجى الاستشهاد به كما يلي:
Garfinkel, Simson, Digital media triage with bulk data analysis and bulk_extractor. Computers and Security 32: 56-72 (2013)
@article{10.5555/2748150.2748581,
author = {Garfinkel, Simson L.},
title = {Digital Media Triage with Bulk Data Analysis and Bulk_extractor},
year = {2013},
issue_date = {February 2013},
publisher = {Elsevier Advanced Technology Publications},
address = {GBR},
volume = {32},
number = {C},
issn = {0167-4048},
journal = {Comput. Secur.},
month = feb,
pages = {56–72},
numpages = {17},
keywords = {Digital forensics, Bulk data analysis, bulk_extractor, Stream-based forensics, Windows hibernation files, Parallelized forensic analysis, Optimistic decompression, Forensic path, Margin, EnCase}
}
يمكن ضبط متغيرات البيئة التالية لتغيير سلوك bulk_extractor:
تلميحات أخرى لتصحيح الأخطاء:
يقوم bulk_extractor بتحميل وحدات الماسحات المسماة scan_.so (أو scan_.dylib على macOS وscan_*.dll على ويندوز) من المجلدات المقدَّمة عبر -P أو الموجودة في BE_PATH. تصدّر الوحدة هذا المُصنع (factory) بارتباط C:
extern "C" scanner_t *bulk_extractor_scanner_v1();
يُرجع المُصنع دالة scanner_t عادية. ابنِ الوحدات مقابل نفس إصدار مصدر bulk_extractor الذي بُني منه الملف التنفيذي؛ ويجب على معالج PHASE_INIT في الماسح استدعاء sp.check_version(). تبقى الوحدات محمّلة حتى اكتمال تنظيف الماسحات.
إصدارات البناء الأصلية لنظام ويندوز غير مدعومة حاليًا.
سير عمل GitHub Actions المُسمى Windows MinGW build يترجم الملف التنفيذي على Ubuntu لكل طلب سحب ويرفع bulk_extractor64.exe في المُخرَج bulk_extractor-windows-x86_64. يتحقق سير العمل من أن الملف التنفيذي PE لا يستورد مكتبات DLL لوقت التشغيل الخاصة بـ MinGW أو RE2 أو Abseil أو Expat أو zlib أو GNU crypto. يقوم مشغّل ويندوز بتنزيل ذلك المُخرَج الدقيق وتشغيله على مجلد يحتوي اسم ملف بترميز Unicode. يستخدم سير العمل سلسلة الأدوات x86_64 MinGW-w64 POSIX وإصدارات ثابتة من Expat وRE2 وAbseil من نسخة vcpkg مُثبَّتة. مُخرَج CI الحالي مبني بدون libewf، لذا فهو لا يتضمن دعم E01، وهو غير موقّع، وليس مثبّت إصدار رسمي. ملف سير العمل وملاحظات البناء المُحدَّثة هما .github/workflows/mingw.yml وdoc/mingw_notes.txt.
تم دمج واجهة البرمجة be20 API وتبعياتها المصدرية في شجرة مصادر bulk_extractor، مما ألغى الحاجة إلى إعداد الوحدات الفرعية المتكرر (recursive submodule setup). يتحقق البناء الموحد الآن من bulk_extractor وbe20 وDFXML معًا، ويُصلح عيوب إيقاف تشغيل تجمّع الخيوط (thread-pool) التي اكتُشفت عبر اختبار الصورة الكاملة وAddressSanitizer.
تمت إعادة تسمية مسجّل الميزات jpeg_carved إلى jpeg، بحيث يمكن ضبط وضع carving لـ jpeg باستخدام -S jpeg_carve_mode=2 بدلاً من -S jpeg_carved_carve_mode=2 الذي كان مُربكًا.
أصبح bulk_extractor 2.0 (BE2) جاهزًا للعمل الآن. ومع أنه يعمل مع العارض المبني على جافا، إلا أنه لا يتوفر لدينا حاليًا مثبّت يعمل تحت ويندوز.
يتطلب BE2 لغة C++17 للترجمة. مصادر be20 scanner API وdfxml_cpp وutfcpp ومخطط DFXML محفوظة مباشرة في هذا المستودع؛ ولا يلزم إجراء سحب متكرر للوحدات الفرعية.
استغرق المشروع وقتًا أطول من المتوقع. فبالإضافة إلى التحديث إلى C++17، اُستخدمت المناسبة لإعادة هيكلة ضخمة للكود وزيادة عامة في جودة الكود وقابلية الاختبار والموثوقية. ستُنشر مقالة حول هذه التجربة في عدد قادم من ACM Queue.
| المتغير | السلوك |
|---|
DEBUG_BENCHMARK | تضمين معلومات قياس أداء وحدة المعالجة المركزية (CPU) في ملف report.xml |
DEBUG_NO_SCANNER_BYPASS | تعطيل منطق تجاوز الماسحات الذي يتجاوز بعض الماسحات إذا احتوى sbuf على ngrams أو لم يكن لديه عدد مرتفع من الأحرف المميزة. |
DEBUG_HISTOGRAMS | طباعة معلومات تصحيح الأخطاء حول المدرجات التكرارية المبنية على الملفات. |
DEBUG_HISTOGRAMS_NO_INCREMENTAL | عدم استخدام المدرجات التكرارية المتزايدة المعتمدة على الذاكرة. |
DEBUG_PRINT_STEPS | الطباعة إلى stdout عند استدعاء كل ماسح لكل sbuf |
DEBUG_SCANNER_DUMP_DATA | تفريغ سداسي عشري (Hex-dump) لكل sbuf سيتم فحصه. |
DEBUG_SCANNERS_IGNORE | سلسلة فرعية تُستخدم لتحديد الماسحات التي يجب تجاهلها. مفيدة لتصحيح أخطاء اختبارات الوحدة. |