nsfocus远程安全评估系统报告提取信息脚本

2024-01-12 13:30

本文主要是介绍nsfocus远程安全评估系统报告提取信息脚本,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

# coding=utf-8
from bs4 import BeautifulSoup
import xlwt


"""
采集移动漏扫报中主机端口,banner信息和漏洞信息
python2.7
"""
ip_port = []
ip_alarm = []

#获取主机
def get_host_list(filename):
    ips = []
    with open(filename + "\\index.html", 'rb') as data:
        soup = BeautifulSoup(data, 'html.parser')
        div = soup.find_all("div", {"name": "ipList"})[0]
        trs = div.find_all("a")
        # print trs
        for tr in trs:
            ip = tr.string
            # print ip
            ips.append(ip)
        return ips


#读取并保存到excel
def read_info(filename, ips):
    global ip_port,ip_alarm
    result = filename + "\\result.xls"
    work = xlwt.Workbook()
    #表一
    sheet = work.add_sheet("ports", cell_overwrite_ok=True)
    row = ['IP', u'端口',u'协议',u'服务',u'状态','Banner']
    #表二
    sheet1 = work.add_sheet("alarm", cell_overwrite_ok=True)
    row1 = ['IP', u'端口',u'漏洞名称',u'级别']

    for i in range(0, len(row)):
        sheet.write(0, i, row[i])
    for ip in ips:
        (ip_port_temp , ip_alarm_temp) =  write_port_banner_result(filename, ip)
        ip_port =  ip_port +  ip_port_temp
        ip_alarm = ip_alarm + ip_alarm_temp


    print "------------------start print ip >>port and banner ---------------------------"


    i = 1
    k = len(ip_port)
    print k
    for key in range(0, k):
        sheet.write(i, 0, ip_port[key][0])
        sheet.write(i, 1, ip_port[key][1])
        sheet.write(i, 2, ip_port[key][2])
        sheet.write(i, 3, ip_port[key][3])
        sheet.write(i, 4, ip_port[key][4])
        sheet.write(i, 5, ip_port[key][5])
        i += 1


    for i in range(0, len(row1)):
        sheet1.write(0, i, row1[i])

    j = 1
    k1 = len(ip_alarm)
    print k1
    for key in range(0, k1):
        sheet1.write(j, 0, ip_alarm[key][0])
        sheet1.write(j, 1, ip_alarm[key][1])
        sheet1.write(j, 2, ip_alarm[key][2])
        sheet1.write(j, 3, ip_alarm[key][3])
        j += 1

    work.save(result)


def write_port_banner_result(filename, ip):
    global ip_port
    # print(ip)
    i = 0
    banner_name = ""
    temp = []
    port_s = []
    banner_s = []
    alarm_s = []
    ips = []

    with open(filename + "\\hosts\\4816-" + ip + ".html", 'rb') as data:
        soup = BeautifulSoup(data, "html.parser")
        ths1 = soup.find(text="状态")
        # print  ths

        if ths1 == u"状态":
            # print ip + ": start get net"
            ths1 = soup.find(text="状态").parent.parent.parent.find_all("td")

            for k in range(len(ths1)/4):
                temp = [ip,ths1[0+k*4].string,ths1[1+k*4].string,ths1[2+k*4].string,ths1[3+k*4].string,'']
                port_s.append(temp)
            # print port_s
        else:
            temp = [ip,"no find service","","","",""]
            port_s.append(temp)
        # print ip + ": stop get net"

        temp = []
        ths2 = soup.find(text="Banner")
        if ths2 == u"Banner":
            # print ip + ": start get Banner"
            ths2 = soup.find(text = "Banner").parent.parent.parent.find_all("td")

            for k in range(len(ths2)/2):
                temp = [ip,ths2[0+k*2].string,ths2[1+k*2].string]
                banner_s.append(temp)
            # print banner_s


            for k in range(len(banner_s)):
                for j in range(len(port_s)):
                    if banner_s[k][1] == port_s[j][1]:
                        port_s[j][5] = banner_s[k][2]
        # print ip + ": stop get Banner"
        print "-------------print : "+ ip + "----port and banner ---------------------"
        print port_s

        print "-------------print : "+ ip + "----alarm ---------------------"
        ths3 = soup.find("th",text="漏洞").parent.parent.find_all("tr")
        if len(ths3)>3 :
            for i in range(3,len(ths3)):
                tr1 = ths3[i].find_all("td")
                port_num = tr1[0].string
                li1 = tr1[3].find_all("li")
                for j in range(len(li1)):
                    # print  li1[j].find("a").string
                    print  li1[j].find("a").get("class")[0]
                    temp = [ip,port_num,li1[j].find("a").string,li1[j].find("a").get("class")[0]]
                    alarm_s.append(temp)
                    # print temp

        print alarm_s

        return port_s,alarm_s

