-
精品文档
EXCEL
密码破解
1
打开文件
2
工具
---
宏
----
录制新宏
---
输入名字如
:aa
3
停
止录制
(
这样得到一个空宏
)
4
工具
---
宏
p>
----
宏
,
选<
/p>
aa,
点编辑按钮
5
删除窗口中的所有字符
(
只有几
个
),
替换为下面的内容
:(
复制吧
)
6
关闭编辑窗口
7
工具
---
宏
< br>-----
宏
,
选
AllInternalPasswords,
运行
,
确定两次
,
等
2
分钟
,
再确定
.OK,
没有密码了
!!
内容如下:
Public Sub
AllInternalPasswords()
'
Breaks worksheet and workbook structure passwords.
Bob McCormick
' probably
originator of base code algorithm modified for
coverage
' of workbook
structure / windows passwords and for multiple
passwords
'
' Norman Harker and JE McGimpsey
27-Dec-2002 (Version 1.1)
'
Modified 2003-Apr-04 by JEM: All msgs to
constants, and
' eliminate
one Exit Sub (Version 1.1.1)
' Reveals hashed passwords NOT original
passwords
Const DBLSPACE As
String = vbNewLine & vbNewLine
Const AUTHORS As String = DBLSPACE &
vbNewLine & _
Const HEADER As
String =
Const VERSION As
String = DBLSPACE &
Const
REPBACK As String = DBLSPACE &
Const ALLCLEAR
As String = DBLSPACE &
DBLSPACE &
DBLSPACE &
DBLSPACE &
Const
MSGNOPWORDS1 As String =
Const
MSGNOPWORDS2 As String =
Const MSGTAKETIME As String =
精品文档
精品文档
Const MSGPWORDFOUND1 As String =
Const MSGPWORDFOUND2 As String =
DBLSPACE &
Const
MSGONL
YONE As String =
ALLCLEAR &
AUTHORS & VERSION & REPBACK
Dim w1 As Worksheet, w2 As Worksheet
Dim i As Integer, j As
Integer, k As Integer, l As Integer
Dim m As Integer, n As Integer, i1 As
Integer, i2 As Integer
Dim
i3 As Integer, i4 As Integer, i5 As Integer, i6 As
Integer
Dim PWord1 As
String
Dim ShTag As
Boolean, WinTag As Boolean
Updating = False
With ActiveWorkbook
WinTag = .ProtectStructure Or
.ProtectWindows
End With
ShTag = False
For Each w1 In Worksheets
ShTag = ShTag Or tContents
Next w1
If Not
ShTag And Not WinTag Then
MsgBox MSGNOPWORDS1, vbInformation,
HEADER
Exit Sub
End If
MsgBox
MSGTAKETIME, vbInformation, HEADER
If Not WinTag Then
MsgBox MSGNOPWORDS2, vbInformation,
HEADER
Else
On Error Resume Next
Do 'dummy do loop
For i = 65 To 66: For j = 65 To 66: For
k = 65 To 66
For l = 65 To
66: For m = 65 To 66: For i1 = 65 To 66
For i2 = 65 To 66: For i3 =
65 To 66: For i4 = 65 To 66
For i5 = 65 To 66: For i6 = 65 To 66:
For n = 32 To 126
精品文档
精品文档
With
ActiveWorkbook
.Unprotect
Chr(i) & Chr(j) & Chr(k) & _
Chr(l) & Chr(m) & Chr(i1) & Chr(i2) & _
Chr(i3) & Chr(i4) & Chr(i5)
& Chr(i6) & Chr(n)
If
.ProtectStructure = False And _
.ProtectWindows = False Then
PWord1 = Chr(i) & Chr(j) &
Chr(k) & Chr(l) & _
Chr(m)
& Chr(i1) & Chr(i2) & Chr(i3) & _
Chr(i4) & Chr(i5) & Chr(i6) & Chr(n)
MsgBox tute(MSGPWORDFOUND1,
_
Exit Do 'Bypass all for...nexts
End If
End With
Next:
Next: Next: Next: Next: Next
Next: Next: Next: Next: Next: Next
Loop Until True
On Error GoTo 0
End If
If WinTag
And Not ShTag Then
MsgBox
MSGONL
YONE, vbInformation, HEADER
Exit Sub
End If
On Error
Resume Next
For Each w1 In
Worksheets
'Attempt
clearance with PWord1
ect
PWord1
Next w1
On Error GoTo 0
ShTag = False
For Each w1 In Worksheets
'Checks for all clear ShTag triggered
to 1 if not.
ShTag = ShTag
Or tContents
Next w1
If ShTag Then
For Each w1 In Worksheets
With w1
If
.ProtectContents Then
On
Error Resume Next
Do 'Dummy
do loop
For i = 65 To 66:
For j = 65 To 66: For k = 65 To 66
For l = 65 To 66: For m = 65 To 66: For
i1 = 65 To 66
For i2 = 65
To 66: For i3 = 65 To 66: For i4 = 65 To 66
For i5 = 65 To 66: For i6 =
65 To 66: For n = 32 To 126
精品文档
精品文档
.Unprotect
Chr(i) & Chr(j) & Chr(k) & _
Chr(l) & Chr(m) & Chr(i1) & Chr(i2) &
Chr(i3) & _
Chr(i4) &
Chr(i5) & Chr(i6) & Chr(n)
If Not .ProtectContents Then
PWord1 = Chr(i) & Chr(j) &
Chr(k) & Chr(l) & _
Chr(m)
& Chr(i1) & Chr(i2) & Chr(i3) & _
Chr(i4) & Chr(i5) & Chr(i6) & Chr(n)
MsgBox tute(MSGPWORDFOUND2,
_
'leverage finding Pword by trying on
other sheets
For Each w2 In
Worksheets
ect PWord1
Next w2
Exit Do 'Bypass all for...nexts
End If
Next: Next: Next: Next: Next: Next
Next: Next:
Next: Next: Next: Next
Loop
Until True
On
Error GoTo 0
End If
End With
Next w1
End If
MsgBox ALLCLEAR & AUTHORS &
VERSION & REPBACK, vbInformation, HEADER
End Sub
精品文档
精品文档
穷举破解
EXCEL
、
WORD
文档密码
摘要:
本文讨论了如何使用
VB
编程,通过穷举法解除
EXCEL
文档和
WORD
文
档的密码。并在破解过程
中加入了中断,以方便用户随时中断破解过程。
关键字:穷举法、解密、
EXCEL
文档、
WORD
文档、密码
Excel
和
Word
提供了多种
方法
限制访问用
户文档,
以免未经授权者的查看和更改。
但在信息化的今天,<
/p>
用户
需要记忆的密码太多,一旦密码丢失,用户将无法打开或访问
该文档,给用户造成很大的损失。能否借助
计
算
机的高速运行,解开密码呢?通过尝试,笔者认为:在无法弄清
Excel
p>
和
Word
加密算法的情况下,利用
穷举法尝试解密文档,是解密唯一的选择。
1.
实现原理
本程序选用
VB6.0
编写,并充分利用了
Office
组件中的对象库,穷举尝试各种口令,达到解密文档的目的。
p>
⑴
巧用整数的取整及取余,产生密码字符串
Excel
和
Word
文档密码可
以是字母、数字、空格以及符号的任意组合,最长可达
15
个字符,且区分大小
写。
本程序的破解过程利用一个两层循环,产生选定字符的排列组合(尝试密码),其中外层循环控制密 码的位
数,内层循环生成
N
位密码的所
有排列组合。产生尝试密码的
方法
是:将一个
< br>N
位字符串密码(
password
)
作为一个
“
数值
”
,该
“
数值
”
每个位上的
“
数字
”
属于选定字符范围,且该
“
< br>数值
”
与一个整数(
X
)一一对应,
并满足以下条件:
0
≤X
≤ArrayLenN
p>
-1
(
ArrayLen
< br>是选定密码字符范围的总字符数,如:仅选定数字时,
ArrayLen=10<
/p>
;仅选定数字和小写字母时,
ArrayLen=10+26=3
6
);对
X
整除、取余
N-1
次,对每次的余数
Y
做
以下操作:
password = password + CharArray(Y)
(注:
CharArray
是存放选定
字符的一维数组),最后
做以下操作:
password =
CharArray(X MOD ArrayLen) + password
,
p>
产生的
password
就是整数
X
对应的
N
位
字符串。
⑵
p>
利用
VB
的错误处理功能,尝试口令破解<
/p>
当运行程序尝试一个密码时(用该密码打开文档),若密码错误
,则会产生运行错误。为此,必须在尝试口
令前,使用
On
Error
语句打开一个错误处理程序;由于本程序是尝试各
种口令,当一个口令错误时,直接
尝试下一个口令即可,因此,应使用
< br>
“On Error Resume
Next”
语句。
那么,
如何得知找到口令了呢?
p>
VB
有一个内部错误对象
Err
,
它的
Number
属性中的值是用来确定发生错
误的原因。在尝试一个口令后,检
查
中的值,以确定该口令是否正确。
⑶
破解过程中的中断
利用穷举法解密对
系统资源的占用是十分惊人的,
在解密的过程中
CPU
的利用率几乎是
100%
,
若不加入解
密过程中的中断,
计算
机系统会处于一种假死机状态。为此,在破解过程的内循环中加入了
DoEvents<
/p>
函数。
DoEvents
函数提供了一种
取消任务的简便方法,
它将控制切换到操作环境内核。
只要此环
境中的所有
应用
程
序都有机会响应待处
理事件,
应用
程序就又恢复控制。使用该函数的优点是:不会使
应用程序放弃焦点,且
后台事件能够得到有效处理。
2.
具体实现过程
精品文档
-
-
-
-
-
-
-
-
-
上一篇:后汉书·范升(文言文解词)
下一篇:陆游《烟艇记》的阅读答案及翻译