php实现验证码的识别

上传人:公**** 文档编号:494842372 上传时间:2022-09-05 格式:DOCX 页数:6 大小:20.78KB
返回 下载 相关 举报
php实现验证码的识别_第1页
第1页 / 共6页
php实现验证码的识别_第2页
第2页 / 共6页
php实现验证码的识别_第3页
第3页 / 共6页
php实现验证码的识别_第4页
第4页 / 共6页
php实现验证码的识别_第5页
第5页 / 共6页
点击查看更多>>
资源描述

《php实现验证码的识别》由会员分享,可在线阅读,更多相关《php实现验证码的识别(6页珍藏版)》请在金锄头文库上搜索。

1、近期研究一些突破验证码方面的知识,记录下来。一方面算是对这几天学习知识的总结帮助 自己理解;另一方面希望对研究这方面的技术同学有所帮助;另外也希望引起网站管理者的 注意,在提供验证码时多些考虑进去。由于刚刚接触这方面的知识,理解比较浅显,有错误 再所难免,欢迎拍砖。验证码的作用:有效防止某个黑客对某一个特定注册用户用特定程序暴力破解方式进行不 断的登陆尝试。其实现代的验证码一般是防止机器批量注册的,防止机器批量发帖回复。目 前,不少网站为了防止用户利用机器人自动注册、登录、灌水,都采用了验证码技术。 所谓验证码,就是将一串随机产生的数字或符号,生成一幅图片,图片里加上一些干扰象素 (防止OCR

2、),由用户肉眼识别其中的验证码信息,输入表单提交网站验证,验证成功后 才能使用某项功能。我们最常见的验证码1四位数字,随机的一数字字符串,最原始的验证码,验证作用几乎为零。2, 随机数字图片验证码。图片上的字符比较中规中矩,有的可能加入一些随机干扰素,还 有一些是随机字符颜色,验证作用比上一个好。没有基本图形图像学知识的人,不可破!3, 各种图片格式的随机数字+随机大写英文字母+随机干扰像素+随机位置。4, 汉字是注册目前最新的验证码,随机生成,打起来更难了影响用户体验,所以,一般应 用的比较少。简单起见,我们这次说明的主要对象是第2种类型的,我们先看几种网上比较常见的这种 验证码的图片.(不

3、知道怎么搞的,CSDN又不能上传图片了,我把这四种图片放到下载包中了,可以下载下来对比察看)这四种样式,基本上能代表2中所提到的验证码类型,初步看起来第一个图片最容易破解, 第二个次之,第三个更难,第四个最难。真实情况那?其实这三种图片破解难度相同。第一个图片,最容易,图片背景和数字都使用相同的颜色,字符规整,字符位置统一。第二个图片,看似不容易,其实仔细研究会发现其规则,背景色和干扰素无论怎么变化,验 证字符字符规整,颜色相同,所以排除干扰素非常容易,只要是非字符色素全部排除即可。 第三个图片,看似更复杂,处理上面提到背景色和干扰素一直变化外,验证字符的颜色也在 变化,并且各个字符的颜色也各

4、不相同。看似无法突破这个验证码,本篇文章,就一这种类 型验证码为例说明,第四个图片,同学们自己搞。第四个图片,除了第三个图片上提到的特征外,又在文字上加了两条直线干扰率,看似困难 其实,很容易去掉。验证码识别一般分为以下几个步骤:1. 取出字模2. 二值化3. 计算特征4. 对照样本1:取出字模识别验证码,毕竟不是专业的OCR识别,并且,由于各个网站的验证码各不相同,所以, 最常见的方法就是就是建立这个验证码的特征码库。去字模时,我们需要多下载几张图片, 使这些图片中,包括所有的字符,我们这里的字母只有图片,所以,只要收集到包括)-9的 图片即可。2:二值化二值化就是把图片上的验证数字上每个象

5、素用一种数字表示1,其他部分用0表示。这样就 可以计算出每个数字字模,记录下这些字模来,当作key即可。3:计算特征把要识别的图片,进行二值化,得到图片特征。4:对照样本把步骤3种的图片特征码和验证码的字模进行对比,得到验证图片上的数字。使用目前这种方法,对验证码的识别基本上可以做到100%。通过以上步骤,您可能说了,并没有发现如何取出干扰素啊!其实取出干扰素的方法很简单, 干扰素的一个重要特征是,不能影响验证码的显示效果,所以制作干扰素时它的RGB可能 低于或者高于某个特定值,比如我给的例子中的图片,干扰素的RGB各项值是不会超过125 的,所以,这样我们就很容易去掉干扰素了。php代码vi

6、ew plain1.?php2.define(WORD WIDTH,9);3.define(WORD HIGHT,13);4.define(OFFSET X,7);5.define(OFFSET Y,3);6.define(WORD SPACING,4);7.class valite8. 9.10.public function setImage($Image)11.$this-ImagePath = $Image;13.14.15.16.17.18.19.20.21.22.23.24.25.26.27.28.29.30.31.32.33.34.35.36.37.38.39.40.41.42.

7、43.44.45.46.47.48.49.50.51.52.53.54.55.56.public function getData()return $data;public function getResult()return $DataArray;public function getHec()$res = imagecreatefromjpeg($this-ImagePath);$size = getimagesize($this-ImagePath);$data = array();for($i=0; $i $size1; +$i)for($j=0; $j $size 0; +$j)$r

8、gb = imagecolorat($res,$j,$i);$rgbarray = imagecolorsforindex($res, $rgb);if($rgbarrayred 125 | $rgbarraygreen125 | $rgbarrayblue 125)$data$i$j=1;else$data$i$j=0;$this-DataArray = $data;$this-ImageSize = $size;public function run()$result=;/查找4个数字$data = array(,);for($i=0;$i4;+$i)$x = ($i*(WORD_WIDT

9、H+WORD_SPACING)+OFFSET_X;$y = OFFSET_Y;for($h = $y; $h (OFFSET_Y+WORD_HIGHT); + $h)for($w = $x; $w DataArray$h$w;/进行关键字匹配foreach($data as $numKey = $numString)$max=0.0;$num = 0;foreach($this-Keys as $key = $value)$percent=0.0;similar_text($value, $numString,$percent);if(intval($percent) $max)$max =

10、$percent;$num = $key;if (intval($percent) 95)break;$result.=$num;$this-data = $result;/查找最佳匹配数字return $result;public function Draw()for($i=0; $i$this-ImageSize1; +$i)for($j=0; $jKeys = array(0=00011100001111111001100011011000001111000001111000001111000001111000001111000001111000001101100011001111111

11、0000111000,. 1=000111000011111000011111000000011000000011000000011000000011000000011000000011000000011000000011000011111111011111111,.2=011111000111111100100000110000000111000000110000001100000011000000110000001100000011000000110000000011111110111111110,.3=0111110001111111101000001100000001100000011

12、00011111000011111100000001110000000111000000110100001110111111100011111000,.4=000001100000011100000011100000111100001101100001101100011001100011001100111111111111111111000001100000001100000001100,.5= . 11111111011111111011000000011000000011000000011111000011111110000000111000000011100000011010000111

13、0111111100011111000,.6=000111100001111110011000010011000000110000000110111100111111110111000111110000011110000011011000111011111110000111100,.7=011111111011111111000000011000000010000000110000001100000001000000011000000010000000110000000110000001100000001100000,.8=001111100011111110011000110011000110011101110001111100001111100011101110110000011110000011111000111011111110001111100,.9=0011110000111111101110001111100000111100000111110001110);p

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 学术论文 > 其它学术论文

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号