使用VBA破解Excel电子表格的密码
使用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日
我成功地在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
你的代码无法正确执行是因为你试图在一个密码保护的Excel文件上执行宏,这是不允许的。这是因为在输入密码之前,Excel工作簿中的宏不会执行 - 因此要求输入密码才能执行宏代码。
这篇SO文章也对此进行了更详细的解释:Excel VBA - Automatically Input Password
编辑
对于2003年的版本
如果您正在尝试访问工作簿而不是工作表,则在2003年及更早版本中有多种方法。仔细阅读后,这篇博客Code Samples中似乎有一个适用于解除2003工作簿保护的工具。
此外,如果您要向后追溯甚至尝试解锁VBA项目,则此SO文章似乎可以充分解决此问题。
对于2007年的版本
如果您只是试图“暴力破解”客户的工作簿,则名为Jason的男士在他的博客中概述了此过程。