1、Excel 密码保护的解除方法与解除原理 Excel 弹出 “您试图更改的单元格或图表受保护,因而是只读的。若要修改受保护单元格或图表,请先使用 撤消工作表保护 命令 (在 审阅 选项卡的 更改 组中 )来取消保护。可能会提示您输入密码 。 ”窗口,如图 1。 出现这种情况,应该怎么解决呢?经过研究,找到了两种破解 Excel 工作表保护码的方法。 一、 VBA宏代码破解法: 第一步:打开该文件,先解除默认的 “宏禁用 ”状态,方法是点击工具栏下的 “选项 ”状态按钮,打开 “Microsoft Office安全选项 ”窗口,选择其中的 “启用此内容 ”, “确定 ”退出 (图 2); 再切换
2、到 “视图 ”选项卡,点击 “宏 ”“ 录制宏 ”,出现 “录制新宏 ”窗口,在 “宏名 ”定义一个名称为: PasswordBreaker(图 3),点击 “确定 ”退出; 第二步:再点击 “宏 ”“ 查看宏 ”,选择 “宏名 ”下的 “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 I
3、nteger 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 T
4、o 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) & Ch
5、r(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
6、 Next: Next: Next: Next: Next: Next End Sub 第三步: 再点击 “宏 ”“ 查看宏 ”,选择 “宏名 ”下的 “PasswordBreaker”并点击 “执行 ”,密码就现形了 (图 4)。 第四步:切换 “审阅 ”选项卡,点击 “撤消工作表保护 ”,然后输入密码即可解除锁定。 二、软件破解法 有许多专门为破解 Excel 各种密码而制作的软件, Excel Key与 Advanced Office Password Recovery 就是其中的佼佼者。它们的使用方法简单且破解速度极快。 1. Excel Key 下载 (下载地址: http:/ “R
7、ecovery”按钮,找到要破解的文件,软件马上就可以解出密码了 (图 5)。 2. Advanced Office Password Recovery 下载 (下载地址: http:/ /410768.shtml)安装完后运行软件,点击工具栏 “Open File”按钮,打开要破解的 Excel 文件,马上就可以看到解出的密码了 (图6)。 可以看出,用以上方法读出的密码完全不同,但它们确实均可以解除该工作表的密码保护,这实在是个有趣的问题。 在网上查找了许久,终于找到比较圆满的解释答案: 当 Excel 工作表采用密码保护时,就会生成一个 16 位 (双字节 )长 hash 值。当输入密码进行验证时,真正进行比较的就是这个 hash 值。事实上,有很多不同的密码都可以生成同样的 hash值。 大家可以试试: 当你用 “test”(不含双引号 )作为 Excel 工作表保护密码,你同样可以用 “zzyw”(同样不含双引号 )这个密码进行解锁。怎么样,神奇吧 ?