青青子衿, 悠悠我心, 但为君故, 沉吟至今
« 为什么广东人不看央视一个英国人眼中的“西安事变”真相 »

破解图片验证码限制的一般思路

  相信大家都有在论坛灌水的经历吧?但是如果你连续发表统一内容的东西在论坛中,不久论坛的整个板块就全是你发表的信息了,其他信息全被挤在了后面。假设你发表的信息够多,版主都删不完时,那么这个论坛基本就报废了!其他的商业论坛也意识到了防止恶意灌水的重要性,纷纷使用了一些防止恶意灌水的措施,有发贴间隔时间的限制、同一IP地址的发贴数限制、内容不能重复等,但是这些都不是今天的重点,由于论坛使用的是一个公用发贴表单,需要突破唯一的难点是验证码。(为了防止某个黑客对某一个特定注册用户用特定程序暴力破解方式进行不断的登陆尝试或是防止不断提交某网络信息而采用的一种网络通行方式。随机生成字符信息放入图片中,防止计算机直接识别。比如招商银行的网上个人银行,腾讯的QQ社区等等)

  验证码分为如下几类:数字型、字符型、符号型、综合型。

  一般验证码属于数字型的,不过有的图片中生成了不少彩色和黑白的噪音点(指验证图片上的斑点)。那么我们应该怎么去识别呢?传统的验证码识别方式很简单,由于数字的位置是固定的,所以我们只需要提取每一幅数字的图片(没有噪音点的)然后把每一个特殊数字独有的象素位置记录下来,然后在网络上提取需要破解的特征码,祛除噪音点,对其位置和记录位置进行比对,那就是么就能确定相应的数字了。

  总结一下传统的就是:

  1.先分析验证码,前景颜色是否不定

  2.然后把验证码的宽度/验证码文字个数,比如一验证码下载后宽度为60,有4个数字,那么就60/4=15,然后保存每个字,如果只有数字保存0-9数字到位图文件,如果英文那更麻烦点,0-9,A-Z都要保存到位图,位图的前景色都不变,保持一种颜色,背景随便你改不改

  3.如果前景要变则将文字统一为同种颜色,每个数字0-9的点阵都有个公共点,取该公共点颜色然后把前景全部统一成一种颜色,比如白色{255,255,255},位图的结构是BGR,而不是RGB

  4.然后进行比较,如果验证码的一点为白色,第2步保存的位图同一点也是白色,那么频率增加1

  5.最后频率最高的就是验证码了!

  接下来要做的就是做个post程序了,这个太简单了,代码你就自己写吧!不过也要做到如下细节:做成多线程程序进行发贴,不然程序会失去响应的。最好是可以导入大量的代理IP的,然后就是发贴的内容最后加上几个随机字符,这样可以防止重复贴的过滤!最重要的,只是做测试,发贴量不要太多、不要乱发广告贴!

  其实上述方法已经不是只是对验证码进行识别了,完全可以用到现实生活中去,比如说手写体识别、车牌识别等等,但是现实生活中我们还要进行更多的加工,比如说圆形检测,多边形检测等等。所以说从网络安全技术中,也有很多东西能造福社会,还等待我们继续创造!



  除非注明,月光博客文章均为原创,转载请以链接形式标明本文地址

  本文地址:http://www.williamlong.info/archives/347.html
  • 文章排行:
  • 2.cao2xi
  • 没明白,月光什么都会,真强
  • 2008/11/14 11:06:15   支持(9)反对(5) 回复
  • 3.softwind
  • 请问怎么用java程序获取验证码图片? 非常谢谢
  • 2008/1/24 16:30:00   支持(9)反对(6) 回复
  • 4.撒
  • 很好很好很好很好很好很好很好很好很好很好很好很好很好很好很好很好很好很好很好很好很好很好很好很好很好很好很好很好
  • 2012/1/17 13:44:52   支持(7)反对(4) 回复
  • 5.三代分速度
  • ft 只说了最简单的那种形式,现在哪有这么简单的
    背景颜色加了怎么办? 字母数字混合怎么办? 符号居然还是有时斜有时正怎么办 ?
    这些问题的解决已经不能简单的用原来的方式解决了
  • 2006/8/25 11:27:56   支持(9)反对(7) 回复
  • 6.piaoyi
  • 像 imgtel.aspx?tel=D6C01902634DC5AC9B074E2C40CF1A46 这样生成的图片,如何读取图片的内容呢 ?
  • 2008/1/12 11:31:30   支持(6)反对(4) 回复
  • 7.hao


  • 水分子脚本论坛 于 2009-10-25 13:17:52 回复
    这些都是比较基础的验证码破解
    如果有需要可以来我的水分子脚本交流或定做验证码识别和一些自动
  • 2008/12/29 0:15:33   支持(8)反对(6) 回复
  • 9.撒
  • 好很好很好很好很好很好很好很好很好很好很好很好很好很好很好很好很好很好很好很好很好很好很好很好很好很好很好很好
  • 2012/1/17 13:49:23   支持(7)反对(5) 回复
  • 10.Piggy
  • 呵呵,说得倒好听,你这么做能识别出几个验证码来?
  • 2006/8/12 10:37:38   支持(8)反对(8) 回复
  • 11.smilefish
  • 楼上的,如果这么牛根本不用卖这么低的价钱,汉王,紫光都可以倒闭了
  • 2007/1/20 10:16:59   支持(4)反对(4) 回复
  • 13.大
  • 废话,谁不知道是这么做,你以为图像识别这么容易.此文 无意义.
  • 2007/6/20 18:10:01   支持(6)反对(8) 回复
  • 14.太平洋4203
  • 呵呵,简单的破解验证码我搞过,用的就是上面说的方法,但是用这种方法用在QQ的汉字验证码就不好搞了啊,数据量太大了.
  • 2007/8/17 17:39:01   支持(6)反对(8) 回复
  • 17.122133224
  • 对对对对对对对对对对对对对对对对对对对对对对对对对对对对对对
  • 2010/5/3 18:58:43   支持(6)反对(8) 回复
  • 18.方式地方
  • 对对对对对对对对对对对对对对对对对对对对对对对对对对对对对对
  • 2010/6/30 0:58:09   支持(6)反对(8) 回复
  • 20.晓风
  • 听起来不错,不过代码写起来肯定比较困难
  • 2006/6/5 14:03:40   支持(11)反对(22) 回复

发表评论:

 请勿发送垃圾信息、广告、推广信息或链接,这样的信息将会被直接删除。

订阅博客

  • 订阅我的博客:订阅我的博客
  • 关注新浪微博:关注新浪微博
  • 关注腾讯微博:关注腾讯微博
  • 关注认证空间:关注QQ空间
  • 通过电子邮件订阅
  • 通过QQ邮件订阅

站内搜索

热文排行


月度排行

本站采用创作共用版权协议, 要求署名、非商业用途和相同方式共享. 转载本站内容必须也遵循“署名-非商业用途-相同方式共享”的创作共用协议.
This site is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 3.0 License.