Dieses Tool kann verwendet werden, um den Inhalt von Ubifs -Bildern anzuzeigen oder zu extrahieren.
UBIFS ist ein Dateisystem, das speziell für die Verwendung von NAND -Flash -Chips entwickelt wurde. NAND Flash ist in ERASEBLOCKS organisiert. Eraseblocks können gelöscht, angehängt und gelesen werden. Das Löschen ist ein relativ teurer Betrieb und kann nur eine begrenzte Häufigkeit durchgeführt werden.
Ein UBIFS -Bild enthält vier Abstraktionsschichten:
Jeder ERASEBLOCK enthält Informationen darüber, wie oft er gelöscht wurde und zu welchem Band es gehört. Ein Volumen enthält eine B-Tree-Datenbank mit Schlüssel für:
Die Inodes sind im Grunde ein Standard -UNIX -Dateisystem mit Direntien, regulären Dateien, Symlinks, Geräten usw.
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
Dadurch wird ein UBI -Bild für ein Gerät mit EraseBlock -Größe 0x40000 montiert. Wenn Ihr Bild eine Blöcke von 0x20000 hat, verwenden Sie fourth_id_byte=0x15 und geben Sie eine PageSize von 2048 mit der zweiten Modprobe -Linie an.
Zeigen Sie den Inhalt der Datei /etc/passwd im Dateisystem Bild image.ubi :
python ubidump.py -c /etc/passwd image.ubi
Listen Sie die Dateien in allen Bänden in image.ubi auf:
python ubidump.py -l image.ubi
Zeigen Sie den Inhalt der B-Tree-Datenbank aus den Volumes in image.ubi :
python ubidump.py -d image.ubi
Extrahieren Sie einen nicht unterstützten Volumentyp, damit Sie ihn mit anderen Tools analysieren können:
python ubidump.py -v 0 --saveraw unknownvol.bin image.ubi
Beachten Sie, dass UBI -Bilder häufig Squashfs -Volumes enthalten, die mit Tools wie Unsquashfs oder RDSquashfs extrahiert werden können
Installieren Sie die erforderlichen Python -Module mit:
pip install -r requirements.txt
oder als PIP -Paket:
pip install ubidump
Möglicherweise müssen Sie Ihre Operarating -Systembibliotheken zuerst manuell für LZO installieren:
unter Linux:
apt install liblzo2-dev
auf macos:
brew install lzo
Vielleicht müssen Sie die Python -Bibliothek wie folgt bauen:
LDFLAGS=-L/usr/local/lib CFLAGS=-I/usr/local/include/lzo pip3 install python-lzo
Wenn Sie die ZSTD -Komprimierung benötigen, müssen Sie das zstandard -Modul installieren.
master auszuwählenWillem Hengeveld [email protected]