欢迎来到天天文库
浏览记录
ID:24055077
大小:55.00 KB
页数:3页
时间:2018-11-12
《利用javascript破解验证码》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、利用JavaScript破解验证码~教育资源库 近日,网上惊现可以破解验证码的JavaScript脚本GreaseMonkey!由ShaunFriedle开发的这段脚本可以轻松搞定Megaupload站点的CAPTCHA。如果您不相信的话,可以到hereethelizards.co.uk/mu_captcha/亲自尝试一下! 现在,Megaupload站点提供的CAPTCHA在上述代码面前已经败下阵来,说实话,这里的验证码设计的不不太好,下面给出一些例子: 图片看不清楚?请点击这里查看原图(大图)。 图1 但是,更有趣的是: 1.HTML5中的Canvas应用程序接口
2、getImageData可以用来从验证码图像中取得像素数据。利用Canvas,我们不仅可以将一个图像嵌入一个画布中,而且之后还可以再从中重新提取出来。 2.上述的脚本中包含一个完全使用JavaScript实现的神经网络。 3.使用Canvas从图像中提取出像素数据后,将其送入神经网络,通过一种简单的光学字符识别技术来推测验证码中到底使用了哪些字符。 通过阅读源代码,我们不仅可以更好地理解其工作原理,也可以领会这个验证码究竟是如何实现的。就像前面看到的那样,这里使用的验证码不是很复杂每个验证码有三个字符组成,每个字符使用一种不同的颜色,并且只使用26个字母中的字符,而所有字符
3、都使用同一种字体。 第一步的用意很明显,那就是把验证码拷贝到画布上,并且把它转化为灰度图。functionconvert_grey(image_data){for(varx=0;x<image_data.age_data.height;y++){vari=x*4+y*4*image_data.a=Math.floor(image_data.data[i]*299/1000+image_data.data[i+1]*587/1000+image_data.data[i+2]*114/1000);image_data.data[i]=luma;image_data.data[
4、i+1]=luma;image_data.data[i+2]=luma;image_data.data[i+3]=255;}}} 然后,将画布分成三个单独的像素矩阵,每个矩阵包含一个字符。这一步实现起来非常容易,因为每个字符都使用一种单独的颜色,所以通过颜色就可以将其区分开来。filter(image_data[0],105);filter(image_data[1],120);filter(image_data[2],135);functionfilter(image_data,colour){for(varx=0;x<image_data.age_data.heigh
5、t;y++){vari=x*4+y*4*image_data.age_data.data[i]==colour){image_data.data[i]=255;image_data.data[i+1]=255;image_data.data[i+2]=255;//Everythingelsetoblack}else{image_data.data[i]=0;image_data.data[i+1]=0;image_data.data[i+2]=0;}}}} 最终,所有无关的干扰像素都被剔除出去。为此,可以先查找那些前面或者后面被黑色(未匹配的)像素围绕的白色(匹配过的)像素,然
6、后将匹配过的像素删除即可。vari=x*4+y*4*image_data.age_data.age_data.age_data.data[i]==255image_data.data[above]==0image_data.data[beloage_data.data[i]=0;image_data.data[i+1]=0;image_data.data[i+2]=0;} 现在我们已经得到了字符的大约图形,但在将其载入神经网络之前,脚本还会进一步对它进行必要的边缘检测。脚本会寻找图形最左、右、上、下方的像素,并将其转化为一个矩形,接着把矩形重新转换为一个20*25像素的矩阵。c
7、ropped_canvas.getContext(2d).fillRect(0,0,20,25);varedges=find_edges(image_data[i]);cropped_canvas.getContext(2d).draage(canvas,edges[0],edges[1],edges[2]-edges[0],edges[3]-edge12下一页友情提醒:,特别!s[1],0,0,edges[2]-edges[0],edges[3]-edges[1]);image
此文档下载收益归作者所有