ubidump
1.0.0
该工具可用于查看或提取UBIFS图像的内容。
UBIFS是专门为NAND Flash芯片使用的文件系统。 Nand Flash在抹布中组织。可以删除,附加到和阅读擦除。擦除是一个相对昂贵的操作,只能进行有限的次数。
ubifs图像包含四个抽象层:
每个抹布都包含有关删除频率以及其属于哪个音量的信息。一个卷包含一个带有键的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
这将安装一个带有擦除尺寸为0x40000的设备的UBI图像。如果您的图像具有0x20000的块块,请使用fourth_id_byte=0x15 ,并使用第二个ModProbe行指定2048的PAGESIZE。
查看文件系统image.ubi中的/etc/passwd文件的内容:
python ubidump.py -c /etc/passwd image.ubi
在image.ubi中的所有卷中列出文件:
python ubidump.py -l image.ubi
从image.ubi中的卷中查看b-tree数据库的内容:
python ubidump.py -d image.ubi
提取不支持的卷类型,因此您可以使用其他工具进行分析:
python ubidump.py -v 0 --saveraw unknownvol.bin image.ubi
请注意,UBI图像通常包含壁球量,可以使用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]