Cet outil peut être utilisé pour visualiser ou extraire le contenu des images UBIFS.
UBIFS est un système de fichiers spécialement conçu pour être utilisé sur les puces Flash NAND. Nand Flash est organisé en blocs effacés . Les efforts peuvent être effacés, annexés et lus. L'effacement est une opération relativement coûteuse et ne peut être fait qu'un nombre limité de fois.
Une image UBIFS contient quatre couches d'abstraction:
Chaque effacement effrayant contient des informations sur la fréquence à laquelle il a été effacé et à quel volume il appartient. Un volume contient une base de données B-Tree avec des clés pour:
Les Inodes sont essentiellement un système de fichiers UNIX standard, avec des réalisations, des fichiers réguliers, des liens symboliques, des appareils, 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
Cela montera une image UBI pour un appareil avec une taille ERASEBLOCK 0x40000. Si votre image a une taille de blocs de 0x20000, utilisez fourth_id_byte=0x15 et spécifiez une pages de 2048 avec la deuxième ligne modprobe.
Affichez le contenu du fichier /etc/passwd dans l'image du système de fichiers image.ubi :
python ubidump.py -c /etc/passwd image.ubi
Énumérez les fichiers dans tous les volumes dans image.ubi :
python ubidump.py -l image.ubi
Affichez le contenu de la base de données B-Tree à partir des volumes dans image.ubi :
python ubidump.py -d image.ubi
Extraire un type de volume non pris en charge, afin que vous puissiez l'analyser avec d'autres outils:
python ubidump.py -v 0 --saveraw unknownvol.bin image.ubi
Notez que souvent les images UBI contiennent des volumes de squashfs, qui peuvent être extraits à l'aide d'outils tels que Unsquashfs ou RDSquashfs
Installez les modules Python requis en utilisant:
pip install -r requirements.txt
ou comme un package PIP:
pip install ubidump
Vous devrez peut-être installer manuellement vos bibliothèques de systèmes de fonctionnement pour LZO d'abord:
sur Linux:
apt install liblzo2-dev
sur macOS:
brew install lzo
Vous devez peut-être construire la bibliothèque Python comme ceci:
LDFLAGS=-L/usr/local/lib CFLAGS=-I/usr/local/include/lzo pip3 install python-lzo
Lorsque vous avez besoin de compression ZSTD, vous devrez installer le module zstandard .
master plus ancienWillem Hengeveld [email protected]