Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
这个VBA代码做什么,安全吗_Vba_Excel - Fatal编程技术网

这个VBA代码做什么,安全吗

这个VBA代码做什么,安全吗,vba,excel,Vba,Excel,有人给了我一点VBA代码,这应该是为了摆脱一些密码保护,我放在一个Excel文档,我现在无法打开。我想知道是否有人能证实这是它所做的,而不是一些不道德的事情(比如破解我所有的密码!) VBA代码为 Sub PasswordBreaker() Dim i As Integer, i1 As Integer, i2 As Integer, i3 As Integer, _ i4 As Integer, i5 As Integer, i6 As Integer, i7 As Integer, _

有人给了我一点VBA代码,这应该是为了摆脱一些密码保护,我放在一个Excel文档,我现在无法打开。我想知道是否有人能证实这是它所做的,而不是一些不道德的事情(比如破解我所有的密码!)

VBA代码为

Sub PasswordBreaker()
Dim i As Integer, i1 As Integer, i2 As Integer, i3 As Integer, _
  i4 As Integer, i5 As Integer, i6 As Integer, i7 As Integer, _
  i8 As Integer, i9 As Integer,  i10 As Integer, i11 As Integer, _
  unusedVar As VbMsgBoxResult, passLine As String

On Error Resume Next

For i = 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 i7 = 65 To 66: For i8 = 65 To 66:
For i9 = 65 To 66: For i10 = 65 To 66: For i11 = 32 To 126:
passLine = Chr(i) & Chr(i1) & Chr(i2) & Chr(i3) & Chr(i4) & _
           Chr(i5) & Chr(i6) & Chr(i7) & Chr(i8) & Chr(i9) & _
           Chr(i10) & Chr(i11)

ActiveSheet.Unprotect passLine

If ActiveSheet.ProtectContents = False Then
  unusedVar = MsgBox("Password cracked at random string: " & _
                     passLine & vbCrLf & "|xxxxx[;;;;;;;;;>", _
                     vbOKOnly, "VBA Brute")
  Exit Sub
End If
Next: Next: Next: Next: Next: Next:
Next: Next: Next: Next: Next: Next:
End Sub
谢谢

编辑-

我花了最后一天的时间阅读了VBA代码指令,我想我已经了解了它的作用

第一位只是定义所有i…i11将是什么类型的变量(整数),变量“passline”将是一个文本字符串

第三位使用所有变量i…i11(我怀疑是Chr,然后一个数字代表一个特定的键盘输入)以某种方式组成的字符创建变量“passline”

取消保护passline显然指示Excel使用变量“passline”解锁活动工作表

下一位似乎是检查工作表是否未受保护,如果有,则显示消息框,其中似乎包含“passline”变量、一些文本、一个“OK”按钮和一个标题

然后,如果工作表没有被解除保护,那么所有的“下一步”函数都会以某种方式使其重试,只有在完成后才退出

我仍然不确定的是:

为什么“下一步继续出错”-为什么会出错

为什么unusedVar被定义为消息框结果,因为消息框结果只是是否按下了“OK”按钮,所以它肯定只能是1/0类型的变量?我不明白这和一个未使用的变量有什么关系。后来,为什么未使用的变量本身等于(=)一个消息框?为什么不只是(密码被破解),然后(显示消息框)

最后,为什么12个Nexts,破解密码真的只需要12次尝试(每个字符一次?)

显然,这些问题现在可能还没有答案,但当这个问题成为谷歌搜索这段特定代码的最佳结果时,这里的大多数社区似乎更感兴趣的是发表冷嘲热讽的评论,而不是实际提供帮助,我想我至少应该分享一下我的发现。我很感激我得到的一个答案,但我认为一步一步地分解代码可能会给其他人带来更多的安慰,而不仅仅是它的作用的总结


当然,由于这个问题“过于宽泛”,我怀疑是否有人能够做出如此冗长的解释。

是的,这是安全的。它所做的只是强制使用用于保护工作表/工作簿的密码。它都会解锁工作表,然后为您打印密码(这会有点奇怪,像aaabbaaabbaa-但它会工作)


代码本身不会对电脑或运行它的用户造成任何伤害。

可能会请“某人”解释,或者不要使用您不理解的代码。。。尽管如此,我认为这与堆栈溢出无关,因为没有潜在的编程问题需要解决。@bassfader“某人”显然是从互联网上得到的。至于不使用代码,我不明白;如果客户接受纸质文件就可以了。我们生活在一个先进计算机技术的世界里,我们并不都了解它,所以我们必须尽我们所能做到最好。我本以为找到一些声称可以完成这项工作的代码,然后询问一些专家它是否安全,这将是一个非常可以接受的解决问题的过程。我还缺少其他更简单的解决方案吗?让我直说吧。您从认识的人那里获得了一些代码,但您不确定是否可以信任他们?而且,你将依靠这里的人的评估,你肯定不知道,来确定代码是否好?逻辑上,它有12个嵌套循环,来创建一个随机密码短语,其中除了内部循环之外,所有的循环都从“a”到“B”,内部循环从空间到
chr(126)
。我看不出这有什么用处。这里的人是不是故意装腔作势?不,我从一个朋友那里得到了一些代码,他在互联网上找到了它,我们都不知道它是干什么的。我不相信他从哪个网站得到的。我也不一定相信这里的任何人,但我很可能会相信几个人都说了同样的话,没有人说相反的话(尽管有很多机会),这是我对它起源的网站所没有的选择。我同意。我已经用过很多次了,谢谢,在给你的答案打分之前,我一直在等待其他答案,但现在不会了。我注意到这段代码与我后来发现的声称做同样事情的其他代码有点不同(如上面评论中链接的问题)。我是否正确地假设这些差异只是编码同一事物的两种方式,或者它们比这更重要?