Этот инструмент можно использовать для просмотра или извлечения содержимого изображений UBIFS.
Ubifs - это файловая система, специально предназначенная для чипов Flash Nand. Nand Flash организована в Eraseblocks . Eraseblocks можно стерте, добавить и прочитать. Старение является относительно дорогой операцией, и может быть выполнена лишь ограниченное количество раз.
Изображение Ubifs содержит четыре слоя абстракции:
Каждый EraseBlock содержит информацию о том, как часто она стирается, и какой том он принадлежит. Том содержит базу данных B-Tree с ключами для:
Иноды в основном являются стандартной файловой системой UNIX, с Direntries, обычными файлами, символиками, устройствами и т. Д.
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
Это установит изображение UBI для устройства с размером Eraseblock 0x40000. Если ваше изображение имеет блокировки 0x20000, используйте fourth_id_byte=0x15 и укажите страницы 2048 года со второй линией ModProbe.
Просмотреть содержимое файла /etc/passwd в image.ubi изображения файловой системы.
python ubidump.py -c /etc/passwd image.ubi
Перечислите файлы во всех томах в image.ubi :
python ubidump.py -l image.ubi
Просмотреть содержимое базы данных B-Tree из томов в image.ubi :
python ubidump.py -d image.ubi
Извлеките неподдерживаемый тип тома, чтобы вы могли проанализировать его с помощью других инструментов:
python ubidump.py -v 0 --saveraw unknownvol.bin image.ubi
Обратите внимание, что часто изображения UBI содержат объемы Squashfs, которые можно извлечь с помощью таких инструментов, как UNSQUASHFS или RDSQUASHFS
Установите необходимые модули Python, используя:
pip install -r requirements.txt
или как пакет PIP:
pip install ubidump
Возможно, вам вручную сначала установить свои операционные системы системных библиотек для LZO:
на Linux:
apt install liblzo2-dev
на macOS:
brew install lzo
Может быть, вам нужно построить библиотеку Python так:
LDFLAGS=-L/usr/local/lib CFLAGS=-I/usr/local/include/lzo pip3 install python-lzo
Когда вам понадобится сжатие ZSTD, вам нужно будет установить модуль zstandard .
master -узелWillem Hengeveld [email protected]