- 1、本文档共9页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
网络投票系统验证码识别技术简析.
网络投票系统验证码识别技术原理来源:华岳刷票 以如下网络投票系统为例对验证码识别技术原理做一个简单的分析:原理对于简单的验证码,使用的原理也相当的简单。现在有两个长度一致的二进制的数字,1110111011101和1010111011100,比较他们的相似度可以使用XOR运算!1110111011101 XOR 1010111011100 = 0100000000001结果中,1的数目越小,相似度越高。现在比较两张单色的图片,也可以使用这样的方法。这两张图必须是规格相同的,把两张单色的图片进行Xor,结果残留下来的白点越小,表示相似度越高!!!view plaincopy to clipboardprint?for y in range(h): for x in range(w): im2.putpixel((x,y), im1.getpixel((x,y)) ^ im2.getpixel((x,y))) im2.show() 上面两个1的进行XOR运算,得到了不同像素点的个数。如上图所示,一共有3个。同时,我们把右图的1跟其他字符或数字的模板进行比较,看看相差多大。XOR统计结果 比较字模3 112 I15 T25 Y30 234 Z37 038 L38 X39 E40 340 740 C40 J41 S42 F43 443 G43 V44 944 A44 K45 547 647 847 O47 P48 Q51 M52 N54 D54 R55 B55 U56 W60 H相差最大的是H,比较相似的是I,的确1和I是有点类似的,但是差距还是比较明显的。所以识别率会很高!准备1. 一台运行着Ubuntu10.10的笔记本2. 接入互联网获取样本从网站上得到获取的验证码地址为/2012/vote/code.php图片浏览器设置一下不要平滑图片,放大图片之后,就可以看到小小的验证码图片是由一大堆像素点拼凑而成的。获取样本无非是为了找规律,样本越多对我们分析越好。因为这个验证码的规律很明显,我们暂且就获取50张吧,当然不是自己一个一个去下载,写个简单的脚本来处理!view plaincopy to clipboardprint?import urllib, random for i in range(50): url = /2007/vote/verify.php print download, i file(./code/%04d.png % random.randrange(10000), wb).write( urllib.urlopen(url).read())i 用上面的代码保存到downloadcode.py,在当前目录建立一个code目录。然后执行python downloadcode.py下载了50个验证码!观测样本为了看清楚点,去除噪点,转换成黑白单色图!通过观察一大堆验证码,得出如下结论:1. 验证码不复杂,只使用了一种字体类型2. 验证码不复杂,只使用了一种字体大小3. 验证码不复杂,只使用了一种字体颜色4. 验证码不复杂,每张由5个字母或数字构成,5个字母或数字的位置都是固定的5. 验证码不复杂,没有图片的歪曲变形,没有干扰线条或图案因此,这堆验证码非常适合识别验证码技术的初学者小试牛刀!提取字模既然已经知道每个字母或数字在图片中的具体位置,就可以从这些样本之中,把它们提取出来!!!每个字模的大小都是8x10,宽8高10,单位像素。好吧,让脚本帮我们提取这些字模:view plaincopy to clipboardprint?import Image, os j = 1 for f in os.listdir(.): if f.endswith(.png): img = Image.open(f).convert(1) for i in range(5): x = 10 + i*18 y = 6 img.crop((x, y, x+8, y+10)).save(font/%d.bmp % j) print j=,j j += 1 执行脚本,结果生成了250个字模。从这些字模之中,每个数字或字母,我们只需要一个看上去比较标准的就够了。飞之同学说,如果知道它是什么字体,就可以直接用脚本生成一堆标准的模板就行了,省去自己去匹配的麻烦呢。识别程序代码的流程比较简单,先加载标准的模板,然后读取一张验证码的图片,裁剪出这张图片的每个数字或字母的局部图,然后跟我们的标准模板进行比较,统计像素点不相同的个数。然后把每个字模的统计结果进行排序,不相同点个数最小的,相似度就应当是最高的了!!!下面的代码把识别出来的验证码另存到result目录下,并以结果命名!view plaincopy to clipboardprint?imp
您可能关注的文档
- 网上售花可行性分析..doc
- 网上常见的38个数据指标对黄金走势的影响..doc
- 网上开店实用指导手册..doc
- 网上报销系统,改善企业费用控制..doc
- 网上电子商务系统需求分析报告..doc
- 网上考试系统的设计与实现(【JSP】SQL2000)..doc
- 网上聊天寻呼软件的设计与实现..doc
- 网上订餐系统需求分析..doc
- 网上购买火车票常见问题..doc
- 网上购物消费需求分析..doc
- 浙江衢州市卫生健康委员会衢州市直公立医院高层次紧缺人才招聘11人笔试模拟试题参考答案详解.docx
- 浙江温州泰顺县退役军人事务局招聘编外工作人员笔试备考题库及参考答案详解一套.docx
- 江苏靖江市数据局公开招聘编外工作人员笔试模拟试题及参考答案详解.docx
- 广东茂名市公安局电白分局招聘警务辅助人员40人笔试模拟试题带答案详解.docx
- 江苏盐城市大丰区住房和城乡建设局招聘劳务派遣工作人员4人笔试模拟试题带答案详解.docx
- 浙江舟山岱山县东沙镇人民政府招聘笔试模拟试题及参考答案详解1套.docx
- 最高人民检察院直属事业单位2025年度公开招聘工作人员笔试模拟试题含答案详解.docx
- 浙江金华市委宣传部、中共金华市委网信办所属事业单位选调工作人员笔试备考题库及答案详解1套.docx
- 广东深圳市党建组织员招聘40人笔试模拟试题及答案详解1套.docx
- 江苏南京水利科学研究院招聘非在编工作人员4人笔试模拟试题及参考答案详解.docx
文档评论(0)