Поиск файлов изображений, упакованных в типы файлов. (Двоичный) - PullRequest
0 голосов
/ 12 ноября 2018

Во время использования шестнадцатеричного редактора, что нужно искать, если там есть файл потенциальных изображений, упакованных внутри.? Типы заголовков, я не слишком увлекаюсь программированием, но я здесь, чтобы учиться, и как только я это сделаю, я смогу продолжать расти. У меня есть определенный файл, который, как мне кажется, содержит изображения с типом файла tim2 (изображение ps2), упакованные внутри. тип файла, который я имею в виду, имеет .as7. Спасибо за любую помощь, спасибо.

Ответы [ 2 ]

0 голосов
/ 14 ноября 2018

Вы можете искать маркеры TIM2 в файле (как это предлагается в отличном ответе @ Scheff) следующим образом:

grep -abo TIM2 *as7

выход

12393:TIM2
161807:TIM2
363423:TIM2
506898:TIM2
698326:TIM2
844032:TIM2
1053892:TIM2
1242285:TIM2
1454184:TIM2
1580438:TIM2
1817300:TIM2
1944930:TIM2

Это говорит вам о смещении байтов того, где находятся маркеры TIM2. Затем вы можете извлечь первый файл с помощью:

dd if=file.as7 bs=12393 skip=1 > 1.tm2

и второе с:

dd if=file.as7 bs=161807 skip=1 > 2.tm2

и т. Д.

Если вы затем сбросите первый файл TIM2 в шестнадцатеричном формате, вы получите следующее:

xxd 1.tm2

выход

00000000: 5449 4d32 0400 0118 9c85 3004 0400 0004  TIM2......0.....
00000010: 043b 9204 0030 0000 0100 0103 0500 0200  .;...0..........
00000020: 0200 0032 6502 003b 8160 027c 9c7c 9c7c  ...2e..;.`.|.|.|
00000030: 9c7c 9c7c 9c7c 9c7c 9c7c 9c7c 9c7c 9c7c  .|.|.|.|.|.|.|.|
00000040: 9c7c 9c7c 9c7c 9c7c 9c7c 9c7c 9c7c 9c7c  .|.|.|.|.|.|.|.|

На данный момент я не могу найти зрителя, но могу продолжить добавлять все, что я приду здесь.


Я посмотрел первые несколько байтов всех 12 файлов TIM2, и мне кажется, что они все версии 4 , а не версии 2, потому что все они начинаются с:

5449 4d32 0400

, что составляет TIM2, за которым следует 4.

10.tm2

00000000: 5449 4d32 0400 0118 9c85 3004 0400 0004  TIM2......0.....
00000010: 043b 9204 0030 0000 0100 0103 0500 0200  .;...0..........
00000020: 0200 0032 6502 003b 8160 022c 9c80 9a06  ...2e..;.`.,....
00000030: fd07 0002 ed0a ef0a f30a d295 98c9 c9da  ................
00000040: f7fc fcfc fcfc fcfb fbfb faf9 f9f7 f3f0  ................

11.tm2

00000000: 5449 4d32 0400 0118 9c85 3004 0400 0004  TIM2......0.....
00000010: 043b 9204 0030 0000 0100 0103 0500 0200  .;...0..........
00000020: 0200 0032 6502 003b 8160 027c 9c7c 9c7c  ...2e..;.`.|.|.|
00000030: 9c7c 9c7c 9c7c 9c7c 9c7c 9c7c 9c7c 9c7c  .|.|.|.|.|.|.|.|
00000040: 9c7c 9c7c 9c7c 9c7c 9c7c 9c7c 9c7c 9c7c  .|.|.|.|.|.|.|.|

12.tm2

00000000: 5449 4d32 0400 0118 9c85 3004 0400 0004  TIM2......0.....
00000010: 043b 9204 0030 0000 0100 0103 0500 0200  .;...0..........
00000020: 0200 0032 6502 003b 8160 022c 9c1e e30e  ...2e..;.`.,....
00000030: e380 990a f8ff a0a0 c0c0 e0f0 f4f3 f4f3  ................
00000040: f3f3 f7ee eff3 efee dee7 efe8 eff7 e7ef  ................

2.tm2

