English |
简体中文 |
繁體中文 |
한국어 |
Deutsch |
Español |
Français |
Italiano |
Dansk |
日本語 |
Polski |
Русский |
Bosanski |
العربية |
Norsk |
Português (Brasil) |
ไทย |
Türkçe |
Українська |
বাংলা |
Ελληνικά |
Tiếng Việt |
हिन्दी
面向 AI 代理的通用数字指纹识别工具。
TCP, TLS/SSL, SSH, HTTP, DNS, WAF/CDN, IoT, SMTP, 服务探测, JARM, JA4X, favicon hashing, 基础设施拓扑, C2 检测, OSINT enrichment — 统一集成于单个 MCP 服务器中。
你的 AI 代理可以按需获取全频谱指纹识别能力,无需再使用 11 个互不相连的 CLI 工具并进行手动关联分析。
问题背景 •
独特优势 •
快速开始 •
AI 的能力 •
工具集 (13) •
数据源 •
架构 •
更新日志 •
贡献指南
## 问题背景
如今对服务器进行指纹识别意味着要同时操作十几个互不相干的工具。你需要运行 `nmap` 进行端口扫描,使用 `testssl.sh` 进行证书分析,通过 `curl -I` 获取 HTTP 头部信息,用 `dig` 查询 DNS,用 `wafw00f` 检测 WAF,用 `ssh-audit` 审计 SSH,还需要单独的 JARM 工具、用 Wappalyzer 进行技术栈检测 — 然后花上 30 分钟在电子表格中手动逐一比对所有结果,才能弄清楚到底运行了些什么。
```
Traditional fingerprinting workflow:
analyze TLS certificates -> testssl.sh / openssl s_client
grab HTTP headers -> curl -I
detect web technologies -> wappalyzer CLI
DNS reconnaissance -> dig / nslookup / dnsenum
port scanning -> nmap -sV
WAF detection -> wafw00f
SSH audit -> ssh-audit
service fingerprinting -> nmap scripts
JARM fingerprint -> jarm (separate tool)
check OSINT databases -> shodan CLI, censys CLI
correlate everything -> manually in a spreadsheet
──────────────────────────────
Total: 11 tools, 30+ minutes, manual correlation
```
**fingerprint-mcp** 通过 [Model Context Protocol](https://modelcontextprotocol.io) 为你的 AI 代理提供了 13 个组合工具,封装了来自 21 个提供商的 103 种指纹识别技术。该代理能够并行执行多层指纹识别,关联 TCP/TLS/HTTP/DNS/SSH 各层的信号特征,检测蜜罐和 C2 基础设施,并在单次对话中呈现出统一的情报视图。
```
With fingerprint-mcp:
You: "Do a deep recon on target.com"
Agent: -> recon {url: "https://target.com", depth: "deep"}
-> TLS: nginx/1.24.0 via JARM (3fd21b20d00000...),
Let's Encrypt cert, 2 SANs, TLS 1.2+1.3
-> HTTP: Express.js behind Cloudflare WAF,
React SPA, Google Analytics, 14 security headers analyzed
-> DNS: A/AAAA/MX/TXT records, SPF/DKIM/DMARC configured,
Slack + Google Workspace detected via CNAME/MX
-> Ports: 80, 443, 22 (OpenSSH 9.6), 8080 (dev server)
-> WAF: Cloudflare detected, origin IP discovered via direct-connect
-> Enumeration: 12 subdomains via CT logs, wildcard DNS detected
-> "target.com runs nginx/1.24.0 with Express.js behind
Cloudflare WAF. Origin IP 203.0.113.42 exposed on port 8080.
TLS is properly configured (A+ equivalent) but the dev server
on 8080 has no WAF protection. 3 subdomains point to
decommissioned infrastructure — potential takeover risk."
```
## 独特优势
现有的工具一次只能提供单层的原始数据。而 fingerprint-mcp 赋予了你的 AI 代理**同时跨所有指纹识别层进行推理**的能力。
|
传统方式 |
fingerprint-mcp |
| 接口 |
11 个输出格式各异的独立 CLI 工具 |
MCP — AI 代理通过自然对话调用工具 |
| 技术手段 |
一个工具,一次只能处理一层 |
涵盖 21 家提供商的 103 种技术,并行执行 |
| TLS 分析 |
testssl.sh 输出,并需单独手动解析 JARM |
代理在一次调用中结合了证书 + JARM + JA4X + 密码套件 + SNI + CT 日志 |
| 关联分析 |
将结果复制粘贴到电子表格中 |
代理自动交叉关联:“JARM 匹配已知 C2 框架,HTTP 计时特征确认为蜜罐” |
| WAF 绕过 |
wafw00f 检测到 WAF 后,你需手动搜寻源站 IP |
代理检测到 WAF 后,自动发现源站 IP,并验证其提供相同内容 |
| API 密钥 |
使用 Shodan、Censys 等必需 |
80+ 种活跃技术无需任何 API 密钥即可工作;密钥用于解锁更丰富的 OSINT 数据 |
| 配置 |
需安装 nmap, testssl, wafw00f, ssh-audit, jarm, wappalyzer... |
npx fingerprint-mcp — 一行命令,零配置 |
## 快速开始
### 选项 1:npx(免安装)
```
npx fingerprint-mcp
```
所有 80 多种活跃指纹识别技术均可立即使用。进行 TCP, TLS, SSH, HTTP, DNS, WAF, 路径, 服务, 计时, IoT, SMTP, 基础设施以及应用指纹识别均无需 API 密钥。
### 选项 2:克隆代码库
```
git clone https://github.com/badchars/fingerprint-mcp.git
cd fingerprint-mcp
bun install
```
### 环境变量(可选)
```
# OSINT enrichment(均为可选 — active fingerprinting 无需任何 keys 即可工作)
export SHODAN_API_KEY=your-key # Enables osint_shodan, ssh_hostkey_lookup
export CENSYS_API_ID=your-id # Enables osint_censys (free: 250 queries/month)
export CENSYS_API_SECRET=your-secret # Censys API secret
export SECURITYTRAILS_API_KEY=your-key # Enables waf_origin, enum_passive_dns
export VIRUSTOTAL_API_KEY=your-key # Enables osint_virustotal (free: 500 queries/day)
```
所有 API 密钥均为可选项。即使没有这些密钥,你依然可以使用完整的 TCP/TLS/SSH/HTTP/DNS/WAF/路径/服务/计时/IoT/SMTP/基础设施/应用指纹识别、关联分析、被动分析、枚举以及元工具 — 包含 80 多种通过直接探测目标生效的技术。
### 连接到你的 AI 代理
Claude Code
```
# 使用 npx
claude mcp add fingerprint-mcp -- npx fingerprint-mcp
# 使用 local clone
claude mcp add fingerprint-mcp -- bun run /path/to/fingerprint-mcp/src/index.ts
```
Claude Desktop
添加至 `~/Library/Application Support/Claude/claude_desktop_config.json`:
```
{
"mcpServers": {
"fingerprint": {
"command": "npx",
"args": ["-y", "fingerprint-mcp"],
"env": {
"SHODAN_API_KEY": "optional",
"CENSYS_API_ID": "optional",
"CENSYS_API_SECRET": "optional",
"SECURITYTRAILS_API_KEY": "optional",
"VIRUSTOTAL_API_KEY": "optional"
}
}
}
}
```
Cursor / Windsurf / 其他 MCP 客户端
使用相同的 JSON 配置格式。将命令指向 `npx fingerprint-mcp` 或你的本地安装路径。
### 开始查询
```
You: "Fingerprint everything about target.com — TLS, HTTP stack, WAF, DNS, open ports"
```
就这样。代理会自动处理多层指纹识别、信号关联以及基础设施分析。
## AI 的能力
### 快速侦察
```
You: "Quick recon on target.com"
Agent: -> recon {url: "https://target.com", depth: "quick"}
-> TCP: ports 80, 443, 22 open
-> TLS: Let's Encrypt RSA cert, TLS 1.2+1.3, nginx JARM signature
-> HTTP: nginx/1.24.0, Express.js, React, Cloudflare CDN
-> DNS: A 203.0.113.42, MX Google Workspace, SPF/DKIM configured
-> WAF: Cloudflare detected (cf-ray header)
-> "target.com is a React SPA on Express.js behind nginx/1.24.0,
served through Cloudflare CDN. TLS properly configured with
Let's Encrypt. SSH on port 22 running OpenSSH 9.6. Email
handled by Google Workspace with full SPF/DKIM/DMARC."
```
### 深度 TLS 调查
```
You: "Analyze the TLS configuration of suspicious-server.com in detail"
Agent: -> scan_tls {host: "suspicious-server.com"}
-> Certificate: self-signed, CN=localhost, expired 47 days ago
-> JARM: 2ad2ad0002ad2ad00042d42d00000069d641f34fe76acdc05c40262f8815e5
(matches Cobalt Strike default profile)
-> JA4X: fingerprint matches known C2 framework pattern
-> Cipher suites: accepts weak ciphers (RC4, 3DES)
-> SNI: responds identically to any SNI value
-> CT logs: certificate not logged (not publicly trusted)
-> "HIGH RISK: TLS configuration strongly indicates C2 infrastructure.
Self-signed expired cert, JARM fingerprint matches Cobalt Strike,
accepts weak ciphers, and responds to arbitrary SNI values.
Recommend immediate investigation and blocking."
```
### WAF 绕过与源站发现
```
You: "target.com is behind a WAF. Can you find the origin server?"
Agent: -> scan_waf {url: "https://target.com"}
-> scan_dns {domain: "target.com"}
-> enumerate {domain: "target.com"}
-> WAF: Cloudflare (AS13335), challenge page on suspicious requests
-> DNS: A record points to Cloudflare IP 104.21.x.x
-> Subdomains: dev.target.com resolves to 203.0.113.42 (non-Cloudflare)
-> Direct connect to 203.0.113.42:443 returns same TLS cert
-> SecurityTrails historical: origin was 203.0.113.42 before Cloudflare
-> "Origin IP found: 203.0.113.42. Discovered via dev.target.com
subdomain which bypasses Cloudflare. The origin serves the same
TLS certificate and responds to the target.com Host header.
Origin has no WAF protection — direct access possible."
```
### 主机上的服务发现
```
You: "What services are running on 10.0.1.50?"
Agent: -> scan_ports {host: "10.0.1.50"}
-> scan_services {host: "10.0.1.50", ports: [22, 80, 3306, 5432, 6379, 8080]}
-> Port 22: OpenSSH 8.9p1 Ubuntu, ED25519 host key
-> Port 80: Apache/2.4.57, PHP/8.2, WordPress 6.4
-> Port 3306: MySQL 8.0.36, authentication required
-> Port 5432: PostgreSQL 16.1, SSL required
-> Port 6379: Redis 7.2.4, NO authentication (open)
-> Port 8080: Node.js Express dev server, CORS: *
-> "CRITICAL: Redis on port 6379 has no authentication — anyone on
the network can read/write data. The Express dev server on 8080
has wildcard CORS. MySQL and PostgreSQL properly require auth.
WordPress is 2 minor versions behind. Immediate action needed
on Redis and the dev server exposure."
```
## 工具参考(13 个工具,103 种技术)
recon — 具备基于深度选择技术的全面侦察
| 参数 | 类型 | 描述 |
|-----------|------|-------------|
| `url` | string | 指纹识别的目标 URL |
| `depth` | `quick` \| `standard` \| `deep` | 扫描深度:quick=5 种技术,standard=20 种,deep=50+ 种 |
根据深度级别编排来自所有提供商的技术。快速模式提供快速概览;深度模式执行包含枚举、OSINT 和关联分析的详尽指纹识别。
scan_ports — 带有服务检测的 TCP 端口扫描(3 种技术)
| 参数 | 类型 | 描述 |
|-----------|------|-------------|
| `host` | string | 目标主机(IP 或域名) |
| `ports` | number[] | 可选 — 指定要扫描的端口(默认为常用端口) |
| 技术 | 描述 |
|-----------|-------------|
| `tcp_probe` | TCP connect 扫描以检测开放端口 |
| `tcp_banner` | 在开放端口上进行 banner grabbing 以识别服务 |
| `tcp_analysis` | 端口组合分析与服务推断 |
scan_tls — 完整的 TLS/SSL 分析(8 种技术)
| 参数 | 类型 | 描述 |
|-----------|------|-------------|
| `host` | string | 目标主机(IP 或域名) |
| `port` | number | 可选 — TLS 端口(默认:443) |
| 技术 | 描述 |
|-----------|-------------|
| `tls_certificate` | X.509 证书解析 — 主体、签发者、SAN、有效期、证书链 |
| `tls_jarm` | JARM 主动指纹识别 — 10 次 TLS Client Hello 探测,生成 62 字符哈希 |
| `tls_ja4x` | 基于证书属性的 JA4X 被动 TLS 指纹识别 |
| `tls_ciphers` | 密码套件枚举与强度分析 |
| `tls_protocols` | 支持的 TLS 协议版本检测(从 SSLv3 到 TLS 1.3) |
| `tls_sni` | SNI 行为测试 — 默认证书与请求的主机名对比 |
| `tls_ct_logs` | 通过 crt.sh 查询 Certificate Transparency 日志 |
| `tls_ocsp` | OCSP 装订与吊销状态检查 |
scan_dns — DNS 情报(7 种技术)
| 参数 | 类型 | 描述 |
|-----------|------|-------------|
| `domain` | string | 目标域名 |
| 技术 | 描述 |
|-----------|-------------|
| `dns_records` | 完整的记录枚举 — A, AAAA, MX, NS, TXT, CNAME, SOA |
| `dns_email_auth` | SPF, DKIM 和 DMARC 记录分析 |
| `dns_saas` | 通过 CNAME 和 MX 模式检测 SaaS/服务(Slack、Zendesk 等) |
| `dns_server` | DNS 服务器指纹识别(BIND、PowerDNS、Cloudflare 等) |
| `dns_takeover` | 通过悬挂的 CNAME 分析检测子域接管 |
| `dns_zone` | 尝试区域传送(AXFR) |
| `dns_caa` | 针对证书颁发机构限制的 CAA 记录分析 |
scan_http — HTTP/网络指纹识别(29 种技术)
| 参数 | 类型 | 描述 |
|-----------|------|-------------|
| `url` | string | 目标 URL |
| 技术 | 提供商 | 描述 |
|-----------|----------|-------------|
| `http_headers` | HTTP | 响应头分析与服务器识别 |
| `http_header_order` | HTTP | Header 顺序指纹(服务器软件签名) |
| `http_security_headers` | HTTP | 安全 header 审计(CSP、HSTS、X-Frame-Options 等) |
| `http_cookies` | HTTP | Cookie 分析 — 标志、前缀、框架检测 |
| `http_methods` | HTTP | 允许的 HTTP 方法枚举 (OPTIONS) |
| `http_cors` | HTTP | CORS 策略分析与配置错误检测 |
| `http_compression` | HTTP | 支持的压缩算法(gzip、br、zstd) |
| `http_caching` | HTTP | 缓存头部分析(CDN、反向代理检测) |
| `http_etag` | HTTP | 通过 ETag 格式分析识别后端 |
| `http_error` | HTTP | 错误页面指纹识别(自定义与默认错误页面对比) |
| `http_redirect` | HTTP | 重定向链分析 |
| `http_timing` | HTTP | 用于服务器性能分析响应计时基准 |
| `http_favicon` | HTTP |技术识别的 Favicon 哈希(MurmurHash3) |
| `http_robots` | HTTP | robots.txt 解析与禁止路径提取 |
| `http_sitemap` | HTTP | Sitemap 发现与 URL 提取 |
| `http_wellknown` | HTTP | .well-known endpoint 发现(security.txt、openid 等) |
| `web_tech` | Web | 通过 HTML/JS/CSS 模式进行技术检测 |
| `web_analytics` | Web | 分析与跟踪服务检测 |
| `web_sourcemaps` | Web | Source map 文件发现 |
| `web_websocket` | Web | WebSocket endpoint 检测 |
| `web_graphql` | Web | GraphQL endpoint 检测与内省 |
| `web_spa` | Web | 单页应用框架检测 |
| `web_cdn` | Web | 通过响应 header 和 DNS 检测 CDN |
| `web_meta` | Web | HTML meta 标签分析(生成器、框架提示) |
| `web_feed` | Web | RSS/Atom feed 发现 |
| `h2_detect` | HTTP/2 | HTTP/2 协议支持检测 |
| `h2_fingerprint` | HTTP/2 | HTTP/2 服务器指纹识别(SETTINGS、WINDOW_UPDATE) |
| `h2_h3` | HTTP/2 | 通过 Alt-Svc header 检测 HTTP/3 (QUIC) 支持 |
| `app_cms` | Application | CMS 检测(WordPress、Drupal、Joomla 等) |
scan_paths — 路径情报(5 种技术)
| 参数 | 类型 | 描述 |
|-----------|------|-------------|
| `url` | string | 目标 URL |
| `categories` | string[] | 可选 — 要检查的类别(敏感、git、调试、api、配置) |
| 技术 | 描述 |
|-----------|-------------|
| `path_sensitive` | 敏感文件发现(备份文件、配置文件、数据库转储) |
| `path_robots` | 分析 robots.txt 和 sitemap.xml 寻找隐藏路径 |
| `path_git` | Git 仓库泄漏检测(.git/HEAD、.git/config) |
| `path_debug` | Debug endpoint 发现(phpinfo、server-status、debug 控制台) |
| `path_api` | API 版本与文档 endpoint 发现 |
scan_waf — WAF/CDN 检测与指纹识别(4 种技术)
| 参数 | 类型 | 描述 |
|-----------|------|-------------|
| `url` | string | 目标 URL |
| 技术 | 描述 |
|-----------|-------------|
| `waf_detect` | 通过响应 header 和行为分析检测 WAF 存在 |
| `waf_cdn` | CDN 提供商识别(Cloudflare、Akamai、Fastly 等) |
| `waf_fingerprint` | WAF 产品识别与版本检测 |
| `waf_origin` | 发掘 WAF/CDN 背后的源站 IP(需要 `SECURITYTRAILS_API_KEY`) |
scan_services — 服务级探测(12 种技术)
| 参数 | 类型 | 描述 |
|-----------|------|-------------|
| `host` | string | 目标主机(IP 或域名) |
| `ports` | number[] | 可选 — 要探测的特定端口 |
| `service` | string | 可选 — 要探测的特定服务(mysql、postgres、redis、ftp、ssh、smtp、vnc、iot) |
| 技术 | 提供商 | 描述 |
|-----------|----------|-------------|
| `ssh_probe` | SSH | SSH 协议版本与软件检测 |
| `ssh_algorithms` | SSH | SSH 算法审计(KEX、密码、MAC、主机密钥类型) |
| `ssh_hostkey_lookup` | SSH | 通过 Shodan 查询 SSH 主机密钥(需要 `SHODAN_API_KEY`) |
| `svc_mysql` | Service | MySQL 版本检测与能力指纹识别 |
| `svc_postgres` | Service | PostgreSQL 版本检测与 SSL 支持检查 |
| `svc_redis` | Service | Redis 版本检测与认证状态 |
| `svc_ftp` | Service | FTP banner 分析与匿名登录检查 |
| `svc_vnc_rdp` | Service | VNC/RDP 服务检测与安全评估 |
| `smtp_banner` | SMTP | SMTP banner 分析与 MTA 识别 |
| `smtp_starttls` | SMTP | SMTP STARTTLS 支持与证书检查 |
| `iot_detect` | IoT | 通过 banner 模式与默认页面检测 IoT 设备 |
| `iot_upnp` | IoT | 本地网络上的 UPnP/SSDP 设备发现 |
enumerate — 范围扩展(8 种技术)
| 参数 | 类型 | 描述 |
|-----------|------|-------------|
| `domain` | string | 目标域名 |
| 技术 | 描述 |
|-----------|-------------|
| `enum_subdomains` | 通过多种方法进行子域名枚举 |
| `enum_wildcard` | 通配符 DNS 检测 |
| `enum_tld` | TLD 扩展(target.com -> target.net、target.org 等) |
| `enum_related` | 通过共享的基础设施发现相关域名 |
| `enum_asn` | ASN 邻居发现 — 同一网络上的其他域名 |
| `enum_ct` | 通过 Certificate Transparency 日志提取子域名 |
| `enum_passive_dns` | 被动 DNS 历史(需要 `SECURITYTRAILS_API_KEY`) |
| `enum_scope` | 范围总结与攻击面概览 |
osint — OSINT 丰富化(6 种技术)
| 参数 | 类型 | 描述 |
|-----------|------|-------------|
| `target` | string | 要丰富化的 IP 地址或域名 |
| `type` | `ip` \| `domain` | 可选 — 目标类型(如省略将自动检测) |
| 技术 | 认证 | 描述 |
|-----------|------|-------------|
| `osint_shodan` | `SHODAN_API_KEY` | Shodan 主机查询 — 开放端口、banner、漏洞、OS |
| `osint_censys` | `CENSYS_API_ID` + `CENSYS_API_SECRET` | Censys 主机数据 — 服务、TLS、自治系统 |
| `osint_reverse_ip` | 无 | 反向 IP 查询 — 同一 IP 上的其他域名 |
| `osint_whois` | 无 | WHOIS 注册数据 — 注册商、日期、域名服务器 |
| `osint_webarchive` | 无 | Web Archive 历史 — 首次/最近快照、更改频率 |
| `osint_virustotal` | `VIRUSTOTAL_API_KEY` | VirusTotal 域名/IP 报告 — 检测、类别、DNS |
analyze — 被动指纹分析(3 种模式)
| 参数 | 类型 | 描述 |
|-----------|------|-------------|
| `type` | `headers` \| `html` \| `banner` | 要分析的数据类型 |
| `data` | string | 要分析的原始数据(粘贴 header、HTML 或 banner 输出) |
| 模式 | 描述 |
|------|-------------|
| `fp_analyze_headers` | 被动 HTTP header 分析 — 无需发送流量即可进行服务器、框架、代理检测 |
| `fp_analyze_html` | 被动 HTML 分析 — 从源代码进行技术检测、框架识别 |
| `fp_analyze_banner` | 被动 banner 分析 — 从原始 banner 文本进行服务识别 |
correlate — 多信号关联引擎(7 种模式)
| 参数 | 类型 | 描述 |
|-----------|------|-------------|
| `type` | `consistency` \| `honeypot` \| `spoofing` \| `compare` \| `topology` \| `c2` \| `identify` | 关联模式 |
| `signals` | object | 要关联的指纹信号(因模式而异) |
| 模式 | 描述 |
|------|-------------|
| `fp_consistency` | 跨层信号一致性检查 — TCP、TLS、HTTP 和 DNS 指纹是否一致? |
| `fp_honeypot` | 蜜罐检测 — 检查不可能存在的服务组合及行为异常 |
| `fp_spoofing` | 欺骗检测 — 识别不匹配的服务器 header 与实际行为 |
| `fp_compare` | 并排对比两台主机的指纹特征 |
| `fp_topology` | 基础设施拓扑映射 — CDN、负载均衡器、反向代理链 |
| `fp_c2` | 通过 JARM、TLS、HTTP 和计时关联进行 C2 框架检测 |
| `fp_identify` | 针对已知签名数据库的基于哈希的识别 |
meta — 服务器配置与数据(3 种模式)
| 参数 | 类型 | 描述 |
|-----------|------|-------------|
| `category` | string | 可选 — 按类别过滤 |
| 模式 | 描述 |
|------|-------------|
| `fp_sources` | 列出所有可用的数据源、配置及 API 密钥状态 |
| `fp_config` | 服务器配置 — 版本、已加载的提供商、技术数量 |
| `fp_signatures` | 签名数据库列表 — JARM、banner、WAF、应用程序签名 |
### CLI 用法
```
# 列出所有可用的工具和技术
npx fingerprint-mcp --list
# 直接运行任何工具
npx fingerprint-mcp --tool recon '{"url":"https://example.com","depth":"quick"}'
npx fingerprint-mcp --tool scan_tls '{"host":"example.com"}'
npx fingerprint-mcp --tool scan_ports '{"host":"10.0.1.50","ports":[22,80,443,3306,8080]}'
npx fingerprint-mcp --tool scan_dns '{"domain":"example.com"}'
npx fingerprint-mcp --tool scan_http '{"url":"https://example.com"}'
npx fingerprint-mcp --tool scan_waf '{"url":"https://example.com"}'
npx fingerprint-mcp --tool scan_services '{"host":"10.0.1.50","service":"redis"}'
npx fingerprint-mcp --tool enumerate '{"domain":"example.com"}'
npx fingerprint-mcp --tool analyze '{"type":"headers","data":"Server: nginx/1.24.0\nX-Powered-By: Express"}'
npx fingerprint-mcp --tool correlate '{"type":"honeypot","signals":{"jarm":"...","banner":"..."}}'
npx fingerprint-mcp --tool meta '{}'
# OSINT 工具(需要 API keys)
SHODAN_API_KEY=your-key npx fingerprint-mcp --tool osint '{"target":"203.0.113.42","type":"ip"}'
```
## 数据源(21)
| 源 | 认证 | 提供的内容 |
|--------|------|-----------------|
| TCP 探测 | 无 | 端口扫描、banner grabbing、服务检测 |
| TLS/SSL 分析 | 无 | 证书解析、JARM 指纹识别、JA4X、密码枚举、SNI 测试 |
| SSH 探测 | 无 | 协议版本、算法审计、软件检测 |
| HTTP 分析 | 无 | Header 指纹识别、favicon hashing、cookie 分析、方法枚举、CORS |
| Web 检测 | 无 | 技术检测、分析、Source maps、WebSocket、GraphQL、SPA 框架 |
| 路径发现 | 无 | 敏感文件、Git 泄漏、debug endpoint、API 版本、robots.txt |
| DNS 解析 | 无 | 记录枚举、电子邮件认证分析、SaaS 检测、服务器指纹识别 |
| WAF/CDN 检测 | 无 | WAF 识别、CDN 检测、WAF 指纹识别 |
| 计时分析 | 无 | 响应计时基准、时钟偏差检测 |
| HTTP/2 与 HTTP/3 | 无 | HTTP/2 检测与指纹识别、HTTP/3 Alt-Svc 发现 |
| SMTP 探测 | 无 | SMTP banner 分析、STARTTLS 检查 |
| IoT/嵌入式 | 无 | IoT 设备检测、UPnP/SSDP 发现 |
| 应用检测 | 无 | CMS、框架及电子商务平台识别 |
| 服务探测 | 无 | MySQL、PostgreSQL、Redis、FTP、VNC/RDP 指纹识别 |
| 基础设施检测 | 无 | 云提供商、托管提供商、CDN 识别 |
| 关联引擎 | 无 | 信号一致性、蜜罐检测、欺骗检测、拓扑映射 |
| 识别引擎 | 无 | 基于哈希的识别、C2 检测、签名匹配 |
| [Shodan](https://www.shodan.io) | `SHODAN_API_KEY` | 主机情报 — 开放端口、banner、漏洞、OS 检测 |
| [Censys](https://censys.io) | `CENSYS_API_ID` | 主机数据 — 服务、TLS 证书、自治系统信息 |
| [SecurityTrails](https://securitytrails.com) | `SECURITYTRAILS_API_KEY` | WAF 源站发现、被动 DNS 历史、历史记录 |
| [VirusTotal](https://www.virustotal.com) | `VIRUSTOTAL_API_KEY` | 域名/IP 信誉、检测结果、DNS 历史、分类 |
## 架构
```
src/
index.ts # CLI entrypoint (--help, --list, --tool, stdio server)
protocol/
mcp-server.ts # MCP server setup (stdio transport)
tools.ts # Tool registry — all 13 composite tools registered here
types/
index.ts # Shared types (ToolDef, ToolContext, ToolResult)
utils/
rate-limiter.ts # Per-provider rate limiter
cache.ts # TTL cache for API responses
require-key.ts # API key validation helper
murmurhash3.ts # MurmurHash3 for favicon hashing
composite/ # 13 composite tool orchestrators
recon.ts # Full recon orchestrator (quick/standard/deep)
scan-ports.ts # Port scanning composite
scan-tls.ts # TLS analysis composite
scan-dns.ts # DNS intelligence composite
scan-http.ts # HTTP fingerprinting composite
scan-paths.ts # Path discovery composite
scan-waf.ts # WAF/CDN detection composite
scan-services.ts # Service probing composite
analyze.ts # Passive analysis composite
correlate.ts # Correlation engine composite
enumerate.ts # Scope expansion composite
osint.ts # OSINT enrichment composite
meta.ts # Server meta composite
helpers.ts # Shared composite helpers
tcp/ # TCP probing techniques (3)
tls/ # TLS/SSL analysis techniques (8)
ssh/ # SSH probing techniques (3)
http/ # HTTP fingerprinting techniques (16)
web/ # Web technology detection techniques (9)
path/ # Path discovery techniques (5)
dns/ # DNS intelligence techniques (7)
waf/ # WAF/CDN detection techniques (4)
timing/ # Timing analysis techniques (2)
h2/ # HTTP/2 & HTTP/3 techniques (3)
smtp/ # SMTP probing techniques (2)
iot/ # IoT/embedded detection techniques (2)
app/ # Application detection techniques (3)
service/ # Service probing techniques (5)
infra/ # Infrastructure detection techniques (3)
correlation/ # Correlation engine (5)
identify/ # Identification engine (3)
passive/ # Passive analysis (3)
osint/ # OSINT enrichment techniques (6)
enum/ # Enumeration techniques (8)
meta/ # Meta tools (3)
data/ # Signature databases and pattern libraries
jarm-signatures.ts # Known JARM fingerprints (C2, servers, CDNs)
waf-signatures.ts # WAF detection signatures
service-banners.ts # Service banner patterns
tech-patterns.ts # Technology detection patterns
favicon-hashes.ts # Known favicon MurmurHash3 values
c2-signatures.ts # C2 framework signatures
... # 15+ signature/pattern databases
```
**设计决策:**
- **13 个组合工具,103 种技术** — 代理调用高级工具(`recon`、`scan_tls`、`scan_http`)。每个组合工具都会编排多种底层技术并返回关联后的结果。这减少了工具调用开销,同时保持了颗粒度。
- **21 个提供商,1 个服务器 — 每个指纹识别层都是独立的模块。组合编排器会根据上下文和深度选择技术。
- **主动探测优先,OSINT 可选** — 80 多种技术通过零 API 密钥直接探测目标即可工作。OSINT 提供商(Shodan、Censys、VirusTotal、SecurityTrails)可增加数据丰富度,但绝非必需。
- **每个提供商独立的速率限制器** — 每个提供商都有自己的 `RateLimiter` 实例。主动探测受到速率限制以避免被检测到;OSINT API 则根据其配额进行校准。
- **TTL 缓存** — 对 DNS 记录(10 分钟)、OSINT 结果(15 分钟)、CT 日志(30 分钟)进行缓存,以避免在多工具工作流程中进行冗余查询。
- **优雅降级** — 缺失 API 密钥不会导致服务器崩溃。OSINT 工具会返回描述性信息:“设置 SHODAN_API_KEY 以启用 Shodan 主机查询。”
- **3 个依赖项** — `@modelcontextprotocol/sdk`、`zod` 和 `cheerio`。所有网络 I/O 均通过原生 `fetch()` 以及 Node.js 的 `net`/`tls`/`dns` 模块完成。无需 nmap,也无需外部二进制文件。
## 局限性
- OSINT 工具(Shodan、Censys、VirusTotal、SecurityTrails)需要 API 密钥才能使用相应的技术
- Censys 免费套餐限制为每月 250 次查询
- VirusTotal 免费套餐限制为每天 500 次查询
- 端口扫描使用 TCP connect(而非 SYN 扫描) — 隐蔽性不如 nmap,但无需 root 权限
- JARM 指纹识别需要到目标的直接 TCP 访问权限(可能会被防火墙拦截)
- UPnP/SSDP 发现仅在本地网络上有效
- 服务探测(MySQL、PostgreSQL、Redis)会建立连接但不进行认证
- 子域名枚举依赖于 CT 日志和被动来源(不进行暴力破解)
- 已在 macOS / Linux 上测试(未在 Windows 上测试)
## MCP Security Suite 的一部分
| 项目 | 领域 | 工具 |
|---|---|---|
| [hackbrowser-mcp](https://github.com/badchars/hackbrowser-mcp) | 基于浏览器的安全测试 | 39 个工具,Firefox,注入测试 |
| [cloud-audit-mcp](https://github.com/badchars/cloud-audit-mcp) | 云安全(AWS/Azure/GCP) | 38 个工具,60+ 项检查 |
| [github-security-mcp](https://github.com/badchars/github-security-mcp) | GitHub 安全态势 | 39 个工具,45 项检查 |
| [cve-mcp](https://github.com/badchars/cve-mcp) | 漏洞情报 | 23 个工具,5 个来源 |
| [osint-mcp-server](https://github.com/badchars/osint-mcp-server) | OSINT 与侦察 | 37 个工具,12 个来源 |
| [darknet-mcp-server](https://github.com/badchars/darknet-mcp-server) | 暗网与威胁情报 | 66 个工具,16 个来源 |
| **fingerprint-mcp** | **通用数字指纹识别** | **13 个工具,103 种技术,21 个提供商** |
仅供授权的安全测试和评估使用。
在对任何目标执行指纹识别之前,请务必确保你已获得适当的授权。
AGPL-3.0 许可证 • 使用 Bun + TypeScript 构建