飘易博客(作者:Flymorn)
订阅《飘易博客》RSS,第一时间查看最新文章!
飘易首页 | 留言本 | 关于我 | 订阅Feed

使用暴力穷举法破解验证码?NO!

Author:飘易 Source:飘易
Categories:电脑技术 PostTime:2009-3-22 13:48:23
正 文:
    目前,WEB网站上大量使用了验证码/附加码技术来防止机器的自动提交;而破解验证码的方法现在一般都是OCR破解(即光学字符识别),OCR破解过程一般是这样的:先去噪 -》二值化-》细化-》特征提取-》分类器设计 -》建库;至于具体的OCR流程不在本文讨论的内容中。

    飘易今天要谈的是曾经流行过一段时间的暴力穷举破解算法。为什么现在过时不可行了呢!

    我们来看,现在比较流行的英文字母和数字随机组合的验证码,如下图:

使用暴力穷举法破解验证码?NO!

    这样的四位字符的图片验证码,如果要暴力破解,需要多长时间呢?

    和飘易一起计算下吧:

    去除数字 0 和字母 O (因为这两字符不好辨认),剩下34个字符,即1-9,A-N,P-Z;

我们某次猜中的概率为 1/34^4 ,
猜不中的概率为 1-1/34^4 = 0.99999925 ,
100000次(十万)内猜不中的概率为 0.99999925^100000 = 0.9279 ,
要想达到0.95的猜中概率,需要大约400万次!

    假设每次耗时0.001秒,理论上猜中一次验证码所需要的时间是400万*0.001=4000秒,合 66.6分钟,一个多小时!可以想象,破解一个验证码需要一个小时的时间,对于任何自动化的程序都失去了意义了。

    而且我们还没有考虑服务器的响应状态,一般的服务器根本无法处理每分钟 6万次的请求吧。

    所以,暴力破解验证码 == NO !但为什么,这样的数字加字母的验证码还是时不时被某些暴力营销软件骚扰呢?因为它们基本采用了OCR破解。至于如何使用OCR,本文不做讨论。有兴趣的可以GOOGLE一下。

    关于如何防范OCR破解,大家可以学google,csdn等,他们的验证码的文字都是扭曲变形的,位置也是随机的;但飘易真正看好的是随机问题验证码,因为机器再怎么牛逼,它不具备人的逻辑思维能力。比如你问机器:“福州的简称是什么?一个字”,“重庆大学地理位置属于哪个区?三个字”……

    正是基于目前的自动化程序绝大多数采用OCR破解,所以飘易的另外一篇文章《ASP生成Bmp图片验证码:数字相加求和》才有一些意义,但这种方法也有局限,如果破解者采用穷举法,很快就可以破解。所以,比较好的方法是同时采用两种验证码:一、采用数字+字母输入性验证码;二、采用需要人的逻辑思维能力回答的问题验证。这样,基本可以杜绝99%以上的恶意机器人的灌贴。

作者:飘易
来源:飘易
版权所有。转载时必须以链接形式注明作者和原始出处及本声明。
上一篇:09年4月1号:愚人节
下一篇:Google PR开始局部更新…
5条评论 “使用暴力穷举法破解验证码?NO!”
1 冰冰
2009-3-22 14:02:10
构思可以。。
2 李彦宏
2009-3-22 19:19:20
是不错的啊。。。。。。。。。。。。。
2009-3-27 13:30:44
期待你来开发!!!!
4 wakan
2009-5-12 9:44:25
但是你这个问题式验证不也得先建个问题库? 不然计算机自己不会提这种问题吧
5 44
2010-3-11 22:57:34
关健是第一次验证码不对,验证码就换了
发表评论
名称(*必填)
邮件(选填)
网站(选填)

记住我,下次回复时不用重新输入个人信息
© 2007-2010 飘易博客 Www.Piaoyi.Org 原创文章版权由飘易所有 渝ICP备07006361号