
استخراج الملفات من أي نوع من تنسيقات الحاويات
مجموعة استخراج دقيقة وسريعة وسهلة الاستخدام للكتل الثنائية (binary blobs).
يقوم unblob بتحليل الكتل الثنائية غير المعروفة لـ أكثر من 78 تنسيق أرشيف، ضغط، ونظام ملفات، ويستخرج محتوياتها بشكل متكرر (recursively)، وينحت (carves) الأجزاء غير المعروفة. إنها الأداة المثالية لاستخراج وتحليل وهندسة عكسية لصور البرامج الثابتة (firmware images).

0xFF).--plugins-path.pip install unblob
ثم قم بتثبيت أدوات الاستخراج الخارجية المطلوبة. على Ubuntu/Debian:
sudo apt install android-sdk-libsparse-utils e2fsprogs p7zip-full unar zlib1g-dev liblzo2-dev lzop lziprecover libhyperscan-dev zstd lz4
لدعم SquashFS، قم أيضاً بتثبيت sasquatch:
curl -L -o sasquatch_1.0.deb "https://github.com/onekey-sec/sasquatch/releases/download/sasquatch-v4.5.1-6/sasquatch_1.0_$(dpkg --print-architecture).deb"
sudo dpkg -i sasquatch_1.0.deb && rm sasquatch_1.0.deb
تأكد من توفر جميع المستخلصات:
unblob --show-external-dependencies
صورة Docker تحتوي على جميع المستخلصات — لا حاجة لإعداد إضافي:
docker run \
--rm \
--pull always \
-v /path/to/extract-dir:/data/output \
-v /path/to/files:/data/input \
ghcr.io/onekey-sec/unblob:latest /data/input/firmware.bin
ملاحظة: يجب أن تكون أدلة التثبيت مملوكة لنفس
uid:gid. على الأنظمة متعددة المستخدمين، أضف-u $UID:$GIDإلى الأمر.
sudo apt install unblob
nix profile install nixpkgs#unblob
أو أضفه إلى إعداد NixOS/home-manager — راجع وثائق التثبيت للحصول على أمثلة flake و overlay.
git clone https://github.com/onekey-sec/unblob.git
cd unblob
uv sync --no-dev
uv run unblob --show-external-dependencies
يتطلب Python ≥ 3.10 و uv وأدوات Rust (للإضافات المُجمَّعة).
استخراج ملف (الإخراج يذهب إلى <filename>_extract/ افتراضياً):
unblob firmware.bin
تحديد دليل إخراج مخصص:
unblob -e /tmp/output firmware.bin
توليد تقرير JSON وصفي:
unblob --report report.json firmware.bin
تحديد عمق التكرار وتفعيل تحليل الإنتروبيا:
unblob -d 5 -n 2 firmware.bin
تخطي الملفات التي تطابق بادئة سحرية (magic string):
unblob --skip-magic "POSIX tar archive" firmware.bin
تحميل إضافة معالج مخصصة:
unblob -P ./myplugins/ firmware.bin
Usage: unblob [OPTIONS] FILE
Options:
-e, --extract-dir DIRECTORY Extract the files to this directory.
-f, --force Force extraction even if outputs already exist.
-d, --depth INTEGER Recursion depth (default: 10).
-n, --entropy-depth INTEGER Entropy calculation depth (default: 1; 0 = off).
-P, --plugins-path PATH Load plugins from the provided path.
-S, --skip-magic TEXT Skip files with a given magic prefix.
-p, --process-num INTEGER Number of parallel worker processes (default: CPU count).
--report PATH Write a JSON metadata report to this file.
-k, --keep-extracted-chunks Keep extracted chunks on disk.
--delete-extracted-files TEXT Delete intermediate files after extraction.
-v, --verbose Increase verbosity (-v, -vv, -vvv).
--show-external-dependencies List required external tools and their status.
-h, --help Show this message and exit.
from pathlib import Path
from unblob.processing import ExtractionConfig, process_file
config = ExtractionConfig(
extract_root=Path("/tmp/output"),
randomness_depth=1,
)
result = process_file(config, Path("firmware.bin"))
لكتابة تقرير JSON أيضاً:
process_file(config, Path("firmware.bin"), report_file=Path("report.json"))
ExtractionConfig يقبل نفس الخيارات الموجودة في CLI: max_depth, process_num, skip_magic, force_extract, keep_extracted_chunks، والمزيد. راجع مرجع API للقائمة الكاملة.
يستخدم unblob pytest. مخازن اختبارات التكامل (integration test fixtures) مخزنة في Git LFS.
# تثبيت Git LFS (إعداد لمرة واحدة)
git lfs install
# تثبيت جميع تبعيات التطوير
uv sync --all-extras --dev
# تشغيل مجموعة الاختبارات الكاملة
uv run pytest tests/ -v
التوثيق الكامل متاح في https://unblob.org:
المساهمات مرحب بها! إذا كنت ترغب في إضافة دعم لتنسيق جديد أو تحسين تنسيق موجود:
إذا كنت تحتاج فقط إلى دعم تنسيق ولا ترغب في تنفيذه بنفسك، افتح issue — سننظر في إضافته.
راجع المساهمة لمزيد من التفاصيل.
unblob مرخص بموجب رخصة MIT.