破解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,抓包,加密,的,破解,原理,深入分析,知其然,