当前位置: 首页 > news >正文

python简单处理nmap的扫描结果

0x00 前言

     当我们使用nmap扫描大量目标的时候,会使用nmap 扫描大量的IP后,会使用nmap对扫描结果进行输出保存,例如-oX 保存为xml文件,但是我们经常使用的是excel表格进行分发结果到各个负责人。

0x01设计

我们可能使用不同时间的nmap扫描结果xml文件,这些文件可以使用excel打开,但是比较麻烦,不是很直接。我们一般需要的信息是IP地址,端口,端口开放情况,端口运行哪些服务等基本信息。

然后作为一个辅助工具,可以自己输入需要处理的文件,按需进行处理。此处我们选择python (版本3)进行处理该问题。

0x02 代码

在这里我们使用 xml.etree.ElementTree和csv库进行对xml进行处理和输出。

#!/usr/bin/env python3
# -*- coding: utf-8 -*-import xml.etree.ElementTree as ET
import csv# XML文件文件,一般是当前路径
print("输入需要处理的nmap 扫描结果XML文件:", end='')
input_file = input("")
xml_file = input_file
# xml_file = 'nmap_targets_dx_jc_20240520142130.xml'
scan_results = xml_file.split('.')[0]
# print(scan_results)
# CSV文件路径
# csv_file = 'scan_results.csv'
csv_file = scan_results + '.csv'# 解析XML文件
tree = ET.parse(xml_file)
root = tree.getroot()# CSV文件头
headers = ['Host', 'Port', 'State', 'Service']
# headers = ['Host', 'Port', 'State', 'Service', 'Protocol']
# 写入CSV文件
with open(csv_file, 'w', newline='') as csvfile:writer = csv.DictWriter(csvfile, fieldnames=headers)writer.writeheader()# 遍历XML中的每个host,查找任意层次下的子元素,.点为当前节点,..为父节点# https://www.osgeo.cn/cpython/library/xml.etree.elementtree.htmlfor host in root.findall('host'):address = host.find('address').attrib['addr']for port in host.findall('.//port'):port_number = port.attrib['portid']protocol = port.attrib['protocol']state = port.find('state').attrib['state']service_elem = port.find('service')service_name = ''if service_elem is not None:service_name = service_elem.attrib['name']# 写入CSV行# row = {'Host': address, 'Port': port_number, 'State': state, 'Service': service_name, 'Protocol': protocol}row = {'Host': address, 'Port': port_number, 'State': state, 'Service': service_name}writer.writerow(row)
print("CSV文件已生成:", csv_file)

0x03 运行效果

0x04 总结

非常简单的一个小脚本,但是对于我们日常处理nmap扫描的结果文件是很实用的。


http://www.mrgr.cn/news/23694.html

相关文章:

  • 报名啦|PolarDB数据库创新设计赛(天池杯)等你来战
  • 【C++11 ——— 可变参数模板】
  • Excel怎样计算梯度费用,就拿电费来举例计算
  • HarmonyOS开发之路由跳转
  • 动态代理IP池设计:打造高效网络工具
  • 苹果iOS/ iPadOS18 RC 版、17.7 RC版更新发布
  • 再创辉煌!望繁信科技斩获第十三届中国创新创业大赛四川赛区桂冠
  • Python进阶——使用python操作数据库!
  • 加密软件是什么?有哪些用处呢?
  • 机器学习 第10章 降维与度量学习
  • STM32学习笔记(二、初识stm32单片机)
  • 商标名称含有“坤沙”被驳回,因为这些原因!
  • 【PWN · tcache | UAF】[2024 · 长城杯] KyLinHeap
  • SSM四川省旅游推荐系统---附源码80178
  • 【docker】Docker容器文件操作指南:从查看到传输
  • 使用Python中的`zip()`函数
  • 【bat】如何用 .bat 打开带空格的文件夹
  • Xcode 16 RC (16A242) 发布下载,正式版下周公布
  • Xcode报错:Return from initializer without initializing all stored properties
  • 15.3 JDBC数据库编程2