NPSL 许可证限制与开源替代指纹库选型指南
Nmap 是网络扫描领域的标杆工具,其指纹数据库(nmap-os-db、nmap-service-probes)经过二十余年的积累,已成为业界的黄金标准。然而,自 Nmap 7.90(2021 年)起,Nmap 的许可证从 GPLv2 变更为 NPSL(Nmap Public Source License),新增了大量超出标准 GPL 的限制条款。
这意味着:即使是开源项目,只要读取或嵌入了 Nmap 的指纹数据文件,就可能构成 Nmap 的衍生作品,必须以 NPSL 兼容许可证发布。对于闭源商业产品而言,这种合规风险更为严峻——要么以 NPSL 开源整个项目,要么支付高达 $59,980~$119,980 的一次性 OEM 授权费。
本文深度解读 NPSL 许可证的关键条款,分析各类使用场景的合规风险,并重点推荐完全规避 NPSL 的开源替代指纹库方案。
NPSL 许可证详解
Nmap 自 7.90 起将许可证从 GPLv2 更改为 NPSL(初始版本 v0.92),7.94 起更新至 NPSL v0.95。NPSL 基于 GPLv2 重构,但加入了多项超出标准 GPLv2 的限制条款。
NPSL 核心特征
| 特征 | 说明 |
|---|---|
| 基础许可证 | 基于 GPLv2,保留 copyleft 传染性要求 |
| 额外限制 1 | 禁止将 Nmap 技术用于"竞争性网络扫描产品" |
| 额外限制 2 | 衍生作品必须以 NPSL 兼容的开源许可证发布 |
| 额外限制 3 | 商业嵌入式使用需购买 OEM 授权 |
| 覆盖范围 | 源代码、二进制文件以及数据文件(nmap-os-db、nmap-service-probes 等) |
NPSL 与标准 GPLv2 的关键差异
| 条款 | GPLv2 | NPSL |
|---|---|---|
| 衍生作品许可 | 任何 GPLv2 兼容许可证 | 必须 NPSL 兼容 |
| 商业竞争产品 | 不限制 | 明确禁止用于竞争性产品 |
| 数据文件覆盖 | 通常不覆盖数据文件 | 明确覆盖指纹数据文件 |
| 嵌入式使用 | 不限制 | 需 OEM 授权 |
| 网络服务条款 | 无 | 无(不像 AGPL 那样有网络传染条款) |
注意:NPSL 没有像 AGPL 那样的"网络服务传染"条款。如果您的 SaaS 服务仅通过 REST API 或其他接口使用 Nmap 扫描结果(而非分发修改后的代码或嵌入指纹数据),则不受分发条款的约束。但这并不等于使用 Nmap 指纹数据文件的合规——具体见下一节。
衍生作品定义与合规风险
NPSL 对"衍生作品"的宽泛定义是整个许可证中最关键的条款,也是给开发者带来最大合规风险的部分。
衍生作品的宽泛定义
NPSL 明确规定,以下行为均构成衍生作品:
| 行为 | 是否构成衍生作品 | 说明 |
|---|---|---|
| 修改 Nmap 源代码 | ✅ 是 | 标准 GPL 衍生作品定义 |
| 链接 Nmap 库 | ✅ 是 | 标准 GPL 衍生作品定义 |
| 读取 Nmap 数据文件 | ✅ 是 | NPSL 特有:任何"reads or includes Covered Software data files, such as nmap-os-db or nmap-service-probes"的程序均被视为衍生作品 |
| 调用 Nmap 二进制 | ⚠️ 视情况 | 通过 exec/subprocess 调用并解析输出,法律上存在争议 |
| 解析 Nmap XML 输出 | ⚠️ 视情况 | 输出本身是否受 NPSL 约束存在争议 |
| 仅参考 Nmap 指纹格式 | ❌ 否 | 格式本身不受版权保护 |
flowchart TD
A["是否修改<br/>Nmap 源代码?"] --> B["是:构成衍生作品<br/>须以 NPSL 开源"]
A --> C["否"]
C --> D["是否读取或嵌入<br/>Nmap 数据文件?"]
D --> E["是:构成衍生作品<br/>NPSL 特有条款"]
D --> F["否"]
F --> G["是否通过子进程<br/>调用 Nmap 二进制?"]
G --> H["是:法律争议区域<br/>建议咨询律师"]
G --> I["否:不构成<br/>NPSL 衍生作品"]
style B fill:#f44336,color:#fff
style E fill:#FF9800,color:#fff
style H fill:#FF9800,color:#fff
style I fill:#4CAF50,color:#fff决策树说明: 修改 Nmap 源代码(红色)必然构成衍生。即使不修改源代码,只要读取或嵌入了 Nmap 指纹数据文件(橙色),同样构成衍生——这是 NPSL 超出标准 GPL 的关键条款。仅通过子进程调用 Nmap 二进制(橙色)属于法律争议区域。完全不接触 Nmap 代码和数据(绿色)最安全。
核心合规风险
最大风险点: NPSL 明确规定,任何"读取或包含 Nmap 数据文件(如 nmap-os-db 或 nmap-service-probes)“的程序均被视为 Nmap 的衍生作品,必须以 NPSL 兼容的许可证发布。这意味着:
- 直接加载指纹库:如果您的工具直接读取
nmap-os-db或nmap-service-probes文件,您的工具即为 Nmap 衍生作品,必须开源(NPSL 兼容) - 嵌入指纹数据:将 Nmap 指纹数据嵌入到您的二进制文件中(如某些第三方库所做的),同样构成衍生作品
- 商业产品限制:即使开源,也不能将衍生作品用于"竞争性网络扫描产品”
- naabu 的陷阱:naabu 虽然本身是 MIT 许可证,但其
-sV服务检测功能直接调用nmap-service-probes,因此在使用该功能时仍受 NPSL 约束
商业 OEM 授权方案
对于无法满足 NPSL 开源要求的项目,Nmap 官方提供 OEM 商业授权。需要注意的是,授权费为一次性永久许可费,年度维护费为可选。
| 授权等级 | 永久许可费(一次性) | 可选年度维护费 | 适用场景 |
|---|---|---|---|
| Small OEM | $59,980 | $17,980/年 | 小型团队/初创公司,年营收低于阈值。首年含维护总计 $77,960 |
| Enterprise OEM | $119,980 | $29,980/年 | 大型企业,无营收限制。首年含维护总计 $149,960 |
| 定制授权 | 需协商 | 需协商 | 特殊需求(如嵌入式设备厂商) |
OEM 授权的核心权益:
- 允许将 Nmap 技术嵌入专有/闭源产品
- 允许在竞争性产品中使用
- 包含技术支持
- 永久许可费为一次性付费,年度维护费可选(含升级和技术支持)
合规场景分析
| 使用场景 | 合规方式 | 风险等级 |
|---|---|---|
| 个人学习/研究 | NPSL 开源即可 | 🟢 低 |
| 开源安全工具(GPLv2 兼容) | 以 NPSL 发布 | 🟢 低 |
| 开源工具(非 GPL 许可证) | 需改为 NPSL 或购买 OEM | 🟡 中 |
| 商业产品(闭源) | 必须购买 OEM 授权 | 🔴 高(不授权则违规) |
| 商业产品(开源但非 NPSL) | 需购买 OEM 或改为 NPSL | 🔴 高 |
| SaaS 服务(不分发二进制) | NPSL 无网络传染条款,但数据文件使用仍受限 | 🟡 中 |
| 仅解析 Nmap XML 输出 | 法律争议区域,建议咨询律师 | 🟡 中 |
| 直接读取 nmap-service-probes | 必须 NPSL 开源或购买 OEM | 🔴 高 |
关键结论: 如果您的项目是闭源商业产品,或者您不想以 NPSL 发布您的开源项目,那么直接读取或嵌入 Nmap 指纹数据库(
nmap-os-db、nmap-service-probes)将面临严重的合规风险。这正是寻找替代指纹库的核心动因。
替代方案选型标准
在选择 Nmap 指纹库的替代方案时,需要从以下维度进行评估:
| 维度 | 权重 | 说明 |
|---|---|---|
| 许可证合规性 | ★★★★★ | 是否以宽松许可证(Apache-2.0/MIT/BSD)发布,彻底规避 NPSL 限制 |
| 指纹覆盖范围 | ★★★★☆ | 能识别的协议/服务/OS 数量,是否自研指纹(非依赖 Nmap 库) |
| 项目活跃度 | ★★★★☆ | 最近提交时间、release 频率、issue 响应速度 |
| 语言生态 | ★★★☆☆ | 是否易于集成到 Go/Rust 项目中 |
| 性能 | ★★★☆☆ | 扫描速度、并发能力 |
| OS 指纹能力 | ★★★☆☆ | 是否支持操作系统识别(Nmap 的核心能力之一) |
服务指纹替代方案
fingerprintx(Praetorian)— 首选替代
| 属性 | 详情 |
|---|---|
| 许可证 | Apache-2.0(✅ 宽松,规避 NPSL) |
| 语言 | Go(99.9%) |
| 协议覆盖 | 51 个自研服务检测插件,覆盖 TCP/UDP |
| OS 指纹 | 无(仅服务层) |
| 最新版本 | v1.1.19(2026-01-01) |
| 活跃度 | 147 commits,26 个 release,140 个依赖项目 |
| GitHub | https://github.com/praetorian-inc/fingerprintx |
支持的协议包括: HTTP/HTTPS、SSH、RDP、MySQL、PostgreSQL、MSSQL、OracleDB、MongoDB、Redis、Kafka、MQTT、SMB、VNC、Telnet、DNS、LDAP、Modbus、IPMI、Diameter、SMPP,以及向量数据库 ChromaDB/Milvus/Pinecone 等。
关键优势:
- 完全不依赖 nmap-service-probes,所有插件均为自研实现,是真正干净的 NPSL 替代
- JSON 输出,可作库导入
- fast 模式按端口默认服务优先探测
- Apache-2.0 许可证允许商业闭源使用
masscan — 高速扫描 + Banner 抓取
| 属性 | 详情 |
|---|---|
| 许可证 | AGPL-3.0(⚠️ copyleft,含网络服务传染条款) |
| 语言 | C |
| 协议覆盖 | ~13 种协议 banner 抓取(FTP/HTTP/IMAP4/memcached/POP3/SMTP/SSH/SSL/SMBv1/v2/Telnet/RDP/VNC) |
| OS 指纹 | 无 |
| 最新版本 | 1.3.x(持续更新) |
| 活跃度 | 892 commits,最后提交 2026-04 |
| GitHub | https://github.com/robertdavidgraham/masscan |
关键特性: 自研异步 TCP/IP 栈,单机 1000 万包/秒,可在 5 分钟内扫全网;输出兼容 nmap(XML/grepable/JSON);自带 banner 抓取实现(不依赖 nmap 库)。
许可风险: AGPL-3.0 含网络服务传染条款,若通过网络提供服务则需开源全部代码。
ZMap + ZGrab2 — 互联网级扫描
| 属性 | ZMap | ZGrab2 |
|---|---|---|
| 许可证 | Apache-2.0(✅ 宽松) | Apache-2.0(✅ 宽松) |
| 语言 | C(84.8%)+ Python | Go |
| 功能 | 无状态单包探测(TCP SYN/ICMP/DNS/UPnP/BACNET) | 应用层握手(HTTP/TLS/SSH/MySQL/Redis 等) |
| 最新版本 | v4.3.4(2025-05-12) | 持续更新 |
| 活跃度 | 1,411 commits,最后提交 2026-05 | 活跃 |
| GitHub | https://github.com/zmap/zmap | https://github.com/zmap/zgrab2 |
关键特性: 千兆网下 45 分钟扫完 IPv4 单端口,10G 网卡 + netmap/PF_RING 可 5 分钟扫完;学术界广泛引用(USENIX Security 论文);ZGrab2 做应用层握手但非自动识别,需预先指定协议。
关于 naabu 的 NPSL 警告
重要警示: naabu 本体(github.com/projectdiscovery/naabu)为 MIT 许可证,但其服务版本检测(-sV)直接调用 nmap-service-probes(NPSL!),因此在服务指纹维度并未真正规避 NPSL。如果您的项目依赖 naabu 的 -sV 功能识别服务版本,则依然受 NPSL 约束。仅端口扫描部分可安全使用。
OS 指纹替代方案
p0f — 被动 OS 指纹识别
| 属性 | 详情 |
|---|---|
| 许可证 | Apache-2.0(✅ 宽松,规避 NPSL) |
| 语言 | C |
| 协议覆盖 | TCP/IP(SYN/SYN+ACK 栈指纹)、HTTP 应用层指纹 |
| OS 指纹 | ✅ 有(被动式) — 可识别 OS、系统运行时间、NAT/代理检测、链路类型 |
| 最新版本 | v3.09b(2016) |
| 活跃度 | 21 commits,最后提交 2019-02 — 基本停止维护 |
| GitHub | https://github.com/p0f/p0f |
关键特性: 纯被动嗅探(仅凭一次 SYN 即可识别),适合 Nmap 主动探测被阻断/告警的场景;提供 unix socket API 供第三方查询;MTU/uptime/NAT 检测;自带 p0f.fp 指纹库。
局限: 项目已停止维护,指纹库不再更新;被动方式无法主动探测特定目标。
JA4+(FoxIO)— 网络指纹标准
| 属性 | 详情 |
|---|---|
| 许可证 | 混合 — JA4(TLS Client)为 BSD-3-Clause(✅ 宽松);JA4S/JA4L/JA4H/JA4X/JA4SSH/JA4T/JA4TS/JA4TScan 等为 FoxIO License 1.1(⚠️ 禁止商业转售) |
| 语言 | Rust / Python / C(Wireshark 插件)/ Zeek |
| 协议覆盖 | TLS、HTTP、SSH、X.509、TCP、DHCP/DHCPv6 |
| OS 指纹 | ✅ 有 — JA4T(被动 TCP 指纹)、JA4TScan(主动 TCP 扫描) |
| 最新版本 | Rust 实现约 v0.18.5;Zeek v1.2(2025-11) |
| 活跃度 | 503 commits,最后提交 2026-05,49 tags |
| GitHub | https://github.com/FoxIO-LLC/ja4 |
关键特性: a_b_c 局部保持格式,可按子串检索;已被 Wireshark/Zeek/Cloudflare/AWS/Palo Alto 等广泛集成;既可主动扫描又可被动检测;指纹数据库 ja4db.com 活跃开发中。
许可注意: JA4 本体 BSD-3 宽松;其余方法的 FoxIO License 1.1 对学术/内部使用宽容,但商业产品转售需 OEM 授权。
端口扫描替代
naabu(ProjectDiscovery)
| 属性 | 详情 |
|---|---|
| 许可证 | MIT(✅ 宽松) |
| 语言 | Go |
| 功能 | SYN/CONNECT/UDP 端口扫描 |
| OS 指纹 | 无 |
| 最新版本 | v2.x(持续更新) |
| 活跃度 | 2,091 commits,最后提交 2026-07-03 — 非常活跃 |
| GitHub | https://github.com/projectdiscovery/naabu |
关键特性: 轻量、CDN/WAF 排除、IPv4/IPv6、Shodan InternetDB 被动枚举、管道友好。
⚠️ 重要警示: naabu 本体虽为 MIT,但其服务版本检测(
-sV)直接调用 nmap-service-probes(NPSL!),因此在服务指纹维度并未真正规避 NPSL。仅端口扫描部分可安全使用。
端口扫描器对比
| 特性 | Nmap | masscan | ZMap | naabu |
|---|---|---|---|---|
| 许可证 | NPSL | AGPL-3.0 | Apache-2.0 | MIT |
| 扫描速度 | 中等 | 极快(1000万pps) | 极快(全网45分钟) | 快 |
| SYN 扫描 | ✅ | ✅ | ✅ | ✅ |
| UDP 扫描 | ✅ | 有限 | ✅(模块化) | ✅ |
| 服务检测 | ✅(NPSL) | Banner 仅 | ZGrab2 | ✅(⚠️ NPSL) |
| OS 检测 | ✅(NPSL) | ❌ | ❌ | ❌ |
| 规避 NPSL | — | ✅ | ✅ | ⚠️ 部分 |
Web 技术指纹替代
Nmap 在 Web 技术指纹方面并非强项,以下工具在此领域更具优势,且部分拥有宽松许可证。
httpx(ProjectDiscovery)— 首选 Web 探测
| 属性 | 详情 |
|---|---|
| 许可证 | MIT(✅ 宽松,规避 NPSL) |
| 语言 | Go |
| 功能 | URL/状态码/标题/TLS 证书/CSP/CDN/JARM/favicon hash/Web Server/技术检测(基于 Wappalyzer 数据集)、截图、ASN |
| 最新版本 | v1.8.x |
| 活跃度 | 2,791 commits,最后提交 2026-06,65 tags — 非常活跃 |
| GitHub | https://github.com/projectdiscovery/httpx |
关键特性: 多线程可靠探测、https↔http 自动回退、管道友好、自定义指纹文件 -cff、CPE 输出、内嵌 Wappalyzer 数据集做技术检测 -td。
WhatWeb — Web 扫描器
| 属性 | 详情 |
|---|---|
| 许可证 | GPL-2.0(⚠️ copyleft,规避 NPSL 但有传染性) |
| 语言 | Ruby |
| 插件数量 | 1800+ 插件 |
| 最新版本 | v0.6.4(2026-04-03) |
| 活跃度 | 6.7k stars,2026 年仍更新 — 活跃 |
| GitHub | https://github.com/urbanadventurer/WhatWeb |
关键特性: 分级探测(stealthy→aggressive→heavy),单请求即可识别;多日志格式(XML/JSON/SQL/MongoDB/ElasticSearch);Google Dork 集成;模糊匹配。
Wappalyzer — Web 技术指纹
| 属性 | 详情 |
|---|---|
| 许可证 | GPL-3.0(⚠️ copyleft) |
| 语言 | JavaScript/Node.js |
| 功能 | Web 技术栈识别 — CMS、框架、电商、JS 库、分析工具、Web 服务器等 |
| 活跃度 | 核心仓库活跃;指纹数据集被众多工具复用 |
| GitHub | https://github.com/wappalyzer/wappalyzer |
关键特性: 浏览器扩展 + CLI;CPE 支持;行业事实标准之一;指纹规则在 src/technologies/(正则匹配 HTML/JS/headers/cookies/meta/DNS 等)。
TideFinger — 中文 CMS 指纹库
| 属性 | 详情 |
|---|---|
| 许可证 | ❌ 未明确声明(仓库无 LICENSE 文件) |
| 语言 | Python |
| 指纹数量 | ~5,900 条 CMS 指纹 + ~2,119 条 fofa 库 |
| 活跃度 | 26 commits,最后提交 2021-08 — 已停止维护 |
| GitHub | https://github.com/TideSec/TideFinger |
关键特性: 整合 Wappalyzer、webanalyzer、fofa、WhatWeb 规则;传统+现代检测结合(MD5/URL/Header/正则/目录匹配);适合中文环境 CMS 识别。
⚠️ 许可风险: TideFinger 仓库无 LICENSE 文件,使用存在法律不确定性,不建议商用。同时注意,原 TophantTechnology/ARL 仓库已删除,社区维护的 Fork(如 Aabyss-Team/ARL)使用 MIT 许可证。
综合对比总表
| # | 库 | 许可证 | 类型 | 语言 | OS指纹 | 服务/Web覆盖 | 最新版本 | 活跃度 | 规避NPSL |
|---|---|---|---|---|---|---|---|---|---|
| 1 | fingerprintx | Apache-2.0 | 服务指纹 | Go | 无 | 51协议(TCP/UDP) | v1.1.19(2026-01) | 中 | ✅ 宽松 |
| 2 | p0f | Apache-2.0 | 被动OS指纹 | C | ✅ 被动 | TCP/IP+HTTP | v3.09b(2016) | 低(停更) | ✅ 宽松 |
| 3 | masscan | AGPL-3.0 | 端口扫描+banner | C | 无 | ~13协议banner | 持续更新 | 高 | ⚠️ copyleft |
| 4 | ZMap+ZGrab2 | Apache-2.0 | 互联网级扫描 | C+Go | 无 | 单包探测+应用层握手 | v4.3.4(2025-05) | 高 | ✅ 宽松 |
| 5 | naabu | MIT | 端口扫描 | Go | 无 | -sV复用nmap库 | v2.x | 极高 | ⚠️ 服务检测仍用NPSL |
| 6 | JA4+ | BSD-3+FoxIO1.1 | 网络指纹标准 | Rust/Py/C | ✅(JA4T/TScan) | TLS/HTTP/SSH/TCP/DHCP | v0.18.x | 高 | ⚠️ 部分宽松 |
| 7 | TideFinger | 未声明 | 中文CMS指纹 | Python | 无 | Web(CMS)~5900条 | 无release | 低(2021停更) | ❌ 许可不明 |
| 8 | Wappalyzer | GPL-3.0 | Web技术指纹 | JS | 无 | Web技术栈 | 持续更新 | 高 | ⚠️ copyleft |
| 9 | WhatWeb | GPL-2.0 | Web扫描器 | Ruby | 无 | 1800+插件 | v0.6.4(2026-04) | 高 | ⚠️ copyleft |
| 10 | httpx | MIT | Web探测 | Go | 无 | HTTP全维度+Wappalyzer | v1.8.x | 极高 | ✅ 宽松 |
指纹能力对比(vs Nmap)
OS 指纹维度(对标 nmap-os-db)
| 方案 | 能力 | 与 Nmap 对比 |
|---|---|---|
| nmap-os-db | 主动 TCP/IP 栈探测,6,036+ 指纹 | 基准(最全面) |
| p0f | 被动栈指纹,自带 p0f.fp | 被动、无告警,指纹库规模较小但实用;适合无法主动探测场景 |
| JA4T/JA4TScan | TCP 指纹 + DHCP 指纹 | 新方法,可识别主流 OS;指纹库 ja4db.com 持续扩充;支持主动扫描与被动监听 |
| 其余库 | 无 OS 指纹能力 | — |
服务指纹维度(对标 nmap-service-probes)
| 方案 | 能力 | 与 Nmap 对比 |
|---|---|---|
| nmap-service-probes | 12,089+ 签名,1,246+ 协议 | 基准(最全面,但 NPSL) |
| fingerprintx | 51 自研插件 | 最干净的 NPSL 替代;覆盖主流数据库/中间件/远程访问/工业协议 |
| masscan | ~13 协议 banner | 自研实现;偏 banner 抓取,深度不及 Nmap |
| ZMap + ZGrab2 | ZGrab2 应用层握手 | 自研;需预先指定协议,非自动识别 |
naabu -sV | 复用 nmap-service-probes | 未规避 NPSL,仅是 Nmap 库的 Go 封装 |
完全规避 NPSL 的组合方案
以下组合方案可在完全不触碰 NPSL 指纹库的前提下,构建覆盖端口扫描、服务检测、OS 识别和 Web 指纹的完整体系:
flowchart TD
A["NPSL-Free<br/>指纹识别体系"] --> B["端口扫描层"]
A --> C["服务指纹层"]
A --> D["OS 指纹层"]
A --> E["Web 指纹层"]
B --> B1["ZMap<br/>Apache-2.0<br/>全网高速 SYN"]
B --> B2["naabu<br/>MIT<br/>禁用 -sV"]
B --> B3["masscan<br/>AGPL-3.0<br/>极速扫描"]
C --> C1["fingerprintx<br/>Apache-2.0<br/>51 协议自研"]
C --> C2["ZGrab2<br/>Apache-2.0<br/>应用层握手"]
D --> D1["p0f<br/>Apache-2.0<br/>被动 TCP/IP"]
D --> D2["JA4T/JA4TScan<br/>BSD-3/FoxIO<br/>新一代 TCP"]
E --> E1["httpx<br/>MIT<br/>HTTP 全维度"]
E --> E2["WhatWeb<br/>GPL-2.0<br/>1800+ 插件"]
style A fill:#2196F3,color:#fff
style B fill:#4CAF50,color:#fff
style C fill:#4CAF50,color:#fff
style D fill:#4CAF50,color:#fff
style E fill:#4CAF50,color:#fff架构说明: 四层架构自上而下。端口扫描层使用 ZMap(互联网级)、naabu 禁用 -sV(内网)和 masscan(需注意 AGPL 传染性)。服务指纹层以 fingerprintx 的 51 个自研协议插件为核心,辅以 ZGrab2 做应用层握手。OS 指纹层由 p0f 的被动嗅探和 JA4T 新一代 TCP 指纹配合。Web 指纹层由 httpx 和 WhatWeb 覆盖全维度 Web 技术栈。
按场景推荐
| 使用场景 | 推荐方案 | 理由 |
|---|---|---|
| 服务指纹(干净替代) | fingerprintx | Apache-2.0,51 自研协议插件,不依赖 nmap 库 |
| OS 指纹(被动) | p0f | Apache-2.0,被动嗅探无告警;但已停更 |
| OS 指纹(新方法) | JA4T/JA4TScan | 新方法、活跃,注意 FoxIO 许可的商业限制 |
| 高速/全网扫描 | ZMap + ZGrab2 | Apache-2.0,学术界验证 |
| 高速端口扫描 | masscan | AGPL-3.0,注意网络传染条款 |
| Web 技术指纹 | httpx | MIT,内嵌 Wappalyzer 数据集 |
| Web 深度扫描 | WhatWeb | 1800+ 插件,GPL-2.0 |
| 端口扫描(MIT) | naabu(仅端口扫描) | MIT,但禁用 -sV 避免触发 NPSL |
组合方案 vs Nmap 能力覆盖对比
| 能力维度 | Nmap (NPSL) | NPSL-Free 组合方案 | 覆盖率 |
|---|---|---|---|
| 端口扫描 | ✅ SYN/Connect/UDP | ✅ ZMap + naabu | 95% |
| 服务检测 | ✅ 12,089 签名 / 1,246 协议 | ⚠️ fingerprintx 51 协议 + ZGrab2 | ~60% |
| OS 检测 | ✅ 6,036 指纹 | ⚠️ p0f 被动 + JA4T 主动 | ~40% |
| Web 指纹 | ❌ 基本不支持 | ✅ httpx + WhatWeb (超越 Nmap) | 200% |
| MAC OUI | ✅ 30,000+ | ❌ 需自行实现 | 0% |
| NSE 脚本 | ✅ 600+ | ❌ 无直接替代 | 0% |
小结
Nmap NPSL 许可证对指纹数据文件的宽泛定义,给基于 Nmap 指纹库的开发带来了不可忽视的合规风险。核心要点如下:
理解 NPSL 的边界:读取或嵌入
nmap-os-db/nmap-service-probes即构成衍生作品,须以 NPSL 兼容许可证发布。闭源商业产品使用必须购买 OEM 授权($59,980~$119,980 一次性)。naabu 的
-sV是合规陷阱:naabu 虽然是 MIT 许可证,但其服务版本检测功能仍复用 Nmap 的nmap-service-probes,在使用该功能时依然受 NPSL 约束。替代方案已经成熟:fingerprintx(51 自研协议,Apache-2.0)、p0f(被动 OS 指纹,Apache-2.0)、JA4+(新一代 TCP 指纹标准)、ZMap+ZGrab2(互联网级扫描,Apache-2.0)、httpx(Web 探测,MIT)等方案已具备相当的实用价值。
配合使用效果最佳:单一的替代方案无法完全取代 Nmap 的全部能力,但通过端口扫描 + 服务指纹 + OS 指纹 + Web 指纹的四层组合方案,可以在完全不触碰 NPSL 指纹库的前提下覆盖核心需求。
仍有差距:NPSL-Free 组合方案在服务检测深度(协议覆盖约 60%)和 OS 指纹规模(约 40%)方面仍有差距。如果需要达到 Nmap 级别的指纹覆盖深度,要么接受 NPSL 开源义务,要么购买 OEM 商业授权。