记一次简单小脚本

一、初衷
使用过绿盟远程安全评估系统(RSAS 6.0)的小伙伴们都知道,在导出的excle中有个总表index.xls,这个表中缺少了漏洞描述和漏洞整改建议两列,这样就对需要整合成一个表的小伙伴头疼了,因为需要从一个漏洞对应的主机漏洞表中去找,各种复制粘贴,头疼。。。

二、模块介绍
脚本中使用到python3的xlwt、xlrd和xlutils三个模块,我们分别介绍一下。

  • xlwt
    字面意思可以看出是对xls文件的write,实际也是这样xlwt主要用来写excel,针对.xls格式,超出excel的单格内容长度上限32767,就会报错。
  • xlrd
    字面意思可以看出是对xls文件的read,对,xlrd主要用来读excel,针对.xls格式。
  • xlutils
    这个。。。字面意思我也猜不出来。xlutils结合xlrd可以达到修改excel文件目的,需要注意的是你必须同时安装这三个库。

三、脚本介绍
1.从导出的html总表中爬取系统名称(扫描时填写的任务名称)漏洞描述和整改建议写入xls文件中。

  • 爬html部分代码
    # 以只读的方式打开本地html文件
    htmltxt = open(url_html, 'r',encoding='UTF-8')
    htmlpage = htmltxt.read()
    # 正则应用系统名称
    a = '<th width="120">任务名称</th>.*?<td>'
    b ='</td>'
    name = re.compile( a +'(.*?)'+ b ,re.S|re.M)
    res_name = name.findall(htmlpage)
    
  • 写入xls文件
    # 创建工作簿
    book = xlwt.Workbook(encoding='utf-8') 
    # 创建工作表格
    sheet = book.add_sheet('test',cell_overwrite_ok=False)
    #单元格格式(borders边框,alignment格式,align自动换行,font字体,pattern:底色)
    style0 = xlwt.easyxf('borders:left thin,left_colour 0x40,right thin,right_colour 0x40,top thin,top_colour 0x40,bottom thin,bottom_colour 0x40;alignment: horz center,vert center;font: name 宋体, color-index black,bold on,height 280;pattern: pattern solid, fore_colour dark_green_ega;align: wrap on; ')
    #写入数据weite(1,2,3,4)参数1代表行,参数2代表列,参数3写入的数据,参数4单元格的格式
    sheet.write(0, 0, '序号',style0)
    sheet.write(0, 1, '系统名称',style0)
    sheet.write(0, 2, '漏洞名称',style0)
    #保存文件(保存在执行目录)
    book.save('old.xls')
    
    2.获取导出的xls总表中的漏洞名称,吧啦吧啦等你需要的列,然后打开步骤1中创建的xls文件,将这些获取的数据挨个放进去。
    workbook = xlrd.open_workbook(url_xls)
    # 根据sheet索引或者名称获取sheet内容
    sheet = workbook.sheet_by_name('漏洞信息')
    # 获取sheet的行数,以便进行添加和判断
    nrows = sheet.nrows
    # 获取整列的值(数组)
    cols_5 = sheet.col_values(5)  # 获取第五列内容
    # 打开之前保存的xls,并保留原格式(formatting_info=True)
    rb = xlrd.open_workbook('old.xls',formatting_info=True)
    # 复制rb所有表格,再进行操作
    wb = copy(rb)
    # 获取sheet
    cr = wb.get_sheet(0)
    i = 2
    while(i < nrows):
      cr.write(i-1,4,cols_5[i],style1)
      i += 1
    os.remove('old.xls')
    wb.save(res_name[0] +'.xls')
    
    四、感谢
    初次写工具,后期会一直进行优化,感谢大家的批评和指导。

漏洞整理脚本.zip (0.245 MB) 下载附件
点击收藏 | 0 关注 | 1
  • 动动手指,沙发就是你的了!
登录 后跟帖