nmap 输出管理与对比
nmap 用 -oA 一次生成三个文件:人读格式便于快速浏览,单行格式便于检索,XML 格式便于程序解析。评估中原始输出本身就是证据的一部分:只在终端里看滚动结果,事后既无法复核当时的判断,也无法向客户提交可追溯的材料,而重扫得到的又是新的资产状态。规范做法是每轮扫描都带 -oA,文件名包含目标与时间戳避免覆盖,再用文本或结构化对比观察开放端口与服务版本的变化。
基本信息
| -oA 参数 | 同时生成人读、单行与 XML 三种输出文件 |
|---|---|
| XML 用途 | 报表生成与自动化解析,可提取主机、端口与服务字段 |
| 对比方式 | 对两轮结果的开放端口行做差异比较 |
| 命名要求 | 文件名含目标与时间戳,避免同名覆盖历史扫描 |
典型使用场景
- 首轮资产摸底:结果入台账,作为后续变化对照基线
- 复测对比:用同一目标不同时间的两轮结果确认整改是否生效
- 多目标批量扫描:按目标逐个输出,便于按主机归档
- 证据归档:XML 随案例目录一并存放,支撑报告引用
- 服务版本跟踪:对比服务与版本变化,发现新增或回退配置
- 可比性控制:两轮对比使用相同扫描参数,否则差异可能来自参数变化而非资产变化
输出与对比示例
输出与对比示例
nmap -sV -oA /cases/2026-001/nmap/10.0.10.5-20261012 10.0.10.5
# 生成 .nmap 人读、.gnmap 单行、.xml 三种文件
sed -n '/PORT/,/^$/p' 10.0.10.5-20261012.nmap # 只看端口段落
from=before.nmap; to=after.nmap
# 用端口行做差异对比,标注新增与关闭的端口
diff <(grep '^[0-9]*/tcp' $from) <(grep '^[0-9]*/tcp' $to) || true三种输出格式对比
| 文件 | 格式特点 | 主要用途 |
|---|---|---|
| 人读格式 | 结构化文本,端口与服务分块展示 | 人工阅读与报告引用 |
| 单行格式 | 每主机一行,便于字段检索 | 批量筛选与统计 |
| XML 格式 | 完整结构化数据 | 自动解析并生成资产表 |
XML 便于生成资产台账:解析主机、端口与服务的字段即可入库,避免人工誊抄造成的错漏。
输出目录按案例与日期分层存放:扫描文件、日志与证据一并归位,交付时可以整包移交。