论文部分内容阅读
验证码,是用以区分计算机和人类的全自动图灵测试,是防止计算机程序对网站进行尝试暴力破解密码、大量注册账号等恶意攻击行为的一道安全墙。破解验证码的过程中,分析发现其存在的安全漏洞,促进设计出更安全的验证码,以更好地保障网络的安全。目前使用最广泛的验证码是基于文本的验证码机制,即在一张图片中存在若干个字符,用户需要输入与图片中相同的字符才可以通过测试。为了增加破解的难度,一些网站会采用变形算法对字符进行扭曲变形,甚至添加噪线或复杂背景来增加计算机识别的难度,一些验证码机制会采用粘连的方式将字符间的距离减小以抵御被分割。因为文本验证码生成简单、方便且便于用户识别,许多主流网站会设计自己的文本验证码以抵御恶意的网络攻击。本文从一些主流网站中选择了5种文本验证码机制进行破解。它们的验证码风格各不相同。百度的验证码中,字符或分离或粘连,字符或空心或实心,有些字符还带有阴影噪线,字符的字体也比较多样;维基百科的验证码中,各个字符之间大部分是分离的,字符的变形效果则比较单一;微软的验证码中,若干字符被整体旋转,字符或实心或空心,且有的字符中间呈现断裂的效果;新浪微博的验证码字符皆为实心,但是扭曲粘连比较严重;苹果验证码的背景由多条噪线组成,字符为空心。以往的破解验证码的流程中,大部分采用的是预处理、分割和识别三个步骤,而在识别这个步骤中,一般采用的是机器学习的方法,而这样的方法对分割的要求较高,所以针对粘连的验证码,一般分割的较差,进而导致识别的效果较差。本文采用的也是这三个步骤,但在识别部分使用的是卷积神经网络,其抗噪能力较强,而且不需要像机器学习那样人为定义特征,识别效果较好。首先,对验证码图片进行预处理,分离前景和背景,并将图片二值化;再将粘连字符进行平均分割,对不粘连的字符使用颜色填充方法分隔开;针对微软和苹果的验证码,因为字符个数的不确定,会使用卷积神经网络对字符个数进行预测,再根据预测结果进行分割。完成分割之后,对分割好的每个字符小图片使用卷积神经网络进行识别,最后的验证码结果即为这些字符的结果序列。本文的方法成功破解了百度、维基百科、微软、新浪微博和苹果的验证码,分别达到63.9%、87.1%、63.9%、50.9%和54.4%的成功率。其中,在预测字符个数上,微软的成功率为87.8%,苹果的成功率为95.3%。破解的成功率皆高于50%,显示出卷积神经网络的性能较优,而本文使用的方法对于破解文本验证码来说是一大利器,同时,本文也对文本验证码的特征和识别技术进行了分析,并针对文本验证码提出了4点建议。