UnholyPresence/Nmap2Drawio

GitHub: UnholyPresence/Nmap2Drawio

将 Nmap XML 扫描结果自动转换为 draw.io 网络拓扑图的安全报告辅助工具。

Stars: 0 | Forks: 0

# Nmap2Drawio 将 `nmap -oX` 扫描结果直接转换为 [draw.io](https://app.diagrams.net) 网络拓扑图。 将其指向一个包含 Nmap XML 输出的目录,它会解析每一台主机及其开放的端口/服务以及 MAC/厂商信息,然后将其生成为一张拓扑图 —— 网关位于顶部,发现的主机排列在下方的网格中 —— 方便您直接将其引入渗透测试或红队报告中。 ## 环境要求 - Python 3.10+(使用了 `list[str]` / `X | None` 类型注解) - 无需第三方依赖 —— 全部使用标准库(`xml.etree.ElementTree`, `dataclasses`, `pathlib`) ## 用法 运行带有 XML 输出的 Nmap 扫描: ``` nmap -oX scan.xml ``` 然后在与您的 `.xml` 文件相同的目录下运行该脚本: ``` python3 Nmap2Drawio.py ``` - 如果在当前目录中找到一个或多个 `*.xml` 文件,每个文件都会被解析并生成一个同名的 `.drawio` 文件。 - 如果没有找到,程序会提示您输入一个目录来进行搜索。 - 在处理每个文件时,控制台会打印出发现的主机和开放端口的摘要。 在 [draw.io](https://app.diagrams.net)(或桌面/VS Code 应用程序)中打开生成的 `.drawio` 文件,即可查看和编辑该图表。 ### 图表布局 - 如果主机的 IP 以 `.1` 结尾,则将其视为 **网关**,并放置在图表的顶部。 - 所有其他发现的主机都放置在下方的网格中,并通过线条连接到网关。 - 每个主机框显示其主机名/IP、厂商、MAC 地址以及开放的端口/服务。 - 仅包含 `state="up"` 且端口标记为 `open` 的主机 —— `closed` 和 `filtered` 状态的端口将被跳过。 ## 项目结构 ``` Nmap2Drawio.py # main tool: parse XML -> generate .drawio diagram NmapXMLParserOnly.py # standalone parser (no diagram generation), useful # for quick summaries or as a lighter-weight import SampleXMLs/ # example Nmap XML scan for testing Outputs/ # generated .drawio files land here ``` ## 示例数据 项目包含了 `SampleXMLs/xmltest.xml`,因此您无需进行实际扫描即可试用该工具: ``` python3 Nmap2Drawio.py # 此目录中没有 XML。请在文件所在的目录中运行 Nmap2Drawio,或者指定目标目录: SampleXMLs ``` (或者运行 `cd SampleXMLs && python3 ../Nmap2Drawio.py` 直接从该目录运行,程序会自动将其识别处理) ## 开发路线 - 针对更大/分段的网络(子网、多个网关)提供更智能的布局 - 可配置的样式(颜色、按操作系统/厂商/服务分组) - 计划作为更广泛的自动化报告生成 pipeline 中的一个模块 ## 许可证 MIT —— 详见 [LICENSE](LICENSE)。可免费使用和修改;如果您在此项目基础上编写了自己的代码,请保留原作者署名。
标签:Draw.io, Nmap, Python, 云存储安全, 无后门, 网络扫描, 虚拟驱动器, 运维工具