This tool can be used to view or extract the contents of UBIFS images.
UBIFS is a filesystem specifically designed for used on NAND flash chips. NAND flash is organized in eraseblocks. Eraseblocks can be erased, appended to, and read. Erasing is a relatively expensive operation, and can be done only a limited number of times.
An UBIFS image contains four abstraction layers:
Each eraseblock contains info on how often it has been erased, and which volume it belongs to. A volume contains a b-tree database with keys for:
The inodes are basically a standard unix filesystem, with direntries, regular files, symlinks, devices, etc.
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
This will mount a ubi image for a device with eraseblock size 0x40000.
If your image has a blocksize of 0x20000, use fourth_id_byte=0x15
, and specify a pagesize of 2048
with the second modprobe line.
View the contents of the /etc/passwd
file in the filesystem image image.ubi
:
python ubidump.py -c /etc/passwd image.ubi
List the files in all the volumes in image.ubi
:
python ubidump.py -l image.ubi
View the contents of b-tree database from the volumes in image.ubi
:
python ubidump.py -d image.ubi
Install the required python modules using:
pip install -r requirements.txt
master
nodeWillem Hengeveld itsme@xs4all.nl