يمكن استخدام هذه الأداة لعرض أو استخراج محتويات صور UBIFS.
UBIFS هو نظام ملفات مصمم خصيصًا للاستخدام على رقائق NAND Flash. يتم تنظيم NAND Flash في eraseblocks . يمكن محو reaseblocks وإلحاقها والقراءة. تعد المحو عملية باهظة الثمن نسبيًا ، ويمكن القيام بها فقط عدد محدود من المرات.
تحتوي صورة UBIFS على أربع طبقات تجريد:
يحتوي كل EraseBlock على معلومات حول عدد المرات التي تم محوها ، وأي وحدة تخزين تنتمي إليها. يحتوي وحدة التخزين على قاعدة بيانات B-Tree مع مفاتيح:
إن INODEs هي أساسًا نظام ملفات UNIX قياسي ، مع direntries ، والملفات العادية ، والروابط ، والأجهزة ، إلخ.
modprobe nandsim first_id_byte=0x2c second_id_byte=0xac third_id_byte=0x90 fourth_id_byte=0x26
nandwrite /dev/mtd0 firmware-image.ubi
modprobe ubi mtd=/dev/mtd0,4096
mount -t ubifs -o ro /dev/ubi0_0 mnt
سيؤدي ذلك إلى تثبيت صورة UBI لجهاز بحجم EraseBlock 0x40000. إذا كانت صورتك تحتوي على كتل من 0x20000 ، فاستخدم fourth_id_byte=0x15 ، وحدد صفحات 2048 مع خط ModProbe الثاني.
عرض محتويات ملف /etc/passwd في image.ubi نظام الملفات.
python ubidump.py -c /etc/passwd image.ubi
سرد الملفات في جميع المجلدات في image.ubi :
python ubidump.py -l image.ubi
عرض محتويات قاعدة بيانات الشجرة B من المجلدات في image.ubi :
python ubidump.py -d image.ubi
استخراج نوع حجم غير مدعوم ، حتى تتمكن من تحليله باستخدام أدوات أخرى:
python ubidump.py -v 0 --saveraw unknownvol.bin image.ubi
لاحظ أنه في كثير من الأحيان تحتوي صور UBI على أحجام squashfs ، والتي يمكن استخلاصها باستخدام أدوات مثل unsquashfs أو rdsquashfs
قم بتثبيت وحدات Python المطلوبة باستخدام:
pip install -r requirements.txt
أو كحزمة PIP:
pip install ubidump
قد تحتاج إلى تثبيت مكتبات نظام التشغيل يدويًا لـ LZO أولاً:
على Linux:
apt install liblzo2-dev
على ماكوس:
brew install lzo
ربما تحتاج إلى بناء مكتبة Python مثل هذا:
LDFLAGS=-L/usr/local/lib CFLAGS=-I/usr/local/include/lzo pip3 install python-lzo
عندما تحتاج إلى ضغط ZSTD ، ستحتاج إلى تثبيت وحدة zstandard .
master أقدمWillem Hengeveld [email protected]