飘云阁

 找回密码
 加入我们

QQ登录

只需一步,快速开始

查看: 4351|回复: 6

破译动网验证码的简单方法(VB)

[复制链接]
  • TA的每日心情
    开心
    2024-12-1 11:04
  • 签到天数: 12 天

    [LV.3]偶尔看看II

    发表于 2005-3-4 10:04:50 | 显示全部楼层 |阅读模式
    Option Explicit
    Private Declare Function GetPixel Lib "gdi32" (ByVal hdc As Long, ByVal X As Long, ByVal y As Long) As Long
    Private Const CF_BITMAP = 2
    Private Declare Function URLDownloadToFile Lib "urlmon" Alias "URLDownloadToFileA" (ByVal pCaller As Long, ByVal szURL As String, ByVal szFileName As String, ByVal dwReserved As Long, ByVal lpfnCB As Long) As Long
    Dim phobit(0 To 9, 0 To 9) As Integer       '标识位图的像素
    Private Sub cmdGetChar_Click()
    Dim X As Long
    Dim i As Integer
    Dim j As Integer
    Dim k As Integer
    Dim mintCurPos As Integer
    With Picture2
        For k = 0 To 3          '表示有四个字符,
            For i = 0 To 9
                mintCurPos = InStr(txtPhoBit.Text, "数字" & i & ":") + 4  '数字字符的当前位置
                For j = 0 To 9
                    X = GetPixel(.hdc, k * 10, j)        '获得它的像素值
                    If (X = 15658734 And Mid(txtPhoBit.Text, mintCurPos + j, 1) = "0") _
                       Or (X <> 15658734 And Mid(txtPhoBit.Text, mintCurPos + j, 1) = "1") Then  '判断像素是否相同。
                    Else    '不同则跳出
                        Exit For
                    End If
                Next j
                If j = 10 Then  '在此就可以判断当前字符为 i
                    txtPhoChar.Text = txtPhoChar.Text & i
                    Exit For
                End If
            Next i
        Next k
    End With
    End Sub


    Private Sub Form_Load()
        txtPhoBit.Text = "数字0:0111111110数字1:0100000001数字2:0100000011数字3:0100000010数字4:0000011000数字5:1111100010数字6:0011111110数字7:1100000000数字8:0111011110数字9:0111100000"
         If Not URLDownloadToFile(0, "_getcode.asp">http://bbs.china95.net/DV_getcode.asp", App.Path & "\pho.bmp", 0, 0) Then
            Picture2.Picture = LoadPicture(App.Path & "\pho.bmp")
         Else
            MsgBox "保存图片出错!"
         End If
         
    End Sub


    我分析了一下你的那张图片,发现在空的地方全是RGB(238,238,238)也就是15658734.
    并且它的数字排列的非常的工整,也就是说在任何时候出现的相同数字它的像素图都是一样的。并且每数字都占十个像素。到这里的时假我打算比对每它们所有的相素的,也就是每一个数字要比对10*10次。我总觉得这样浪费时间,后来我也发现只要比对每个数字的第一列字即可得到你想要的数字。
    所以开始就将10个数字保存在txtphobit中了,如果像素值为15658734,那么就它的字符设为"0",不等于15658734就设为"1"

    这个方法只针对这个图片有效(准确率100%),像chinaren那样,就没有用。
    PYG19周年生日快乐!
  • TA的每日心情
    无聊
    2017-6-16 20:25
  • 签到天数: 11 天

    [LV.3]偶尔看看II

    发表于 2006-3-2 16:54:29 | 显示全部楼层
    那要如何破软件的网络验证,从哪里下手..验证部份已经找到?
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2006-3-3 19:01:09 | 显示全部楼层
    收藏 好好研究下
    PYG19周年生日快乐!
  • TA的每日心情
    慵懒
    2016-3-4 09:43
  • 签到天数: 2 天

    [LV.1]初来乍到

    发表于 2006-3-3 19:19:27 | 显示全部楼层
    还是很不错啊!
    顶一下表示支持!
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2006-3-4 15:15:56 | 显示全部楼层
    哎  感觉好深奥   没有基础   就是看不懂  郁闷
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2006-3-4 22:19:13 | 显示全部楼层
    受益菲浅啊,多谢楼主
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2006-3-9 01:04:30 | 显示全部楼层
    呵呵,收集
    PYG19周年生日快乐!
    您需要登录后才可以回帖 登录 | 加入我们

    本版积分规则

    快速回复 返回顶部 返回列表