Tool for viewing and extracting files from an UBIFS image
Switch branches/tags
Nothing to show
Clone or download
nlitsme added some functions needed for write support. more consistent output…
…. options for hexdumping data:

 * added write, encode functions.
 * more documentation
 * lnum is now always printed as 3 decimal digits between square brackets.
 * in some cases added offset range in output.
 * print masterblock items
 * option to modify a file in place, without changing any sizes. *** DELETE
 * added magic number based raw hexdumper
Latest commit 136bed8 Apr 4, 2018

UBIFS Dumper

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:

  • eraseblocks
  • volumes
  • b-tree nodes
  • inodes

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:

  • inodes, indexed by inode number
  • direntries, indexed by inode number + name hash
  • datablocks, indexed by inode number + block number

The inodes are basically a standard unix filesystem, with direntries, regular files, symlinks, devices, etc.

mounting images on linux

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  -c /etc/passwd  image.ubi

List the files in all the volumes in image.ubi:

python  -l  image.ubi

View the contents of b-tree database from the volumes in image.ubi:

python  -d  image.ubi


  • python2
  • python-lzo
  • crcmod


  • add option to select a volume
  • add option to select a older master node
  • parse the journal
  • analyze b-tree structure for unused nodes
  • analyze fs structure for unused inodes, dirents
  • verify that data block size equals the size mentioned in the inode.
  • add support for ubifs ( without the ubi layer )


Similar tools


Willem Hengeveld