出于好奇,这是一个关于我在十六进制编辑器中查看 JPG 文件时看到的一些模式的问题。我猜这是关于JPEG文件格式的问题;为什么这部分不像其他部分一样是“随机噪声”,而应该是(霍夫曼编码等)。
开始:
这种 136 位(17 字节)模式出现在一些由 Adobe Photoshop 生成的 JPG 文件中(我不知道 Photoshop 是否是唯一生成这些文件的应用程序):
F7 5E EB DE FD D7 BA F7 BF 75 EE BD EF DD 7B AF 7B
它在一个文件中有几个地方,有时只是一次迭代,有时会重复 8 或 12 次,组成 1088 位或 1632 位的块。或者更准确地说,它实际上是一个 68 位的模式,重复了 2 次或更多次:
F7 5E EB DE FD D7 BA F7 B
11110111010111101110101111011110111111011101011110111010111101111011
AFAIK 通过阅读有关 JPG 文件结构的一些信息,并以十六进制验证这一点,即 JPG 文件结构的开头标有 FF xx。在这些 68 位模式之前或之后都没有这样的 FF xx 结构标记。
通过使用 Breakpoint Hex Workshop,很容易在“数据可视化器”窗口中发现这些模式;虽然霍夫曼比特流的其余部分看起来像“噪音”,但突然有块显示出清晰的模式。
另外..我不确定这有多相关,但是..:
早些时候,我在 CR2 文件中也注意到了这样一种模式,即 Canon RAW 文件;不过,这里的模式是一个更简单的 40 位模式:
73 9C E7 39 CE
0111 0011 1001 1100 1110 0111 0011 1001 1100 1110
如果我调整空格,它会变成这样:
01110 01110 01110 01110 01110 01110 01110 01110
如您所见,这实际上是一个重复的5 位模式,它在 CR2 文件中出现的每个位置都重复了数百次。CR2 文件格式也是压缩文件,但无损。再说一遍,如果我理解正确的话,JPG 中的霍夫曼编码也是一种无损“压缩”。
我觉得很奇怪,在压缩流中,有这些(对我来说似乎是)“浪费”位的模式..
我在这里上传了一个 JPG 文件http://i.imgur.com/t0mi7vo.jpg - 这只是文件夹中一些文件的简单截图。霍夫曼码比特流从偏移量 0x0000027C 到末尾,您可能会看到重复模式的实例之一,例如偏移量 0x0001604A