nmap

2024-06-07  本文已影响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)

上一篇 下一篇

猜你喜欢

热点阅读