现在的位置: 首页 > 综合 > 正文

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

2012年02月08日 ⁄ 综合 ⁄ 共 4612字 ⁄ 字号 评论关闭
验证码多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

抱歉!评论已关闭.