00000000: 5449 4d32 0400 0118 9c85 3004 0400 0004  TIM2......0.....
00000010: 043b 9204 0030 0000 0100 0103 0500 0200  .;...0..........
00000020: 0200 0032 6502 003b 8160 022c 9c9c ae8a  ...2e..;.`.,....
00000030: a2b7 8a68 80a2 807a 807a 8a6c 546c 806c  ...h...z.z.lTl.l
00000040: 7048 545d 160d 1012 1419 1001 9e01 709d  pHT]..........p.

3.tm2

00000000: 5449 4d32 0400 0118 9c85 3004 0400 0004  TIM2......0.....
00000010: 043b 9204 0030 0000 0100 0103 0500 0200  .;...0..........
00000020: 0200 0032 6502 003b 8160 027c 9c7c 9c7c  ...2e..;.`.|.|.|
00000030: 9c7c 9c7c 9c7c 9c7c 9c7c 9c7c 9c7c 9c7c  .|.|.|.|.|.|.|.|
00000040: 9c7c 9c7c 9c7c 9c7c 9c7c 9c7c 9c7c 9c7c  .|.|.|.|.|.|.|.|

4.tm2

00000000: 5449 4d32 0400 0118 9c85 3004 0400 0004  TIM2......0.....
00000010: 043b 9204 0030 0000 0100 0103 0500 0200  .;...0..........
00000020: 0200 0032 6502 003b 8160 022c 9c97 f2f2  ...2e..;.`.,....
00000030: f2f2 f2ed ede6 e0d4 cfca b982 6553 4c4c  ............eSLL
00000040: 3f3f 53b1 b0a2 0360 829f 9e9e 0152 0d57  ??S....`.....R.W

5.tm2

00000000: 5449 4d32 0400 0118 9c85 3004 0400 0004  TIM2......0.....
00000010: 043b 9204 0030 0000 0100 0103 0500 0200  .;...0..........
00000020: 0200 0032 6502 003b 8160 027c 9c7c 9c7c  ...2e..;.`.|.|.|
00000030: 9c7c 9c7c 9c7c 9c7c 9c7c 9c7c 9c7c 9c7c  .|.|.|.|.|.|.|.|
00000040: 9c7c 9c7c 9c7c 9c7c 9c7c 9c7c 9c7c 9c7c  .|.|.|.|.|.|.|.|

6.tm2

00000000: 5449 4d32 0400 0118 9c85 3004 0400 0004  TIM2......0.....
00000010: 043b 9204 0030 0000 0100 0103 0500 0200  .;...0..........
00000020: 0200 0032 6502 003b 8160 022c 9cff 4f6f  ...2e..;.`.,..Oo
00000030: 8a90 7e90 b7b3 adb3 d7e4 c26b 3838 455e  ..~........k88E^
00000040: b5df bca8 5e31 1f39 6f6f 1e2b 351c 231e  ....^1.9oo.+5.#.

7.tm2

00000000: 5449 4d32 0400 0118 9c85 3004 0400 0004  TIM2......0.....
00000010: 043b 9204 0030 0000 0100 0103 0500 0200  .;...0..........
00000020: 0200 0032 6502 003b 8160 025c 9c0b 1903  ...2e..;.`.\....
00000030: 1c07 200b cb0b dc9e 5758 594b 3f3f 3e37  .. .....WXYK??>7
00000040: 9a7f 9894 7b66 3c28 201b 5b86 a2a4 b3bc  ....{f<( .[.....

8.tm2

00000000: 5449 4d32 0400 0118 9c85 3004 0400 0004  TIM2......0.....
00000010: 043b 9204 0030 0000 0100 0103 0500 0200  .;...0..........
00000020: 0200 0032 6502 003b 8160 022c 9cff f6f6  ...2e..;.`.,....
00000030: f6f6 f5f5 f6f6 f6f4 f4f6 f4f4 f4ea ecec  ................
00000040: eaea ecf1 fcfc fcfc fcfc fcfc fcfa fcfa  ................

9.tm2

