python简单处理nmap的扫描结果

news2025/1/16 1:37:34

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.html
    for 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.coloradmin.cn/o/2121574.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

稳健外汇盈利:掌握关键风险管理技巧

在复杂多变的市场中,机遇与风险是并存的,往往一念之差便能决定财富的沉浮。因此,每位交易员都需要对市场心存敬畏,深刻理解并实践风险控制的重要性,以免被市场的巨浪吞噬。正如投资大师巴菲特所言:“投资法…

Docker常用操作(基础篇)

Docker常用操作一览图 #查看镜像 docker images #拉取nginx镜像 docker pull nginx #拉取mysql镜像 docker pull mysql docker run -d --name nginx1 -p 80:80 nginx #docker run -d:创建并运行一个容器,-d是让容器以后台进程运行 #--name nginx1&#…

【Python基础】Python中的pip命令安装与使用

前言 对于一些新手来说,如何安装和使用pip命令可能会有些困惑。本文将详细介绍pip命令的安装和使用方法,帮助读者轻松上手pip,让你在Python编程旅程中更加自如。 一、pip简介 pip是Python的包管理工具,全称是“pip installs pac…

TikTok和Instagram各自不同的广告形式,该选定哪个平台?

近年来,TikTok凭借其短视频和创新功能吸引了大量年轻用户,并在广告方面推出了挑战赛、创意滤镜和名人合作等多种形式,自2019年起迅速崛起,成为Instagram的有力竞争者,连续三年在下载量上名列前茅。而Instagram则拥有超…

时序预测 | Matlab实现GA-CNN遗传算法优化卷积神经网络时间序列预测

时序预测 | Matlab实现GA-CNN遗传算法优化卷积神经网络时间序列预测 目录 时序预测 | Matlab实现GA-CNN遗传算法优化卷积神经网络时间序列预测预测效果基本介绍程序设计参考资料 预测效果 基本介绍 时序预测 | Matlab实现GA-CNN遗传算法优化卷积神经网络时间序列预测&#xff…

数据集 3DPW Dataset 介绍-户外三维人体建模 >> DataBall

3DPW-开源户外三维人体建模数据集-姿态估计-人体关键点-人体mesh建模 数据集特性: 1)rgb图 2)2d关键点 3)3d关键点 4)3d网格点mesh 5)相机内参/外参 inproceedings{vonMarcard2018, title {Recoveri…

实验十 多线程的处理

实验目的及要求 目的:理解线程的概念,掌握Java的多线程机制,会用多线程编写Java程序。 要求: 理解线程的概念会用Thread类创建线程会使用Runnable接口创建多线程对两种实现多线程方式的方式进行对比掌握线程的同步 二、实验环境…

数据挖掘顶会ICDM 2024论文分享┆MetaSTC:一种基于聚类和元学习的时空预测框架

第24届IEEE国际数据挖掘会议(IEEE International Conference on Data Mining,ICDM)将于2024年12月9日至12日在阿拉伯联合酋长国首都阿布扎比隆重举行。ICDM是世界数据挖掘研究顶级会议,创办于2001年,每年举办一届,会议…

会计凭证IDOC有关增强

记录一下: 项目上某需求是会计凭证动态数据同步档案系统,某开发用的BTE的1150事件,上线后发现漏掉了一部分凭证。事实证明BTE并不适用于所有的会计凭证场景。在未经过充分测试情况下,慎用BTE。 DEBUG找了两个比较靠谱的增强点&…

行政组织理论-第十三章:行政组织变革

章节章节汇总第一章:绪论第二章:行政组织的演变第三章:科层制行政组织理论第四章:人本主义组织理论第五章:网络型组织理论第六章:行政组织目标第七章:行政组织结构第八章:行政组织体…

上海宝钢阿赛洛屋顶光伏发电项目案例分享

摘要:随着“双碳”目标的提出,可再生能源的开发利用已成为必然趋势。新能源发电作为能源利用的重要形式,已经吸引了越来越多的关注。相较于大规模、高电压、长距离传输的集中式发电模式,分布式光伏因其容量小、电压低、便于就地消…

使用SVM在数字验证码识别中的应用研究课程报告

第1章 概要设计 1.1 设计目的 支持向量机作为一类强大的监督学习模型,以其出色的泛化能力,在手写数字识别、面部检测、图像分类等多个领域展现出了其优越性。其在处理小样本、非线性及高维模式识别任务中表现尤为突出。SVM通过构造最优超平面&#xff…

WMS仓储管理系统中条码打印管理

1. 条码打印管理概述 1.1WMS系统中条码的作用 在WMS系统中,条码作为一种自动识别技术,对于提高仓库管理效率和准确性起着至关重要的作用。 - 物料追踪:通过为每个物料分配唯一的条码,可以实现对物料从入库到出库的全程追踪。 …

第三天旅游线路预览——从禾木景区入口到景区换乘中心

第三天:从贾登峪到禾木风景区,晚上住宿贾登峪; 从禾木景区入口到景区换乘中心: 进入禾木景区后乘坐景区摆渡车至景区换乘中心,路程约60公里,耗时100分钟; 将上面的的行程安排进行动态展示&am…

终于搞懂TS中的泛型啦! | typescript 入门指南 04

大家好,我是王天~ 今天分享的是《ts入门指南》系列中第四篇,主要讲解ts中的泛型应用 泛型在ts中是比较重要的概念,我花挺长时间才搞明白,整理输出这篇文章,希望能帮助到大家 ~ 《ts入门指南》系列,点击下…

鸿蒙轻内核A核源码分析系列五 虚实映射(7)虚实映射Flag属性

往期知识点记录: 鸿蒙(HarmonyOS)应用层开发(北向)知识点汇总 轻内核A核源码分析系列一 数据结构-双向循环链表 轻内核A核源码分析系列二 数据结构-位图操作 轻内核A核源码分析系列三 物理内存(1&#xff0…

如果 Android 手机出现数据丢失,如何在Android上恢复丢失的数据

当您的 Android 手机发生数据丢失时,您可能需要检索丢失的文件。为了帮助您完成此过程,以下是执行 Android 数据恢复的一些有效方法: 如何在Android上检索数据 如果您的 Android 手机出现数据丢失,您可能需要检索丢失的文件。为了…

Python批量发邮件:如何批量发个性化邮件?

Python批量发邮件的实用技巧?如何利用Python发邮件? 无论是营销推广、客户关怀,还是内部通知,个性化邮件都能显著提升沟通效果。那么,Python批量发邮件如何实现个性化呢?本文将详细介绍如何使用Python批量…

ESP32 UDP 05

1.在上一文章基础上修改,文章网址 ESP32-Ethernet-04-CSDN博客 2.基本代码 /* Ethernet Basic ExampleThis example code is in the Public Domain (or CC0 licensed, at your option.)Unless required by applicable law or agreed to in writing, thissoftware…

再见Java 8,请掌握最新LTS

简介 在Java开发中,Java 8曾经是无可争议的主流,凭借其稳定性和广泛的社区支持,陪伴了无数开发者走过多年辉煌时刻。然而,随着时间的推移,技术不断革新,企业和开发者们逐渐把目光投向了更新的LTS&#xff0…