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

后端 未结 4 1252
孤独总比滥情好
孤独总比滥情好 2021-01-02 19:45

Anybody knows if there are other ways to crack a password of a protected sheet in excel? I have been using these codes ever since but now, it doesn\'t seem to work anymore.

相关标签:
4条回答
  • 2021-01-02 20:25

    Since a recent update, Excel has an issue with a high try rate to command Unprotect. A few slow-down makes the code run again: Put something like this right before the Unprotect line, i.e. into the most inner loop:

    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.

    0 讨论(0)
  • 2021-01-02 20:32

    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". When I opened the file & unprotect the sheet, it did not ask for a password anymore. :) And my workbook still works fine.

    0 讨论(0)
  • 2021-01-02 20:34

    Thanks Kawi, that works perfectly.

    Here is the full code with Kawi's modification:

    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
    
    0 讨论(0)
  • 2021-01-02 20:39

    Excel has updated their sheet protection security in Excel 2013 and newer so this macro won't work anymore, see here.

    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. You could then run your macro.

    Saving as an older file version may make certain parts of the workbook not work.

    0 讨论(0)
提交回复
热议问题