查找以文件类型打包的图像文件。 (二进制)

时间:2018-11-12 07:11:52

标签: c++ binary

在使用十六进制编辑器时,如果在文件中查找包含在其中的潜在图像,将搜索什么?标头类型,我不太喜欢编程,但是我在这里学习,一旦我学会了,我就可以继续成长。我有一个特定的文件,我相信其中包含带有打包为tim2(ps2图像)文件类型的图像。我正在处理的文件类型为.as7。 感谢您提供任何帮助。

2 个答案:

答案 0 :(得分:1)

想象一下图像查看器。如果提供了文件,它可以评估文件后缀以选择适当的图像加载器。更好的方法是读取一定数量的第一字节。大多数图像文件格式(实际上,据我所知)都包含可用于标识的特定字节序列。 (这些通常称为“magic code”。)

因此,我用Google搜索“ 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

TIM2的ASCII转换为十六进制值(使用ASCII table),这些值是:

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个字节→std :: uint16_t)
  3. 读取图像数量(2个字节→std :: uint16_t)
  4. for (std::uint16_t i = 0; i < nImages; ++i)
    1. 读取图像总长度(2个字节→std :: uint32_t)
    2. 读取(总图像长度-4)其他字节

因此,可能会发生读取的数据实际上不是此类TIM2映像的情况。因此,读取可能会导致大量垃圾字节。它甚至可能尝试超过总二进制数据的结尾。后一种情况将清楚地表明错误尝试,必须将其丢弃。

某些标头条目似乎仅允许使用特定值,例如每像素位数似乎只允许在[1,5]范围内的值。可以用作数据是否是TIM2图像的附加指示符。

所有读取的数据必须照原样写入新文件。如Marks评论中所述,可以使用合适的图像查看器来探测数据(是否形成有效的TIM2图像)。

答案 1 :(得分:0)

您可以在文件中查找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  .|.|.|.|.|.|.|.|