密码穷举破解EXCEL、WORD文档密码的论文-计算机理论论文

破解无线路由密码  时间:2021-04-20  阅读:()

穷举破解EXCEL、 WORD文档密码的论文计算机理论论文

摘要本文讨论了如何使用vb编程通过穷举法解除excel文档和word文档的密码。并在破解过程中加入了中断以方便用户随时中断破解过程。

关键字穷举法、解密、 excel文档、 word文档、密码excel和word提供了多种方法限制访问用户文档以免未经授权者的查看和更改。但在信息化的今天用户需要记忆的密码太多一旦密码丢失用户将无法打开或访问该文档给用户造成很大的损失。能否借助计算机的高速运行解开密码呢通过尝试笔者认为在无法弄清excel和word加密算法的情况下利用穷举法尝试解密文档是解密唯一的选择。

1 . 实现原理

本程序选用vb6.0编写并充分利用了off ice组件中的对象库穷举尝试各种口令达到解密文档的目的。

⑴巧用整数的取整及取余产生密码字符串excel和word文档密码可以是字母、数字、空格以及符号的任意组合最长可达15个字符且区分大小写。

本程序的破解过程利用一个两层循环产生选定字符的排列组合尝试密码 其中外层循环控制密码的位数 内层循环生成n位密码的所有排列组合。产生尝试密码的方法是将一个n位字符串密码password作为一个“数值” 该“数值”每个位上的“数字”属于选定字符范围且该“数值”与一个整数x一一对应并满足以下条件 0≤x

≤arraylenn-1 arraylen是选定密码字符范围的总字符数如仅选定数字时arraylen=10仅选定数字和小写字母时 arraylen=10+26=36 对x整除、取余n-1次对每次的余数y做以下操作 password = password + chararray(y) 注 chararray是存放选定字符的一维数组 最后做以下操作 password = chararray(x mod arraylen) +password产生的password就是整数x对应的n位字符串。 WwW. .coM

⑵利用vb的错误处理功能尝试口令破解

当运行程序尝试一个密码时用该密码打开文档 若密码错误则会产生运行错误。为此必须在尝试口令前使用on error语句打开一个错误处理程序 由于本程序是尝试各种口令 当一个口令错误时直接尝试下一个口令即可 因此应使用 “on error resumenext”语句。

那么如何得知找到口令了呢 vb有一个内部错误对象err 它的number属性中的值是用来确定发生错误的原因。在尝试一个口令后检查err. number中的值以确定该口令是否正确。

⑶破解过程中的中断

利用穷举法解密对系统资源的占用是十分惊人的在解密的过程中cpu的利用率几乎是100%若不加入解密过程中的中断计算机系统会处于一种假死机状态。为此在破解过程

的内循环中加入了doevents函数。 doevents函数提供了一种取消任务的简便方法 它将控制切换到操作环境内核。只要此环境中的所有应用程序都有机会响应待处理事件应用程序就又恢复控制。使用该函数的优点是不会使应用程序放弃焦点且后台事件能够得到有效处理。

2. 具体实现过程

编程实现时需要机器安装有vb应用程序及microsoft off ice组件。

⑴新建vb工程并对其初始化

新建一个vb工程取名get_password将启动窗体命名为frmmain。首先选择“工程”菜单中的“引用” 在“引用”对话框中选择“microsoft excel 10.0 object l ibrary”和

“microsoft word10.0 object l ibrary” 注意如果安装的是off ice2000或off ice97应该选择excel对象库和word对象库的9.0版或8.0版 。其次在“工程”菜单中“部件”对话框中选择添加“microsoft windows common controls -2.5(sp2)”和

“microsoft common dialog control 6.0” 以便在窗体设计中使用微调控件和对话框控件。

⑵在frmmain窗体上添加控件

在frmmain窗体上按照下图的位置添加表1中的控件然后根据表1修改每个对象的属性。表1 

序号 控件名称 控件属性及其属性值

1 frame name=frame1  caption=选择加密文件*.doc、 *.xls

2 frame name=frame2 caption=选定密码字符范围

3 frame name=frame3 caption=选择密码的长度

4 combobow name=combo1

5 commandbutton name=cmdbrowse caption=浏览

6 commandbutton name=cmdstartcrack=开始破解

7 commandbutton name=cmdquit caption=退出系统

8 checkbox name=chkdigital  caption=数字(10)

9 checkbox name=chklowercase caption=小写字母(26)

10 checkbox name=chkuppercase caption=大写字母(26)

1 1 checkbox name=chkspace caption=空格(1)

12 checkbox name=chkbracket caption=括号(6)

13 checkbox name=chkothers caption=其他oem字符(26)

14 textbox name=txtpasswordstartlong text=2

15 textbox name=txtpasswordendlong text=2

16 textbox name=text1

