破解word密码

作者:小菜 更新时间:2025-02-11 点击数:
简介:工作繁忙难免产生意外,比如对重要的word文档加密之后却把密码忘得一干二净,这几乎会发生在每个人的身上。

这时你可能会焦急万分,不过我劝你不要太紧张,有空来程序

【菜科解读】

工作繁忙难免产生意外,比如对重要的word文档加密之后却把密码忘得一干二净,这几乎会发生在每个人的身上。

这时你可能会焦急万分,不过我劝你不要太紧张,有空来程序谷坐坐,一定会有好的答案的。

下面我们就来看看用穷举法暴力破解Word密码的程序,当然,为了简单起见,程序只针对密码是数字的情况做了处理,字符型的密码与此类似,不再多说了。

一、引言

大家都知道,office家族跟VB有千丝万缕的联系,Microsoft Office组件中的所有应用程序都内建有VBA,这样就可以通过VB或VBA操作 Word 应用程序中的对象,用穷举测试的办法达到找回丢失密码的目的,非常简单吧!

二、实现过程

下面来看一看程序的具体编制过程。

程序采用VB编程实现,需要机器安装有VB应用程序及Microsoft Office组件。

打开VB,新建一个VB 工程,取名Proc_Word,将启动窗体命名为FrmMain,选择“工程”菜单中的“引用”,在“引用”对话框中选择 “Microsoft Word8.0 Object Library”(这一步很重要,你必须选择这一ActiveX部件,否则代码不能正确运行,顺便说一句,如果安装的是Office2000,那么应该选择 “Microsoft Word9.0 Object Library”)。

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

好了,现在可以动手编制程序了。

在刚才FrmMain窗体的左侧添加一个框架控件,并在此控件内加入一个驱动器列表框、一个目录列表框和一个文件列表框控件。

在FrmMain窗体的右下侧添加两个命令按钮,在右上侧添加三个标签控件、两个文本框控件和一个微调控件,你可以参考附图来设计。

接着,将框架的Caption属性设置成“请选择需要破译的Word文档”;保持目录列表框、驱动器列表框、文件列表框、文本框、微调控件缺省名称不变;将文件列表框的Pattern属性设置成“*.DOC”,目的是只显示目录下的 Word文件;将第一个标签控件Caption属性设置成“该程序破译八位以下纯数字组合Word文档密码”,将第二个标签Caption属性设置成“解密进度”,将第三个标签Caption属性设置成“请选择破译密码位数”;将第二个文本框的Text属性设置成“4”,这是缺省密码位数;将微调按钮的 BuddyControl属性设置成Text2就能和第二个文本框关联,BuddyProperty 改成Text,Max、Min属性分别设置成“8”和“1”,表示最长密码位数和最短密码位数,将Wrap属性设置成True,将Increment属性设置成“1”,以便每单击一次加1或减1;将两个命令按钮的名称分别改成 “cmdopendoc”和“cmdquit”,Caption属性分别设置成“文件打开”、“系统退出”。

以上就把各控件的属性设置完了,接着编写代码也就不是什么难事儿了。

下面就是全部的源程序,适当的注释有助于大家理解程序。

你还可以通过设置断点来跟踪密码生成部分,看看程序编制的原理。

Private Sub cmdopendoc_Click()

Dim wd As New Word.Application

Dim strpath As String

Dim pass As String

Dim J, K, Pass_long As Integer

Dim Max_num, Min_num, I As Long

strpath = File1.Path & "\" & File1.FileName

On Error Resume Next

'程序开始

Pass_long = Val(Text2.Text)

Max_num = 10 ^ Val(Text2.Text)

Min_num = 10 ^ (Val(Text2.Text) - 1)

Flag = 0

For K = 0 To Pass_long - 1

Max_num = 10 ^ (Pass_long - K)

Min_num = 10 ^ (Pass_long - (K + 1))

For J = 0 To Pass_long - 1

cmdopendoc.MousePointer = 11

For I = IIf(Pass_long - K = 1, 0, Min_num) + J To Max_num Step Pass_long

Text1.Text = pass

Text1.Refresh

pass = String(K, "0") & I

Flag = wd.Documents.Open(FileName:=strpath, passworddocument:=pass)

'如果解密成功,打开文档,显示密码,退出过程

If Flag 0 Then

Label1.Caption = "文档密码"

Label1.Refresh

Text1.Text = pass

wd.Visible = True

cmdopendoc.MousePointer = 0

Exit Sub

End If

Next I

Next J

Next K

MsgBox "密码位数不对,请重新输入"

End Sub

Private Sub cmdquit_Click()

End

End Sub

Private Sub Dir1_Change()

File1.Path = Dir1.Path

End Sub

Private Sub Drive1_Change()

Dir1.Path = Drive1.Drive

End Sub

Private Sub File1_DblClick()

Call cmdopendoc_Click

End Sub

三、几点说明

