...\APL\MENU\Image.img
Тема навеяна незавершенными исследованиями в теме Extract and Repackage Image.imgВыложу пока формат файла в том виде, какой он в первоисточнике (чтоб не забыть), а позже возможно займусь за осмысление - если это будет кому нибудь интересно...
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, но я ее не тестировал.
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), найденных у меня: В планах - хотелось бы освоить этот формат упаковки и написать свою утилиту Распаковки-Упаковки!...
P.S. Если распаковать WinRAR-ом файл "extractor.jar", то можно увидеть много файлов, которые прекрасно декомпилируются с помощью "DJ Java Decompiler" и можно увидеть исходный код! Но я блин в этой JAVA нифига не понимаю...