buddycontrol=txtpasswordstartlong max=15 min=

18 updown name=updown2 buddyproperty=text wrap=true increment=1buddycontrol=txtpasswordendlong max=15 min=1

19 commondialog name=dialog dialogtitle=请选择加密的excel或word文档f i lter=excel (*.xls)  word(*.doc) |*.xls;*.doc

20 label name=label 1  caption=破解进度

21 label name=label3 caption=从

22 label name=label5 caption=到

⑶为以上对象编写下列代码

为了便于理解程序中增加了适当的注释。option expl icitpr ivate sub cmdbrowse_cl ick()dialog. showopen 'show the dialogcombo1 .text = dialog.f i lename 'set the f i lename text box to the selectedfi lecombo1 . refreshend subpr ivate sub cmdquit_cl ick()endend subpr ivate sub cmdstartcrack_cl ick()static blnprocessing as booleandim wd as new word.appl ication, xls as new excel .appl icationdim openreturndim strpath, pass, strtemp, al l_char (100) as str ingdim j, k, password_start_long, password_end_long, arraylen as integerdim i , temp as longarraylen = 0 '数组初始化if chkdigital .value = 1 thenfor j = arraylen to arraylen + 9al l_char (j) = chr (asc("0") + j - arraylen)next jarraylen = arraylen + 10

end ifif chklowercase.value = 1 thenfor j = arraylen to arraylen + 25al l_char (j) = chr (asc("a") + j - arraylen)next jarraylen = arraylen + 26end ifif chkuppercase.value = 1 thenfor j = arraylen to arraylen + 25al l_char (j) = chr (asc("a") + j - arraylen)next jarraylen = arraylen + 26end ifif chkspace.value = 1 thenal l_char (arraylen) = " "arraylen = arraylen + 1end ifif chkbracket.value = 1 thenal l_char (arraylen) = " ("al l_char (arraylen+1) = ") "al l_char (arraylen+2) = " {"al l_char (arraylen+3) = "} "al l_char (arraylen+4) = " ["al l_char (arraylen+5) = "] "arraylen = arraylen + 6end ifif chkothers.value = 1 thenfor j = arraylen to arraylen + 6 '33 to 39al l_char (j) = chr (33 + j - arraylen)nextarraylen = arraylen + 7for j = arraylen to arraylen + 5 '42 to 47al l_char (j) = chr (42 + j - arraylen)next jarraylen = arraylen + 6

for j = arraylen to arraylen + 6 '58 to 64al l_char (j) = chr (58 + j - arraylen)next jarraylen = arraylen + 7al l_char (arraylen) = chr (92)arraylen = arraylen + 1for j = arraylen to arraylen + 2 '94 to 96al l_char (j) = chr (94 + j - arraylen)next jarraylen = arraylen + 3al l_char (arraylen) = chr (124)al l_char (arraylen+1) = chr (126)arraylen = arraylen + 2end ifif arraylen = 0 thenmsgbox "错误没有选择'密码使用的字符' ", , "请选择密码使用的字符范围. . . "exit subend ifif blnprocessing thenif msgbox("真的要中断解密过程吗 ", vbyesno, "用户中断任务") = vbyesthen blnprocessing = falseelsecmdstartcrack.caption = "中断破解"blnprocessing = truestrpath = combo1 .textif strpath = " " thenmsgbox "错误没有选择'需要解密的文件' ", , "请选择需要解密的文件. . . "exit subend ifstrpath = tr im(strpath)password_start_long = val (txtpasswordstartlong.text)password_end_long = val (txtpasswordendlong.text)if password_start_long > password_end_long thenpassword_start_long = val (txtpasswordendlong.text)password_end_long = val (txtpasswordstartlong.text)

end iflabel 1 .caption = "破解进度 "label 1 . refreshon error resume nextif ucase(r ight(strpath, 3) ) = "xls" thenfor k = password_start_long to password_end_long '破解excel开始for i = 0 to arraylen ^ k - 1pass = ""temp = ifor j = 1 to k - 1temp = temp \ arraylepass = al l_char (temp mod arraylen) + passnext jpass = pass + al l_char (i mod arraylen)set openreturn = xls.workbooks.open(f i lename:=strpath,password:=pass)text1 .text = pass '显示破解进度text1 . refreshif err. number <> 0 then '如果解密成功,打开文档,显示密码,退出过程err.clearelselabel 1 .caption = "文档密码 "text1 .text = passme. refreshxls.visible = truecmdstartcrack.mousepointer = 0cmdstartcrack.caption = "开始破解"blnprocessing = falseset xls = nothingexit subend ifdoeventsif not blnprocessing then exit fornext i

