PDF和DOCX魔术数字

时间:2015-08-24 09:18:58

标签: pdf upload byte docx magic-numbers

我读取第一个字节来区分文件类型,但PDF和DOCX都有一个“0x50”幻数。我该如何处理这种情况?

3 个答案:

答案 0 :(得分:2)

这很奇怪,因为我看到PDF文件为0x25,DOCX文件为0x50 ......(source 1 source 2)。 但是,当您以文本模式打开这些文件时,在ISO 8859-1编码中,您可以看到DOCX文档以" PK"而PDF文档将以"%PDF"。

开头

希望它有所帮助!雨果。

答案 1 :(得分:2)

PDF文件没有"魔法"他们开始的字节。如果你阅读PDF规范,你会发现它们必须以"%PDF"开头,但实际上很多PDF文件都没有。

1)只是查找%PDF标题以识别PDF文件是非常不可靠的,有效的PDF文件是您可以解析的文件(至少有一个预告片,交叉引用表等)。

2)有人建议,一旦PDF文件在%PDF标题之前包含二进制数据,以确保它们被视为二进制文件。因此,PDF阅读器在%PDF标题之前开始接受一定数量的二进制字节(随机字节)。这些文件无法通过简单的幻数或魔术数字串来检测。

答案 2 :(得分:0)

似乎PDF具有多个签名。某些类型的PDF以这8个字节结尾

0A 0D 0A 30 0D 0A 0D 0A