Extract and Repackage Image.img

Программное обеспечение ГУ, Загрузочные носители, и всё что с ними связано.
Аватара пользователя
bellic
Сообщения: 1452
Зарегистрирован: 11 мар 2017, 07:47
Откуда: Rostov-on-Don
Контактная информация:

Extract and Repackage Image.img

Сообщение bellic »

Говоря по русски - Распаковка и Переупаковка файла "Image.img" прошивок для ГУ типа AVIC MRZ, содержащих следующий файл:

...\APL\MENU\Image.img

Тема навеяна незавершенными исследованиями в теме Extract and Repackage Image.img

Выложу пока формат файла в том виде, какой он в первоисточнике (чтоб не забыть), а позже возможно займусь за осмысление - если это будет кому нибудь интересно... :cool:

This is the complete file format spec, as far as i understood it:

Image File Format
* ----------+----------------------------+-----------
*  Position |	Field			 |   Size
* ----------+----------------------------+-----------
*     0     | Header Record (F1 only)	 | 40 bytes
*     0     | Header Record (F2 only)	 | 48 bytes
* ----------+----------------------------+-----------
* variable  | GZH Record (Gzip Header)   | 12 bytes
* variable  | GZH Record (Gzip Header)   | 12 bytes
* variable  | GZH Record (Gzip Header)   | 12 bytes
* ...       | ...			 | ...
* ----------+----------------------------+-----------
* variable  | GZF Record (Gzip File)	 | variable
* variable  | GZF Record (Gzip File)	 | variable
* variable  | GZF Record (Gzip File)	 | variable
* ...       | ...			 | ...
* ----------+----------------------------+-----------
* variable  | Directory Record		 | variable
* variable  | Directory Record		 | variable
* variable  | Directory Record		 | variable
* ...	    | ...			 | ...
* ----------+----------------------------+-----------

Header Record
* ----------+----------------------------+-----------+------------------------
*  Position |	  Field		         |   Size    |   Example Value
* ----------+----------------------------+-----------+------------------------
*     0     | Magic Bytes (F1 only)      | 4 bytes   | F1 F1 F1 F1
*     0	    | Magic Bytes(F2 only)	 | 4 bytes   | F2 F2 F2 F2
* ----------+----------------------------+-----------+------------------------
*     4	    | Number of files	 	 | 4 bytes   | 74 0C 00 00
* ----------+----------------------------+-----------+------------------------
*     8	    | Header Size (F1 only)	 | 4 bytes   | 28 00 00 00
*     8	    | Header Size (F2 only)	 | 4 bytes   | 30 00 00 00
* ----------+----------------------------+-----------+------------------------
*    12	    | ? Unknown ?		 | 4 bytes   | 00 00 00 00
*    16	    | ? Unknown ? (F2 only)	 | 4 bytes   | 30 00 00 00
*    20     | ? Unknown ? (F2 only)	 | 4 bytes   | 00 00 00 00
* ----------+----------------------------+-----------+------------------------
*  var	    | GZH Block Offset		 | 4 bytes   | 30 00 00 00
*  var	    | GZH Block Size		 | 4 bytes   | 70 95 00 00
* ----------+----------------------------+-----------+------------------------
*  var	    | GZF Block Offset		 | 4 bytes   | A0 95 00 00
*  var	    | GZF Block Size		 | 4 bytes   | 62 E6 83 00
* ----------+----------------------------+-----------+------------------------
*  var	    | Directory Block Offset	 | 4 bytes   | 02 C7 84 00
*  var	    | Directory Block Size	 | 4 bytes   | E5 5D 01 00
* ----------+----------------------------+-----------+------------------------

Gzip Header Record
* ----------+----------------------------+-----------+---------------
*  Position |	  Field	   		 |   Size    | Example Value
* ----------+----------------------------+-----------+---------------
*     0	    | GZF Record Offset          | 4 bytes   | 80 68 00 00
*     4	    | GZip Filesize	         | 4 bytes   | 75 00 00 00
*     8     | Unzipped BMP Filesize      | 4 bytes   | 84 02 00 00
* ----------+----------------------------+-----------+---------------

GZIP File Record
* ----------+----------------------------+-----------+-----------
* Position  |	  Field			 |   Size    |  Value
* ----------+----------------------------+-----------+-----------
*    0	    | Magic Bytes (gzip)	 | 3 bytes   | 1F 8B 08
*    3	    | Rest of gzip data		 | variable  |
*/

Directory Record
* ----------+----------------------------+-----------+---------+---------------------------
*  Position |	  Field			 |   Size    |  Style  |   Example Value(s)
* ----------+----------------------------+-----------+---------+---------------------------
*      0    | Type1			 | variable  |  ASCII  | "pOver", "vi", ""
*     var   | Delimiter			 | 1 byte    |   HEX   | 5C
*     var   | Type2			 | 2 bytes   |  ASCII  | "2M", "32K", "GZ"
*     var   | Delimiter			 | 1 byte    |   HEX   | 5C
*     var   | Filename			 | variable  |  ASCII  | "007_2M_OM-151.bmp"
*     var   | Delimiter			 | 1 byte    |   HEX   | 00
* ----------+----------------------------+-----------+---------+---------------------------

