无法理解MS-Word 2007文档加密

时间:2013-06-05 09:56:00

标签: encryption hash ms-word ms-office reverse-engineering

好的,所以在安全和超级用户被拒绝之后,我第三次怀疑:(

所以我阅读了文档here This回答也有帮助。

似乎有3种主要的加密模式。我创建了一个模拟文档并使其受密码保护。经过一些窥探,我想我的文档使用RC4加密方法。以下是位于0x1200地址的加密标题:

01 00 01 00 27 cf 34 9f a9 86 50 53 ad 66 58 e9 
42 c4 bb 8c 11 00 41 26 f1 a9 37 d7 6e 1c d0 37 
3d fb 97 02 a6 9b c0 8f 71 df 28 a2 6b 6f 83 69 
fc 69 57 e3 70 a9 9d fc b3 8d 4f 35 0e ff d0 8c 
da b2 b5 67 0f 50 40 6b b8 54 58 e2 41 8e f3 f8

根据该文档,前4个字节是主要的次要版本,后面是Salt,EncryptedVerifier,EncryptedVerifierHash,每个16字节。

密钥派生算法给出了here

我的文档密码为x(单个字符)。我试图首先导出EncryptedVerifier(我认为这是一个随机数)。但是,我得到了不同的结果:( 在导出 TruncatedHash 之前,加密密钥派生算法非常简单。在此之后,我对我应该做的事感到困惑。

我只是从文档中取出EncryptedVerifier并使用RC4算法使用密钥MD5(TruncatedHash + 00000000).对其进行解密但是当我对此进行散列并将其与EncryptedVerifierHash进行比较时(解密后) ),两个结果是不同的。

代码的一部分是:

>>> import hashlib
>>> h0 = hashlib.md5()
>>> h0.update('x')
>>> h0 = h0.hexdigest()
>>> h0
'9dd4e461268c8034f5c8564e155c67a6'
>>> h0tr = h0[0:10]
>>> h0tr
'9dd4e46126'
>>> ibuff = h0tr + '27cf349fa9865053ad6658e942c4bb8c'
>>> buff = ibuff * 16
>>> len(buff)/2
336
>>> h1 = hashlib.md5()
>>> h1.update(buff)
>>> h1 = h1.hexdigest()
>>> h1tr = h1[0:10]
>>> hf = hashlib.md5()
>>> hf.update(h1tr + '00000000')
>>> hf = hf.hexdigest()
>>> hf
'43e94942913b933273f5c65d3c859723'

我正在使用this网站进行RC4加密/解密。

我做错了什么?如果您需要文档中的其他内容,请与我们联系。 谢谢!

0 个答案:

没有答案