nmap

作者: 薛东弗斯 | 来源:发表于2024-06-07 18:27 被阅读0次
    # nmap_active.py
    
    import nmap
    # 指定扫描目标
    target = '192.168.0.114/24'
    nm = nmap.PortScanner()
    # 通过扫描检测子网中的主机状态
    nm.scan(hosts=target, arguments='-n -sn -PE -PA21,23,80,3389')
    # 定义输出格式
    fm = "{:25}\t{:10}"
    print( '--------------主机状态----------------')
    print(fm.format(' 主机','状态'))
    hosts = nm.all_hosts()   # 从扫描结果中获取主机列表
    for host in hosts:
        state = nm[host].state()   # 获取指定主机的状态
        if state == 'up':
            print('\033[1;32m',fm.format(host,'正在运行'))  # 以绿色字体显示活动状态的主机
        else:
            print('\033[1;31m',fm.format(host,'已经停机'))  # 以红色字体显示停机状态的主机
    
    
    
    # nmap_service.py
    
    import nmap
    from prettytable import PrettyTable
    # 定义报表用表格的PrettyTable对象并添加表头
    Report_Table = PrettyTable(["Host", "Services", "State", "Version"])
    # 指定扫描目标
    target = '192.168.10.0/24'
    nm = nmap.PortScanner()
    # 通过扫描检测主机中的服务及其状态和版本
    nm.scan(target, arguments='-sV')
    # 遍历扫描结果中的主机列表
    for host in nm.all_hosts():
        # 编辑指定主机的协议列表
        for proto in nm[host].all_protocols():
            # 初始化表示服务、状态和版本的序列
            services, states , versions = [], [], []
            # 获取指定主机指定协议的端口列表
            ports = nm[host][proto].keys()
            # 遍历端口列表并将服务、状态和版本数据添加到相应序列
            for port in ports:
                services.append(nm[host][proto][port]['name'])
                states.append(nm[host][proto][port]['state'])
                versions.append(nm[host][proto][port]['product'] + ' ' + nm[host][proto][port]['version'])
            # 将一台主机的数据添加到PrettyTable表格
            Report_Table.add_row([host, '\n'.join(services), '\n'.join(states), '\n'.join(versions)])
    print(Report_Table)
    
    

    相关文章

      网友评论

          本文标题:nmap

          本文链接:https://www.haomeiwen.com/subject/ltkjqjtx.html