if not blnprocessing then exit fornext kxls.quitset xls = nothingelsefor k = password_start_long to password_end_long '破解word开始for i = 0 to arraylen ^ k - 1pass = ""temp = ifor j = 1 to k -temp = temp \ arraylenpass = al l_char (temp mod arraylen) + passnext jpass = pass + al l_char (i mod arraylen)openreturn = wd.documents.open(f i lename:=strpath,passworddocument:=pass)text1 .text = pass '显示破解进度text1 . refreshif err. number <> 0 then '如果解密成功,打开文档,显示密码,退出过程err.clearelse

'msgbox "word password"label 1 .caption = "文档密码 "text1 .text = passme. refreshwd.visible = truecmdstartcrack.mousepointer = 0cmdstartcrack.caption = "开始破解"blnprocessing = falseset wd = nothingexit subend ifdoeventsif not blnprocessing then exit for

next iif not blnprocessing then exit fornext kwd.quitset wd = nothingend ifcmdstartcrack.caption = "开始破解"if blnprocessing then msgbox "没有找到密码可能是密码位数不对! ", , "提示信息. . . "blnprocessing = falseend sub

3. 时间复杂度分析

一个算法的时间复杂度是指该算法的时间耗费是该算法所求解问题规模n的函数。根据前面讲的实现原理我们知道破解算法的时间耗费主要集中在尝试打开off ice文档上因此 当我们假设破解一个n位字符串密码且选定密码字符范围的总字符数为arraylen时该算法的时间复杂度是o(arraylen^n) 。即 当n确定后该算法的时间复杂度是n次方阶当arraylen确定后该算法的时间复杂度是指数阶。都是高数量级的时间复杂度。

4.说明

穷举法解密对系统资源的占用是十分惊人的在解密的过程中最好不要运行其他应用程序。如果安装有瑞星等杀毒软件应将杀毒软件的“off ice安全助手”去掉以便加快程序的运行速度。

该程序在winxp+off icexp+vb6.0环境下测试通过笔者随便测试了一个5位数字密码在p4机器上 8分钟左右即可解开口令。

参考文献

[1 ]王建华译. visual basic 6开发人员指南. 北京机械工业出版社 1999-全文完-

无视CC攻击CDN ,DDOS打不死高防CDN,免备案CDN,月付58元起

快快CDN主营业务为海外服务器无须备案,高防CDN,防劫持CDN,香港服务器,美国服务器,加速CDN,是一家综合性的主机服务商。美国高防服务器,1800DDOS防御,单机1800G DDOS防御,大陆直链 cn2线路,线路友好。快快CDN全球安全防护平台是一款集 DDOS 清洗、CC 指纹识别、WAF 防护为一体的外加全球加速的超强安全加速网络,为您的各类型业务保驾护航加速前进!价格都非常给力,需...

半月湾hmbcloud升级500Mbps带宽,原生VPS,$4.99/月

关于半月湾HMBCloud商家之前也有几篇那文章介绍过这个商家的产品,对于他们家的其他产品我都没有多加留意,而是对他们家的DC5机房很多人还是比较喜欢的,这个比我们有些比较熟悉的某商家DC6 DC9机房限时,而且半月湾HMBCloud商家是相对便宜的。关于半月湾DC5机房的方案选择和介绍:1、半月湾三网洛杉矶DC5 CN2 GIA同款DC6 DC9 1G内存 1TB流量 月$4.992、亲测选择半...

欧路云:美国200G高防云-10元/月,香港云-15元/月,加拿大480G高防云-23元/月

欧路云 主要运行弹性云服务器,可自由定制配置,可选加拿大的480G超高防系列,也可以选择美国(200G高防)系列,也有速度直逼内地的香港CN2系列。所有配置都可以在下单的时候自行根据项目 需求来定制自由升级降级 (降级按天数配置费用 退款回预存款)。由专业人员提供一系列的技术支持!官方网站:https://www.oulucloud.com/云服务器(主机测评专属优惠)全场8折 优惠码:zhuji...

破解无线路由密码为你推荐
学生杀毒软件免费下载请各矿将表填好后于2017年3月1日前发至zhxsh411@163.com邮箱.计算机网络实验系统支持ipad支持ios127.0.0.1127.0.0.1打不开iphonewifi苹果手机怎样设置Wi-Fi静态IP?联通版iphone4s怎么知道到苹果4s是联通版,还是移动版xp系统关闭445端口xp中,如何关闭掉一些没有用的端口,请高手解答?csshack怎样找css hack 的最新使用方法
vps动态ip n点虚拟主机管理系统 中文域名交易中心 骨干网 东莞电信局 外国服务器 双12活动 服务器架设 789电视网 免费全能主机 傲盾官网 国外免费asp空间 卡巴斯基免费试用 shopex主机 最漂亮的qq空间 备案空间 腾讯网盘 免费赚q币 免费获得q币 winserver2008 更多