Tool for viewing and extracting files from an UBIFS image
Branch: master
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
Type Name Latest commit message Commit time
Failed to load latest commit information.
LICENSE full name in license May 2, 2017 added todo item Apr 7, 2017
requirements.txt initial commit Apr 6, 2017 added some functions needed for write support. more consistent output… 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