00000000: 5449 4d32 0400 0118 9c85 3004 0400 0004  TIM2......0.....
00000010: 043b 9204 0030 0000 0100 0103 0500 0200  .;...0..........
00000020: 0200 0032 6502 003b 8160 027c 9c7c 9c7c  ...2e..;.`.|.|.|
00000030: 9c7c 9c7c 9c7c 9c7c 9c7c 9c7c 9c7c 9c7c  .|.|.|.|.|.|.|.|
00000040: 9c7c 9c7c 9c7c 9c7c 9c7c 9c7c 9c7c 9c7c  .|.|.|.|.|.|.|.|

a.tm2

00000000: 5449 4d32 0400 0118 9c85 3004 0400 0004  TIM2......0.....
00000010: 043b 9204 0030 0000 0100 0103 0500 0200  .;...0..........
00000020: 0200 0032 6502 003b 8160 027c 9c7c 9c7c  ...2e..;.`.|.|.|
00000030: 9c7c 9c7c 9c7c 9c7c 9c7c 9c7c 9c7c 9c7c  .|.|.|.|.|.|.|.|
00000040: 9c7c 9c7c 9c7c 9c7c 9c7c 9c7c 9c7c 9c7c  .|.|.|.|.|.|.|.|
0 голосов
/ 12 ноября 2018

Представьте себе просмотрщик изображений. Если ему дан файл, он может оценить суффикс файла, чтобы выбрать подходящий загрузчик изображений. Гораздо лучший способ - прочитать определенное количество первых байтов. Большинство форматов графических файлов (собственно, все, что я знаю лично) содержат определенную последовательность байтов, которую можно использовать для идентификации. (Их часто называют & ldquo; магический код & rdquo; .)

Следовательно, я поискал «файлы изображений tim2», чтобы найти описание формата файла. (Должен признать, я никогда не слышал об этом раньше.) Я нашел: TM2 TIM2 на wiki.xentax.com :

Технические характеристики формата

// Specs based off "Rainbow" from https://github.com/marco-calautti/Rainbow/
    // IMAGE HEADER
      4 - Header (TIM2)
      2 - Version
      2 - Number of Images

Преобразование ASCIIs TIM2 в шестнадцатеричные значения (используя таблицу ASCII ), это значения:

54 49 4D 32

Итак, это последовательность для поиска. Хотя появление этой последовательности не является гарантией запуска изображения TIM2, это как минимум показатель вероятности.


Чуть больше по ссылке выше:

// Specs based off "Rainbow" from https://github.com/marco-calautti/Rainbow/

// IMAGE HEADER
  4 - Header (TIM2)
  2 - Version
  2 - Number of Images

// IMAGE DATA
  // for each Image
    4 - Total Image Length
    4 - Palette Length
    4 - Image Data Length
    2 - Header Length
    2 - Color Entries
    1 - Image Format (0=8bpp paletted?)
    1 - Mipmap Count
    1 - CLUT Format
    1 - Bits Per Pixel (1=16bbp, 2=24bpp, 3=32bbp, 4=4bbp, 5=8bpp)
    2 - Image Width
    2 - Image Height
    8 - GsTEX0
    8 - GsTEX1
    4 - GsRegs
    4 - GsTexClut
    X - User Data (optional) (length = HeaderLength-48)

Я бы использовал следующий алгоритм:

  1. Поиск двоичного файла для "\x54\x49\x4D\x32".
  2. Чтение версии (2 байта & rarr; std :: uint16_t)
  3. Считать количество изображений (2 байта & rarr; std :: uint16_t)
  4. for (std::uint16_t i = 0; i < nImages; ++i)
    1. Считать общую длину изображения (2 байта & rarr; std :: uint32_t)
    2. Чтение (общая длина изображения - 4) дополнительных байтов

Таким образом, может случиться так, что считываемые данные на самом деле не являются изображением TIM2. Таким образом, чтение может привести к количеству мусорных байтов. Это может даже попытаться превысить конец всех двоичных данных. Последний случай будет явным индикатором неправильной попытки, от которой следует отказаться.

Некоторые из записей заголовка допускают только определенные значения, например, Bits Per Pixel, которая, кажется, допускает значения только в диапазоне [1, 5]. Это может использоваться в качестве дополнительного индикатора того, являются ли (или нет) данные на самом деле изображением TIM2.

Все прочитанные данные должны быть записаны как есть в новый файл. Как уже упоминалось в комментарии к меткам, для просмотра данных (независимо от того, формирует ли они действительное изображение TIM2) можно использовать подходящий просмотрщик изображений.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...