破解Microsoft Word和Excel文档的密码

摘 要:该文以Windows XP为平台,使用Visual Basic 6.0企业版编程工具,利用穷举法破解Microsoft Office XP Professional办公软件的Word文档和Excel文档设置的打开权限密码。

关键词:密码;解密;密码字符集;权限密码

为了安全,Microsoft Word和Excel可以通过设置“打开权限密码”来限制用户访问,以保护文档不被别人非法打开查看和修改,但如果用户不小心忘记了自己设置的密码,则可能会给用户带来不便和损失。本文研究利用穷举法来对已加密文档进行解密。

一、算法

(一)生成密码字符串

Microsoft Word和Excel文档的密码最多可以设置15个字符,可以是数字、字母(区分大小写)以及其他字符的任意组合。

利用穷举法破解文档密码的流程是先设定密码字符集合,并指破解密码的长度或范围,然后利用该集合的所有排列组合(即:尝试密码)去一个个尝试打开加密的文档,算法的关键是生成选定字符集中相应密码长度的所有排列组合。本程序主要利用两个For循环来生成选定字符集的所有排列组合,外层循环控制密码的位数K(1≤K≤15)的变化,内层循环生成K位密码的所有排列组合。

第一步,设置密码字符集。将选定的字符集合存储到一个字符数组password_char(ArrayLength)中。ArrayLength是选定字符集的长度。在设置密码字符集时,若只选择数字,则ArrayLength=10;若选择数字与小写字母,则ArrayLength=36。

第二步,产生K位密码组合字符串。假设密码长度为K位,那么共有ArrayLength的K次方(即:ArrayLengthK)种排列组合。用0~ArrayLengthK-1之间的一个整数N(即:0≤N≤ArrayLengthK-1)相对应于一组尝试密码,那么每一种密码组合都可以通过结合数值N和字符数组password_char(ArrayLength)来表示,从而得到密码长度为K时所有密码组合。

产生K位密码字符串的方法是:对于整数值N的来说,先对字符集长度进行整除运算(即:N=Int(N/ArrayLength));再用得到的新数值N对字符集长度求余(即:M=NMod ArrayLength),则数值M就对应于字符集里面的字符password_char(M),该字符就是密码字符串的第K-1位字符。不断重复上述先整除再求余的运算步骤K-1次,即可得到从第1位到第K-1位密码字符串。最后一位字符,也就是第K位字符,可直接用原来的整数值对数组长度求余来获得;

比如,当字符集为“ABC”时,字符数组为password_char(3)={“A”,“B”,“C”}。ArrayLength=3。对于长度为三位(K=3)的密码,共有排列组合ArrayLengthK =33=27种(即0≤N≤26)。当N=0时,对应的密码字符串为“AAA”;当N整数N=21时,对应的密码字符串为“CBA”;当N=26时,对应的密码字符串为“CCC”。

(二)尝试密码破解

当运行程序用一个密码去打开加密文档时,若密码不正确,则会产生运行错误,导致程序中止运行,这在穷举法中是我们不希望发生的,因此,必须使用On Error Resume Next语句打开一个错误处理程序。在尝试一个密码之后,通过检查Visual Basic内部错误对象Err的属性值 Number来确定该密码是否正确,如果密码正确,则给出破解成功提示信息并中止程序运行,否则继续尝试下一个密码。

二、程序设计

(一)程序流程***

(二)具体实现

1.新建VB工程

新建一个VB工程,取名GetPassword,将启动窗体命名为FrmMain。

选择“工程”菜单中的“引用”,在“引用”对话框中选择“Microsoft Excel10.0 Object Library”和“Microsoft Word10.0 Object Library”(注:其它版本的Office软件对象库各不相同,在“引用”对话框中视情况选择),以便程序能够引用Office组件的对象库。

在“工程”菜单中“部件”对话框中,选择添加“Microsoft Windows common controls -2.5(sp2)”,以便在窗体设计中使用微调控件。

2.窗体设计

在FrmMain窗体上,按照界面设计***添加控件,然后按对象属性表修改每个控件对象的属性(窗体设计***略)。

控件对象属性表:

3.程序代码

驱动器列表框:

Private Sub driveList_Change()

On Error GoTo DriveHandler

dirList.Path = driveList.Drive

Exit Sub

DriveHandler:

driveList.Drive = dirList.Path

End Sub

目录列表框:

Private Sub dirList_Change()

fileList.Path = dirList.Path

End Sub

复选框控件数组:

Private Sub chkCharSet_Click(Index As Integer)

Dim str As String

str = ""

If chkCharSet(0).Value = 1 Thenstr = "0123456789"

If chkCharSet(1).Value = 1 Then str = str & "abcdefghijklmnopqrstuvwxyz"

If chkCharSet(2).Value = 1 Thenstr = str & "ABCDEFGHIJKLMNOPQRSTUVWXYZ"

If chkCharSet(3).Value = 1 Then str = str & " "

If chkCharSet(4).Value = 1 Then

str = str & "`~!@#$%^&*_|\()[]{}-+=,.;:?/"

str = str & Chr(39) '单引号

str = str & Chr(34) '双引号

End If

txtPassSet.Text = str

End Sub

开始破解按钮代码:

Private Sub cmdCrack_Click()

Dim wd As New Word.Application, xls As New Excel.Application

Dim filepath, pass, password_char() As String

Dim j, k, m, Password_Length_From, Password_Length_To, ArrayLength As Integer

Dim i, n As Long

Dim flag

Static blnStop As Boolean'破解过程中断标志,静态变量

If fileList.FileName = "" Then

MsgBox "请选择要破解的密码文档!", , "提示!"

Exit Sub

Else

filepath = fileList.Path & "\" & fileList.FileName

End If

数组初始化:

If txtPassSet.Text = "" Then

MsgBox "请设置密码字符集!", , "提示!"

Exit Sub

Else

ArrayLength = Len(txtPassSet.Text)

动态定义字符数组:

ReDim password_char(ArrayLength)

For j = 0 To ArrayLength - 1

password_char(j) = Mid(txtPassSet.Text, j + 1, 1) Next jEnd If

设置密码的长度范围:

Password_Length_From=Val(txtPasswordLengthFrom.Text)

Password_Length_To = Val(txtPasswordLengthTo.Text)

If Password_Length_From > Password_Length_To Then

Password_Length_From = Val(txtPasswordLengthTo.Text)

Password_Length_To = Val(txtPasswordLengthFrom.Text)

End If

If blnStop Then

blnStop = False

Else

blnStop = True

cmdCrack.Caption = "中断破解"

On Error Resume Next

If UCase(Right(filepath, 3)) = "DOC" Then

指定破解的是Word文档:

For k = Password_Length_From To Password_Length_To

For i = 0 To ArrayLength ^ k - 1

pass = ""

n = i

For j = 1 To k - 1

n = Int(n / ArrayLength)

m = n Mod ArrayLength

pass = password_char(m) + pass

Next j

pass = pass + password_char(i Mod ArrayLength)

txtPassword.Text = pass

Set flag = wd.Documents.Open(FileName:=filepath, passworddocument:=pass)

If Err.Number = 0 Then

MsgBox "文档密码是: " + pass, , "解密成功!"

wd.Quit

Set wd = Nothing

cmdCrack.Caption = "开始破解"

blnStop = False

Exit Sub

Else

Err.Clear

End If

DoEvents

If Not blnStop Then Exit For

Next i

If Not blnStop Then Exit For

Next k

wd.Quit

Set wd = Nothing

Else

指定破解的是 Excel文档:

代码与以上破解Word文档的代码相似,此处不再详述。使用尝试密码打开加密Excel文档的语句如下:

Set flag = xls.Workbooks.Open(FileName:=filepath, password:=pass)

End if

End If

If blnStop Then MsgBox "没有找到密码,可能是密码位数或者字符范围设置不对!", , "提示!"

cmdCrack.Caption = "开始破解"

blnStop = False

End Sub

三、程序分析

1.在设置密码字符集时,使用了复选框控件数组,在文本框中显示选定的字符集,可以根据需要修改文本框中字符集的内容,然后在程序中根据字符集的长度动态创建字符数组,能够灵活适应不同的要求。

2.程序算法的关键是根据设定的密码长度或范围,生成密码字符集中相应长度的所有排列组合,即产生密码字符串。

3.密码位数越多,组合越复杂,破解花费的时间也将越多。

4.利用穷举法解密对系统资源的占用是十分惊人的,在解密的过程中CPU的利用率几乎是100%,计算机系统会处于一种假死机状态,用户将无法进行其他操作,直到该程序运行结束,这样将可能给用户带来不便。为此,本文解决的方法是在循环中加入了DoEvents函数,在运行到DoEvents时,程序释放控制权,系统就可以接收事件消息。通过设置静态变量blnStop为中断标志,并在循环中通过检测其状态并进行相应处理来达到中断程序运行的目的。

