
किसी भी प्रकार के कंटेनर प्रारूपों से फ़ाइलें निकालें
बाइनरी ब्लॉब्स के लिए सटीक, तेज़ और उपयोग में आसान निष्कर्षण सूट।
unblob अज्ञात बाइनरी ब्लॉब्स को 78+ आर्काइव, संपीड़न और फ़ाइल-सिस्टम प्रारूपों के लिए पार्स करता है, उनकी सामग्री को पुनरावर्ती रूप से निकालता है, और अज्ञात चंक्स को कार्व करता है। यह फ़र्मवेयर इमेज को निकालने, विश्लेषण करने और रिवर्स इंजीनियरिंग करने के लिए एक आदर्श साथी है।

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 कॉन्फ़िगरेशन में जोड़ें — फ्लेक और ओवरले उदाहरणों के लिए स्थापना दस्तावेज़ देखें।
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
मैजिक स्ट्रिंग उपसर्ग से मेल खाने वाली फ़ाइलों को छोड़ें:
unblob --skip-magic "POSIX tar archive" firmware.bin
कस्टम हैंडलर प्लगइन लोड करें:
unblob -P ./myplugins/ firmware.bin
Usage: unblob [OPTIONS] FILE
Options:
-e, --extract-dir DIRECTORY फ़ाइलों को इस निर्देशिका में निकालें।
-f, --force भले ही आउटपुट पहले से मौजूद हों, निष्कर्षण बलपूर्वक करें।
-d, --depth INTEGER पुनरावृत्ति गहराई (डिफ़ॉल्ट: 10)।
-n, --entropy-depth INTEGER एन्ट्रॉपी गणना गहराई (डिफ़ॉल्ट: 1; 0 = बंद)।
-P, --plugins-path PATH प्रदान किए गए पथ से प्लगइन लोड करें।
-S, --skip-magic TEXT दिए गए मैजिक उपसर्ग वाली फ़ाइलों को छोड़ें।
-p, --process-num INTEGER समानांतर कार्यकर्ता प्रक्रियाओं की संख्या (डिफ़ॉल्ट: CPU संख्या)।
--report PATH JSON मेटाडेटा रिपोर्ट इस फ़ाइल में लिखें।
-k, --keep-extracted-chunks निकाले गए चंक्स को डिस्क पर रखें।
--delete-extracted-files TEXT निष्कर्षण के बाद मध्यवर्ती फ़ाइलें हटाएं।
-v, --verbose वर्बोसिटी बढ़ाएं (-v, -vv, -vvv)।
--show-external-dependencies आवश्यक बाह्य उपकरणों और उनकी स्थिति की सूची दिखाएं।
-h, --help यह संदेश दिखाएं और बाहर निकलें।
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 का उपयोग करता है। एकीकरण परीक्षण फिक्स्चर Git LFS में संग्रहीत हैं।
# Git LFS स्थापित करें (एक बार का सेटअप)
git lfs install
# सभी विकास निर्भरताएँ स्थापित करें
uv sync --all-extras --dev
# पूर्ण परीक्षण सूट चलाएं
uv run pytest tests/ -v
पूर्ण दस्तावेज़ीकरण https://unblob.org पर उपलब्ध है:
योगदान का स्वागत है! यदि आप किसी नए प्रारूप के लिए समर्थन जोड़ना चाहते हैं या मौजूदा में सुधार करना चाहते हैं:
यदि आपको केवल एक प्रारूप के समर्थन की आवश्यकता है और स्वयं इसे लागू नहीं करना चाहते हैं, तो एक मुद्दा खोलें — हम इसे जोड़ने पर विचार करेंगे।
अधिक जानकारी के लिए CONTRIBUTING देखें।
unblob MIT लाइसेंस के अंतर्गत लाइसेंस प्राप्त है।