Captcha Decoded

时间:2010-05-21 08:19:38

标签: php javascript security

我已经看到一些验证码正在使用javascript,php等进行解码。他们是如何做到的?

例如,非常受欢迎的 megaupload 网站的captcha has also been decoded

5 个答案:

答案 0 :(得分:7)

请参阅:

<强> OCR and Neural Nets in JavaScript

此处 John Resig JQuery javascript库的创建者)解释了它是如何完成的。

答案 1 :(得分:6)

我是图像处理专家和CAPTCHA解码器,之前我做过很多CAPTCHA解决方案。

好的,让我们开始CAPTCHA解决步骤!

解密CAPTCHA有三个主要步骤:

1-删除背景

从任何噪音中清除CAPTCHA(使用任何图像处理方法)。

注意事项验证码解码器:如果你想拥有一个好的验证码,你应该添加更强的噪音。使用具有相似颜色字符的随机噪声背景。

2-分裂字符

当它们分开时很容易一步,当它们不相同时很难。

*验证验证码解码战斗机:如果你想拥有一个好的验证码,不要将角色分开!使它们重叠,不要为字符使用不同的颜色,解码器可以很容易地分割字符! (大多数开发人员都没有意识到这一点,并认为最好使用彩色的CAPTCHA!),最好的是制作一个黑色的重叠字符串。对于经验丰富的CAPTCHA解码器,解码彩色CAPTCHA不是问题!它很漂亮,没用! :)使用随机曲线连接所有字符相互连接。 *

3-将单独的图像转换为字符

分离后,我们有一个字符集,(我们现在没有任何字符串,只有图像和像素),我们应该将字符图像转换为字符串,但是如何?! 有几种方法,如果它们没有旋转,并且具有固定的字体和大小(例如freeglobes CAPTCHA),你可以定义一个模式集,你的程序应该循环抛出模式以找到每个图像的最佳匹配,如果字符是非常不同的,需要一个大型模式,你应该使用“神经网络”来识别角色。 CAPTCHA解析的神经网络将采用一个角色,我们会告诉网络这个角色是什么,例如,我们会给它一个“A”的图像,我们打电话给NN:它是“A”! ,然后它将“学习”这个角色,并将其学习保存到数据库中,此过程称为“TRAINING”。因此,当我们再次向受过训练的网络询问新角色时,它将从我们的学习数据库中返回最佳匹配。 通常,解码器专家使用CAPTCHA本身来训练神经网络。小心! 使用适当的培训数据可能会影响结果。

注意事项验证码解码器:如果你想拥有一个好的验证码,使用解码器无法识别字符的任何方法,即使使用神经网络也是如此。随机变形字符,使用多种字体而不是一种字体,也可以旋转字符等

最后,我们将所有单个字符连接成一个并将其作为结果返回。

不幸的是,没有固定的算法来解决任何CAPTCHA,这意味着,新的CAPTCHA需要新的分析和培训。您无法使CAPTCHA解码器解码所有CAPTCHA。

在开始之前你应该知道什么:

1-图像处理基础

2-对神经网络的一般理解

3-简单的图像处理功能(使用任何语言)

对于PHP:

imagecreate()

imagecreatetruecolor()

imagecolorat()

imagecolorsforindex()

imagesetpixel()
.
.
.

对于.NET:

Bitmap type,
getPixel()
setPixel()
.
.
.

对于JavaScript和HTML5:

You should know the Canvas very well.

最后: 验证验证码解码战斗机的注意事项:如果您想知道有人如何解码验证码并希望防止其解码,您应该首先自己做一个验证解码器,或者雇用某人知道弱点和攻击算法!

希望能帮到你! ;)

答案 2 :(得分:1)

查看PWNtcha

您还可以阅读Breaking a Visual CAPTCHA

答案 3 :(得分:1)

我参与了一个项目,在8到9年前为第三方售票员在TicketMaster网站上规避Captcha图像。当一个活动开始销售时,如音乐会,我们的机器网络将使用多个信用卡和邮寄地址来购买前10行中可能的任何座位。

TM不是每次都生成新的验证码,而是拥有可以重复使用的有限图像池。我们为每个图像创建一个独特的数字指纹(校验和),然后使用一些成像工具(LEADTOOLS.com)(删除多余的元素,增强对比度等)进行攻击,然后使用OCR工具。它出乎意料地有效。

我们能够以编程方式破解大量数据,并且存储了我们无法破解的用于人工处理的数据。有时他们会拥有20K图像池,所以一开始我们可能会自动获得60-70%的图像,但最终我们会获得100%的成功,因为我们可以根据查找来识别人类处理(离线)的图像在我们的数据库中的哈希。 (也就是说,我们可以根据我们创建的哈希检查一个验证码图像,如果我们已经有了解决方案,我们可以立即提交答案。)

偶尔,他们会用新的套装刷新并替换他们的验证码图像池,但同样,我们需要花一点时间才能恢复到100%的速率。这个特殊系统的致命缺陷是它们回收图像,而不是每次都以编程方式生成新的验证码图像。

但事实是,如果破解资产的财务激励足够高,那么建立一个分散的平台并不需要太多工作,因为低工资的非熟练工人可以坐在那里赚钱,以便整天破解它们。 / p>

印度内部的CAPTCHA解决经济问题 http://www.zdnet.com/blog/security/inside-indias-captcha-solving-economy/1835

答案 4 :(得分:-1)

提供识别服务。如2captcha。这是解决php https://github.com/jumper423/decaptcha/

的工具