参考文献:

[1]赛奎春,高春艳.Visual Basic精彩编程.北京:机械工业出版社,2003.

[2]龚沛曾.visual Basic 程序设计教程(第三版).北京:高等教育出版社,2006.

转载请注明出处学文网 » 破解Microsoft Word和Excel文档的密码

学习

我院第三季度全肠外营养处方分析

阅读(59)

本文为您介绍我院第三季度全肠外营养处方分析,内容包括肠外营养处方点评指南,肠外营养处方计算分析。【摘要】目的分析我院全肠道外营养处方,为我院全肠道外营养处方提供参考。方法统计我院2013年第三季度全肠道外营养处方对其处方配比及

学习

谈对归档文件装盒的一些看法

阅读(25)

本文为您介绍谈对归档文件装盒的一些看法,内容包括归档目录盒使用方法,归档文件目录盒。[摘要]装盒包括将归档文件按件号顺序装入档案盒、填写备考表、编制档案盒封面及盒脊项目等工作内容。作为基本编目的一部分,装盒这一环节除其中一些

学习

浅析掷铁饼教学中常见错误动作和纠正方法

阅读(22)

本文为您介绍浅析掷铁饼教学中常见错误动作和纠正方法,内容包括旋转式掷铁饼动作要领,侧向掷铁饼教学。一、掷铁饼的技术教学在掷铁饼的技术教学中,为了使学生较好的掌握技术,应从以下四个方面,有目的、有重点的安排教学步骤、进度和手段。

学习

建立高校生态文明教育制度的重要意义及对策

阅读(22)

本文为您介绍建立高校生态文明教育制度的重要意义及对策,内容包括以系统论推进高校生态文明教育,高校生态文明教育工作实施细则。生态文明是继农业文明和工业文明之后的一种新的文明形态。目前,我国正处于工业文明向生态文明过渡的时期,高

学习

浅析搭售行为及其违法性判断标准

阅读(23)

本文为您介绍浅析搭售行为及其违法性判断标准,内容包括如何避免搭售行为违法,搭售行为的认定。搭售在我们的日常的生活中是很常见的经济现象,但是对于搭售行为的合法性分析一直是有争议的,并且判断搭售行为的标准在我国的《反垄断法》和《

学习

水彩与中国画的相互借鉴和运用浅析

阅读(34)

本文为您介绍水彩与中国画的相互借鉴和运用浅析,内容包括水彩画和国画的技法区别,中国画和水彩的区别。在以水为媒介的水性材料绘画中,水彩和中国画均有水的一些固有特性――流淌性、透明性和速干性等,又因其在材料特性,绘画工具,造型手段及

学习

种一支“孤挺花”

阅读(20)

一、孤挺花――张扬不羁让他被列入“黑名单”的榜首我是一个中途接手的“二手”班主任。那是一个老师们公认的所谓“差班”、“乱班”,好心的前班主任、年级组长、教导主任,为了让我这个新班主任更好地了解班级,做了详细的介绍,并友善地提供

学习

老街老巷旧时光 重庆印象,停留在拼接的记忆里

阅读(43)

本文为您介绍老街老巷旧时光 重庆印象,停留在拼接的记忆里,内容包括重庆老街老巷,重庆南岸区感慨老街的复古情怀。有朋友问我,你喜欢重庆是为什么?我竟然说不出任何关于这个城市的特质,我在记忆中寻找斑驳的点滴,最后找到的却是细碎的东西:一

学习

招标采购评标方法解析

阅读(28)

本文为您介绍招标采购评标方法解析,内容包括招标文件的评标方法和评标细则,设备采购招标评标办法。我国招投标法律法规不断完善进步,招投标市场迅猛发展,采购质量与资金使用效率也不断提升,由于我国招投标发展时间历程较短,在一些招标过程中

学习

歪诗 第5期

阅读(20)

本文为您介绍歪诗 第5期,内容包括歪诗大全集,歪诗大全500首。王刚在《宰相刘罗锅》和《铁齿铜牙纪晓岚》中扮演的和珅,是一个笨头笨脑的家伙,总是被纪晓岚奚落戏弄,弄得十分狼狈和可笑。可是,和珅如果没点小聪明,怎能在号称“风雅皇帝”的乾

学习

建筑施工中桩基础技术的应用研究

阅读(47)

本文为您介绍建筑施工中桩基础技术的应用研究,内容包括建筑工程桩基础的施工种类,高层建筑桩基础施工技术分析。基础施工是建筑工程中的重中之重,其中任何一个环节出现问题,都将直接影响整个工程的质量与进度。文章主要从桩基础技术的特点