У автора оригинального поста имеется еще и утилита "xtractor", написанная на JAVA, якобы умеющая распаковывать Image.img, но я ее не тестировал.
xtractor.zip
(1.34 МБ) 862 скачивания

Usage:
java -jar xtractor.jar
version: 1.0
usage: java -jar xtractor.jar -f <file> -o <outdir>
 -b <begin>    begin at this index
 -f <file>     image file (mandatory)
 -g            keep gzip files
 -h            display help
 -l <limit>    stop when this number of output files is reached
 -o <outdir>   output directory (mandatory)
 -s            silent
 -v            verbose

It generates a folder/file structure like this:
OutputFolder
|
|- 2M
|   |- 007_2M_AV-001.bmp
|   |- 007_2M_AV-001.bmp
|   |- 007_2M_AV-002.bmp
|   |- ...
|- 32k
|   |- 007_32K_AV-001.bmp
|   |- 007_32K_AV-002.bmp
|   |- 007_32K_AV-003.bmp
|   |- ...
|- pOver
|   |- 2M
|   |   |- 007_2M_OM-001.bmp
|   |   |- 007_2M_OM-002.bmp
|   |   |- 007_2M_OM-003.bmp
|   |   |- ...
|   |- 32K
|   |- GZ

По следующей ссылке находятся тексты программы на СИ по теме:
https://github.com/dzo/mrz99/commit/223 ... a4e5dbf7a2

Ну и для полноты исходной информации - выложу один из архивов файла Image.img (for MRZ09), найденных у меня:
Image.rar
(14.37 МБ) 821 скачивание
В планах - хотелось бы освоить этот формат упаковки и написать свою утилиту Распаковки-Упаковки!... :oops:

P.S. Если распаковать WinRAR-ом файл "extractor.jar", то можно увидеть много файлов, которые прекрасно декомпилируются с помощью "DJ Java Decompiler" и можно увидеть исходный код! Но я блин в этой JAVA нифига не понимаю... :?
azag
Сообщения: 2
Зарегистрирован: 28 фев 2024, 15:19
Откуда: UFA

Extract and Repackage Image.img

Сообщение azag »

bellic, приветствую! У вас получилось написать утилиту для упаковки? Я в этом не особо силен :smile: Но Carrozzeria серии ZH VH9000, тоже имеется файл Image.img. Zip архиватором я распаковал файл Image
Снимок экрана (3).png
, после MultiExtractor-ом попробовал заменить несколько изображений
menu1.jpg
, вроде все прошло удачно. Но теперь не могу файл Image обратно упаковать :?
Снимок экрана (5).png
Снимок экрана (1).png
Аватара пользователя
bellic
Сообщения: 1452
Зарегистрирован: 11 мар 2017, 07:47
Откуда: Rostov-on-Don
Контактная информация:

Extract and Repackage Image.img

Сообщение bellic »

azag писал(а):
06 мар 2024, 14:24
bellic, приветствую! У вас получилось написать утилиту для упаковки
Привет!
Да, было дело, и утилита имеется, но помню нашел в ней ошибку или вирус, или то и другое, и релиз пришлось забрать... :shock: :?

Скриншот 07-03-2024 201249.jpg
Скриншот 07-03-2024 201249.jpg (12.91 КБ) 3766 просмотров

Сейчас ищу исходники, вспоминаю как Шкодить и думаю подниму утилиту из пепла! :grin:
azag
Сообщения: 2
Зарегистрирован: 28 фев 2024, 15:19
Откуда: UFA

Extract and Repackage Image.img

Сообщение azag »

bellic, Прошу прощения что сразу не ответил, почему то мне уведомление об ответе не пришло на почту :? .
Будет круто если у Вас получится снова собрать эту утилиту :good: , а то я уже начал изучать тему про java :grin:
Аватара пользователя
bellic
Сообщения: 1452
Зарегистрирован: 11 мар 2017, 07:47
Откуда: Rostov-on-Don
Контактная информация:

Extract and Repackage Image.img

Сообщение bellic »

azag писал(а):
09 мар 2024, 20:57
bellic, Прошу прощения что сразу не ответил, почему то мне уведомление об ответе не пришло на почту .
Будет круто если у Вас получится снова собрать эту утилиту , а то я уже начал изучать тему про java
azag, а вы не обольщайтесь!!! :grin:
Я могу долго собираться с обещанным, ибо на то есть свои причины!
И лучше всеж ж Джаву поизучайте! - Нам нужны спецы в этой области!
Формат файла имеется, код на Джаеве тоже..
Что мешает спокойному и плодотворному шКодингу? :oops:
Аватара пользователя
bellic
Сообщения: 1452
Зарегистрирован: 11 мар 2017, 07:47
Откуда: Rostov-on-Don
Контактная информация:

Extract and Repackage Image.img

