このツールは、UBIF画像の内容を表示または抽出するために使用できます。
Ubifsは、NANDフラッシュチップで使用するために特別に設計されたファイルシステムです。 Nand FlashはEraseBlocksで編成されています。消去ブロックは、消去、追加され、読み取ることができます。消去は比較的高価な操作であり、限られた回数しか行うことができません。
UBIFS画像には、4つの抽象化レイヤーが含まれています。
それぞれのEraseBlockには、消去された頻度と属するボリュームに関する情報が含まれています。ボリュームには、次のキーを備えたBツリーデータベースが含まれています。
INODEは基本的に標準のUNIXファイルシステムであり、Direantries、通常のファイル、Symlinks、デバイスなどを備えています。
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
これにより、EraseBlockサイズ0x40000のデバイスにUBI画像がマウントされます。画像に0x20000のブロックサイズがある場合は、 fourth_id_byte=0x15を使用し、2番目のmodprobeラインで2048のページサイズを指定します。
ファイルシステム画像画像で/etc/passwdファイルの内容を表示しますimage.ubi :
python ubidump.py -c /etc/passwd image.ubi
image.ubiのすべてのボリュームのファイルをリストします。
python ubidump.py -l image.ubi
image.ubiのボリュームからBツリーデータベースの内容を表示します。
python ubidump.py -d image.ubi
サポートされていないボリュームタイプを抽出してください。そうすれば、他のツールで分析できます。
python ubidump.py -v 0 --saveraw unknownvol.bin image.ubi
多くの場合、UBI画像にはSchashfsボリュームが含まれており、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]