Esta ferramenta pode ser usada para visualizar ou extrair o conteúdo das imagens ubifs.
O UBIFS é um sistema de arquivos projetado especificamente para usados em chips Flash NAND. O NAND Flash está organizado em blocos de apagamento . Os blocos de apagamento podem ser apagados, anexados e lidos. Apagar é uma operação relativamente cara e pode ser feita apenas um número limitado de vezes.
Uma imagem UBIFS contém quatro camadas de abstração:
Cada Bloco de Erase contém informações sobre a frequência com que foi apagado e qual volume ele pertence. Um volume contém um banco de dados B-Tree com chaves para:
Os inodos são basicamente um sistema de arquivos UNIX padrão, com direntries, arquivos regulares, links 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
Isso montará uma imagem UBI para um dispositivo com tamanho de apagamento 0x40000. Se a sua imagem tiver um tamanho de bloco de 0x20000, use fourth_id_byte=0x15 e especifique um PageSize de 2048 com a segunda linha ModProbe.
Veja o conteúdo do arquivo /etc/passwd no sistema de arquivos imagem image.ubi :
python ubidump.py -c /etc/passwd image.ubi
Liste os arquivos em todos os volumes no image.ubi :
python ubidump.py -l image.ubi
Veja o conteúdo do banco de dados B-Tree a partir dos volumes em image.ubi :
python ubidump.py -d image.ubi
Extrair um tipo de volume não suportado, para que você possa analisá -lo com outras ferramentas:
python ubidump.py -v 0 --saveraw unknownvol.bin image.ubi
Observe que as imagens UBI frequentemente contêm volumes de squashfs, que podem ser extraídos usando ferramentas como insquashfs ou rdsquashfs
Instale os módulos Python necessários usando:
pip install -r requirements.txt
ou como um pacote PIP:
pip install ubidump
Pode ser necessário instalar manualmente suas bibliotecas de sistemas operacionais para o LZO primeiro:
no Linux:
apt install liblzo2-dev
no macOS:
brew install lzo
Talvez você precise construir a biblioteca Python como esta:
LDFLAGS=-L/usr/local/lib CFLAGS=-I/usr/local/include/lzo pip3 install python-lzo
Quando você precisar de compactação ZSTD, você precisará instalar o módulo zstandard .
master mais antigoWillem hengeveld [email protected]