Сообщение bellic »

Попробую еще разок проанализировать всю инфу...
...
Формат файла Image.img
...
Попробую тут неторопясь разобрать формат вышеуказанного файла... :smile:
Ну мне иногда так видимо проще... Тем более формат форума, для анализа, позволяет сохранять в более удобном виде.. :?
...
К сожалению, упаковать его более скромно, не получается, посему попробую выложить все 20 Мбайт, порезанные на 2 части:
Image.part1.rar
(10 МБ) 215 скачиваний
Image.part2.rar
(9.22 МБ) 214 скачиваний
Аватара пользователя
bellic
Сообщения: 1452
Зарегистрирован: 11 мар 2017, 07:47
Откуда: Rostov-on-Don
Контактная информация:

Extract and Repackage Image.img

Сообщение bellic »

Начало файла:
image-1.jpg
Длина файла: 21 143 547 байт (1429FFB hex)
Коротко... тезисами...
Сигнатура F1 F1 F1 F1
Затем - видимо поля заголовка... таблица смещений до начала GZ-картинок... Сами GZ-картинки... список имен файлов с путями...

Конец файла:
image-2.jpg

Начало списка имен файлов с путями:
image-3.jpg

Адрес начала списка: 1415268 hex
Формат отдельной записи: \MapOver\2M\734_2M_OM-000_ex.bmp
Т.е. указан полный путь с каталогами к файлу формата .bmp
Отдельные записи разделены между собой одним Нулевым байтом.
Аватара пользователя
bellic
Сообщения: 1452
Зарегистрирован: 11 мар 2017, 07:47
Откуда: Rostov-on-Don
Контактная информация:

Extract and Repackage Image.img

Сообщение bellic »

Имеется утилита, производящая распаковку файла Image.img, выуживая при этом из него все имеющиеся картинки, но в формате GZ-архивов.
После ее отработки получаем:
log-файл:
log.txt
(76.3 КБ) 208 скачиваний

Файл со списком файлов (да простит меня автор утилиты.. - чтобы сюда загрузить, я изменил расширение на .txt):
bmp_names.txt
(83.39 КБ) 212 скачиваний

Каталог bmp, содержащий 2579 dec (A13 hex) файлов GZ-формата, внутри которых упакованы картинки bmp-формата, которые запросто можно распаковать... :oops: Но этим действом мы займемся позже.
Аватара пользователя
bellic
Сообщения: 1452
Зарегистрирован: 11 мар 2017, 07:47
Откуда: Rostov-on-Don
Контактная информация:

Extract and Repackage Image.img

Сообщение bellic »

Возьмусь за попытку разбора формата заголовка файла и первой таблицы...
image-4.jpg

F1 F1 F1 F1 - очень уж похоже на сигнатуру файла... :cool:
13 0А 00 00 - в обратном порядке байт - 0А 13 - hex-количество GZ-архивов, содержащихся в файле;
18 79 00 00 - в обратном порядке байт - 79 18 - hex - смещение до начала таблицы GZ-архивов;
50 D9 40 01 - в обратном порядке байт - 0140D950 - hex-длина таблицы GZ-архивов (сплошной голубой);
68 52 41 01 - в обратном порядке байт - 01415268 - ни что иное, как hex-смещение до начала списка файлов с путями...
93 4D 01 00 - в обратном порядке байт - 00014D93 - размер таблицы со списком файлов (сплошное желтое выделение)

Предположительно с адреса 0034h начинается таблица, содержащая отдельную информацию по каждому архиву:

• Голубым цветом выделены смещения до каждого GZ-архива;
• Длины архива(выделено феолетовым цветом);
Желтым цветом выделены толи последнее двоичное слово (4 байта) архива... возможно оно является КС самого GZ-архива!?

Сплошным Зеленым цветом - 34h - смещение до начала таблицы по архивам;
Сплошным Оранжевым цветом - Е4 78 00 00 (78Е4 hex) - длина таблицы по архивам;

Не выделенные двоичные слова пока остаются невыясненного назначения... :?
Аватара пользователя
bellic
Сообщения: 1452
Зарегистрирован: 11 мар 2017, 07:47
Откуда: Rostov-on-Don
Контактная информация:

Extract and Repackage Image.img

Сообщение bellic »

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

В общем случае формат файла Image.img выглядит следующим образом:
struktura.jpg
struktura.jpg (15.29 КБ) 2478 просмотров
В Заголовке содержится информация о количестве GZ-архивов, о смещениях до начала и длинах каждой из трех таблиц и другая инфа...

Таблица инфы по GZ-архивам является своеобразным каталогом, содержащим по каждому архиву информацию:
- смещение до архива
- длина архива
- длина распакованого BMP-файла

Таблица GZ-архивов содержит собственно сами архивы

Таблица имен bmp-файлов содержит имена с полными путями для распаковки...

Как то так...)))
Ответить

Вернуться в «Программное обеспечение.»

Кто сейчас на конференции

Сейчас этот форум просматривают: Google и 45 гостей