第一步:打开文件,解除默认的“禁用宏”状态。点击左上角的Office图标,在主菜单下方点击“Excel选项”,在“选项”窗口左侧选择“信任中心”,然后点击右边的“信任中心设置”,在“信任中心”选项卡中,选择“启用所有宏”,然后点击“确定”关闭“信任中心”,再点击“确定”关闭“选项”窗口;
第二步:在主视图中切换到“视图”选项卡,点击最右边的“宏”→“录制宏”,出现“录制新宏”窗口,在“宏名”中定义一个名称为:PasswordBreaker,点击“确定”退出;
第三步:再点击“宏”→“查看宏”,选择“宏名”下的“PasswordBreaker”并点击“编辑”,打开 Microsoft Visual Basic 编辑器,用以下内容替换右侧窗口中的所有代码:
Sub PasswordBreaker()
Dim i As Integer, j As Integer, k As Integer
Dim l As Integer, m As Integer, n As Integer
Dim i1 As Integer, i2 As Integer, i3 As Integer
Dim i4 As Integer, i5 As Integer, i6 As Integer
On Error Resume Next
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
ActiveSheet.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 ActiveSheet.ProtectContents = False Then
MsgBox "One usable password is " & Chr(i) & Chr(j) & _
Chr(k) & Chr(l) & Chr(m) & Chr(i1) & Chr(i2) & _
Chr(i3) & Chr(i4) & Chr(i5) & Chr(i6) & Chr(n)
ActiveWorkbook.Sheets(1).Select
Range("a1").FormulaR1C1 = Chr(i) & Chr(j) & _
Chr(k) & Chr(l) & Chr(m) & Chr(i1) & Chr(i2) & _
Chr(i3) & Chr(i4) & Chr(i5) & Chr(i6) & Chr(n)
Exit Sub
End If
Next: Next: Next: Next: Next: Next
Next: Next: Next: Next: Next: Next
End Sub
第四步:再点击“宏”→“查看宏”,选择“宏名”下的“PasswordBreaker”并点击“执行”,稍待一会,密码就现形了。
用以上方法读出的密码与原密码完全不同,但它们确实可以解除该工作表的密码保护。这是因为当Excel工作表采用密码保护时,会生成一个16位(双字节)长的hash值。当输入密码进行验证时,真正进行比较的就是这个hash值。事实上,很多不同的密码都可以生成同样的hash值。
暴力破解吧,WORD加密的很容易破,但是EXCEL的还没试过。
发给我,我来解。