⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 shibie.bas

📁 一个VB识别百度的验证码程序
💻 BAS
字号:
Attribute VB_Name = "Module2"
'****************************************************************************
'网  站:http://www.hackeroo.com/
'e-mail:wushgkjz@126.com
'OICQ  : 266370
'****************************************************************************

Public Sub FenGe(ByVal n As Integer)  '把第n个图片拷贝到数据b中
    For i = 0 To 9: For j = 0 To 19
        b(i, j).dot = a(10 * n - 5 + i, j).dot: b(i, j).tag = a(10 * n - 5 + i, j).tag
    Next: Next
End Sub

Public Sub QuBian() '去掉边缘部分的黑点,这里左右各去掉1列,上下各去掉3行。
    For i = 0 To 9: For j = 0 To 19
        If i = 0 Or i = 9 Or j < 3 Or j > 17 Then b(i, j).dot = 0
    Next: Next
End Sub

Public Sub SuanTag() '扫描纪录黑点的8个邻居的情况。
    For i = 0 To 9: For j = 0 To 19
        If b(i, j).dot = 1 Then
        b(i, j).tag = b(i - 1, j - 1).dot * 1 + b(i, j - 1).dot * 2 + b(i + 1, j - 1).dot * 4 + b(i - 1, j).dot * 8 + b(i + 1, j).dot * 16 + b(i - 1, j + 1).dot * 32 + b(i, j + 1).dot * 64 + b(i + 1, j + 1).dot * 128
        
        End If
    Next: Next
End Sub

Public Sub JianHua()
 
   '进一步简化图形
    ok = False
    Do While Not ok
    SuanTag
    ok = True
    For gao = 0 To 19: For kuan = 0 To 9
   
        If b(kuan, gao).dot = 1 Then
        Select Case b(kuan, gao).tag
        Case 244, 7, 41, 148, 224, 96, 5, 33, 132, 160, 1, 4, 32, 128, 129, 3, 6, 9, 20, 40, 96, 144, 192, 208, 212, 105, 104, 233
        b(kuan, gao).dot = 0
        b(kuan, gao).tag = 0
       
        ok = False
        Case Else
        End Select
     
        End If
    Next: Next
    Loop


End Sub
Public Sub QuQiao1() '去掉下卷的干扰,主要为提高识别2的准确性
    For kuan = 1 To 8: For gao = 2 To 10
        If b(kuan, gao).dot = 1 And b(kuan, gao).tag = 2 And b(kuan, gao - 1).tag = 70 Then
            b(kuan, gao).dot = 0: b(kuan, gao - 1).dot = 0
        End If
    Next: Next
    SuanTag
End Sub
Public Sub QuQiao2() '去掉上下翘起的干扰,主要为了识别3
    For kuan = 1 To 8: For gao = 1 To 18
        If b(kuan, gao).dot = 1 And b(kuan, gao).tag = 64 And b(kuan, gao + 1).tag = 130 Then
            b(kuan, gao).dot = 0: b(kuan, gao + 1).dot = 0
        End If
        If b(kuan, gao).dot = 1 And b(kuan, gao).tag = 2 And b(kuan, gao - 1).tag = 68 Then
            b(kuan, gao).dot = 0: b(kuan, gao - 1).dot = 0
        End If
    Next: Next
    SuanTag
End Sub
Public Function is0() As Boolean
    
End Function

Public Function is1() As Boolean
    Dim gao, kuan As Integer
    Dim k1, k2 As Integer
    k1 = 0: k2 = 0
    For gao = 0 To 19: For kuan = 0 To 9
        If b(kuan, gao).dot = 1 And b(kuan, gao).tag = 8 And gao > 8 Then k1 = gao
        If b(kuan, gao).dot = 1 And (b(kuan, gao).tag = 16 Or b(kuan, gao).tag = 18) And gao > 8 Then k2 = gao
     Next: Next
  
    If k1 > 0 And k2 > 0 And k1 = k2 Then
        is1 = True
    Else
        is1 = False
    End If
End Function


Public Function is2() As Boolean
    Dim gao, kuan As Integer
    Dim k1, k2 As Integer
    k1 = 0: k2 = 0
    For gao = 0 To 19: For kuan = 0 To 9
        If b(kuan, gao).dot = 1 And b(kuan, gao).tag = 16 And gao < 10 Then k1 = kuan
        If b(kuan, gao).dot = 1 And b(kuan, gao).tag = 8 And gao > 9 Then k2 = kuan
     Next: Next
  
    If k1 > 0 And k2 > 0 And k2 - k1 > 1 Then
        is2 = True
    Else
        is2 = False
    End If
