nmap-xml2xlsx 1.0.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,442 @@
1
+ Metadata-Version: 2.4
2
+ Name: nmap-xml2xlsx
3
+ Version: 1.0.0
4
+ Summary: Convert Nmap XML scan results to Excel format with GUI and CLI support
5
+ Author: test233
6
+ License-Expression: MIT
7
+ Project-URL: Homepage, https://github.com/bright-angel/nmap-parser
8
+ Project-URL: Repository, https://github.com/bright-angel/nmap-parser.git
9
+ Project-URL: Issues, https://github.com/bright-angel/nmap-parser/issues
10
+ Keywords: nmap,xml,excel,xlsx,security,scan,parser
11
+ Classifier: Development Status :: 4 - Beta
12
+ Classifier: Environment :: Console
13
+ Classifier: Environment :: Win32 (MS Windows)
14
+ Classifier: Environment :: X11 Applications :: GTK
15
+ Classifier: Environment :: MacOS X
16
+ Classifier: Intended Audience :: Information Technology
17
+ Classifier: Operating System :: OS Independent
18
+ Classifier: Programming Language :: Python :: 3
19
+ Classifier: Topic :: Security
20
+ Classifier: Topic :: System :: Networking
21
+ Classifier: Topic :: Utilities
22
+ Requires-Python: >=3.8
23
+ Description-Content-Type: text/markdown
24
+ Requires-Dist: xlsxwriter>=3.0.0
25
+ Requires-Dist: customtkinter>=5.2.0
26
+ Provides-Extra: gui
27
+ Requires-Dist: customtkinter>=5.2.0; extra == "gui"
28
+
29
+ # Nmap XML to Excel Converter
30
+
31
+ 将 Nmap 扫描的 XML 结果转换为美观的 Excel 报告工具,支持命令行和图形界面两种使用方式。
32
+
33
+ ![Python Version](https://img.shields.io/badge/python-3.8+-blue.svg)
34
+ ![License](https://img.shields.io/badge/license-MIT-green.svg)
35
+ ![Platform](https://img.shields.io/badge/platform-Windows%20%7C%20Linux%20%7C%20macOS-lightgrey.svg)
36
+
37
+ ## 功能特点
38
+
39
+ - ✅ **多模式支持**:单个 XML 文件或整个目录批量转换
40
+ - ✅ **递归扫描**:支持递归查找子目录中的所有 XML 文件
41
+ - ✅ **完整报告**:自动生成 4 个工作表的 Excel 报告
42
+ - ✅ **双界面**:命令行 (CLI) 和图形界面 (GUI) 双版本
43
+ - ✅ **易于安装**:支持 pipx 隔离安装,无需配置虚拟环境
44
+ - ✅ **完整漏洞信息**:解析 Nmap NSE 脚本的详细漏洞数据(CVE、严重程度、解决方案等)
45
+ - ✅ **跨平台**:支持 Windows、Linux、macOS
46
+ - ✅ **独立 EXE**:可打包为独立 Windows 程序,无需 Python 环境
47
+
48
+ ## 快速开始
49
+
50
+ ### 1. 安装依赖
51
+
52
+ ```bash
53
+ pip install -r requirements.txt
54
+ ```
55
+
56
+ ### 2. 安装工具
57
+
58
+ **方式 A:使用 pipx(推荐,隔离环境)**
59
+
60
+ ```bash
61
+ pipx install .
62
+ ```
63
+
64
+ **方式 B:使用 pip**
65
+
66
+ ```bash
67
+ pip install .
68
+ ```
69
+
70
+ **方式 C:开发模式**
71
+
72
+ ```bash
73
+ pip install -e .
74
+ ```
75
+
76
+ ### 3. 使用
77
+
78
+ **命令行模式:**
79
+
80
+ ```bash
81
+ nmap-parser scan.xml report.xlsx
82
+ ```
83
+
84
+ **图形界面模式:**
85
+
86
+ ```bash
87
+ nmap-parser-gui
88
+ ```
89
+
90
+ ## 安装方式对比
91
+
92
+ | 方式 | 命令 | 适用场景 |
93
+ |------|------|----------|
94
+ | **pipx** | `pipx install .` | 推荐使用,独立隔离环境 |
95
+ | **pip** | `pip install .` | 系统级安装 |
96
+ | **开发** | `pip install -e .` | 开发调试模式 |
97
+ | **手动** | `python nmap_parser/gui.py` | 无需安装,直接运行 |
98
+
99
+ ## 使用方法
100
+
101
+ ### 命令行模式 (CLI)
102
+
103
+ **基础用法:**
104
+
105
+ ```bash
106
+ # 转换单个 XML 文件
107
+ nmap-parser scan.xml report.xlsx
108
+
109
+ # 转换目录下所有 XML 文件
110
+ nmap-parser ./nmap_scans report.xlsx
111
+
112
+ # 递归转换(包含子目录)
113
+ nmap-parser ./nmap_scans report.xlsx -r
114
+
115
+ # 静默模式(不输出日志)
116
+ nmap-parser scan.xml report.xlsx -q
117
+
118
+ # 查看版本
119
+ nmap-parser -v
120
+ ```
121
+
122
+ **命令行参数:**
123
+
124
+ | 参数 | 简写 | 说明 |
125
+ |------|------|------|
126
+ | `input` | - | 输入路径(XML 文件或目录) |
127
+ | `output` | - | 输出 Excel 文件路径(.xlsx) |
128
+ | `--recursive` | `-r` | 递归查找子目录 |
129
+ | `--quiet` | `-q` | 静默模式,不输出日志 |
130
+ | `--version` | `-v` | 显示版本信息 |
131
+ | `--help` | `-h` | 显示帮助信息 |
132
+
133
+ **退出码:**
134
+
135
+ - `0` - 成功
136
+ - `1` - 错误(未找到文件、解析失败等)
137
+
138
+ ### 图形界面模式 (GUI)
139
+
140
+ **启动方式:**
141
+
142
+ ```bash
143
+ # 已安装
144
+ nmap-parser-gui
145
+
146
+ # 未安装,直接运行
147
+ python nmap_parser/gui.py
148
+ ```
149
+
150
+ **界面功能:**
151
+
152
+ - 📁 **文件选择器**:点击浏览选择输入 XML 文件或目录
153
+ - 📂 **目录浏览**:可选择文件夹进行批量转换
154
+ - 🔄 **递归选项**:勾选后递归扫描子目录
155
+ - 📊 **实时进度**:显示转换进度条
156
+ - 📝 **详细日志**:显示每个文件的处理状态
157
+ - ✅ **完成提示**:转换完成后弹出对话框
158
+
159
+ ## 输出 Excel 结构
160
+
161
+ 生成的 Excel 包含 4 个工作表:
162
+
163
+ ### 1️⃣ 任务信息 (Task Info)
164
+
165
+ | 列名 | 说明 |
166
+ |------|------|
167
+ | xml 文件名 | 扫描的 XML 文件名 |
168
+ | 扫描工具 | Nmap 或其他扫描器名称 |
169
+ | 工具版本 | 扫描器版本号 |
170
+ | 扫描参数 | Nmap 命令行参数 |
171
+ | 开始时间戳 | Unix 时间戳格式 |
172
+ | 开始时间 | 可读的时间格式 |
173
+ | XML 版本 | Nmap XML 输出格式版本 |
174
+ | 总主机数 | 扫描的主机总数 |
175
+ | 存活主机数 | 在线主机数量 |
176
+ | 下线主机数 | 离线主机数量 |
177
+ | 结束时间戳 | 扫描结束时间戳 |
178
+ | 结束时间 | 可读的结束时间 |
179
+ | 耗时 (秒) | 扫描持续时间 |
180
+ | 退出状态 | 扫描任务状态(success/fail) |
181
+
182
+ ### 2️⃣ 主机状态 (Host Status)
183
+
184
+ | 列名 | 说明 |
185
+ |------|------|
186
+ | xml 文件名 | 来源 XML 文件 |
187
+ | IP 地址 | 主机 IP 地址 |
188
+ | 主机名 | 反向解析的主机名 |
189
+ | 状态 | up/down |
190
+ | 状态原因 | 判断状态的依据 |
191
+ | 状态 TTL | 响应 TTL 值 |
192
+ | 开始时间 | 主机扫描开始时间 |
193
+ | 结束时间 | 主机扫描结束时间 |
194
+
195
+ ### 3️⃣ 端口服务 (Port & Service)
196
+
197
+ | 列名 | 说明 |
198
+ |------|------|
199
+ | xml 文件名 | 来源 XML 文件 |
200
+ | IP 地址 | 主机 IP |
201
+ | 端口号 | 端口号 (1-65535) |
202
+ | 协议 | TCP/UDP |
203
+ | 状态 | open/closed/filtered |
204
+ | 状态原因 | 状态判断原因 |
205
+ | 状态 TTL | TTL 值 |
206
+ | 服务名称 | 识别的服务名 |
207
+ | 服务产品 | 产品名(如 OpenSSH) |
208
+ | 服务版本 | 版本号 |
209
+ | 服务额外信息 | 系统、协议等额外信息 |
210
+ | 探测方法 | table/probed |
211
+ | 可信度 | 1-10 的置信度 |
212
+ | CPE 信息 | 通用平台枚举标识符 |
213
+
214
+ ### 4️⃣ 漏洞情况 (Vulnerabilities)
215
+
216
+ 基于 Nmap NSE 脚本的详细输出:
217
+
218
+ | 列名 | XML 路径 | 说明 |
219
+ |------|---------|------|
220
+ | 脚本 ID | `script@id` | NSE 脚本标识符 |
221
+ | 输出 | `script@output` | 脚本原始输出 |
222
+ | 版本 | `script@version` | 脚本版本 |
223
+ | 协议 | `port@protocol` | 端口协议 |
224
+ | 结果 | `elem[@key="result"]` | 检测结果 (如 VULNERABLE) |
225
+ | 严重程度 | `elem[@key="severity"]` | HIGH/MEDIUM/LOW |
226
+ | 描述 | `elem[@key="description"]` | 漏洞详细描述 |
227
+ | 风险因素 | `elem[@key="risk_factor"]` | Critical/High/Medium/Low |
228
+ | 参考链接 | `elem[@key="see_also"]` | 外部参考链接 |
229
+ | 解决方案 | `elem[@key="solution"]` | 修复建议 |
230
+ | CVE 编号 | `elem[@key="cve"]` | CVE 标识符 |
231
+ | BID 编号 | `elem[@key="bid"]` | BugTraq ID |
232
+ | CERT 公告 | `elem[@key="cert"]` | CERT 公告编号 |
233
+ | MSF 模块 | `elem[@key="msf_module"]` | Metasploit 模块名 |
234
+ | OSVDB 编号 | `elem[@key="osvdb"]` | 开源漏洞库 ID |
235
+
236
+ ## 使用示例
237
+
238
+ ### 示例 1:转换单个扫描文件
239
+
240
+ ```bash
241
+ nmap-parser nmap_scan.xml report.xlsx
242
+ ```
243
+
244
+ ### 示例 2:批量转换目录
245
+
246
+ ```bash
247
+ nmap-parser ./scans/ all_reports.xlsx -r
248
+ ```
249
+
250
+ ### 示例 3:生成带漏洞详情的报告
251
+
252
+ 使用 Nmap 进行漏洞扫描(需要安装 NSE 脚本):
253
+
254
+ ```bash
255
+ # Nmap 扫描并输出 XML
256
+ nmap -sV --script vuln -oX scan_result.xml 192.168.1.0/24
257
+
258
+ # 转换为 Excel
259
+ nmap-parser scan_result.xml vulnerability_report.xlsx
260
+ ```
261
+
262
+ ### 示例 4:在 CI/CD 中使用
263
+
264
+ ```bash
265
+ # 扫描
266
+ nmap -oX results.xml target.host
267
+
268
+ # 转换
269
+ nmap-parser results.xml report.xlsx
270
+
271
+ # 检查生成结果
272
+ ls -la report.xlsx
273
+ ```
274
+
275
+ ## 系统要求
276
+
277
+ ### 运行环境
278
+
279
+ - **Python**: 3.8 或更高版本
280
+ - **操作系统**:Windows 7/10/11、Linux、macOS
281
+
282
+ ### 依赖库
283
+
284
+ ```txt
285
+ xlsxwriter>=3.0.0 # Excel 文件生成
286
+ customtkinter>=5.2.0 # GUI 框架
287
+ darkdetect # 暗色模式检测
288
+ packaging # 工具库
289
+ ```
290
+
291
+ ## 打包为独立 EXE (Windows)
292
+
293
+ ### 快速打包
294
+
295
+ ```batch
296
+ build_exe_simple.bat
297
+ ```
298
+
299
+ ### 完整打包(带版本信息)
300
+
301
+ ```batch
302
+ build_exe.bat
303
+ ```
304
+
305
+ ### 手动打包
306
+
307
+ ```batch
308
+ pip install pyinstaller
309
+
310
+ pyinstaller --onefile --windowed --name "nmap-parser-gui" --hidden-import customtkinter --hidden-import tkinter --hidden-import xlsxwriter --collect-all customtkinter --noconfirm --clean nmap_parser\gui.py
311
+ ```
312
+
313
+ 打包成功后,在 `dist` 目录生成独立的 EXE 文件(约 30-50 MB),无需 Python 环境即可运行。
314
+
315
+ ## 项目结构
316
+
317
+ ```
318
+ workspace/
319
+ ├── pyproject.toml # 项目配置文件
320
+ ├── requirements.txt # Python 依赖
321
+ ├── README.md # 使用文档
322
+ ├── PACKAGING.md # 打包指南
323
+ ├── build_exe.bat # Windows 打包脚本(完整版)
324
+ ├── build_exe_simple.bat # Windows 打包脚本(简易版)
325
+ └── nmap_parser/
326
+ ├── __init__.py # 包初始化
327
+ ├── core.py # 核心转换逻辑
328
+ ├── cli.py # 命令行界面
329
+ └── gui.py # 图形界面
330
+ ```
331
+
332
+ ## 开发指南
333
+
334
+ ### 安装开发环境
335
+
336
+ ```bash
337
+ pip install -e .
338
+ pip install -r requirements.txt
339
+ ```
340
+
341
+ ### 运行测试
342
+
343
+ ```bash
344
+ # 命令行模式
345
+ python -m nmap_parser.cli test_scan.xml output.xlsx
346
+
347
+ # GUI 模式
348
+ python -m nmap_parser.gui
349
+
350
+ # 或直接运行(无需安装)
351
+ python nmap_parser/cli.py test_scan.xml output.xlsx
352
+ python nmap_parser/gui.py
353
+ ```
354
+
355
+ ### 代码结构
356
+
357
+ - **core.py**: NmapConverter 类,包含 XML 解析和 XLSX 生成逻辑
358
+ - **cli.py**: 命令行解析,调用核心功能
359
+ - **gui.py**: CustomTkinter 实现的图形界面
360
+
361
+ ## 常见问题
362
+
363
+ ### Q: 为什么 GUI 打不开?
364
+
365
+ 确保已安装 customtkinter:
366
+
367
+ ```bash
368
+ pip install customtkinter
369
+ ```
370
+
371
+ ### Q: 转换后 Excel 为空?
372
+
373
+ 检查输入的 XML 文件是否是有效的 Nmap 输出格式。
374
+
375
+ ### Q: 支持其他扫描器的 XML 吗?
376
+
377
+ 当前仅支持 Nmap XML 格式,其他扫描器需要适配 XML 解析逻辑。
378
+
379
+ ### Q: 如何提交 Bug 或建议?
380
+
381
+ 请在 GitHub 仓库提交 Issue。
382
+
383
+ ## 截图预览
384
+
385
+ ### 命令行界面
386
+
387
+ ```
388
+ 🔍 找到 2 个 XML 文件
389
+ 🔍 开始解析...
390
+ ✅ /path/to/scan1.xml
391
+ ✅ /path/to/scan2.xml
392
+
393
+ 📈 统计信息:
394
+ 文件数:2
395
+ 主机数:10 (存活:8)
396
+ 端口数:45 (开放:32)
397
+ 脚本/漏洞:5
398
+
399
+ ✅ 完成!输出:report.xlsx
400
+ ```
401
+
402
+ ### 图形界面
403
+
404
+ ```
405
+ ┌────────────────────────────────────────┐
406
+ │ 🔍 Nmap XML to Excel Converter │
407
+ ├────────────────────────────────────────┤
408
+ │ 输入路径:[____________] [浏览...] │
409
+ │ 输出文件:[____________] [浏览...] │
410
+ ├────────────────────────────────────────┤
411
+ │ ☑ 递归查找子目录 │
412
+ ├────────────────────────────────────────┤
413
+ │ [ 开始转换 ] │
414
+ │ 进度:███████████░░░░░ 65% │
415
+ │ 📝 详细日志输出... │
416
+ └────────────────────────────────────────┘
417
+ ```
418
+
419
+ ## 更新日志
420
+
421
+ ### v1.0.0
422
+
423
+ - ✅ 初始版本发布
424
+ - ✅ 支持 Nmap XML 完整解析
425
+ - ✅ 4 个工作表报告
426
+ - ✅ CLI 和 GUI 双界面
427
+ - ✅ Windows EXE 打包支持
428
+ - ✅ 完整漏洞信息提取
429
+
430
+ ## 许可证
431
+
432
+ MIT License
433
+
434
+ ## 作者
435
+
436
+ test233
437
+
438
+ ## 致谢
439
+
440
+ - [Nmap](https://nmap.org/) - 强大的网络扫描器
441
+ - [CustomTkinter](https://github.com/TomSchimansky/CustomTkinter) - 现代化 Python GUI 框架
442
+ - [XlsxWriter](https://github.com/jmcnamara/XlsxWriter) - Excel 文件生成库