破译动网验证码的简单方法 http://blog.csdn.net/wwqna/archive/2004/11/13/A1.aspx

原创 2005年02月27日 20:47:00
转载至 http://blog.csdn.net/wwqna/archive/2004/11/13/A1.aspx

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, "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那样,就没有用。

关于生成验证码的源码以及问题解决

在网上找了一个验证码的源代码,使用后出现如下问题:不管你输入正确与否,都会提示验证码错误。后来经过在qq群里和csdn发贴咨询,得知是ie浏览器缓存问题。在经过他人的指点后改正了错误。源代码如下:--...
  • zdyguilong
  • zdyguilong
  • 2006-11-23 17:06:00
  • 1034

CString工作原理和常见问题分析

关于Cstring 类版权所有&copy;Stevencao@benq.com2003-11-6看了很多人写的程序,包括我自己写的一些代码,发现很大的一部分bug是关于MFC类中的CString的错误...
  • laiyiling
  • laiyiling
  • 2004-10-05 14:28:00
  • 6444

BCB中封装VC控件CodeSense

Q: http://community.csdn.net/Expert/topic/3179/3179109.xml?temp=.7848627作者想要一个ocx的解决方案,我没有给出来。bcb在这个...
  • cker
  • cker
  • 2004-08-09 11:56:00
  • 3760

c#调用API 和c++dll的参数问题

假如我要调用一个api,其中一个参数是char **类型的,我在c#里该如何调用呢? _________________________________________________________...
  • ncucf
  • ncucf
  • 2004-08-03 11:00:00
  • 3905

获得汉字字符串拼音首字母

返回给定字符串的首字母Function IndexCode(ByVal IndexTxt As String) As String    Dim i As Integer    For i = 1 T...
  • iwebsms
  • iwebsms
  • 2004-09-28 19:40:00
  • 6398

系统文件目录显示程序JFolder.jsp

这个版本主要是兼容了Unix、Linux等操作系统,真正的不再受系统平台的限制。 在0.9测试版发布以后,很多朋友都给了我很好的意见和建议, 对于日常的应用,这个版本应该足够了 在下一个版本中,...
  • getchance
  • getchance
  • 2014-07-14 10:14:47
  • 2250

大数据处理的三大基石论文:GFS,MapReduce,BigTble中文译版

GFS: http://blog.csdn.net/xuleicsu/archive/2005/11/10/526386.aspx MapReduce: http://blog.csdn.net...
  • xxssyyyyssxx
  • xxssyyyyssxx
  • 2016-01-16 13:14:39
  • 473

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

Option ExplicitPrivate Declare Function GetPixel Lib "gdi32" (ByVal hdc As Long, ByVal X As Long, By...
  • wwqna
  • wwqna
  • 2004-11-13 16:29:00
  • 1713

函数参数的传递问题(指针的指针)

函数参数的传递问题(指针的指针)作者: first8612   发表时间: 2007-05-01  蒋冬冬修改  修改时间:2009-4-9 程序1:void myMalloc(char *s) //...
  • do2jiang
  • do2jiang
  • 2009-04-13 13:08:00
  • 4408

什么是 RESTful 设计(转自http://blog.csdn.net/goodxp/archive/2007/11/25/1901361.aspx & IBM Help)

 REST是一种网络软件架构设计风格。REST认为网络就是一个资源(Resource)的集合。一个用户(或者一个网络应用程序)可以通过 HTTP协议与某个网络应用程序交互——获取(GET)、更改(UP...
  • anyoneking
  • anyoneking
  • 2008-02-18 14:26:00
  • 1061
收藏助手
不良信息举报
您举报文章:破译动网验证码的简单方法 http://blog.csdn.net/wwqna/archive/2004/11/13/A1.aspx
举报原因:
原因补充:

(最多只允许输入30个字)