事情是这样的,我正在使用终端来执行此操作。使用 nano 等文本编辑器创建一个纯文本文件,其内容为:“GIF89a2017”,并将其另存为 rare.gif
事情是这样的,当我执行 filerare.gif 时,它会给出以下输出: rare.gif:GIF 图像数据,版本 89a,12338 x 14129 这表明它是一个分辨率为 12338 x 14129 的 GIF 图像,这就是我不明白的。这个决心从何而来?
另一件事是,我认为扩展名并没有真正决定它是什么类型的文件,例如,当我将 .gif 并将其转换为 .exe 时,它仍然将其识别为带有 的 GIF 图像文件命令。我猜在我遇到的问题中,它被识别为 GIF 图像,因为它是使用 GIF 扩展名创建的,但我想知道为什么。
谢谢大家!
该决议从何而来?
它来自您放入文件中的(伪造的)GIF89 标头。 “GIF89a”后面的四个字节定义宽度和高度。每一位都存储为 16 位无符号整数。您放在那里的字符 -
2017
- 被解释为:
32 30 ("20") -- 0x3032 = 12338
31 37 ("17") -- 0x3731 = 14129
我猜在我遇到的问题中,它被识别为 GIF 图像,因为它是使用 GIF 扩展名创建的,但我想知道为什么。
不,
file
不考虑扩展。这是因为该文件具有半有效的 GIF 标头。如果您将标题更改为不以“GIF89a”开头的内容,它将不再被识别为 GIF。
数字由其 ASCII 代码的十六进制值表示,例如,“2”的 ASCII 代码为 42,而 42 的十六进制值为 32。分辨率是连接的十六进制值的十进制值,因此“20”变为 3230或十六进制表示形式 0x3230,其十进制值为 12338。