首页
社区
课程
招聘
Word2000的文件密码保护
发表于: 2005-8-23 19:30 8455

Word2000的文件密码保护

2005-8-23 19:30
8455
Word2000的文件密码保护

前些天单位上让测试了一个密码保护的doc文件,已知密码长度为10位。
用azwr(好象是这么个名)试着穷举全10位数字,结果弄出来一个,但
只能以只读方式打开。拿去交帐,没想到原密码不一样,而且只读与
读写设的是同一个,是碰巧了。

干脆把word2000带密码保存的文件打开过程跟了一下,代码没带回来,
下面是凭记忆写的。

密码判断代码在MSO9.dll内。调用的函数大概是MsoFLoadCryptSesssion。
包括下面几步:

1. 从文件读出16 bytes值

2. 计算输入密码的md5值(unicode除去长度部分剩余的宽字符数据),得
   到MD5_1

3. 取MD5_1的前5 bytes,和前面的16 bytes合成21 bytes值,循环16次
   得到21*16 bytes数据,计算其md5得到MD5_2

4. 取MD5_2的前5 bytes,加上1个值为0的dword得到9 bytes值,计算其
   md5得到MD5_3

5. 用MD5_3作为key,执行RC4的初始置换

6. 从文件读出2个16 bytes值

7. 用RC4对这2个值解密

8. 计算第1个明文值的md5,如果与第2个明文值相等,则认为密码正确

9. 用RC4解密文件体,key的构造与4相似,只是使用0-7不等的dword取值

判断密码是否正确时,在第4步中使用的9 bytes中后4 bytes固定为0,在
OD中用带密码存储的文件测试了一下,只要在第4步把使用的前5 bytes
换成正确值,即可正确打开文件。

写了个程序穷举5 bytes,找出可通过检测的值。穷举空间为
2^40 约100亿次,在我P3 800的机器上试了试,需要500天 :-(

不过把程序优化优化,分段到多台机器上还是有望搞出结果。
另外,这样做需要的时间与密码长度无关。

[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

收藏
免费 0
支持
分享
最新回复 (15)
雪    币: 898
活跃值: (4039)
能力值: ( LV9,RANK:3410 )
在线值:
发帖
回帖
粉丝
2
Word可以设置打开和修改密码
打开后另存就可以修改了吧
2005-8-23 20:03
0
雪    币: 300
活跃值: (412)
能力值: ( LV9,RANK:410 )
在线值:
发帖
回帖
粉丝
3
设置密码之后就无法打开了是吧?当然保护密码可能分成很多种
2005-8-23 20:08
0
雪    币: 494
活跃值: (629)
能力值: ( LV9,RANK:1210 )
在线值:
发帖
回帖
粉丝
4
最初由 fly 发布
Word可以设置打开和修改密码
打开后另存就可以修改了吧


是要测试打开未知密码保护的文件
2005-8-23 20:43
0
雪    币: 260
活跃值: (81)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
5
原来也是有解的?
2005-8-23 20:46
0
雪    币: 280
活跃值: (281)
能力值: ( LV9,RANK:250 )
在线值:
发帖
回帖
粉丝
6
判断密码是否正确时,在第4步中使用的9 bytes中后4 bytes固定为0,在
OD中用带密码存储的文件测试了一下,只要在第4步把使用的前5 bytes
换成正确值,即可正确打开文件。

写了个程序穷举5 bytes,找出可通过检测的值。穷举空间为
2^40 约100亿次,在我P3 800的机器上试了试,需要500天 :-(

不过把程序优化优化,分段到多台机器上还是有望搞出结果。
另外,这样做需要的时间与密码长度无关

严重期待写出破解软件。如果只有5位,穷举方便多了。
2005-8-23 22:33
0
雪    币: 547
活跃值: (2200)
能力值: ( LV7,RANK:100 )
在线值:
发帖
回帖
粉丝
7
这几天正发愁这东西呢,好啊。
Posted by michael on Fri Jan 18, '02 09:16 AM
from the forty-bits-is-not-enough dept.
rossjudson writes: "The Independent is running an article about the shoe bomber terrorist. The interesting bit for Slashdot readers is at the bottom -- apparently the 40-bit encryption in the export version of Windows 2000 was cracked by a set of computers using a brute force method. So let's confront the question: Should the US prohibit the export of high-encryption software? Here is a case where the default values (40 bit) clearly helped recover valuable information from a system." There's another article in New Scientist focusing on the encryption issue
2005-8-24 09:33
0
雪    币: 339
活跃值: (1510)
能力值: ( LV13,RANK:970 )
在线值:
发帖
回帖
粉丝
8
打开密码好像必须穷举,但是只读密码可以爆破跳过去的/
2005-8-24 12:20
0
雪    币: 494
活跃值: (629)
能力值: ( LV9,RANK:1210 )
在线值:
发帖
回帖
粉丝
9
最初由 nbw 发布
打开密码好像必须穷举,但是只读密码可以爆破跳过去的/


这里的打开是指Read-Write吗?

只读也不能爆破跳过。doc文件内标题没有加密,但文件体是用RC4加密的。

to lzqgj:不是5位,是5 bytes = 40位
2005-8-24 12:33
0
雪    币: 117
活跃值: (20)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
需要500天
汗。。。

我看到有老外写的软件不知道叫什么名了,有穷举密码的,它那个需要时间和密码位数有关系的。
2005-8-24 13:41
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
原来WORD 文件这样难破 !

下次我加15位数密码!!  哈哈!
2005-8-24 20:05
0
雪    币: 203
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
最初由 softworm 发布


这里的打开是指Read-Write吗?

只读也不能爆破跳过。doc文件内标题没有加密,但文件体是用RC4加密的。
........

word只读文档的密文中有一个只读标志位,只要修改这个标志位只读文档就可以被编辑了,但是打开文档的破解像楼主说的方法是最好的方法了,只要穷举那5个字节的hash值就可以。
楼主真是高人!实在佩服!
2005-8-25 11:04
0
雪    币: 203
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
请问楼主,跟踪word2000带密码保存的文件打开过程怎么跟呢?当打开一个带密码保护文件以后要怎么下断点呢?
2005-8-25 15:10
0
雪    币: 226
活跃值: (115)
能力值: ( LV8,RANK:130 )
在线值:
发帖
回帖
粉丝
14
期待您的研究成果!
2005-9-23 18:04
0
雪    币: 117
活跃值: (20)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
15
最初由 skyXnet 发布
期待您的研究成果!

继续期待ing……
2005-9-23 18:36
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
16
唉!QQ上不去了TX又咋了?NBW山东可以上去不?
2005-9-23 18:41
0
游客
登录 | 注册 方可回帖
返回
//