极验验证:传统验证码破解算法浅析
2016-08-01 14:38:39
极小验


哈喽小伙伴们~大家都知道,极验验证是首创了行为式的验证技术,以滑动的验证形式取代了传统验证码识别的验证形式。极验首席砖家也一直告诉大家,传统的验证码很容易被破解,形同虚设。但是大家肯定也有疑问,为什么说传统验证码容易被破解呢?那么今天极验破解砖家就带大家了解一下传统验证码的破解原理。

验证码的来源以及作用可以参考文章《起源:雅虎与黑客的较量》,极验砖家在这里就不啰唆了。

传统验证码有很多的处理方式,包括添加干扰线,添加文理背景,增加噪音,以及扭曲字符,粘连字符和使用空心字符。这些变换都是建立在图像识别技术的基础之上的,主要是增加破解的难度,当然显而易见的是,这样的变换同样也增加了人类的识别难度。说到这里,极验砖家忍不住吐槽了,简直是违背人性啊。挡住的都是普通用户,挡不了破解高手啊。

传统验证码破解算法有很多,不同的处理形式有相对应的破解算法。但是主要的破解步骤却是一样,主要包括验证码预处理,字符分割以及字符识别。极验砖家自诩潜心研习破解大法已有时日,下面极验破解砖家就简单的和大家介绍一下破解大法。

破解大法第一式:验证码图片预处理

预处理的主要方法包括:图像灰度化,阈值处理算法,迭代法和大律法。
去噪声的方法主要包括:基于空间域滤波,基于形态学去噪,基于连通域去噪。
这些破解招式这么学术,都是什么鬼,且听极验砖家娓娓道来。
破解大法第一式第一招:图像灰度化
灰度化是指在RGB模型中,如果R=G=B时,彩色则会被表示成一种灰度颜色,其中R=G=B的值叫灰度值。因此,灰度图像每个像素只需一个字节存放灰度值(又称强度值、亮度值),灰度范围为0-255。
灰度化方法:
分量法:
最大值法
平均值法
加权平均法

破解大法第一式第二招:阈值处理算法

将图像进行灰度化之后仍然会有噪声和干扰线等,那么可以设置一个阈值T,我们需要的目标的阈值可以设置成为大于T,而噪音,干扰的阈值小于T,就可以对目标和干扰进行区分了。极验破解砖家友情提示,阈值处理算法至关重要,具体破解算法,后续极验砖家会分享例子给大家。
主要的阈值处理方法:
迭代法
大律法
基于HSL色彩空间阈值处理法
破解大法第一式第三招:去除噪声
传统的验证码多会增加噪声,那么图片的预处理过程中还需要进行去噪,目前去噪也是相当的容易的了,主要的方法有:
基于空间域滤波
基于形态学去噪
基于连通域去噪
各种方法中,基于连通域的去噪方法会比较好一点,能够尽量保证字符信息的完整性。

破解大法第二式:验证码字符分割

大部分的识别算法都需要验证码字符的分割这一步骤。对破解大法研究颇深的极验砖家透露,只要能将验证码上的字符分割出来, 用现有的机器学习算法一般都可以取得比较好的识别效果。机器学习算法可以有效地解决字符识别问题, 所以有效分割对传统验证码的识别是很有必要的。目前还没有比较通用的字符分割算法。
当然,如果说能够应用深度学习的方法,进行大量的图像识别训练,将不再需要进行字符分割。一个大的神经网络可以自己学习认知一只猫,识别字母肯定已经不是难事了,但这并不普遍,目前也是像Google,百度,Facebook等公司取得了比较大的进展。
破解大法第二式第一招:非粘连字符分割
投影分割算法
直通域分割算法
破解大法第二式第二招:粘连字符分割算法
基于直方图的分割算法
基于最大连通域的分割算法
基于背景的细化分割算法

破解大法第三式:验证码字符识别

验证码字符的识别一般就是使用机器学习的算法,使用比较简单的卷积神经网络就可以进行比较有效的识别。卷积神经网络的介绍大家可以参考文章《浅析深度学习的模型与应用》,后面极验砖家会专门再和大家更加细致的探讨关于卷积神经网络的。

在图像识别技术发达的今天,传统的字符验证码已经无安全性可言,但是验证安全对于我们来说又是那么的重要。验证码肩负着我们每个企业保护用户账户安全,保护网站资源不被恶意薅取,保护网站接口不被盗用。我们都应该重视验证安全,既然传统验证码已经不安全,那么就赶紧使用极验的验证码吧。