GVM 20.08 漏扫报告使用python脚本转化
- 使用字典完成host_post和服务名称的映射关系
新建一个hostport.py文件,添加内容如下:
hostportdict={
'192.168.1.2_3306/tcp': 'mysql',
'192.168.1.2_637980/tcp': 'redis',
'192.168.1.2_9092/tcp': 'kafka'
}
- 主脚本内容
新建change.py文件,内容如下:
#coding=utf-8
import xml.dom.minidom
import openpyxl
import time
import hostport
WB=openpyxl.Workbook()
ws=WB.active
ws.title="漏洞扫描报告"
row=['等级','服务','漏洞信息','解决方法','参考']
ws.append(row)
filename='report-'+time.strftime('%Y-%m-%d',time.localtime(time.time()))+'.xlsx'
dom=xml.dom.minidom.parse('report.xml')
root=dom.documentElement
firstresults=root.getElementsByTagName('results')
results=firstresults[0].getElementsByTagName('result')
print(len(results))
for j in range(len(results)):
host=results[j].childNodes[5].childNodes[0].data
port=results[j].childNodes[6].childNodes[0].data
serverkey=host+'_'+port
try:
servername=hostport.hostportdict[serverkey]
except:
servername=serverkey
info=results[j].childNodes[7].childNodes[4].childNodes[0].data
solution=results[j].childNodes[7].childNodes[5].childNodes[0].data
threat=results[j].childNodes[9].childNodes[0].data
refsinfo=''
if len(results[j].childNodes[7].getElementsByTagName('refs'))!=0:
refslen=len(results[j].childNodes[7].childNodes[6].getElementsByTagName('ref'))
for i in range(refslen):
tmp=results[j].childNodes[7].childNodes[6].getElementsByTagName('ref')[i].getAttribute("type")+":"+results[j].childNodes[7].childNodes[6].getElementsByTagName('ref')[i].getAttribute("id")
refsinfo=refsinfo+tmp+'\n'
row=[threat,servername,info,solution,refsinfo]
ws.append(row)
WB.save(filename)
- 执行
python3 change.py
最后生成文件如图 :