簡體   English   中英

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

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

有誰知道是否有其他方法可以破解excel中受保護工作表的密碼? 從那以后我一直在使用這些代碼,但現在,它似乎不再起作用了。 每次我運行代碼時,該文件只是說“無響應”。 我正在使用 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 已在 Excel 2013 及更高版本中更新了其工作表保護安全性,因此此宏將不再起作用,請參見此處

從鏈接看來,如果您將文件另存為 xls 文件(Excel 1997-2003),它會被迫放棄較新的安全性,因為它與文件類型不兼容。 然后你可以運行你的宏。

保存為較舊的文件版本可能會使工作簿的某些部分無法工作。

謝謝 Kawi,它完美地工作。

這是 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

我不確定這是如何工作的,但我能夠取消保護工作表。 我做了一個“另存為”並將類型更改為:“Excel 97-2003”。 當我打開文件並取消保護工作表時,它不再要求輸入密碼。 :) 我的工作簿仍然可以正常工作。

自最近的更新以來,Excel 有一個問題,即命令取消保護的嘗試率很高。 一些減速使代碼再次運行:在 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

通過這種(速度)修改,最初提到的方法也適用於 Excel 2013 和 Excel 2016。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM