一个程序破解多个验证码之源码解读[附源码]

验证码多URL演示破解-安装版.rar
这个是制作的安装版。用于演示用。
验证码多URL演示破解-源码(DotNet2).rar
这个便是上面安装版的源码。
这两个附件首发于 博客园sban保证 博客园的版本没有病毒,请勿在其它地址下载。

这个小软件,是我06年初的时候写的,时隔两年了。那时急用,也没考虑什么面向对象,设计模式,垃圾处理等,暇疵甚多。今天把它拿出来,旨在抛砖引玉,与大家共同探讨一下C#的图文识别。

演示中的验证码的URL有的已不能用。大部分验证码图像都简单,破解尚且容易。倘若能够破解google或yahoo的验证码,那才是高手。

    这是当时写的演示软件说明,其中有些话有些过了。
◇ 本软件为验证码破解示例软件. 纯绿色,可完全卸载,不含任何插件、恶意代码。
◇ 支持不同色彩,不同大小,不同个数,不同亮度. 
◇ 支持不同格式,不同形式,不同方法. 
◇ 由于是针对大众验证码的演示软件,准确率以及破解速度远不及针对单一验证码的破解. 
◇ 关于设置URI等参数的功能,由于对于不同的验证码参数是不定的,需要调试得出,所以没有列出. ◇ 凡是小软件,应力求功能简单,效率与实用性才能提高.一个无所不能的软件也就是一个什么也不能的软件.

    
    好了,且看源码。

    源码中有一个Access数据库[suncode06.mdb]。


    这个表用于存储验证码的地址及破解配置信息。其中,maxLt与minLt是躁点取舍范围。nCode是验证码的个数。


    如图所示,这个表便存储了验证码的图片信息。

    这个小软件破解验证码的原理,是记忆性破解。读取验证码图片,分成一个个小图片,如果库中有记录,则返回它的验证码字符;如果不存在,则插入新记录。对于没有记忆过的验证码图片,它是识别不出来的。这个破解方法只可用于验证码字符范围固定的验证码。对于不固定范围的,如QQ的注册验证则不能破解。

    
    其中,所有破解代码都在Form1中,form2可以不看。
    在Form1中,首先init读取当前要破解的验证码的url及破解参数:

init(int id)

    当用户点击破解的时候,首先在 GetBitmapOriginal(ref Bitmap0[0])中取出原始图像:
GetBitmapOriginal

    取出原始图像后,在 GetXYOfEightPoint()中取出验证码图像中每一个小图像的临界点,这将在下一步的裁图中用到:
GetXYOfEightPoint

    这时候这个图像还是有躁点的,在裁图之前,必须把躁点去掉。这一步在 GetBlankWhiteBitmap()中完成:
GetBlankWhiteBitmap()

    
随后在 GetSngBmp ()中拆出一个个小图像。有了临界点,又去了躁点,拆图已是相当容易。
GetSngBmp()


    最后在GetCharRlt()计算验证码字符,如果库中没有,则提示输入并存储,并进入下一个验证码字符破解。

GetCharRlt()


    代码质量不高,坏味实足,各位多多包涵。

 

http://www.cnblogs.com/sban/archive/2007/12/06/985038.html
 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值