欢迎来到天天文库
浏览记录
ID:29752465
大小:36.50 KB
页数:13页
时间:2018-12-23
《穷举破解EXCEL、WORD文档密码(1).doc》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、穷举破解EXCEL、WORD文档密码(1)摘要:本文讨论了如何使用VB编程,通过穷举法解除EXCEL文档和WORD文档的密码。并在破解过程中加入了中断,以方便用户随时中断破解过程。关键字:穷举法、解密、EXCEL文档、WORD文档、密码Excel和Word提供了多种方法限制访问用户文档,以免未经授权者的查看和更改。但在信息化的今天,用户需要记忆的密码太多,一旦密码丢失,用户将无法打开或访问该文档,给用户造成很大的损失。能否借助计算机的高速运行,解开密码呢?通过尝试,笔者认为:在无法弄清Excel和Word加密
2、算法的情况下,利用穷举法尝试解密文档,是解密唯一的选择。1.实现原理本程序选用编写,并充分利用了Office组件中的对象库,穷举尝试各种口令,达到解密文档的目的。⑴巧用整数的取整及取余,产生密码字符串Excel和Word文档密码可以是字母、数字、空格以及符号的任意组合,最长可达1个字符,且区分大小写。本程序的破解过程利用一个两层循环,产生选定字符的排列组合,其中外层循环控制密码的位数,内层循环生成N位密码的所有排列组合。产生尝试密码的方法是:将一个N位字符串密码作为一个“数值”,该“数值”每个位上的“数字”属
3、于选定字符范围,且该“数值”与一个整数一一对应,并满足以下条件:0≤X≤ArrayLenN-1;对X整除、取余N-1次,对每次的余数Y做以下操作:password=password+CharArray(Y),最后做以下操作:password=CharArray(XMODArrayLen)+password,产生的password就是整数X对应的N位字符串。⑵利用VB的错误处理功能,尝试口令破解当运行程序尝试一个密码时,若密码错误,则会产生运行错误。为此,必须在尝试口令前,使用OnError语句打开一个错误处理
4、程序;由于本程序是尝试各种口令,当一个口令错误时,直接尝试下一个口令即可,因此,应使用“OnErrorResumeNext”语句。那么,如何得知找到口令了呢?VB有一个内部错误对象Err,它的Number属性中的值是用来确定发生错误的原因。在尝试一个口令后,检查中的值,以确定该口令是否正确。⑶破解过程中的中断利用穷举法解密对系统资源的占用是十分惊人的,在解密的过程中CPU的利用率几乎是100%,若不加入解密过程中的中断,计算机系统会处于一种假死机状态。为此,在破解过程的内循环中加入了DoEvents函数。Do
5、Events函数提供了一种取消任务的简便方法,它将控制切换到操作环境内核。只要此环境中的所有应用程序都有机会响应待处理事件,应用程序就又恢复控制。使用该函数的优点是:不会使应用程序放弃焦点,且后台事件能够得到有效处理。2.具体实现过程编程实现时,需要机器安装有VB应用程序及MicrosoftOffice组件。⑴新建VB工程,并对其初始化新建一个VB工程,取名Get_Password,将启动窗体命名为FrmMain。首先选择“工程”菜单中的“引用”,在“引用”对话框中选择“MicrosoftObjectLibr
6、ary”和“MicrosoftObjectLibrary”。其次在“工程”菜单中“部件”对话框中,选择添加“MicrosoftWindowscommoncontrols-(sp2)”和“MicrosoftCommonDialog”,以便在窗体设计中使用微调控件和对话框控件。⑵在FrmMain窗体上添加控件在FrmMain窗体上,按照下图的位置添加表1中的控件,然后根据表1修改每个对象的属性。 表1:序号 控件名称 控件属性及其属性值1 Frame Name=Frame1,Caption=选择加密文件2
7、 Frame Name=Frame2,Caption=选定密码字符范围:3 Frame Name=Frame3,Caption=选择密码的长度:4 ComboBow Name=Combo15 CommandButton Name=CmdBrowse,Caption=浏览6 CommandButton Name=CmdStartCrack,Caption=开始破解7 CommandButton Name=CmdQuit,Caption=退出系统8 CheckBox Name=ChkD
8、igital,Caption=数字(10)9 CheckBox Name=ChkLowercase,Caption=小写字母(26)10 CheckBox Name=ChkUppercase,Caption=大写字母(26)11 CheckBox Name=ChkSpace,Caption=空格(1)12 CheckBox Name=ChkBracket,Caption=括号(6)1
此文档下载收益归作者所有