End Function

Public Function is3() As Boolean
    Dim gao, kuan As Integer
    Dim k1 As Integer
    k1 = 0
    For gao = 0 To 19: For kuan = 0 To 9
        If b(kuan, gao).dot = 1 And b(kuan, gao).tag = 16 Then k1 = k1 + 1
     Next: Next
  
    If k1 > 2 Then
        is3 = True
    Else
        is3 = False
    End If
End Function

Public Function is4() As Boolean
    Dim gao, kuan As Integer
    Dim k1, k2 As Integer
    k1 = 0: k2 = 0
    For gao = 0 To 19: For kuan = 0 To 9
        If b(kuan, gao).dot = 1 And b(kuan, gao).tag = 74 Then k1 = kuan
        If b(kuan, gao).dot = 1 And b(kuan, gao).tag = 2 And gao > 9 Then k2 = kuan
     Next: Next
  
    If k1 > 0 And k2 > 0 And k1 = k2 Then
        is4 = True
    Else
        is4 = False
    End If
End Function

Public Function is5() As Boolean
    Dim gao, kuan As Integer
    Dim k1, k2 As Integer
    k1 = 0: k2 = 0
    For gao = 0 To 19: For kuan = 0 To 9
        If b(kuan, gao).dot = 1 And b(kuan, gao).tag = 8 And gao < 10 Then k1 = kuan
        If b(kuan, gao).dot = 1 And b(kuan, gao).tag = 16 And gao > 9 Then k2 = kuan
     Next: Next
  
    If k1 > 0 And k2 > 0 And k1 - k2 > 2 Then
        is5 = True
    Else
        is5 = False
    End If
End Function

Public Function is6() As Boolean
     Dim gao, kuan As Integer
    Dim k1, k2 As Integer
    k1 = 0: k2 = 0
    For gao = 0 To 19: For kuan = 0 To 9
        If b(kuan, gao).dot = 1 And b(kuan, gao).tag = 8 And gao < 10 Then k1 = kuan
        If b(kuan, gao).dot = 1 And b(kuan, gao).tag = 16 And gao > 9 Then k2 = kuan
     Next: Next
  
    If k1 > 3 And k2 = 0 Then
        is6 = True
    Else
        is6 = False
    End If
End Function

Public Function is7() As Boolean
    Dim gao, kuan As Integer
    Dim k1, k2 As Integer
    k1 = 0: k2 = 0
    For gao = 0 To 19: For kuan = 0 To 9
        If b(kuan, gao).dot = 1 And b(kuan, gao).tag = 16 And gao < 9 Then k1 = gao
        If b(kuan, gao).dot = 1 And b(kuan, gao).tag = 2 And gao > 5 Then k2 = gao
     Next: Next
  
    If k1 > 0 And k2 > 0 And k2 - k1 > 2 Then
        is7 = True
    Else
        is7 = False
    End If
End Function

Public Function is8() As Boolean '用横条来识别8,8中至少有长度为3的横条3个,
'5也有可能有,但是5在前面,已经识别。9也可能有,所以要把先识别9
    Dim gao, kuan As Integer
    Dim k1, k2 As Integer
    
    k1 = 0: k2 = 0
    
    For gao = 0 To 19: For kuan = 0 To 7
        If b(kuan, gao).dot = 1 And b(kuan + 1, gao).dot = 1 And b(kuan + 2, gao).dot = 1 Then
            k1 = k1 + 1: Exit For
        End If
    Next: Next
    
    If k1 > 2 Then
    is8 = True
    Else
    is8 = False
    End If
End Function

Public Function is9() As Boolean
     Dim gao, kuan As Integer
    Dim k1, k2 As Integer
    k1 = 0: k2 = 0
    For gao = 0 To 19: For kuan = 0 To 9
        If b(kuan, gao).dot = 1 And b(kuan, gao).tag = 74 Then k1 = kuan
        If b(kuan, gao).dot = 1 And b(kuan, gao).tag = 16 And gao > 9 Then k2 = kuan
     Next: Next
  
    If k1 > 0 And k2 > 0 And k1 - k2 > 2 Then
        is9 = True
    Else
        is9 = False
    End If
End Function



⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -