LINUX.ORG.RU
ФорумMobile

дамп UBI: разборка и сборка

 ,


0

1

Заранее извиняюсь за репост с 4pda, но там молчат. Итак:пытаюсь поиграться с дампом от модема ZTE MF833 (Мегафон М150-3), на чипсете Qualcomm mdm9207 и NAND W71NW20GF3FW. У этой заразы все закрыто, в т.ч. adb и ssh, надо как-то открыть.

Снял с помощью qtools дамп системного раздела:

-rwxrwxrwx 1 root root 155058176 июн 3 13:46 14-0-system.oob

Выдираю из него 6 подразделов и создаю манифест для обратной сборки:

ubireader_utils_info 14-0-system.oob

ubireader_extract_images 14-0-system.oob

root@ubuntu:/home/user# ls ubifs-root/14-0-system.oob/ -la

… drwxr-xr-x 2 root root 4096 May 17 00:49 img-133015877

-rw-r–r– 1 root root 2666496 May 17 00:49 img-133015877_vol-cachefs.ubifs

-rw-r–r– 1 root root 8507392 May 17 00:49 img-133015877_vol-etcrwfs.ubifs

-rw-r–r– 1 root root 1650688 May 17 00:49 img-133015877_vol-fwfs.ubifs

-rw-r–r– 1 root root 10031104 May 17 00:49 img-133015877_vol-logfs.ubifs

-rw-r–r– 1 root root 47108096 May 17 00:49 img-133015877_vol-rootfs.ubifs

-rw-r–r– 1 root root 51298304 May 17 00:49 img-133015877_vol-ztedata.ubifs

Вопрос 1: общий размер выдранных файлов - 121 Мб - где еще 35Мб?

Дальше монтирую img-133015877_vol-rootfs.ubifs, где всякие интересные вещи хранятся:

modprobe nandsim first_id_byte=0xef second_id_byte=0xa5 third_id_byte=0x51 fourth_id_byte=0x95

flash_erase /dev/mtd0 0 0

ubiformat /dev/mtd0 -s 2048 -O 2048

modprobe ubi

ubiattach -m 0 -d 0 -O 2048

ubimkvol /dev/ubi0 -N rootfs -s $((0xB000000))

ubiupdatevol /dev/ubi0_0 ./ubifs-root/14-0-system.oob/img-133015877_vol-rootfs.ubifs

mount /dev/ubi0_0 /mnt

меняю нужный файлик (/[mount point]/usr/zte/zte_conf/scripts/firewall_sys_fw.sh), собираю обратно: /usr/sbin/mkfs.ubifs -m 2048 -e 126976 -c 400 -x lzo -f 8 -k r5 -p 1 -l 4 -r /mnt img-133015877_5_1.ubifs

ls -la img-133015877_5*

-rw-r–r– 1 root root 28569600 июн 3 23:14 img-133015877_5_1.ubifs

-rw-r–r– 1 root root 47108096 июн 3 22:46 img-133015877_5.ubifs

опять расхождение размеров, а я всего-то закомментировал 4 строки в одном из файлов? Распакованные примонтированные размеры совпадают, т.е. я ничего не потерял..

Аналогично собираю новый аналог 14-0-system.oob (ini-файл мне любезно сделала утилита ubireader_utils_info из 14-0-system.oob):

/usr/sbin/ubinize -p 131072 -m 2048 -O 2048 -s 2048 -x 1 -Q 133015877 -o 14-img-133015877.ubi img-133015877.ini

Полученный файл также сильно отличается от исходного 14-0-system.oob - на 29 мегабайт, впрочем ожидаемо, выше писал, что размеры выдранных images и образа раздела отличаются: ls -la 14*

-rwxrwxrwx 1 root root 155058176 июн 3 13:46 14-0-system.oob

-rw-r–r– 1 root root 126746624 июн 3 22:48 14-img-133015877.ubi

Все это не очень нравится и шить в модем обратно файл на 29 Мб меньше исходного дампа я не решаюсь.

Вопрос 1: как сделать так, чтобы размеры исходного и собранного 14-0-system.oob совпадали, если я ничего не меняю, а просто разбираю его через ubireader_extract_images и собираю обратно через ubireader_utils_info и ubinize? Вопрос 2: как сделать так, чтобы размеры исходного и собранного раздела img-133015877_vol-rootfs.ubifs совпадали, если я на нем ничего не меняю, а просто монтирую его и собираю обратно через mkfs.ubifs?

binwalk что-нибудь интерестное сообщает? Может у вас там в образе не только ubifs. А по поводу ubinize, там же много параметров — зарезервированные блоки, сжатие, может у исходной ФС они сильно отличались...

mky ★★★★★ ()
Ответ на: комментарий от mky

root@ubuntu:~/dump# binwalk 14-0-system.oob

DECIMAL HEXADECIMAL DESCRIPTION

0 0x0 UBI erase count header, version: 1, EC: 0x1, VID header offset: 0x800, data offset: 0x1000

Обратно собираю по скриптам, которые генерит ubireader_utils_info. Основной вопрос - куда 30мб при разборе файла .oob на 6 файлов .ubifs делись. Может там пустые пространства в NAND-памяти.. Попробую бинарно сравнить..

deus2k3 ()
Ответ на: комментарий от deus2k3

пустые пространства Энтропию посмотри.

anonymous ()
Ответ на: комментарий от mky

Просто разобрал ubireader_extract_images и собрал ubinize по скрипту.. Ничего не монтировал, никаких mkfs.ubifs..

Ощущение что совсем не то собралось.. Ну и «unknown block count 401» в 14-0-system.oob тоже очень многообещающе

root@kali:~/dump# ubireader_display_info 14-0-system.oob >1 root@kali:~/dump# ubireader_display_info img-133015877.ubi >2 root@kali:~/dump# diff 1 2 6,7c6,7 < Total Block Count: 1183 < Data Block Count: 780

  Total Block Count: 967
  Data Block Count: 965

10c10 < Unknown Block Count: 401

  Unknown Block Count: 0

22c22 < PEB Range: 0 - 1182

          PEB Range: 0 - 966

28c28 < Block Count: 66

                  Block Count: 80

50c50 < Block Count: 7

                  Block Count: 13

72c72 < Block Count: 19

                  Block Count: 30

94c94 < Block Count: 61

                  Block Count: 67

138c138 < Block Count: 223

                  Block Count: 371
deus2k3 ()
Ограничение на отправку комментариев: только для зарегистрированных пользователей