Распаковка образа ubi с изображением ubifs внутри

Во время исследования я столкнулся с проблемой. У меня есть файл прошивки, скачанный из интернета, и я пытаюсь распаковать его, чтобы эмулировать прошивку. Хорошая новость в том, что однажды я сделал это успешно, но я вернул свою машину, и я не могу воссоздать процесс сейчас.

Прежде всего, файл не может быть извлечен какими-либо инструментами, потому что вы получите ошибку, что найдено менее 2 блоков макета.

После этого я сбросил некоторую информацию из файла ubi:

      ==> app_ubifs <==
1 named volumes found, 2 physical volumes, blocksize=0x20000
== volume b'bakfs' ==
-rw-r--r--  1 0     0       37879808 2020-04-22 01:27:47 ubifs

Итак, с тех пор, как я добился успеха, я знаю, что в томе bakfs есть еще один образ ubifs, который можно успешно извлечь общедоступными инструментами.

Я тестировал множество способов смонтировать этот образ, но он всегда терпит неудачу.

      modprobe ubi 

modprobe nandsim first_id_byte=0x20 second_id_byte=0xaa \
                 third_id_byte=0x00 fourth_id_byte=0x15

Я считаю, что это правильная конфигурация для размера блока =0x20000.

      ubiformat /dev/mtd0 -f app_ubifs   
ubiformat: mtd0 (nand), size 268435456 bytes (256.0 MiB), 2048 eraseblocks of 131072 bytes (128.0 KiB), min. I/O size 2048 bytes
libscan: scanning eraseblock 2047 -- 100 % complete  
ubiformat: 2048 eraseblocks have valid erase counter, mean value is 0
ubiformat: flashing eraseblock 282 -- 100 % complete  
ubiformat: formatting eraseblock 2047 -- 100 % complete    

                 

Также нормально работает форматирование и перепрошивка.

После этой следующей части я действительно не понимаю. В сети есть 100 различных способов, и я не могу заставить их работать.

Буду признателен, если кто-нибудь поможет мне в этом процессе.

Как я уже сказал, у меня уже есть распакованная версия с файловой системой. Но сейчас я не могу воссоздать процесс распаковки. Так что я знаю, что это возможно.

2 ответа

Еще одна быстрая альтернатива для доступа к файлам внутри образа, если модуль nandsim недоступен для текущего ядра (для ОС на основе Debian):

      apt install liblzo2-dev
pip install python-lzo ubi_reader

Затем в той же папке, где находится образ ubifs, выполните
ubireader_extract_files ubifs.imgи вот:

      ├── ubifs.img
└── ubifs-root
    └── 705623055
        └── rootfs
            ├── bin
            ├── boot
            ├── dev
            ├── etc
            ├── home
            ├── lib
            ├── linuxrc -> /bin/busybox
            ├── media
            ├── mnt
            ├── opt
            ├── proc
            ├── sbin
            ├── Settings
            ├── srv
            ├── sys
            ├── tmp -> /var/tmp
            ├── usr
            ├── var
            └── www

---- решение

      modprobe nandsim first_id_byte=0x2c second_id_byte=0xac third_id_byte=0x90 fourth_id_byte=0x15

Сделайте устройство для размера блока =0x20000.

Проверьте, настроен ли он.

      cat /proc/mtd

давай очистим это.

      flash_erase /dev/mtd0 0 0

Теперь отформатируйте и прошейте изображение.

      ubiformat /dev/mtd0 -f image.ubi -O 2048

Затем прикрепите устройство.

      modprobe ubi 

ubiattach -p /dev/mtd0 -O 2048

И теперь я могу его смонтировать.

      mount -t ubifs /dev/ubi0_X /mnt/ubifs

В моем случае это был ubi0_1, обязательно проверьте это на / dev.

Другие вопросы по тегам