瞎搞的原因
测试过程中使用BurpSuite的Intruder模块进行攻击后,由于测试的payload较多,并且Response返回值通常包含了HTTP响应头以及响应主体,如果需要手动从成百上千个文件中提取出想要的数据,会比较麻烦,所以就自己写了一个脚本,用于获取Response中指定的文本内容。
样例
为了提取Response中的学号,姓名等数据,所以才写了这个小脚本。一边百度一边写的。
代码
python3
# * coding:utf-8 *
import re
import os
def output(name,id,idCard):
'''用于接受想要提取的值并进行输出'''
for i in name:
'''获取姓名'''
pass
for j in id:
'''获取学号'''
pass
for k in idCard:
'''获取身份证'''
pass
result = i+"\t\t\t\t"+j+"\t\t\t\t"+k+"\n"
print(result)
'''将读取的结果写入到指定的文件之中'''
writeFile = open("D:\\test.txt","a+") //将结果写入的文件路径
writeFile.write(result)
filePath = "E:\\Test" //你的路径
os.chdir(filePath)
fileName = os.listdir()
print("姓名\t\t\t\t学号\t\t\t\t身份证")
for getFile in fileName:
'''获取目录下所有文件的名字,后续逐个打开提取数值'''
with open(getFile,'r') as strf:
str = strf.read()
getName = r'(?<=<span id="Name">).*?(?=</span>)' //将<span id="Name">替换成要获取数值的标签,后面的也是一样,照葫芦画瓢完成。
getId = r'(?<=<span id="StudentId">).*?(?=</span>)'
getIdCard = r'(?<=<input name="Card" type="text" value=").*?(?=" maxlength="20" id="Card" />)'
id = re.findall(getId,str)
name = re.findall(getName,str)
idCard = re.findall(getIdCard,str)
if (id,name,idCard) != "":
'''如果读取的值不为空,则调用函数对内容进行输出'''
try:
output(name,id,idCard)
writeFile.close()
except:
'''如果Response中的想要的值为空,则跳过处理'''
pass
结果
从2001个文件中提取出了自己想要的内容。
有些不足,但是还是能用,才开始学没多久,也有很多需要改进的地方。