一个 Python 工具,可基于 masscan 的 JSON 输出生成交互式 React 驱动的 HTML 可视化报告,包含 D3.js 力导向网络图。

: 仅搜索端口(例如 :443)* 进行模式匹配(例如 :*443、:80*、:*8*)# 克隆或下载项目
cd masscan_report
# 安装依赖(可选,仅当需要在开发环境下生成 PDF 时)
pip install pyinstaller # 仅当构建 exe 时需要
从 dist/ 文件夹下载 masscan_report.exe - 无需安装 Python。
# 使用 Python
python masscan_report.py <input_json> [-o output.html]
# 使用可执行文件
masscan_report.exe <input_json> [-o output.html]
# 生成报告,默认输出为 report.html
python masscan_report.py scans/home.json
# 指定自定义输出文件
python masscan_report.py scans/network_scan.json -o network_report.html
# 使用可执行文件
.\dist\masscan_report.exe .\scans\home.192.168.10000.json
工具期望 masscan 的 JSON 输出格式:
[
{"ip": "192.168.1.1", "timestamp": "1234567890", "ports": [
{"port": 80, "proto": "tcp", "status": "open", "reason": "syn-ack", "ttl": 64}
]},
{"ip": "192.168.1.1", "timestamp": "1234567891", "ports": [
{"port": 443, "proto": "tcp", "status": "open", "reason": "syn-ack", "ttl": 64}
]}
]
通过 masscan 生成此格式:
masscan 192.168.1.0/24 -p1-65535 --rate 1000 -oJ scan_results.json
masscan_report/
├── masscan_report.py # 主脚本
├── port_descriptions.py # 端口数据库(6700+ 行)
├── scans/ # 示例扫描文件
│ ├── home.json
│ └── home.192.168.10000.json
├── dist/
│ └── masscan_report.exe # 独立可执行文件
├── report.html # 生成的输出
└── README.md
port_descriptions.py 包含 130+ 常见端口的详细信息,包括:
pip install pyinstaller
pyinstaller --onefile --name masscan_report --add-data "port_descriptions.py;." masscan_report.py
可执行文件将在 dist/masscan_report.exe 中生成。
MIT 许可证
欢迎贡献!请自由提交 issue 和 pull request。
| 操作 | 效果 |
|---|
| 点击节点(图) | 打开信息模态框 |
| 点击主机(侧边栏) | 高亮主机及其端口 |
| 拖拽节点 | 重新定位节点 |
| 滚轮 | 放大/缩小 |
| 点击并拖拽(背景) | 平移视图 |
| 🔄 重置视图 | 重置缩放与位置 |
| ⚡ 重新加热 | 重新激活力模拟 |
| 📄 导出 PDF | 生成 PDF 报告 |
| 模式 | 匹配 |
|---|
192.168 | 包含 "192.168" 的 IP |
:443 | 精确端口 443 |
:*443 | 以 443 结尾的端口(例如 8443) |
:443* | 以 443 开头的端口 |
:*8* | 包含数字 8 的端口(例如 80、8080、443) |