使用VBA破解Excel电子表格的密码

19 浏览
0 Comments

使用VBA破解Excel电子表格的密码

我尝试编写一个类似于我用来破解Excel表格密码的代码的VBA密码破解程序,但我不确定我是否做得正确——当我尝试运行这个代码时,它让我输入密码,但是没有密码被输入到文本框中。

请建议我做错了什么。

谢谢

Sub testmacro()
Dim password
Dim a, b, c, d, e, f, g, h, i, j, k, l
SendKeys "^r"
SendKeys "{PGUP}"
For a = 65 To 66
    For b = 65 To 66
        For c = 65 To 66
            For d = 65 To 66
                For e = 65 To 66
                    For f = 65 To 66
                        For g = 65 To 66
                            For h = 65 To 66
                                For i = 65 To 66
                                    For j = 0 To 255
                                        password = Chr(a) & Chr(b) & Chr(c) & Chr(d) & Chr(e) & Chr(f) & Chr(g) & Chr(h) & Chr(i) & Chr(j)
                                        SendKeys "{Enter}", True
                                        MsgBox password
                                        SendKeys password, True
                                        SendKeys "{Enter}", True
                                        On Error GoTo 200
                                        MsgBox password
                                        GoTo 300
200                                         password = ""
                                    Next
                                Next
                            Next
                        Next
                    Next
                Next
            Next
        Next
    Next
Next
300 MsgBox "exited"
End Sub

admin 更改状态以发布 2023年5月23日
0
0 Comments

我成功地在Excel-2013中执行了此脚本,该脚本是在Excel 2003中创建的受密码保护的工作簿中执行的。

按照以下步骤进行:

开发人员-->记录宏(给一个名称,然后做一些点击)

宏-->取出您为编辑创建的宏。

用下面的整个函数替换宏:

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

0
0 Comments

你的代码无法正确执行是因为你试图在一个密码保护的Excel文件上执行宏,这是不允许的。这是因为在输入密码之前,Excel工作簿中的宏不会执行 - 因此要求输入密码才能执行宏代码。

这篇SO文章也对此进行了更详细的解释:Excel VBA - Automatically Input Password

编辑

对于2003年的版本


如果您正在尝试访问工作簿而不是工作表,则在2003年及更早版本中有多种方法。仔细阅读后,这篇博客Code Samples中似乎有一个适用于解除2003工作簿保护的工具。

此外,如果您要向后追溯甚至尝试解锁VBA项目,则此SO文章似乎可以充分解决此问题。

对于2007年的版本


如果您只是试图“暴力破解”客户的工作簿,则名为Jason的男士在他的博客中概述了此过程


0