如何识别附加了额外数据的图像?

如何识别附加了额外数据的图像?

我正在尝试从复杂的文件中提取图像。我可以将该文件分解为不同的部分,并将它们全部提取到不同的文件中。

当时的想法是用来file检测每个部分的类型,并仅选择那些仅是图片的部分(JPEG、PNG、BMP...)。只要这些部分包含纯粹的、未掺杂的图像数据,它就会有效地检测到它们。

例如:

$ file Section_Raw_7BB28B99-61BB-11D5-9A5D-0090273FC14D_body.raw
Section_Raw_7BB28B99-61BB-11D5-9A5D-0090273FC14D_body.bmp: PC bitmap, Windows 3.x format, 193 x 58 x 8, image size 11368, 256 important colors, cbSize 12446, bits offset 1078

但是,当存在某种垃圾数据或元数据时,我仍然不确定,但无论如何,在图片本身文件的文件签名前面添加 X 字节不会将其识别为图像(如预期的那样,它不是一个图像)图像本身)。

$ file Section_Raw_4B2E0988-9E44-49AE-8B77-F544B1CAF03F_body.raw
Section_Raw_4B2E0988-9E44-49AE-8B77-F544B1CAF03F_body.raw: data

如果我告诉文件不要放弃第一个匹配(-k)似乎并不重要,它不会看到里面的 JPEG,但是在使用十六进制编辑器检查文件后,我注意到了 JPEG 附近的典型魔术代码开始:

JPEG 在开头附近开始

我该如何继续?有没有什么方法可以识别像这样的文件,或者我应该首先在开始时删除那些额外的字节才能file工作?

我仍然必须评估元数据字节是否总是相同的长度,但如果是,有没有办法告诉文件开始查看超过它们的文件?或者也许剥离文件的前 X 个字节,生成另一个有效图片?

另一种选择对我来说似乎太令人畏惧了,以某种方式手动寻找文件的神奇开头和结尾(greping 表示十六进制?)并dding 表示长度。当然可行,但不像经验丰富的小 Linux 实用程序提出的那样简单或易于阅读。

顺便感谢您抽出时间!

附言。我已将文件上传到此处,以防您需要进行测试:http://s000.tinyupload.com/index.php?file_id=71511465902538158650

相关内容