需要说明的是,穷举法解密对系统资源的耗用是十分惊人的,在解密的过程中最好不要运行其他应用程序。

针对其巨大的资源耗用量,我在程序中采用了一个小技巧,那就是用密码位数作为循环的步长进行刺探。

也就是说如果你的密码是3位的话,那么程序将依次尝试100、103 、106……997、 101、104……998、102、105……999结束,加快了查找密码的速度(东渐: 其实大家可以动手算一算,到底是快了许多,还是快了一点,还是根本没有提高速度^_^)。

该程序在Win98/NT+VB6.0环境下测试通过,笔者随便试了一个5位数密码,在PⅡ300、128MB内存的机器上,10分钟左右即可解开。

当然,程序并不十分完善,比如还可以加入解密过程中的中断,以及中断后解密进度的保存等,有兴趣的读者可以自己加以完善。

破解,word,密码,工作,繁忙,难免,产生,意外,比,

麦田怪圈之谜已被破解,外星人麦田怪圈

麦田怪圈早就是老生常谈的话题了,继而还发现了沙漠怪圈等,然而却一直没有一个完美的解释。

不管是相信的人还是持怀疑态度的人中,都不乏各领域科学家,为何一直争论不休?外星人麦田怪圈如果用真的或者是假的,来简单界定这些事件,那就把持相反观点的一大群人都当成白痴了。

其实这一争论,无非就是一个问题,这些怪圈是谁干的?1.雷电、大气论。

早年有科学家认为,这是一种旋风和电浆闪电共同作用造成,没有提出任何实质证据,只是以自然现象去推测。

即便是气压能造成麦秆倒伏的情况,如果是简单的圆圈这是有可能的,但这种规则几何图形,有的还蛮复杂,真的是单纯气压能形成的吗?小编认为,这种说法,还不如拿外星人说事站的住脚。

2.人为恶作剧。

诚然,不少怪圈确实是人为制作的,而且制作者还现身说法,并且现场制作。

这确实能解释,刚出现怪圈的时候很少,但是随着这些事件火热之后,怪圈越来越多,并且越来越复杂,西方很多国家出现非常多。

这无非是很多人蹭个热点,来一把恶作剧引起关注,还有自称艺术家的人宣称,只是为了看看大家的反应。

3.地外文明。

一部分人认为,这种巨大的图案,只是外星人给地球人传递信息,或者说是他们的地标和飞行坐标示意图。

那么有人说了,要传递信息,为啥不在人群密集的地方出现,或者说在政府大院前出现?如果说是地标,那麦子收割之后图案不就没了吗,你在山上地上啥的挖一个还说的通。

但是呢,也不能完全排除,如果说地外文明还有别的目的,那就不知道了。

至于当年出现的视频,说是看到光球在上空飞行,然后就出现了怪圈,说是神秘光球制造了这些怪圈。

后来作者也出来证实了,只是人为剪辑制作。

但有人提出,说出来证实的人是为了保密而故意安排出来扰乱众人视线的,这样就使这个谜团越来越大,一直得不到解释。

国外有个叫BLT的团队,成员有十几位知名科学家,他们研究发现,真实的怪圈和已知人为制造的怪圈有不同点,麦秸本身的变化不同。

他们认为,已知人为的怪圈中,麦秸生长没有大的变化,但是有的怪圈倒伏的麦秸不正常的增长了。

这一论点算是非常有力的,可这时候农作物学家说,受伤倒伏之后的麦秸,为了恢复直立,是可能适当增长,又使得迷雾重重。

麦田怪圈之谜已被破解值得一提的是,有另外一个团队,从人类意识出发,试图破解这个谜题。

他们组织了一队人在山上冥想,就是事先告诉大家一起脑海里默想一个图案,看看能否使之发生作用。

这个很玄妙啊,都知道大脑活动是有脑电波的,他们就想试验,这个脑电波能不能作用于自然事物。

结果令人大跌眼镜,第二天在他们对面的麦田,真的出现了这一奇异图案!国家地理的纪录片里有提到这件事,如果说这一颠覆认知的事件是真实的,那么破解怪圈就有了新思路,怪圈就是智慧生命意识的结晶。

听起来实在不可思议,但是宇宙运行的奥妙,谁又能说得清楚呢?毕竟如今的科学研究,也只是发现自然规律,而这个规律从何而来,没有人知道。

爱因斯坦和牛顿晚年,都开始研究神学,当然不是说传统意义的神,而是更高等智慧生命。

也许他们逐渐发现,这些所谓的规律会不会是高等智慧生命的意志体现,所谓的自然定律,可能只是他们制定的规则。

而人大脑的使用率,大多还不到10%,谁知道人脑还有什么秘密,如果被开发到百分之百,什么意识意念之类,说不定只是小儿科呢。

还记得一部科幻片,就是一次意外,使得一个女孩大脑被完全开发,简直是无所不能,甚至能创造一切。

人类历史才短短百万年,我们对自身的了解还太少,对浩瀚宇宙的探索更是如同白纸,无数的秘密,只能期待未来的科学解答。

