欢迎来到天天文库
浏览记录
ID:27690133
大小:495.35 KB
页数:27页
时间:2018-12-03
《web验证码设计与破解》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、从12306网站新验证码看Web验证码设计与破解2015年3月16日,铁路官方购票网站12306又出新招,在登录界面推出了全新的验证方式,用户在填写好登录名和密码之后,还要准确的选取图片验证码才能登陆成功。据悉,12306验证码改版后,目前所有抢票工具都已经无法登录。多么惨绝人寰的消息,小编相信各大互联网公司都在潜心钻研新的抢票助手,来破解全新的验证码模式。下面小编带大家看看各种验证码的设计原理及其破解方法。首先是纯文本式验证码,是比较原始的一种。•1+1=9•本论坛臟名是?•今天是星期几?•复杂点的数学运算这种验证码
2、并不符合验证码的定义,因为只有自动生成的问题才能用做验证码,这种文字验证码都是从题库里选择出来的,数量有限。破解方式也很简单,多刷新几次,建立题库和对应的答案,用正则从网页里抓取问题,寻找匹配的答案后破解。也有些用随机生成的数学公式,比如随机数[+-*/]随机运算符随机数=?,小学生水平的程序员也可以搞定这种验证码也不是一无是处,对于很多见到表单就来一发的spambot来说,实在没必要单独为了一个网站下那么大功夫。对于铁Y心要在你的网站大量灌水的人,这种验证码和没有一样。87431337姆537lt-2vf7.拥綱第二
3、个是目前比较主流的图片验证码:qruea<¥021-65416991^2293这类图片验证码的原理就是通过字符的粘连增加及其识别的难度,而上边这种一般用于不大的网站。这类验证码处理方式:图片预处理怎么去掉背景干扰呢?可以注意到每个验证码数字或字母都是同一颜色,所以把验证码平均分成5份计算每个区域的颜色分布,除了0色之外,颜色值最多的就是验证码的颜色,因此很容易将背景去掉代码:1.publicstaticBufferedlmageremoveBackgroud(StringpicFile)2.throwsExceptio
4、n{3•Bufferedlmageimg=Image10•read(newFile(picFile));4.img=img.getSubimage(1,1,img.getWidth()-2,img.getHeight()-2);6•intheight=img•getHeight();7.doublesubWidth=(double)width/5.0;8.for(inti=0;i<5;i++){9.Map5、intx=(int)(1+i*subWidth);x<(i+1)*subWidth11.&&x6、,19.}20.}21.}22.intmax=0;23.intcolorMax=0;24.for(Integercolor:map.keySet())t25.if(max7、(x,y)!=colorMax){34.img.setRGB(x,y,Color.WHITE.getRGB());36.img.setRGB(x,y,Color•BLACK•getRGB()37,394041.returnimg得到与下图接着是对图片进行纵⑸扫描进行切割■SSS再对每一部分横向扣描IS&S然后进行训练把分割的结果对应存成5jpg:9jpg,3jpg,ajpg就可以了KO-ll.jpg蛇3-9.jpgS4-28.jpgS6-61.jpg7-73.jpg1-0jpg蛇3-12.jpgS4-32.jpgS6-8、73.jpg7-79.jpgl-4.jpg3-16.jpgS4-66.jpg:S6-75.jpg8-17.jpg最后因为固定大小,识别跟验证码识别-1里面一样,像素比较就可以了。源码:1.publicclassImagePreProcess2{2.2.privatestaticMap
5、intx=(int)(1+i*subWidth);x<(i+1)*subWidth11.&&x6、,19.}20.}21.}22.intmax=0;23.intcolorMax=0;24.for(Integercolor:map.keySet())t25.if(max7、(x,y)!=colorMax){34.img.setRGB(x,y,Color.WHITE.getRGB());36.img.setRGB(x,y,Color•BLACK•getRGB()37,394041.returnimg得到与下图接着是对图片进行纵⑸扫描进行切割■SSS再对每一部分横向扣描IS&S然后进行训练把分割的结果对应存成5jpg:9jpg,3jpg,ajpg就可以了KO-ll.jpg蛇3-9.jpgS4-28.jpgS6-61.jpg7-73.jpg1-0jpg蛇3-12.jpgS4-32.jpgS6-8、73.jpg7-79.jpgl-4.jpg3-16.jpgS4-66.jpg:S6-75.jpg8-17.jpg最后因为固定大小,识别跟验证码识别-1里面一样,像素比较就可以了。源码:1.publicclassImagePreProcess2{2.2.privatestaticMap
6、,19.}20.}21.}22.intmax=0;23.intcolorMax=0;24.for(Integercolor:map.keySet())t25.if(max7、(x,y)!=colorMax){34.img.setRGB(x,y,Color.WHITE.getRGB());36.img.setRGB(x,y,Color•BLACK•getRGB()37,394041.returnimg得到与下图接着是对图片进行纵⑸扫描进行切割■SSS再对每一部分横向扣描IS&S然后进行训练把分割的结果对应存成5jpg:9jpg,3jpg,ajpg就可以了KO-ll.jpg蛇3-9.jpgS4-28.jpgS6-61.jpg7-73.jpg1-0jpg蛇3-12.jpgS4-32.jpgS6-8、73.jpg7-79.jpgl-4.jpg3-16.jpgS4-66.jpg:S6-75.jpg8-17.jpg最后因为固定大小,识别跟验证码识别-1里面一样,像素比较就可以了。源码:1.publicclassImagePreProcess2{2.2.privatestaticMap
7、(x,y)!=colorMax){34.img.setRGB(x,y,Color.WHITE.getRGB());36.img.setRGB(x,y,Color•BLACK•getRGB()37,394041.returnimg得到与下图接着是对图片进行纵⑸扫描进行切割■SSS再对每一部分横向扣描IS&S然后进行训练把分割的结果对应存成5jpg:9jpg,3jpg,ajpg就可以了KO-ll.jpg蛇3-9.jpgS4-28.jpgS6-61.jpg7-73.jpg1-0jpg蛇3-12.jpgS4-32.jpgS6-
8、73.jpg7-79.jpgl-4.jpg3-16.jpgS4-66.jpg:S6-75.jpg8-17.jpg最后因为固定大小,识别跟验证码识别-1里面一样,像素比较就可以了。源码:1.publicclassImagePreProcess2{2.2.privatestaticMap
此文档下载收益归作者所有