Esta herramienta se puede usar para ver o extraer el contenido de las imágenes UBIFS.
UBIFS es un sistema de archivos diseñado específicamente para usarse en chips flash nand. NAND Flash se organiza en borradores . EraseBlocks se puede borrar, agregar y leer. El borrado es una operación relativamente costosa, y solo se puede hacer un número limitado de veces.
Una imagen UBIFS contiene cuatro capas de abstracción:
Cada borrador contiene información sobre la frecuencia con la que se ha borrado y a qué volumen pertenece. Un volumen contiene una base de datos B-Tree con claves para:
Los inodos son básicamente un sistema de archivos UNIX estándar, con direcciones, archivos regulares, enlaces simbólicos, dispositivos, 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
Esto montará una imagen UBI para un dispositivo con el tamaño ERASEBLOCK 0x40000. Si su imagen tiene un tamaño de bloque de 0x20000, use fourth_id_byte=0x15 y especifique una página de 2048 con la segunda línea modprobe.
Ver el contenido del archivo /etc/passwd en la image.ubi del sistema de archivos.
python ubidump.py -c /etc/passwd image.ubi
Enumere los archivos en todos los volúmenes en image.ubi :
python ubidump.py -l image.ubi
Vea el contenido de la base de datos B-Tree desde los volúmenes en image.ubi :
python ubidump.py -d image.ubi
Extraiga un tipo de volumen no compatible, para que pueda analizarlo con otras herramientas:
python ubidump.py -v 0 --saveraw unknownvol.bin image.ubi
Tenga en cuenta que a menudo las imágenes UBI contienen volúmenes de squashfs, que se pueden extraer utilizando herramientas como unsquashfs o rdsQuashfs
Instale los módulos Python requeridos usando:
pip install -r requirements.txt
o como un paquete PIP:
pip install ubidump
Es posible que deba instalar manualmente las bibliotecas de su sistema operativo para LZO primero:
En Linux:
apt install liblzo2-dev
en macOS:
brew install lzo
Tal vez necesite construir la biblioteca de Python como esta:
LDFLAGS=-L/usr/local/lib CFLAGS=-I/usr/local/include/lzo pip3 install python-lzo
Cuando necesite compresión ZSTD, deberá instalar el módulo zstandard .
master más antiguoWillem Hengeveld [email protected]