WEP抓包WEP加密的破解原理的深入分析

知其然,知其所以然。

呵呵,有兴趣的人可以看下去,没兴趣的人跳过吧。

前几天发过一个帖子,粗略讲了下WEP加密的破解原理。

可能很多人看的云里雾里。

最近几天因为忙着要准备考研,在复习线性代数和离散数学,学计算机的人都知道,这两门课是计算机的专业基础课,而很多密码学的知识都是建立的数学的基础上的,比如非常著名的非对称加密算法RSA就是建立在大素数分解难题上的。

这个不是我们今天要讨论的主题,呵呵,我主要讲的WEP加密的原理和为什么我们抓包就能破解,尽量讲的通俗易懂点。

WEP是链路层的安全机制(关于7层模型,有疑问的,大家自己去百度google)。

他的加密过程是这样的。

(1) 客户端计算原始数据包中明文数据(我们记做P)的32位CRC循环冗余校验码,实际上是计算整数检查向量(我们记做ICV),(又一堆专业术语,大家不理解没关系),这两个,也就是P和ICV构成我们要传输的数据(P+ICV),这才是需要加密的真正的明文。

(2) 我们用40位的密钥和24位的初始向量(IV)构成种子密钥(假设我们采用64位加密)。

输入到采用RC4算法的伪随机数发生器,生成与我们要传输的明文(P+ICV)等长的随机数,我喜欢把这个称作为真正的密钥(Real Key)。

我们输入的种子不同,生成的随机数也是不同的。

这个类似于现在很多软件都靠MD5散列来检验有没有被人篡改过。

又扯远了。

回到正题。

(3) 将我们得到的随机数和传输明文数据(P+ICV)按位进行异或操作(所谓异或操作,就是比较相同位上的数字,如果相同值为0,不同则为1),得到密文(我们记做C),然后将前面的24位初始向量和密文(C)组合在一起,得到要传输的密文(IV+C)。

解密的过程只是个简单的取反。

就是AP收到数据后,将得到的(IV+C),分解,提取IV,然后将自己所持有的密钥Key组合在一起,输入到采用RC4算法的伪随机数发生器,得到解密的随机数,实际上和加密的随机数是一样的。

然后将解密的随机数和密文(C)做异或操作,就得到了明文(P+ICV); 这么说也许大家看不懂,我觉得例子吧。

假设我们要传输的明文(P+ICV)= 0001101101 与之等长的随机数列(Real Key)= 0111011010 将这两个进行异或操作 得到密文C=0110110111解密过程就是将密文C和随机数列(Real Key)进行异或操作。

得到的就是明文(P+ICV); 接下来就是最最关键的,就是为什么我们能够破解WEP。

其实,产生Real Key的RC4算法本身就是有问题的,具体我就不讲了,涉及很复杂的数学知识,有兴趣的自己查资料。

我这里要讲的就是我们现在所使用的,就是抓包很多包来破解。

我们来讨论下24位的初始向量,因为这个在密文(IV+C)中是明文传输的,我们可以很方便的得到。

2的24次方是16777216。

我们现在使用的网络一般是54Mb/s,我们假设传输分组的大小为2000字节,实际比这小,我们计算下 54(Mb/s) / (2000B/包 * 8bits/B) = 3375 包/秒,也就说大概经过16777216 /3375=4971秒,也就是差不多1.3个小时,初始向量就要被全部用光了,就会出现重复。

呵呵,如果我们真的等一个多小时才抓到两个IV相同的包,那估计很多人会抓狂了,实际情况远比这个要好。

我上面讲的是IV初始为0,然后随着数据包的个数的增加,逐渐按模2的24次方递增,到24位全部用完时,IV又返回为0这么一种情况。

然后实际过程中,IV 是在[0,224-1]上随机取的值。

好吧,接下去就是概率的问题了(又是一门专业基础课概率论与数理统计),经过我的计算,在传输4823个数据包后,将会有50%的概率IV会相同,当发送12430个数据包时99%的概率会发生IV相同。

也就是4秒钟左右,就会发生IV相同的情况。

假设我们抓到两个IV相同的包(IV+C1)和(IV+C2),因为IV相同,40位的密钥也相同,所以他们产生的Real Key也相同。

那么我们可以将密文C1和密文C2进行异或操作,这个值和他们的明文异或操作时相同的。

这一点大家可以按照我上面的例子自己算下。

这样,如果我们抓到足够的包,也就是随着IV相同的密文数的增多,完全就可以分析出密钥和明文。

关于WEP协议,它犯了密码学中的大忌,就是避免使用线性运算。

这里CRC冗余算法和RC4都是线性运算。

至于为什么这么说,下次再说吧。

呵呵 WEP,抓包,加密,的,破解,原理,深入分析,知其然,

加入收藏
               

破解word密码

点击下载文档

格式为doc格式

  • 账号登录
社交账号登录