0

如何检测受密码保护的 Ms Office 文件?我在 Linux 上使用 C/C++。

4

2 回答 2

2

如果文件是 Office 2007 格式(例如 .docx),那么它们的内部存储是:

1) xml 文档的 zip 文件(如果没有密码保护)

2) 旧式复合文件格式(如果受密码保护)。

因此,您可能可以执行以下操作:

1)检查文件的前几个字节

2) 如果是 zip 文件(无密码保护),它将以 0x50 0x4b 0x03 0x04 开头。

3) 如果它不是 zip 文件,那么它可能受密码保护。它将以不同的二进制签名开头(例如 Word 2007 文档在这种情况下以 0xd0 0xcf 0x11 0xe0 开头)

基本上,如果它是一个新的 .docx 或 .xlsx,并且它不以 0x50 0x4b 0x03 0x04 的 zip 签名开头,它可能是受密码保护的。

对于其他版本的 MS Office,它有点棘手......

于 2013-11-05T15:58:14.733 回答
0

加密文件的文件签名应该不同。对于未加密的,它是 50 4B 03 04 加密的前 4 个字节是 D0 CF 11 E0(至少对于 docx,对于 excel、ppt、...

于 2013-11-05T15:56:31.600 回答