学习

垃圾填埋场渗滤液控制与处理

阅读(37)

本文为您介绍垃圾填埋场渗滤液控制与处理,内容包括深圳垃圾填埋场渗滤液处理设备,垃圾填埋场渗滤液处理设备厂家。【摘要】垃圾处理、处置的常用方法是卫生填埋、堆肥、焚烧等。由于填埋方法技术成熟、处理费用低、管理方便,因此被县城广

学习

传统戏曲中腔的内涵解析

阅读(35)

本文为您介绍传统戏曲中腔的内涵解析,内容包括戏曲各个戏腔特色,传统戏曲中所蕴含的价值观念。用“腔”来代表戏曲的流派,这是我国戏曲文化的一大创造。为什么会出现这样的表述方式呢?这里有多重的原因。首先“,腔”的直接含义是演唱,而“唱

学习

“大明通行宝钞叁拾文”铜钞版考

阅读(65)

本文为您介绍“大明通行宝钞叁拾文”铜钞版考,内容包括大明通行宝钞铜印版怎么样,大明通行宝钞模板什么材质。中国嘉德2013年春拍上拍一件“大明通行宝钞叁拾文”铜钞版,长:21.5厘米,宽:11.8厘米,厚:1.8厘米,正面四周花栏,上横额“大明通行宝钞

学习

解读京投成功密码

阅读(89)

本文为您介绍解读京投成功密码,内容包括京投a股交易规则,京投三季度。伴随京投成立的十年,北京市轨道交通运营总里程翻了两番,运营总里程和客流总量都跃居到世界前列,为完善北京城市功能、促进首都经济发展做出了巨大贡献,其间世所罕有的轨

学习

财富的密码

阅读(28)

本文为您介绍财富的密码,内容包括财富的密码,财富的密码小说。前些天,几个朋友坐在一起聊天时,又谈起一夜暴富这个既让人兴奋,又让人沮丧的老话题。因为10月份福利双色球又爆出一个5.2亿元的巨奖,山西一个彩民花了200来块钱就包揽了101注头

学习

创业英雄的成功密码

阅读(39)

人物名片季琦,著名企业家。1966年10月出生于江苏如东,高中就读于江苏省如东高级中学,1985年考入上海交通大学工程力学系。从1999起,季琦先后参与创办携程旅行网、如家快捷酒店和汉庭酒店连锁,这些企业全部在美国纳斯达克上市。一今天的季琦毫

学习

执手相伴的幸福密码

阅读(24)

91岁的杜周熙是浙江丽水市缙云县壶镇人,他的老伴林梅铃与他同龄,年轻时两人自由恋爱走进婚姻殿堂。岁月流逝,时光弹指一挥间已然69年,现老两口定居椒江,仍旧十分恩爱。同窗好友,自由恋爱1945年,20岁的杜周熙初中毕业,来椒江谋生,可是没想到供职公

学习

命题人,请解开写作的镣铐吧

阅读(40)

《普通高中语文课程标准实验》“基本理念”部分明确规定,语文的宗旨在于一要全面提高学生的语文素养,充分发挥语文课程的育人功能;二要注重语文应用、审美与探究能力的培养,促进学生均衡而有个性地发展。有个性地发展,就是要让学生适应现代

学习

浅谈信息加密和解密新技术――量子密码

阅读(37)

本文为您介绍浅谈信息加密和解密新技术――量子密码,内容包括密码技术与加密算法分析总结,目前常用的信息加密技术。随着越来越多的传统人工业务被网络电子业务所取代,如网上银行,网络报税,网络证券等业务的兴起,预示着我国信息高速公路的建

学习

基于科学史视角的量子密码

阅读(25)

本文为您介绍基于科学史视角的量子密码,内容包括量子密码最新发展论文,科学史评量子传奇。为了寻求一种无条件安全的密钥系统,采用了科学史的研究方法,对人类历史上产生过巨大影响的密钥思想进行了探究,调研了现在广泛使用的密码系统,特别是

学习

关于 《达·芬奇密码》 中一些密码的解读

阅读(40)

本文为您介绍关于 《达·芬奇密码》 中一些密码的解读,内容包括深度解析达芬奇密码,达芬奇密码小说深度解读。《达・芬奇密码》是美国畅销小说家丹・布朗于2003年3月出版的一本集悬疑与惊悚于一身的带有极强性宗教色彩的作品。丹・布朗