简体   繁体   English

使用 VBA 的 Excel 2013 及更高版本中受保护工作表的密码破解程序

[英]Password Cracker of Protected Sheet in Excel 2013 and Later using VBA

Anybody knows if there are other ways to crack a password of a protected sheet in excel?有谁知道是否有其他方法可以破解excel中受保护工作表的密码? I have been using these codes ever since but now, it doesn't seem to work anymore.从那以后我一直在使用这些代码,但现在,它似乎不再起作用了。 The file just says "Not Responding" every time I run the code.每次我运行代码时,该文件只是说“无响应”。 I'm using MS Office 2013.我正在使用 MS Office 2013。

Sub PasswordBreaker()
'Breaks worksheet password protection.
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)
     Exit Sub
End If
Next: Next: Next: Next: Next: Next
Next: Next: Next: Next: Next: Next
End Sub

Excel has updated their sheet protection security in Excel 2013 and newer so this macro won't work anymore, see here . Excel 已在 Excel 2013 及更高版本中更新了其工作表保护安全性,因此此宏将不再起作用,请参见此处

From the link it sounds like if you save the file as an xls file (Excel 1997-2003) it is forced to drop the newer security as it wasn't compatible with the file type.从链接看来,如果您将文件另存为 xls 文件(Excel 1997-2003),它会被迫放弃较新的安全性,因为它与文件类型不兼容。 You could then run your macro.然后你可以运行你的宏。

Saving as an older file version may make certain parts of the workbook not work.保存为较旧的文件版本可能会使工作簿的某些部分无法工作。

Thanks Kawi, that works perfectly.谢谢 Kawi,它完美地工作。

Here is the full code with Kawi's modification:这是 Kawi 修改后的完整代码:

Sub PasswordBreaker()
'Breaks worksheet password protection.
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
Debug.Print Chr(i) & Chr(j) & Chr(k) _
      & Chr(l) & Chr(m) & Chr(i1) _
      & Chr(i2) & Chr(i3) & Chr(i4) _
      & Chr(i5) & Chr(i6) & Chr(n)
DoEvents
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)
    Exit Sub
End If
Next: Next: Next: Next: Next: Next
Next: Next: Next: Next: Next: Next
End Sub

I'm not sure how this works but I was able to Unprotect the sheet.我不确定这是如何工作的,但我能够取消保护工作表。 I did a "save as" and changed the Type to: "Excel 97-2003".我做了一个“另存为”并将类型更改为:“Excel 97-2003”。 When I opened the file & unprotect the sheet, it did not ask for a password anymore.当我打开文件并取消保护工作表时,它不再要求输入密码。 :) And my workbook still works fine. :) 我的工作簿仍然可以正常工作。

Since a recent update, Excel has an issue with a high try rate to command Unprotect.自最近的更新以来,Excel 有一个问题,即命令取消保护的尝试率很高。 A few slow-down makes the code run again: Put something like this right before the Unprotect line, ie into the most inner loop:一些减速使代码再次运行:在 Unprotect 行之前放置类似这样的东西,即进入最内部的循环:

Debug.Print Chr(i) & Chr(j) & Chr(k) _
      & Chr(l) & Chr(m) & Chr(i1) _
      & Chr(i2) & Chr(i3) & Chr(i4) _
      & Chr(i5) & Chr(i6) & Chr(n)
DoEvents

With this (speed-) modification, the initial mentioned approach works also with Excel 2013 and Excel 2016.通过这种(速度)修改,最初提到的方法也适用于 Excel 2013 和 Excel 2016。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM