diff --git a/nsfocus_passwd_excel.py b/nsfocus_passwd_excel.py new file mode 100644 index 0000000..0ddcac5 --- /dev/null +++ b/nsfocus_passwd_excel.py @@ -0,0 +1,143 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- +# @Time : 2017/12/28 13:41 +# @Author : 852782749@qq.com +# @File : nsfocus_bug_excel.py +# @Software: PyCharm + +'''将文件放在要处理的绿盟科技漏洞扫描综合报表内,自动识别index.html文件,会生成三个文件 +python nsfocus_excel.py +需要导入第三方库xlwt库、BeautifulSoup库、lxml库 +''' +import time +'''time.strftime('%Y-%m-%d.xls')''' +import xlwt +import sys +reload(sys) +sys.setdefaultencoding('utf-8') +try: + from bs4 import BeautifulSoup +except ImportError: + raise SystemExit('\n[!]python html库——BeautifulSoup导入错误;请执行 pip install BeautifulSoup安装!') +import re +import lxml +''' +脚本是用来获取绿盟漏洞扫描设备的html版本报告的漏洞信息的,包括主机,漏洞名称,漏洞描述,修复建议,CVE编号 +#buglv = ['high','middle','low']分别对应高中低三种类型的漏洞。 +''' +soup = BeautifulSoup(open('index.html'),"lxml") +#print soup.contents +data = str(soup.find_all("div",{"class":'report_content'})).decode('unicode_escape') +#删除空格、换行等特殊字符 +data = filter(lambda x:x not in ['\n','\r',' ','\t'],data) +#print data +#共有8个此处DIV,每处对应一章节 +#使用split分出每一章节 +data_list=data.split("report_content") +#print data_list[4] +data_bug_list = data_list[4] +#print data_bug_list +buglv = ['high','middle','low'] +#buglv = ['high'] + +def bug_level(bug_lv): + #定义获取漏洞list(漏洞名称,详细信息,解决方案,CVE编号等,) + # 正则bug_lv为风险等级分为high,middle,low分别对应风险等级高中低; + # data_bug_list为全局变量,值是漏洞数据; + #返回bug_r_list为匹配到的漏洞数据list + bug_r = r'' + bug_r_re = re.compile(bug_r) + bug_r_list = re.findall(bug_r_re, data_bug_list) + return bug_r_list +def vnln_hosts(bug_hosts): + # 匹配受影响主机 + #data_host实参是漏洞信息中受影响主机 + # bug_host_r_list是返回的受影响主机 + bug_host_r = r'host/(.*?).html' + bug_host_r_re = re.compile(bug_host_r) + bug_host_r_list = re.findall(bug_host_r_re, bug_hosts) + return bug_host_r_list +def bug_main(bug_bug): + index =1 + '''time.strftime('%Y-%m-%d-%h-%s.xls')''' + file = xlwt.Workbook() + # excel 第一行数据 + excel_headDatas = [u'受影响主机', u'漏洞等级', u'漏洞名称', u'漏洞描述', u'修复建议', u'CVE编号'] + table = file.add_sheet(u'漏洞数据', cell_overwrite_ok=True) + fist = 0 + for data in excel_headDatas: + table.write(0, fist, data) + fist += 1 + for i in range(len(bug_bug)): +# for i in range(1): + #print u'当前进行第%s个' %(i+1) + bug_n_r = r'trclass=".*?vuln_(.*?)"onclick.*?(.*?)