이 도구는 UBIFS 이미지의 내용을 보거나 추출하는 데 사용될 수 있습니다.
UBIFS는 NAND 플래시 칩에 사용하도록 특별히 설계된 파일 시스템입니다. NAND Flash는 EraseBlocks 로 구성됩니다. EraseBlocks는 지우고, 추가 및 읽을 수 있습니다. 지우기는 비교적 비싼 작업이며 제한된 횟수 만 수행 할 수 있습니다.
UBIFS 이미지에는 4 개의 추상화 레이어가 포함됩니다.
각 EraseBlock에는 얼마나 자주 지워진 지에 대한 정보와 그에 속하는 볼륨에 대한 정보가 포함되어 있습니다. 볼륨에는 키가있는 B-Tree 데이터베이스가 포함되어 있습니다.
inodes는 기본적으로 표준 UNIX 파일 시스템이며, Direntries, 일반 파일, 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 Size 0x40000이있는 장치의 UBI 이미지를 장착합니다. 이미지의 블록 크기가 0x20000 인 경우 fourth_id_byte=0x15 사용하고 두 번째 ModProbe 라인으로 2048 의 Pagesize를 지정하십시오.
FileSystem image.ubi 에서 /etc/passwd 파일의 내용을보십시오.
python ubidump.py -c /etc/passwd image.ubi
image.ubi 의 모든 볼륨에 파일을 나열하십시오.
python ubidump.py -l image.ubi
image.ubi 의 볼륨에서 B-Tree 데이터베이스의 내용을 봅니다.
python ubidump.py -d image.ubi
지원되지 않는 볼륨 유형을 추출하여 다른 도구로 분석 할 수 있습니다.
python ubidump.py -v 0 --saveraw unknownvol.bin image.ubi
UBI 이미지에는 종종 UBI 이미지에 Squashfs 볼륨이 포함되어 있으며 Unsquashfs 또는 Rdsquashfs와 같은 도구를 사용하여 추출 할 수 있습니다.
다음을 사용하여 필요한 파이썬 모듈을 설치하십시오.
pip install -r requirements.txt
또는 PIP 패키지로 :
pip install ubidump
먼저 LZO를 위해 운영 시스템 라이브러리를 수동으로 설치해야 할 수도 있습니다.
Linux :
apt install liblzo2-dev
MACOS :
brew install lzo
어쩌면 다음과 같은 파이썬 라이브러리를 구축해야 할 수도 있습니다.
LDFLAGS=-L/usr/local/lib CFLAGS=-I/usr/local/include/lzo pip3 install python-lzo
ZSTD 압축이 필요한 경우 zstandard 모듈을 설치해야합니다.
master 노드를 선택하려면 옵션을 추가하십시오Willem Hengeveld [email protected]