เครื่องมือนี้สามารถใช้เพื่อดูหรือแยกเนื้อหาของภาพ UBIFS
UBIFS เป็นระบบไฟล์ที่ออกแบบมาโดยเฉพาะสำหรับใช้ในชิป NAND Flash NAND Flash จัดขึ้นใน eraseblocks Eraseblock สามารถลบต่อท้ายและอ่านได้ การลบเป็นการดำเนินการที่ค่อนข้างแพงและสามารถทำได้เพียงจำนวน จำกัด
ภาพ ubifs ประกอบด้วยสี่เลเยอร์ที่เป็นนามธรรม:
Eraseblock แต่ละตัวมีข้อมูลเกี่ยวกับความถี่ที่ถูกลบและปริมาณที่เป็นของ ระดับเสียงประกอบด้วยฐานข้อมูล B-Tree พร้อมปุ่มสำหรับ:
inodes เป็นระบบไฟล์ UNIX มาตรฐานที่มี direntries ไฟล์ปกติ symlinks อุปกรณ์ ฯลฯ
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 image ระบบไฟล์ image.ubi :
python ubidump.py -c /etc/passwd image.ubi
แสดงรายการไฟล์ในทุกเล่มใน image.ubi :
python ubidump.py -l image.ubi
ดูเนื้อหาของฐานข้อมูล B-Tree จากปริมาณใน 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
บน macOS:
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]