doc1997文档加密分析

Posted sherlock-merlin

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了doc1997文档加密分析相关的知识,希望对你有一定的参考价值。

文档可被解压,7z x -y -otest test.doc

解压后得到5个文件

文件名 文件内容
1Table  一些数据表
CompObj  通用的对象
WordDocument  实际的文字和格式化信息就存放在这里
SummaryInforamtion  摘要信息
DocumentSummaryInformation  其他的摘要信息

 

 

 

 

 

 

Office文档RC4加密有以下步骤:

使H()实现了MD5算法,Hn表示经过第n次MD5运算后的哈希值,加号(+)表示它们之间的联系。密码需要转换成为unicode数组。

密码长度的限制和密码的字符是由客户端限制的。具体细节,请查看MS-DOC和MS-XLS。除非指定了,密码的最大长度是255个unicode字符。

初始化密码哈希是由以下操作完成

  H0 = H(password)

 

salt(盐)是随机生成的并且等于16字节。它被用来和password一起计算得到一个哈希值:

  1、TruncatedHash = H0[0:40]  截取H0的头5个字节
  2、IntermediateBuffer = byte[336];
  3、buf = TruncatedHash + salt;   组成一个21字节的buf,拷贝buf到TruncatedHash里16次, (21*16=336)
        for(i=0; i< 336; i++){
      IntermediateBuffer[i] = buf[i%16]
    }    
  4、H1 = H(IntermediateBuffer)

 

最终的哈希值获得后,密钥由它的前5个字节+32位的block,block全为0x00。产生40位RC4密钥的步骤如下:

  TruncatedHash = H1[0:40]

  Hfinal = H(TruncatedHash + block).

  key = Hfinal[0:40]

 

获得密钥k后,用该key将新鲜数通过RC4加密后存储。

新鲜数扩充为64字节后,进行MD5计算,产生的哈希值用该key 通过RC4加密后存储。

 

验证用户密码的步骤,按照上面的方法得到key,用该key解密得到新鲜数和新鲜数hash x,再次运行求新鲜数hash的步骤得到y,对比x ,y两者是否相等。

以上是关于doc1997文档加密分析的主要内容,如果未能解决你的问题,请参考以下文章

怎样解密加密文件

Python批量读取加密Word文档转存txt文本实现

无法遵循加密的 Big-Query 教程文档

word文件属性内容怎么去掉加密内容以便保护数据?

CAD图纸文档加密安全实用的操作方法,外发图纸文档使用权限控制,湖南风奥科技

如何对文件加密简单的方法简单实用?公司电脑文档加密解决方案那个好?上海风奥科技