【问题标题】:Why does this code disable the sheet protection?为什么此代码会禁用工作表保护?
【发布时间】:2018-03-12 13:42:41
【问题描述】:

以下代码由this website 提供,我用它来取消保护我不知道密码的工作表。

Sub DisableSheetProtection()
Dim password As String
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 n = 65 To 66
For o = 65 To 66: For p = 65 To 66
For q = 65 To 66: For r = 65 To 66
For S = 65 To 66: For t = 32 To 126
ActiveSheet.Unprotect Chr(i) & _
Chr(j) & Chr(k) & Chr(l) & _
Chr(m) & Chr(n) & Chr(o) & _
Chr(p) & Chr(q) & Chr(r) & _
Chr(S) & Chr(t)

Next t: Next S: Next r: Next q
Next p: Next o: Next n: Next m
Next l: Next k: Next j: Next i
MsgBox "Sheet protection disabled."
End Sub

问题是:它是如何或为什么起作用的? Chr(65) 是 A,Chr(66) 是 B,Chr(32) 到 Chr(126) 是整个字母表和特殊的字符。

基本上,如果您想尝试所有可能需要这样做:

Sub DisableSheetProtection()
    Dim password As String
    On Error Resume Next
    For i = 32 To 126: For j = 32 To 126
    For k = 32 To 126: For l = 32 To 126
    For m = 32 To 126: For n = 32 To 126
    For o = 32 To 126: For p = 32 To 126
    For q = 32 To 126: For r = 32 To 126
    For S = 32 To 126: For t = 32 To 126
    ActiveSheet.Unprotect Chr(i) & _
    Chr(j) & Chr(k) & Chr(l) & _
    Chr(m) & Chr(n) & Chr(o) & _
    Chr(p) & Chr(q) & Chr(r) & _
    Chr(S) & Chr(t)

    Next t: Next S: Next r: Next q
    Next p: Next o: Next n: Next m
    Next l: Next k: Next j: Next i
    MsgBox "Sheet protection disabled."
    End Sub

但是该代码可以正常工作,因为它可以取消保护并且您无法打印出正确的密码。我认为这与 VBA 取消保护/保护方法有关。

【问题讨论】:

标签: vba excel passwords excel-2007 password-protection


【解决方案1】:

内部 XL 密码对安全性的作用与纸巾一样有用 纸。原因是您输入的密码(即 工具/保护/保护工作表或/保护工作簿)未使用 直接在保护。 相反,它们被散列(数学上 转换)成更不安全的代码。实际上,任何密码 将任意长度的字符串转换为 12 个字符的字符串,第一个 其中 11 个只有两个可能值之一。剩余的 字符最多可以有 95 个可能的值,导致只有

2^11 * 95 = 194,560 个潜在密码

这可能看起来很多,但现代计算机只需要几秒钟 > 尝试所有这些。作为比较,一个仅包含 26 个字符的 4 个字符的密码 小写字母字符有 456,976 种组合,一个 由小写字母、大写字母和字母组成的 3 个字符的密码 数字 0-9 将有 238,328 种组合。

同样,您的原始密码是什么并不重要,其中一个 194K 字符串将解锁您的工作表或工作簿。

更多信息请阅读this

【讨论】:

  • 非常感谢,学到了新东西。在薄纸上评论:绝对!我的电脑会在 3-4 秒内破解它。
猜你喜欢
  • 2018-06-22
  • 2011-01-24
  • 1970-01-01
  • 2016-02-27
  • 2020-04-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-10-25
相关资源
最近更新 更多