http://www.waitalone.cn/python-php-ocr.html
最近在做网络信息安全攻防学习平台的题目,发现有些题居然需要用到验证码识别,这玩意以前都觉得是高大上的东西,一直没有去研究,这次花了点时间研究了一下,当然只是一些基础的东西,高深的我也不会,分享一下给大家吧。
这次验证码识别,我使用的python来实现的,发现python果然是强大无比,但是在验证码识别库的安装上面有点小问题。
关于python验证码识别库,网上主要介绍的为pytesser及pytesseract,其实pytesser的安装有一点点麻烦,所以这里我不考虑,直接使用后一种库。
python验证码识别库安装
要安装pytesseract库,必须先安装其依赖的PIL及tesseract-ocr,其中PIL为图像处理库,而后面的tesseract-ocr则为google的ocr识别引擎。
1、PIL 下载地址:
PIL-1.1.7.win-amd64-py2.7.exe
PIL-1.1.7.win32-py2.7.exe
或者直接使用pillow来代替,使用方法基本没有什么区别。
http://www.lfd.uci.edu/~gohlke/pythonlibs/#pillow
2、tesseract-ocr下载地址:
tesseract-ocr-setup-3.02.02.exe
3、pytesseract安装
直接使用pip install pytesseract安装即可,或者使用easy_install pytesseract
python验证码识别方法
11 | print '模块导入错误,请使用pip安装,pytesseract依赖以下库:' |
16 | image = Image. open ( 'vcode.png' ) |
17 | vcode = pytesseract.image_to_string(image) |
识别率还挺高的,当然这也和验证码本身有关,因为这个验证码设计的比较容易识别。
python识别验证码,就是这么简单,大家还不快来试一试?
php验证码识别方法
关于php的验证码识别,这个我没有深入研究,但是用python实现完了以后就明白了,其实只要借助ocr识别库就可以了,直接贴上之前脚本关第9关的代码。
python实现的验证码识别破解实例请关注:
http://www.waitalone.cn/security-scripts-game.html
10 | if (! extension_loaded ( 'curl' )) exit ( '请开启CURL扩展,谢谢!' ); |
16 | for ( $i = 100; $i <= 999; $i ++) { |
19 | 'username' => 13388886666, |
21 | 'user_code' => $vcode , |
24 | $response = send_pack( 'POST' , $crack_url , $post_data ); |
25 | if (! strpos ( $response , 'error' )) { |
40 | $pic = send_pack( 'GET' , $vcode_url ); |
41 | file_put_contents ( 'vcode.png' , $pic ); |
42 | $cmd = "\"D:\\Program Files (x86)\\Tesseract-OCR\\tesseract.exe\" vcode.png vcode" ; |
44 | if ( file_exists ( 'vcode.txt' )) { |
45 | $vcode = file_get_contents ( 'vcode.txt' ); |
46 | $vcode = trim( $vcode ); |
47 | $vcode = str_replace ( ' ' , '' , $vcode ); |
49 | if ( strlen ( $vcode ) == 4) { |
57 | function send_pack( $method , $url , $post_data = array ()) |
59 | $cookie = 'saeut=218.108.135.246.1416190347811282;PHPSESSID=6eac12ef61de5649b9bfd8712b0f09c2' ; |
61 | curl_setopt( $curl , CURLOPT_URL, $url ); |
62 | curl_setopt( $curl , CURLOPT_HEADER, 0); |
63 | curl_setopt( $curl , CURLOPT_RETURNTRANSFER, 1); |
64 | curl_setopt( $curl , CURLOPT_COOKIE, $cookie ); |
65 | if ( $method == 'POST' ) { |
66 | curl_setopt( $curl , CURLOPT_POST, 1); |
67 | curl_setopt( $curl , CURLOPT_POSTFIELDS, $post_data ); |
69 | $data = curl_exec( $curl ); |
文中用到的文件下载
点我下载
相关文章:
http://vipscu.blog.163.com/blog/static/18180837220134234528457/
http://drops.wooyun.org/tips/141