首页 > 解决方案 > VBA代码破解两个字符的密码

问题描述

试图破解两个字符的密码

Sub BruteForce()

        Dim pw As String
        Dim i As Integer

        Do
            ThisWorkbook.Sheets("Login").Cells(4, 7).ClearContents
            For i = 1 To 2
                If i Mod 2 = 0 Then
                    pw = pw & Int((9 - 0 + 1) * Rnd + 0)
                Else
                    pw = pw & Chr(Int((90 - 65 + 1) * Rnd + 65))
                End If
            Next i
            ThisWorkbook.Sheets("Login").Cells(4, 7).Value = pw
            If ThisWorkbook.Sheets("Login").Cells(5, 7).Value <> "NO" Then
                Exit Do
            End If
        Loop

    End Sub

代码陷入无限循环,我不知道如何修复

标签: excelvbaloopspasswordsbrute-force

解决方案


使用嵌套循环不太复杂:

Sub BruteForce()

    Dim i As long, n As Long

    With ThisWorkbook.Sheets("Login")
        For i = 0 To 9
        For n = 1 to 26
            .Cells(4, 7).Value = Chr(64+n) & i
            DoEvents   
            If .Cells(5, 7).Value <> "NO" Then Exit Sub
        Next n
        Next i
    End With

End Sub

推荐阅读