#filename = "C:\Users\LY\Desktop\\2"  #路径
filename="E:\\reports"
ips = get_host_list(filename)
# print ips
ips = ["117.169.64.140","117.169.64.142","211.138.211.66"]

# ips = "59.53.51.178"
#
read_info(filename, ips)#第一步任务
# write_port_banner_result(filename,ips)


 

这篇关于nsfocus远程安全评估系统报告提取信息脚本的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/598017

相关文章

MobaXterm远程登录工具功能与应用小结

《MobaXterm远程登录工具功能与应用小结》MobaXterm是一款功能强大的远程终端软件,主要支持SSH登录,拥有多种远程协议,实现跨平台访问,它包括多会话管理、本地命令行执行、图形化界面集成和... 目录1. 远程终端软件概述1.1 远程终端软件的定义与用途1.2 远程终端软件的关键特性2. 支持的

Linux使用cut进行文本提取的操作方法

《Linux使用cut进行文本提取的操作方法》Linux中的cut命令是一个命令行实用程序,用于从文件或标准输入中提取文本行的部分,本文给大家介绍了Linux使用cut进行文本提取的操作方法,文中有详... 目录简介基础语法常用选项范围选择示例用法-f:字段选择-d:分隔符-c:字符选择-b:字节选择--c

shell脚本自动删除30天以前的文件(最新推荐)

《shell脚本自动删除30天以前的文件(最新推荐)》该文章介绍了如何使用Shell脚本自动删除指定目录下30天以前的文件,并通过crontab设置定时任务,此外,还提供了如何使用Shell脚本删除E... 目录shell脚本自动删除30天以前的文件linux按照日期定时删除elasticsearch索引s

Python如何实现PDF隐私信息检测

《Python如何实现PDF隐私信息检测》随着越来越多的个人信息以电子形式存储和传输,确保这些信息的安全至关重要,本文将介绍如何使用Python检测PDF文件中的隐私信息,需要的可以参考下... 目录项目背景技术栈代码解析功能说明运行结php果在当今,数据隐私保护变得尤为重要。随着越来越多的个人信息以电子形

在不同系统间迁移Python程序的方法与教程

《在不同系统间迁移Python程序的方法与教程》本文介绍了几种将Windows上编写的Python程序迁移到Linux服务器上的方法,包括使用虚拟环境和依赖冻结、容器化技术(如Docker)、使用An... 目录使用虚拟环境和依赖冻结1. 创建虚拟环境2. 冻结依赖使用容器化技术(如 docker)1. 创

CentOS系统Maven安装教程分享

《CentOS系统Maven安装教程分享》本文介绍了如何在CentOS系统中安装Maven,并提供了一个简单的实际应用案例,安装Maven需要先安装Java和设置环境变量,Maven可以自动管理项目的... 目录准备工作下载并安装Maven常见问题及解决方法实际应用案例总结Maven是一个流行的项目管理工具

Java使用POI-TL和JFreeChart动态生成Word报告

《Java使用POI-TL和JFreeChart动态生成Word报告》本文介绍了使用POI-TL和JFreeChart生成包含动态数据和图表的Word报告的方法,并分享了实际开发中的踩坑经验,通过代码... 目录前言一、需求背景二、方案分析三、 POI-TL + JFreeChart 实现3.1 Maven

使用Python在Excel中插入、修改、提取和删除超链接

《使用Python在Excel中插入、修改、提取和删除超链接》超链接是Excel中的常用功能,通过点击超链接可以快速跳转到外部网站、本地文件或工作表中的特定单元格,有效提升数据访问的效率和用户体验,这... 目录引言使用工具python在Excel中插入超链接Python修改Excel中的超链接Python

10个Python自动化办公的脚本分享

《10个Python自动化办公的脚本分享》在日常办公中,我们常常会被繁琐、重复的任务占据大量时间,本文为大家分享了10个实用的Python自动化办公案例及源码,希望对大家有所帮助... 目录1. 批量处理 Excel 文件2. 自动发送邮件3. 批量重命名文件4. 数据清洗5. 生成 PPT6. 自动化测试

使用Java实现一个解析CURL脚本小工具

《使用Java实现一个解析CURL脚本小工具》文章介绍了如何使用Java实现一个解析CURL脚本的工具,该工具可以将CURL脚本中的Header解析为KVMap结构,获取URL路径、请求类型,解析UR... 目录使用示例实现原理具体实现CurlParserUtilCurlEntityICurlHandler