fingerprint-mcp 0.1.0

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.
Files changed (269) hide show
  1. package/LICENSE +663 -0
  2. package/README.ar.md +767 -0
  3. package/README.bn.md +767 -0
  4. package/README.bs.md +767 -0
  5. package/README.da.md +767 -0
  6. package/README.de.md +770 -0
  7. package/README.el.md +767 -0
  8. package/README.es.md +769 -0
  9. package/README.fr.md +769 -0
  10. package/README.hi.md +767 -0
  11. package/README.it.md +767 -0
  12. package/README.ja.md +767 -0
  13. package/README.ko.md +772 -0
  14. package/README.md +767 -0
  15. package/README.no.md +767 -0
  16. package/README.pl.md +767 -0
  17. package/README.pt-BR.md +767 -0
  18. package/README.ru.md +767 -0
  19. package/README.th.md +767 -0
  20. package/README.tr.md +767 -0
  21. package/README.uk.md +767 -0
  22. package/README.vi.md +767 -0
  23. package/README.zh-TW.md +768 -0
  24. package/README.zh.md +768 -0
  25. package/dist/app/index.d.ts +3 -0
  26. package/dist/app/index.d.ts.map +1 -0
  27. package/dist/app/index.js +614 -0
  28. package/dist/app/index.js.map +1 -0
  29. package/dist/composite/analyze.d.ts +3 -0
  30. package/dist/composite/analyze.d.ts.map +1 -0
  31. package/dist/composite/analyze.js +59 -0
  32. package/dist/composite/analyze.js.map +1 -0
  33. package/dist/composite/correlate.d.ts +3 -0
  34. package/dist/composite/correlate.d.ts.map +1 -0
  35. package/dist/composite/correlate.js +184 -0
  36. package/dist/composite/correlate.js.map +1 -0
  37. package/dist/composite/enumerate.d.ts +3 -0
  38. package/dist/composite/enumerate.d.ts.map +1 -0
  39. package/dist/composite/enumerate.js +94 -0
  40. package/dist/composite/enumerate.js.map +1 -0
  41. package/dist/composite/helpers.d.ts +22 -0
  42. package/dist/composite/helpers.d.ts.map +1 -0
  43. package/dist/composite/helpers.js +111 -0
  44. package/dist/composite/helpers.js.map +1 -0
  45. package/dist/composite/index.d.ts +3 -0
  46. package/dist/composite/index.d.ts.map +1 -0
  47. package/dist/composite/index.js +29 -0
  48. package/dist/composite/index.js.map +1 -0
  49. package/dist/composite/meta.d.ts +3 -0
  50. package/dist/composite/meta.d.ts.map +1 -0
  51. package/dist/composite/meta.js +23 -0
  52. package/dist/composite/meta.js.map +1 -0
  53. package/dist/composite/osint.d.ts +3 -0
  54. package/dist/composite/osint.d.ts.map +1 -0
  55. package/dist/composite/osint.js +40 -0
  56. package/dist/composite/osint.js.map +1 -0
  57. package/dist/composite/recon.d.ts +3 -0
  58. package/dist/composite/recon.d.ts.map +1 -0
  59. package/dist/composite/recon.js +131 -0
  60. package/dist/composite/recon.js.map +1 -0
  61. package/dist/composite/scan-dns.d.ts +3 -0
  62. package/dist/composite/scan-dns.d.ts.map +1 -0
  63. package/dist/composite/scan-dns.js +44 -0
  64. package/dist/composite/scan-dns.js.map +1 -0
  65. package/dist/composite/scan-http.d.ts +3 -0
  66. package/dist/composite/scan-http.d.ts.map +1 -0
  67. package/dist/composite/scan-http.js +68 -0
  68. package/dist/composite/scan-http.js.map +1 -0
  69. package/dist/composite/scan-paths.d.ts +3 -0
  70. package/dist/composite/scan-paths.d.ts.map +1 -0
  71. package/dist/composite/scan-paths.js +32 -0
  72. package/dist/composite/scan-paths.js.map +1 -0
  73. package/dist/composite/scan-ports.d.ts +3 -0
  74. package/dist/composite/scan-ports.d.ts.map +1 -0
  75. package/dist/composite/scan-ports.js +79 -0
  76. package/dist/composite/scan-ports.js.map +1 -0
  77. package/dist/composite/scan-services.d.ts +3 -0
  78. package/dist/composite/scan-services.d.ts.map +1 -0
  79. package/dist/composite/scan-services.js +111 -0
  80. package/dist/composite/scan-services.js.map +1 -0
  81. package/dist/composite/scan-tls.d.ts +3 -0
  82. package/dist/composite/scan-tls.d.ts.map +1 -0
  83. package/dist/composite/scan-tls.js +32 -0
  84. package/dist/composite/scan-tls.js.map +1 -0
  85. package/dist/composite/scan-waf.d.ts +3 -0
  86. package/dist/composite/scan-waf.d.ts.map +1 -0
  87. package/dist/composite/scan-waf.js +35 -0
  88. package/dist/composite/scan-waf.js.map +1 -0
  89. package/dist/correlation/index.d.ts +3 -0
  90. package/dist/correlation/index.d.ts.map +1 -0
  91. package/dist/correlation/index.js +1044 -0
  92. package/dist/correlation/index.js.map +1 -0
  93. package/dist/data/analytics-patterns.d.ts +21 -0
  94. package/dist/data/analytics-patterns.d.ts.map +1 -0
  95. package/dist/data/analytics-patterns.js +449 -0
  96. package/dist/data/analytics-patterns.js.map +1 -0
  97. package/dist/data/app-signatures.d.ts +52 -0
  98. package/dist/data/app-signatures.d.ts.map +1 -0
  99. package/dist/data/app-signatures.js +1143 -0
  100. package/dist/data/app-signatures.js.map +1 -0
  101. package/dist/data/c2-signatures.d.ts +54 -0
  102. package/dist/data/c2-signatures.d.ts.map +1 -0
  103. package/dist/data/c2-signatures.js +256 -0
  104. package/dist/data/c2-signatures.js.map +1 -0
  105. package/dist/data/cloud-ranges.d.ts +34 -0
  106. package/dist/data/cloud-ranges.d.ts.map +1 -0
  107. package/dist/data/cloud-ranges.js +628 -0
  108. package/dist/data/cloud-ranges.js.map +1 -0
  109. package/dist/data/cookie-patterns.d.ts +28 -0
  110. package/dist/data/cookie-patterns.d.ts.map +1 -0
  111. package/dist/data/cookie-patterns.js +225 -0
  112. package/dist/data/cookie-patterns.js.map +1 -0
  113. package/dist/data/error-signatures.d.ts +19 -0
  114. package/dist/data/error-signatures.d.ts.map +1 -0
  115. package/dist/data/error-signatures.js +321 -0
  116. package/dist/data/error-signatures.js.map +1 -0
  117. package/dist/data/favicon-hashes.d.ts +25 -0
  118. package/dist/data/favicon-hashes.d.ts.map +1 -0
  119. package/dist/data/favicon-hashes.js +249 -0
  120. package/dist/data/favicon-hashes.js.map +1 -0
  121. package/dist/data/h2-signatures.d.ts +50 -0
  122. package/dist/data/h2-signatures.d.ts.map +1 -0
  123. package/dist/data/h2-signatures.js +211 -0
  124. package/dist/data/h2-signatures.js.map +1 -0
  125. package/dist/data/header-order.d.ts +38 -0
  126. package/dist/data/header-order.d.ts.map +1 -0
  127. package/dist/data/header-order.js +185 -0
  128. package/dist/data/header-order.js.map +1 -0
  129. package/dist/data/jarm-signatures.d.ts +25 -0
  130. package/dist/data/jarm-signatures.d.ts.map +1 -0
  131. package/dist/data/jarm-signatures.js +213 -0
  132. package/dist/data/jarm-signatures.js.map +1 -0
  133. package/dist/data/saas-patterns.d.ts +23 -0
  134. package/dist/data/saas-patterns.d.ts.map +1 -0
  135. package/dist/data/saas-patterns.js +139 -0
  136. package/dist/data/saas-patterns.js.map +1 -0
  137. package/dist/data/sensitive-paths.d.ts +12 -0
  138. package/dist/data/sensitive-paths.d.ts.map +1 -0
  139. package/dist/data/sensitive-paths.js +1539 -0
  140. package/dist/data/sensitive-paths.js.map +1 -0
  141. package/dist/data/service-banners.d.ts +59 -0
  142. package/dist/data/service-banners.d.ts.map +1 -0
  143. package/dist/data/service-banners.js +323 -0
  144. package/dist/data/service-banners.js.map +1 -0
  145. package/dist/data/smtp-signatures.d.ts +12 -0
  146. package/dist/data/smtp-signatures.d.ts.map +1 -0
  147. package/dist/data/smtp-signatures.js +350 -0
  148. package/dist/data/smtp-signatures.js.map +1 -0
  149. package/dist/data/takeover-patterns.d.ts +37 -0
  150. package/dist/data/takeover-patterns.d.ts.map +1 -0
  151. package/dist/data/takeover-patterns.js +249 -0
  152. package/dist/data/takeover-patterns.js.map +1 -0
  153. package/dist/data/tech-patterns.d.ts +44 -0
  154. package/dist/data/tech-patterns.d.ts.map +1 -0
  155. package/dist/data/tech-patterns.js +690 -0
  156. package/dist/data/tech-patterns.js.map +1 -0
  157. package/dist/data/waf-signatures.d.ts +21 -0
  158. package/dist/data/waf-signatures.d.ts.map +1 -0
  159. package/dist/data/waf-signatures.js +318 -0
  160. package/dist/data/waf-signatures.js.map +1 -0
  161. package/dist/dns/index.d.ts +3 -0
  162. package/dist/dns/index.d.ts.map +1 -0
  163. package/dist/dns/index.js +1067 -0
  164. package/dist/dns/index.js.map +1 -0
  165. package/dist/enum/index.d.ts +3 -0
  166. package/dist/enum/index.d.ts.map +1 -0
  167. package/dist/enum/index.js +818 -0
  168. package/dist/enum/index.js.map +1 -0
  169. package/dist/h2/index.d.ts +3 -0
  170. package/dist/h2/index.d.ts.map +1 -0
  171. package/dist/h2/index.js +414 -0
  172. package/dist/h2/index.js.map +1 -0
  173. package/dist/http/index.d.ts +3 -0
  174. package/dist/http/index.d.ts.map +1 -0
  175. package/dist/http/index.js +2444 -0
  176. package/dist/http/index.js.map +1 -0
  177. package/dist/identify/index.d.ts +3 -0
  178. package/dist/identify/index.d.ts.map +1 -0
  179. package/dist/identify/index.js +447 -0
  180. package/dist/identify/index.js.map +1 -0
  181. package/dist/index.d.ts +3 -0
  182. package/dist/index.d.ts.map +1 -0
  183. package/dist/index.js +165 -0
  184. package/dist/index.js.map +1 -0
  185. package/dist/infra/index.d.ts +3 -0
  186. package/dist/infra/index.d.ts.map +1 -0
  187. package/dist/infra/index.js +989 -0
  188. package/dist/infra/index.js.map +1 -0
  189. package/dist/iot/index.d.ts +3 -0
  190. package/dist/iot/index.d.ts.map +1 -0
  191. package/dist/iot/index.js +610 -0
  192. package/dist/iot/index.js.map +1 -0
  193. package/dist/meta/index.d.ts +3 -0
  194. package/dist/meta/index.d.ts.map +1 -0
  195. package/dist/meta/index.js +442 -0
  196. package/dist/meta/index.js.map +1 -0
  197. package/dist/osint/index.d.ts +3 -0
  198. package/dist/osint/index.d.ts.map +1 -0
  199. package/dist/osint/index.js +687 -0
  200. package/dist/osint/index.js.map +1 -0
  201. package/dist/passive/index.d.ts +3 -0
  202. package/dist/passive/index.d.ts.map +1 -0
  203. package/dist/passive/index.js +944 -0
  204. package/dist/passive/index.js.map +1 -0
  205. package/dist/path/index.d.ts +3 -0
  206. package/dist/path/index.d.ts.map +1 -0
  207. package/dist/path/index.js +878 -0
  208. package/dist/path/index.js.map +1 -0
  209. package/dist/protocol/mcp-server.d.ts +4 -0
  210. package/dist/protocol/mcp-server.d.ts.map +1 -0
  211. package/dist/protocol/mcp-server.js +32 -0
  212. package/dist/protocol/mcp-server.js.map +1 -0
  213. package/dist/protocol/tools.d.ts +3 -0
  214. package/dist/protocol/tools.d.ts.map +1 -0
  215. package/dist/protocol/tools.js +5 -0
  216. package/dist/protocol/tools.js.map +1 -0
  217. package/dist/service/index.d.ts +3 -0
  218. package/dist/service/index.d.ts.map +1 -0
  219. package/dist/service/index.js +1053 -0
  220. package/dist/service/index.js.map +1 -0
  221. package/dist/smtp/index.d.ts +3 -0
  222. package/dist/smtp/index.d.ts.map +1 -0
  223. package/dist/smtp/index.js +437 -0
  224. package/dist/smtp/index.js.map +1 -0
  225. package/dist/ssh/index.d.ts +3 -0
  226. package/dist/ssh/index.d.ts.map +1 -0
  227. package/dist/ssh/index.js +676 -0
  228. package/dist/ssh/index.js.map +1 -0
  229. package/dist/tcp/index.d.ts +3 -0
  230. package/dist/tcp/index.d.ts.map +1 -0
  231. package/dist/tcp/index.js +369 -0
  232. package/dist/tcp/index.js.map +1 -0
  233. package/dist/timing/index.d.ts +3 -0
  234. package/dist/timing/index.d.ts.map +1 -0
  235. package/dist/timing/index.js +425 -0
  236. package/dist/timing/index.js.map +1 -0
  237. package/dist/tls/index.d.ts +3 -0
  238. package/dist/tls/index.d.ts.map +1 -0
  239. package/dist/tls/index.js +1332 -0
  240. package/dist/tls/index.js.map +1 -0
  241. package/dist/types/index.d.ts +26 -0
  242. package/dist/types/index.d.ts.map +1 -0
  243. package/dist/types/index.js +8 -0
  244. package/dist/types/index.js.map +1 -0
  245. package/dist/utils/cache.d.ts +11 -0
  246. package/dist/utils/cache.d.ts.map +1 -0
  247. package/dist/utils/cache.js +35 -0
  248. package/dist/utils/cache.js.map +1 -0
  249. package/dist/utils/murmurhash3.d.ts +3 -0
  250. package/dist/utils/murmurhash3.d.ts.map +1 -0
  251. package/dist/utils/murmurhash3.js +57 -0
  252. package/dist/utils/murmurhash3.js.map +1 -0
  253. package/dist/utils/rate-limiter.d.ts +10 -0
  254. package/dist/utils/rate-limiter.d.ts.map +1 -0
  255. package/dist/utils/rate-limiter.js +35 -0
  256. package/dist/utils/rate-limiter.js.map +1 -0
  257. package/dist/utils/require-key.d.ts +2 -0
  258. package/dist/utils/require-key.d.ts.map +1 -0
  259. package/dist/utils/require-key.js +8 -0
  260. package/dist/utils/require-key.js.map +1 -0
  261. package/dist/waf/index.d.ts +3 -0
  262. package/dist/waf/index.d.ts.map +1 -0
  263. package/dist/waf/index.js +767 -0
  264. package/dist/waf/index.js.map +1 -0
  265. package/dist/web/index.d.ts +3 -0
  266. package/dist/web/index.d.ts.map +1 -0
  267. package/dist/web/index.js +1366 -0
  268. package/dist/web/index.js.map +1 -0
  269. package/package.json +66 -0
package/README.ja.md ADDED
@@ -0,0 +1,767 @@
1
+ <p align="center">
2
+ <a href="README.md">English</a> |
3
+ <a href="README.zh.md">简体中文</a> |
4
+ <a href="README.zh-TW.md">繁體中文</a> |
5
+ <a href="README.ko.md">한국어</a> |
6
+ <a href="README.de.md">Deutsch</a> |
7
+ <a href="README.es.md">Español</a> |
8
+ <a href="README.fr.md">Français</a> |
9
+ <a href="README.it.md">Italiano</a> |
10
+ <a href="README.da.md">Dansk</a> |
11
+ <strong>日本語</strong> |
12
+ <a href="README.pl.md">Polski</a> |
13
+ <a href="README.ru.md">Русский</a> |
14
+ <a href="README.bs.md">Bosanski</a> |
15
+ <a href="README.ar.md">العربية</a> |
16
+ <a href="README.no.md">Norsk</a> |
17
+ <a href="README.pt-BR.md">Português (Brasil)</a> |
18
+ <a href="README.th.md">ไทย</a> |
19
+ <a href="README.tr.md">Türkçe</a> |
20
+ <a href="README.uk.md">Українська</a> |
21
+ <a href="README.bn.md">বাংলা</a> |
22
+ <a href="README.el.md">Ελληνικά</a> |
23
+ <a href="README.vi.md">Tiếng Việt</a> |
24
+ <a href="README.hi.md">हिन्दी</a>
25
+ </p>
26
+
27
+ <p align="center">
28
+ <br>
29
+ <picture>
30
+ <source media="(prefers-color-scheme: dark)" srcset="https://raw.githubusercontent.com/badchars/fingerprint-mcp/main/.github/banner-dark.svg">
31
+ <source media="(prefers-color-scheme: light)" srcset="https://raw.githubusercontent.com/badchars/fingerprint-mcp/main/.github/banner-light.svg">
32
+ <img alt="fingerprint-mcp" src="https://raw.githubusercontent.com/badchars/fingerprint-mcp/main/.github/banner-dark.svg" width="700">
33
+ </picture>
34
+ </p>
35
+
36
+ <h3 align="center">AIエージェントのためのユニバーサルデジタルフィンガープリンティング。</h3>
37
+
38
+ <p align="center">
39
+ TCP、TLS/SSL、SSH、HTTP、DNS、WAF/CDN、IoT、SMTP、サービスプローブ、JARM、JA4X、faviconハッシュ、インフラトポロジー、C2検出、OSINT エンリッチメント &mdash; すべてを単一のMCPサーバーに統合。<br>
40
+ AIエージェントは<b>フルスペクトルのフィンガープリンティングをオンデマンド</b>で実行できます。11個のバラバラなCLIツールと手動の相関作業は不要です。
41
+ </p>
42
+
43
+ <br>
44
+
45
+ <p align="center">
46
+ <a href="#問題点">問題点</a> &bull;
47
+ <a href="#何が違うのか">何が違うのか</a> &bull;
48
+ <a href="#クイックスタート">クイックスタート</a> &bull;
49
+ <a href="#aiにできること">AIにできること</a> &bull;
50
+ <a href="#ツールリファレンス13ツール103テクニック">ツール(13)</a> &bull;
51
+ <a href="#データソース21">データソース</a> &bull;
52
+ <a href="#アーキテクチャ">アーキテクチャ</a> &bull;
53
+ <a href="CHANGELOG.md">変更履歴</a> &bull;
54
+ <a href="CONTRIBUTING.md">コントリビュート</a>
55
+ </p>
56
+
57
+ <p align="center">
58
+ <a href="https://www.npmjs.com/package/fingerprint-mcp"><img src="https://img.shields.io/npm/v/fingerprint-mcp.svg" alt="npm"></a>
59
+ <a href="LICENSE"><img src="https://img.shields.io/badge/license-AGPL--3.0-blue.svg" alt="ライセンス"></a>
60
+ <img src="https://img.shields.io/badge/runtime-Bun-f472b6" alt="Bun">
61
+ <img src="https://img.shields.io/badge/protocol-MCP-8b5cf6" alt="MCP">
62
+ <img src="https://img.shields.io/badge/tools-13-ef4444" alt="13ツール">
63
+ <img src="https://img.shields.io/badge/techniques-103-f97316" alt="103テクニック">
64
+ </p>
65
+
66
+ <p align="center">
67
+ <img src="https://raw.githubusercontent.com/badchars/fingerprint-mcp/main/.github/demo.gif" alt="fingerprint-mcp デモ" width="800">
68
+ </p>
69
+
70
+ ---
71
+
72
+ ## 問題点
73
+
74
+ 今日、サーバーのフィンガープリンティングを行うには、十数個のバラバラなツールを使い分ける必要があります。ポートスキャンには`nmap`、証明書分析には`testssl.sh`、HTTPヘッダーには`curl -I`、DNSには`dig`、WAF検出には`wafw00f`、SSHには`ssh-audit`、別途JARMツール、技術検出にはWappalyzer &mdash; そして、実際に何が動いているかを把握するために、すべてをスプレッドシートで手動で相互参照するのに30分を費やします。
75
+
76
+ ```
77
+ 従来のフィンガープリンティングワークフロー:
78
+ TLS証明書の分析 -> testssl.sh / openssl s_client
79
+ HTTPヘッダーの取得 -> curl -I
80
+ Web技術の検出 -> wappalyzer CLI
81
+ DNSリコネサンス -> dig / nslookup / dnsenum
82
+ ポートスキャン -> nmap -sV
83
+ WAF検出 -> wafw00f
84
+ SSH監査 -> ssh-audit
85
+ サービスフィンガープリント -> nmap scripts
86
+ JARMフィンガープリント -> jarm(別ツール)
87
+ OSINTデータベースの確認 -> shodan CLI, censys CLI
88
+ すべてを相関 -> スプレッドシートで手動
89
+ ──────────────────────────────
90
+ 合計:11ツール、30分以上、手動相関
91
+ ```
92
+
93
+ **fingerprint-mcp**は、AIエージェントに[Model Context Protocol](https://modelcontextprotocol.io)を介して21プロバイダーにわたる103のフィンガープリンティングテクニックを包含する13のコンポジットツールを提供します。エージェントはマルチレイヤーフィンガープリンティングを並列実行し、TCP/TLS/HTTP/DNS/SSHレイヤー間のシグナルを相関させ、ハニーポットやC2インフラを検出し、統合されたインテリジェンス画像を提示します &mdash; 単一の会話の中で。
94
+
95
+ ```
96
+ fingerprint-mcpを使用:
97
+ あなた:"target.comの詳細なリコンを実行して"
98
+
99
+ エージェント: -> recon {url: "https://target.com", depth: "deep"}
100
+
101
+ -> TLS: JARM経由でnginx/1.24.0 (3fd21b20d00000...)、
102
+ Let's Encrypt証明書、SAN 2件、TLS 1.2+1.3
103
+ -> HTTP: Cloudflare WAFの背後にExpress.js、
104
+ React SPA、Google Analytics、14のセキュリティヘッダーを分析
105
+ -> DNS: A/AAAA/MX/TXTレコード、SPF/DKIM/DMARC設定済み、
106
+ CNAME/MX経由でSlack + Google Workspaceを検出
107
+ -> ポート: 80、443、22(OpenSSH 9.6)、8080(開発サーバー)
108
+ -> WAF: Cloudflare検出、直接接続によりオリジンIPを発見
109
+ -> 列挙: CTログ経由で12サブドメイン、ワイルドカードDNS検出
110
+ -> "target.comはCloudflare WAFの背後でnginx/1.24.0上の
111
+ Express.jsを実行しています。オリジンIP 203.0.113.42がポート
112
+ 8080で公開されています。TLSは正しく設定されていますが(A+相当)、
113
+ 8080の開発サーバーにはWAF保護がありません。3つのサブドメインが
114
+ 廃止されたインフラを指しています — テイクオーバーのリスクがあります。"
115
+ ```
116
+
117
+ ---
118
+
119
+ ## 何が違うのか
120
+
121
+ 既存のツールは一度に一つのレイヤーの生データしか提供しません。fingerprint-mcpはAIエージェントに**すべてのフィンガープリンティングレイヤーを同時に推論する能力**を与えます。
122
+
123
+ <table>
124
+ <thead>
125
+ <tr>
126
+ <th></th>
127
+ <th>従来のアプローチ</th>
128
+ <th>fingerprint-mcp</th>
129
+ </tr>
130
+ </thead>
131
+ <tbody>
132
+ <tr>
133
+ <td><b>インターフェース</b></td>
134
+ <td>異なる出力形式の11個のCLIツール</td>
135
+ <td>MCP &mdash; AIエージェントが会話形式でツールを呼び出す</td>
136
+ </tr>
137
+ <tr>
138
+ <td><b>テクニック</b></td>
139
+ <td>1ツール、1レイヤーずつ</td>
140
+ <td>21プロバイダーにわたる103テクニック、並列実行</td>
141
+ </tr>
142
+ <tr>
143
+ <td><b>TLS分析</b></td>
144
+ <td>testssl.shの出力、JARMを別途手動解析</td>
145
+ <td>エージェントが証明書 + JARM + JA4X + 暗号スイート + SNI + CTログを一回の呼び出しで統合</td>
146
+ </tr>
147
+ <tr>
148
+ <td><b>相関</b></td>
149
+ <td>結果をスプレッドシートにコピペ</td>
150
+ <td>エージェントが相互相関:「JARMが既知のC2フレームワークに一致、HTTPタイミングがハニーポットを確認」</td>
151
+ </tr>
152
+ <tr>
153
+ <td><b>WAFバイパス</b></td>
154
+ <td>wafw00fがWAFを検出、手動でオリジンを探索</td>
155
+ <td>エージェントがWAFを検出し、オリジンIPを発見し、同じコンテンツを配信していることを検証</td>
156
+ </tr>
157
+ <tr>
158
+ <td><b>APIキー</b></td>
159
+ <td>Shodan、Censysなどに必須</td>
160
+ <td>80以上のアクティブテクニックがAPIキーなしで動作、キーはOSINTエンリッチメントを有効化</td>
161
+ </tr>
162
+ <tr>
163
+ <td><b>セットアップ</b></td>
164
+ <td>nmap、testssl、wafw00f、ssh-audit、jarm、wappalyzerをインストール...</td>
165
+ <td><code>npx fingerprint-mcp</code> &mdash; 一つのコマンド、設定不要</td>
166
+ </tr>
167
+ </tbody>
168
+ </table>
169
+
170
+ ---
171
+
172
+ ## クイックスタート
173
+
174
+ ### オプション1:npx(インストール不要)
175
+
176
+ ```bash
177
+ npx fingerprint-mcp
178
+ ```
179
+
180
+ 80以上のアクティブフィンガープリンティングテクニックがすぐに動作します。TCP、TLS、SSH、HTTP、DNS、WAF、パス、サービス、タイミング、IoT、SMTP、アプリケーションのフィンガープリンティングにAPIキーは不要です。
181
+
182
+ ### オプション2:クローン
183
+
184
+ ```bash
185
+ git clone https://github.com/badchars/fingerprint-mcp.git
186
+ cd fingerprint-mcp
187
+ bun install
188
+ ```
189
+
190
+ ### 環境変数(オプション)
191
+
192
+ ```bash
193
+ # OSINTエンリッチメント(すべてオプション — アクティブフィンガープリンティングはキーなしで動作)
194
+ export SHODAN_API_KEY=your-key # osint_shodan、ssh_hostkey_lookupを有効化
195
+ export CENSYS_API_ID=your-id # osint_censysを有効化(無料:250クエリ/月)
196
+ export CENSYS_API_SECRET=your-secret # Censys APIシークレット
197
+ export SECURITYTRAILS_API_KEY=your-key # waf_origin、enum_passive_dnsを有効化
198
+ export VIRUSTOTAL_API_KEY=your-key # osint_virustotalを有効化(無料:500クエリ/日)
199
+ ```
200
+
201
+ すべてのAPIキーはオプションです。キーがなくても、完全なTCP/TLS/SSH/HTTP/DNS/WAF/パス/サービス/タイミング/IoT/SMTP/インフラ/アプリケーションのフィンガープリンティング、相関、パッシブ分析、列挙、メタツール &mdash; ターゲットを直接プローブする80以上のテクニックが利用できます。
202
+
203
+ ### AIエージェントへの接続
204
+
205
+ <details open>
206
+ <summary><b>Claude Code</b></summary>
207
+
208
+ ```bash
209
+ # npxを使用
210
+ claude mcp add fingerprint-mcp -- npx fingerprint-mcp
211
+
212
+ # ローカルクローンを使用
213
+ claude mcp add fingerprint-mcp -- bun run /path/to/fingerprint-mcp/src/index.ts
214
+ ```
215
+
216
+ </details>
217
+
218
+ <details>
219
+ <summary><b>Claude Desktop</b></summary>
220
+
221
+ `~/Library/Application Support/Claude/claude_desktop_config.json`に追加:
222
+
223
+ ```json
224
+ {
225
+ "mcpServers": {
226
+ "fingerprint": {
227
+ "command": "npx",
228
+ "args": ["-y", "fingerprint-mcp"],
229
+ "env": {
230
+ "SHODAN_API_KEY": "optional",
231
+ "CENSYS_API_ID": "optional",
232
+ "CENSYS_API_SECRET": "optional",
233
+ "SECURITYTRAILS_API_KEY": "optional",
234
+ "VIRUSTOTAL_API_KEY": "optional"
235
+ }
236
+ }
237
+ }
238
+ }
239
+ ```
240
+
241
+ </details>
242
+
243
+ <details>
244
+ <summary><b>Cursor / Windsurf / その他のMCPクライアント</b></summary>
245
+
246
+ 同じJSON設定形式です。コマンドを`npx fingerprint-mcp`またはローカルインストールパスに向けてください。
247
+
248
+ </details>
249
+
250
+ ### クエリの開始
251
+
252
+ ```
253
+ あなた:"target.comのすべてをフィンガープリントして — TLS、HTTPスタック、WAF、DNS、開いているポート"
254
+ ```
255
+
256
+ 以上です。エージェントがマルチレイヤーフィンガープリンティング、シグナル相関、インフラ分析を自動的に処理します。
257
+
258
+ ---
259
+
260
+ ## AIにできること
261
+
262
+ ### クイックリコン
263
+
264
+ ```
265
+ あなた:"target.comのクイックリコン"
266
+
267
+ エージェント: -> recon {url: "https://target.com", depth: "quick"}
268
+
269
+ -> TCP: ポート80、443、22がオープン
270
+ -> TLS: Let's Encrypt RSA証明書、TLS 1.2+1.3、nginx JARMシグネチャ
271
+ -> HTTP: nginx/1.24.0、Express.js、React、Cloudflare CDN
272
+ -> DNS: A 203.0.113.42、MX Google Workspace、SPF/DKIM設定済み
273
+ -> WAF: Cloudflare検出(cf-rayヘッダー)
274
+ -> "target.comはnginx/1.24.0の背後でExpress.js上のReact SPAで、
275
+ Cloudflare CDN経由で配信されています。TLSはLet's Encryptで
276
+ 適切に設定されています。ポート22でOpenSSH 9.6が動作。メールは
277
+ 完全なSPF/DKIM/DMARCでGoogle Workspaceが処理。"
278
+ ```
279
+
280
+ ### 詳細なTLS調査
281
+
282
+ ```
283
+ あなた:"suspicious-server.comのTLS設定を詳しく分析して"
284
+
285
+ エージェント: -> scan_tls {host: "suspicious-server.com"}
286
+
287
+ -> 証明書: 自己署名、CN=localhost、47日前に期限切れ
288
+ -> JARM: 2ad2ad0002ad2ad00042d42d00000069d641f34fe76acdc05c40262f8815e5
289
+ (Cobalt Strikeのデフォルトプロファイルに一致)
290
+ -> JA4X: フィンガープリントが既知のC2フレームワークパターンに一致
291
+ -> 暗号スイート: 弱い暗号を受け入れる(RC4、3DES)
292
+ -> SNI: 任意のSNI値に対して同一の応答
293
+ -> CTログ: 証明書が記録されていない(公的に信頼されていない)
294
+ -> "高リスク: TLS設定はC2インフラを強く示唆しています。
295
+ 自己署名の期限切れ証明書、JARMフィンガープリントがCobalt Strikeに一致、
296
+ 弱い暗号を受け入れ、任意のSNI値に応答します。
297
+ 即座の調査とブロックを推奨します。"
298
+ ```
299
+
300
+ ### WAFバイパスとオリジン発見
301
+
302
+ ```
303
+ あなた:"target.comはWAFの背後にあります。オリジンサーバーを見つけられますか?"
304
+
305
+ エージェント: -> scan_waf {url: "https://target.com"}
306
+ -> scan_dns {domain: "target.com"}
307
+ -> enumerate {domain: "target.com"}
308
+
309
+ -> WAF: Cloudflare(AS13335)、不審なリクエストにチャレンジページ
310
+ -> DNS: AレコードがCloudflare IP 104.21.x.xを指す
311
+ -> サブドメイン: dev.target.comが203.0.113.42に解決(非Cloudflare)
312
+ -> 203.0.113.42:443への直接接続で同じTLS証明書を返す
313
+ -> SecurityTrails履歴: Cloudflare以前のオリジンは203.0.113.42
314
+ -> "オリジンIP発見: 203.0.113.42。Cloudflareをバイパスする
315
+ dev.target.comサブドメイン経由で発見。オリジンは同じTLS証明書を
316
+ 配信し、target.comのHostヘッダーに応答します。
317
+ オリジンにはWAF保護がありません — 直接アクセスが可能です。"
318
+ ```
319
+
320
+ ### ホスト上のサービス検出
321
+
322
+ ```
323
+ あなた:"10.0.1.50で何のサービスが動いていますか?"
324
+
325
+ エージェント: -> scan_ports {host: "10.0.1.50"}
326
+ -> scan_services {host: "10.0.1.50", ports: [22, 80, 3306, 5432, 6379, 8080]}
327
+
328
+ -> ポート22: OpenSSH 8.9p1 Ubuntu、ED25519ホストキー
329
+ -> ポート80: Apache/2.4.57、PHP/8.2、WordPress 6.4
330
+ -> ポート3306: MySQL 8.0.36、認証必須
331
+ -> ポート5432: PostgreSQL 16.1、SSL必須
332
+ -> ポート6379: Redis 7.2.4、認証なし(オープン)
333
+ -> ポート8080: Node.js Express開発サーバー、CORS: *
334
+ -> "重大: ポート6379のRedisに認証がありません — ネットワーク上の
335
+ 誰でもデータの読み書きが可能です。8080のExpress開発サーバーは
336
+ ワイルドカードCORSです。MySQLとPostgreSQLは適切に認証を要求して
337
+ います。WordPressは2マイナーバージョン遅れています。Redisと
338
+ 開発サーバーの露出に対する即座の対応が必要です。"
339
+ ```
340
+
341
+ ---
342
+
343
+ ## ツールリファレンス(13ツール、103テクニック)
344
+
345
+ <details open>
346
+ <summary><b>recon &mdash; 深度ベースのテクニック選択による完全なリコネサンス</b></summary>
347
+
348
+ | パラメータ | 型 | 説明 |
349
+ |-----------|------|-------------|
350
+ | `url` | string | フィンガープリントするターゲットURL |
351
+ | `depth` | `quick` \| `standard` \| `deep` | スキャン深度: quick=5テクニック、standard=20、deep=50+ |
352
+
353
+ 深度レベルに基づいてすべてのプロバイダーからテクニックをオーケストレーションします。クイックモードは素早い概要を提供し、ディープモードは列挙、OSINT、相関を含む徹底的なフィンガープリンティングを実行します。
354
+
355
+ </details>
356
+
357
+ <details>
358
+ <summary><b>scan_ports &mdash; サービス検出付きTCPポートスキャン(3テクニック)</b></summary>
359
+
360
+ | パラメータ | 型 | 説明 |
361
+ |-----------|------|-------------|
362
+ | `host` | string | ターゲットホスト(IPまたはドメイン) |
363
+ | `ports` | number[] | オプション &mdash; スキャンする特定のポート(デフォルト: 一般的なポート) |
364
+
365
+ | テクニック | 説明 |
366
+ |-----------|-------------|
367
+ | `tcp_probe` | オープンポートを検出するTCPコネクトスキャン |
368
+ | `tcp_banner` | サービス識別のためのオープンポートでのバナー取得 |
369
+ | `tcp_analysis` | ポート組み合わせ分析とサービス推論 |
370
+
371
+ </details>
372
+
373
+ <details>
374
+ <summary><b>scan_tls &mdash; 完全なTLS/SSL分析(8テクニック)</b></summary>
375
+
376
+ | パラメータ | 型 | 説明 |
377
+ |-----------|------|-------------|
378
+ | `host` | string | ターゲットホスト(IPまたはドメイン) |
379
+ | `port` | number | オプション &mdash; TLSポート(デフォルト: 443) |
380
+
381
+ | テクニック | 説明 |
382
+ |-----------|-------------|
383
+ | `tls_certificate` | X.509証明書の解析 &mdash; サブジェクト、発行者、SAN、有効期限、チェーン |
384
+ | `tls_jarm` | JARMアクティブフィンガープリンティング &mdash; 10のTLS Client Helloプローブ、62文字ハッシュ |
385
+ | `tls_ja4x` | 証明書プロパティからのJA4Xパッシブ TLSフィンガープリンティング |
386
+ | `tls_ciphers` | 暗号スイートの列挙と強度分析 |
387
+ | `tls_protocols` | サポートされるTLSプロトコルバージョンの検出(SSLv3からTLS 1.3) |
388
+ | `tls_sni` | SNI動作テスト &mdash; デフォルト証明書 vs. 要求されたホスト名 |
389
+ | `tls_ct_logs` | crt.sh経由のCertificate Transparencyログ検索 |
390
+ | `tls_ocsp` | OCSPステープリングと失効ステータスの確認 |
391
+
392
+ </details>
393
+
394
+ <details>
395
+ <summary><b>scan_dns &mdash; DNSインテリジェンス(7テクニック)</b></summary>
396
+
397
+ | パラメータ | 型 | 説明 |
398
+ |-----------|------|-------------|
399
+ | `domain` | string | ターゲットドメイン |
400
+
401
+ | テクニック | 説明 |
402
+ |-----------|-------------|
403
+ | `dns_records` | 完全なレコード列挙 &mdash; A、AAAA、MX、NS、TXT、CNAME、SOA |
404
+ | `dns_email_auth` | SPF、DKIM、DMARCレコード分析 |
405
+ | `dns_saas` | CNAMEとMXパターンによるSaaS/サービス検出(Slack、Zendeskなど) |
406
+ | `dns_server` | DNSサーバーフィンガープリンティング(BIND、PowerDNS、Cloudflareなど) |
407
+ | `dns_takeover` | ダングリングCNAME分析によるサブドメインテイクオーバー検出 |
408
+ | `dns_zone` | ゾーン転送試行(AXFR) |
409
+ | `dns_caa` | 認証局制限のためのCAAレコード分析 |
410
+
411
+ </details>
412
+
413
+ <details>
414
+ <summary><b>scan_http &mdash; HTTP/Webフィンガープリンティング(29テクニック)</b></summary>
415
+
416
+ | パラメータ | 型 | 説明 |
417
+ |-----------|------|-------------|
418
+ | `url` | string | ターゲットURL |
419
+
420
+ | テクニック | プロバイダー | 説明 |
421
+ |-----------|----------|-------------|
422
+ | `http_headers` | HTTP | レスポンスヘッダー分析とサーバー識別 |
423
+ | `http_header_order` | HTTP | ヘッダー順序フィンガープリント(サーバーソフトウェアシグネチャ) |
424
+ | `http_security_headers` | HTTP | セキュリティヘッダー監査(CSP、HSTS、X-Frame-Optionsなど) |
425
+ | `http_cookies` | HTTP | Cookie分析 &mdash; フラグ、プレフィックス、フレームワーク検出 |
426
+ | `http_methods` | HTTP | 許可されたHTTPメソッドの列挙(OPTIONS) |
427
+ | `http_cors` | HTTP | CORSポリシー分析と誤設定検出 |
428
+ | `http_compression` | HTTP | サポートされる圧縮アルゴリズム(gzip、br、zstd) |
429
+ | `http_caching` | HTTP | キャッシュヘッダー分析(CDN、リバースプロキシ検出) |
430
+ | `http_etag` | HTTP | バックエンド識別のためのETagフォーマット分析 |
431
+ | `http_error` | HTTP | エラーページフィンガープリンティング(カスタム vs. デフォルトエラーページ) |
432
+ | `http_redirect` | HTTP | リダイレクトチェーン分析 |
433
+ | `http_timing` | HTTP | サーバーパフォーマンスプロファイリングのためのレスポンスタイミングベースライン |
434
+ | `http_favicon` | HTTP | 技術識別のためのfaviconハッシュ(MurmurHash3) |
435
+ | `http_robots` | HTTP | robots.txtの解析と禁止パスの抽出 |
436
+ | `http_sitemap` | HTTP | サイトマップの発見とURL抽出 |
437
+ | `http_wellknown` | HTTP | .well-knownエンドポイントの発見(security.txt、openidなど) |
438
+ | `web_tech` | Web | HTML/JS/CSSパターンによる技術検出 |
439
+ | `web_analytics` | Web | アナリティクスおよびトラッキングサービスの検出 |
440
+ | `web_sourcemaps` | Web | ソースマップファイルの発見 |
441
+ | `web_websocket` | Web | WebSocketエンドポイントの検出 |
442
+ | `web_graphql` | Web | GraphQLエンドポイントの検出とイントロスペクション |
443
+ | `web_spa` | Web | シングルページアプリケーションフレームワークの検出 |
444
+ | `web_cdn` | Web | レスポンスヘッダーとDNS経由のCDN検出 |
445
+ | `web_meta` | Web | HTMLメタタグ分析(ジェネレーター、フレームワークのヒント) |
446
+ | `web_feed` | Web | RSS/Atomフィードの発見 |
447
+ | `h2_detect` | HTTP/2 | HTTP/2プロトコルサポートの検出 |
448
+ | `h2_fingerprint` | HTTP/2 | HTTP/2サーバーフィンガープリンティング(SETTINGS、WINDOW_UPDATE) |
449
+ | `h2_h3` | HTTP/2 | Alt-Svcヘッダー経由のHTTP/3(QUIC)サポート検出 |
450
+ | `app_cms` | Application | CMS検出(WordPress、Drupal、Joomlaなど) |
451
+
452
+ </details>
453
+
454
+ <details>
455
+ <summary><b>scan_paths &mdash; パスインテリジェンス(5テクニック)</b></summary>
456
+
457
+ | パラメータ | 型 | 説明 |
458
+ |-----------|------|-------------|
459
+ | `url` | string | ターゲットURL |
460
+ | `categories` | string[] | オプション &mdash; 確認するカテゴリ(sensitive、git、debug、api、config) |
461
+
462
+ | テクニック | 説明 |
463
+ |-----------|-------------|
464
+ | `path_sensitive` | 機密ファイルの発見(バックアップファイル、設定ファイル、データベースダンプ) |
465
+ | `path_robots` | 隠しパスのためのrobots.txtとsitemap.xmlの分析 |
466
+ | `path_git` | Gitリポジトリ漏洩検出(.git/HEAD、.git/config) |
467
+ | `path_debug` | デバッグエンドポイントの発見(phpinfo、server-status、デバッグコンソール) |
468
+ | `path_api` | APIバージョンとドキュメントエンドポイントの発見 |
469
+
470
+ </details>
471
+
472
+ <details>
473
+ <summary><b>scan_waf &mdash; WAF/CDN検出とフィンガープリンティング(4テクニック)</b></summary>
474
+
475
+ | パラメータ | 型 | 説明 |
476
+ |-----------|------|-------------|
477
+ | `url` | string | ターゲットURL |
478
+
479
+ | テクニック | 説明 |
480
+ |-----------|-------------|
481
+ | `waf_detect` | レスポンスヘッダーと動作分析によるWAF存在検出 |
482
+ | `waf_cdn` | CDNプロバイダー識別(Cloudflare、Akamai、Fastlyなど) |
483
+ | `waf_fingerprint` | WAF製品識別とバージョン検出 |
484
+ | `waf_origin` | WAF/CDN背後のオリジンIP発見(`SECURITYTRAILS_API_KEY`が必要) |
485
+
486
+ </details>
487
+
488
+ <details>
489
+ <summary><b>scan_services &mdash; サービスレベルプローブ(12テクニック)</b></summary>
490
+
491
+ | パラメータ | 型 | 説明 |
492
+ |-----------|------|-------------|
493
+ | `host` | string | ターゲットホスト(IPまたはドメイン) |
494
+ | `ports` | number[] | オプション &mdash; プローブする特定のポート |
495
+ | `service` | string | オプション &mdash; プローブする特定のサービス(mysql、postgres、redis、ftp、ssh、smtp、vnc、iot) |
496
+
497
+ | テクニック | プロバイダー | 説明 |
498
+ |-----------|----------|-------------|
499
+ | `ssh_probe` | SSH | SSHプロトコルバージョンとソフトウェア検出 |
500
+ | `ssh_algorithms` | SSH | SSHアルゴリズム監査(KEX、暗号、MAC、ホストキータイプ) |
501
+ | `ssh_hostkey_lookup` | SSH | Shodan経由のSSHホストキー検索(`SHODAN_API_KEY`が必要) |
502
+ | `svc_mysql` | Service | MySQLバージョン検出と機能フィンガープリンティング |
503
+ | `svc_postgres` | Service | PostgreSQLバージョン検出とSSLサポート確認 |
504
+ | `svc_redis` | Service | Redisバージョン検出と認証ステータス |
505
+ | `svc_ftp` | Service | FTPバナー分析と匿名ログイン確認 |
506
+ | `svc_vnc_rdp` | Service | VNC/RDPサービス検出とセキュリティ評価 |
507
+ | `smtp_banner` | SMTP | SMTPバナー分析とMTA識別 |
508
+ | `smtp_starttls` | SMTP | SMTP STARTTLSサポートと証明書検査 |
509
+ | `iot_detect` | IoT | バナーパターンとデフォルトページによるIoTデバイス検出 |
510
+ | `iot_upnp` | IoT | ローカルネットワーク上のUPnP/SSDPデバイス検出 |
511
+
512
+ </details>
513
+
514
+ <details>
515
+ <summary><b>enumerate &mdash; スコープ拡張(8テクニック)</b></summary>
516
+
517
+ | パラメータ | 型 | 説明 |
518
+ |-----------|------|-------------|
519
+ | `domain` | string | ターゲットドメイン |
520
+
521
+ | テクニック | 説明 |
522
+ |-----------|-------------|
523
+ | `enum_subdomains` | 複数の方法によるサブドメイン列挙 |
524
+ | `enum_wildcard` | ワイルドカードDNS検出 |
525
+ | `enum_tld` | TLD拡張(target.com -> target.net、target.orgなど) |
526
+ | `enum_related` | 共有インフラ経由の関連ドメイン発見 |
527
+ | `enum_asn` | ASN近隣発見 &mdash; 同じネットワーク上の他のドメイン |
528
+ | `enum_ct` | Certificate Transparencyログからのサブドメイン抽出 |
529
+ | `enum_passive_dns` | パッシブDNS履歴(`SECURITYTRAILS_API_KEY`が必要) |
530
+ | `enum_scope` | スコープサマリーと攻撃対象面の概要 |
531
+
532
+ </details>
533
+
534
+ <details>
535
+ <summary><b>osint &mdash; OSINTエンリッチメント(6テクニック)</b></summary>
536
+
537
+ | パラメータ | 型 | 説明 |
538
+ |-----------|------|-------------|
539
+ | `target` | string | エンリッチするIPアドレスまたはドメイン |
540
+ | `type` | `ip` \| `domain` | オプション &mdash; ターゲットタイプ(省略時は自動検出) |
541
+
542
+ | テクニック | 認証 | 説明 |
543
+ |-----------|------|-------------|
544
+ | `osint_shodan` | `SHODAN_API_KEY` | Shodanホスト検索 &mdash; オープンポート、バナー、脆弱性、OS |
545
+ | `osint_censys` | `CENSYS_API_ID` + `CENSYS_API_SECRET` | Censysホストデータ &mdash; サービス、TLS、自律システム |
546
+ | `osint_reverse_ip` | なし | リバースIP検索 &mdash; 同じIP上の他のドメイン |
547
+ | `osint_whois` | なし | WHOIS登録データ &mdash; レジストラ、日付、ネームサーバー |
548
+ | `osint_webarchive` | なし | Web Archive履歴 &mdash; 最初/最後のスナップショット、変更頻度 |
549
+ | `osint_virustotal` | `VIRUSTOTAL_API_KEY` | VirusTotalドメイン/IPレポート &mdash; 検出結果、カテゴリ、DNS |
550
+
551
+ </details>
552
+
553
+ <details>
554
+ <summary><b>analyze &mdash; パッシブフィンガープリント分析(3モード)</b></summary>
555
+
556
+ | パラメータ | 型 | 説明 |
557
+ |-----------|------|-------------|
558
+ | `type` | `headers` \| `html` \| `banner` | 分析するデータの種類 |
559
+ | `data` | string | 分析する生データ(ヘッダー、HTML、またはバナー出力を貼り付け) |
560
+
561
+ | モード | 説明 |
562
+ |--------|-------------|
563
+ | `fp_analyze_headers` | パッシブHTTPヘッダー分析 &mdash; トラフィックを送信せずにサーバー、フレームワーク、プロキシを検出 |
564
+ | `fp_analyze_html` | パッシブHTML分析 &mdash; ソースからの技術検出、フレームワーク識別 |
565
+ | `fp_analyze_banner` | パッシブバナー分析 &mdash; 生のバナーテキストからのサービス識別 |
566
+
567
+ </details>
568
+
569
+ <details>
570
+ <summary><b>correlate &mdash; マルチシグナル相関エンジン(7モード)</b></summary>
571
+
572
+ | パラメータ | 型 | 説明 |
573
+ |-----------|------|-------------|
574
+ | `type` | `consistency` \| `honeypot` \| `spoofing` \| `compare` \| `topology` \| `c2` \| `identify` | 相関モード |
575
+ | `signals` | object | 相関するフィンガープリントシグナル(モードにより異なる) |
576
+
577
+ | モード | 説明 |
578
+ |--------|-------------|
579
+ | `fp_consistency` | クロスレイヤーシグナル整合性チェック &mdash; TCP、TLS、HTTP、DNSのフィンガープリントが一致するか? |
580
+ | `fp_honeypot` | ハニーポット検出 &mdash; 不可能なサービスの組み合わせと動作異常をチェック |
581
+ | `fp_spoofing` | スプーフィング検出 &mdash; サーバーヘッダーと実際の動作の不一致を特定 |
582
+ | `fp_compare` | 2つのホストのフィンガープリントプロファイルの並列比較 |
583
+ | `fp_topology` | インフラトポロジーマッピング &mdash; CDN、ロードバランサー、リバースプロキシチェーン |
584
+ | `fp_c2` | JARM、TLS、HTTP、タイミング相関によるC2フレームワーク検出 |
585
+ | `fp_identify` | 既知のシグネチャデータベースに対するハッシュベースの識別 |
586
+
587
+ </details>
588
+
589
+ <details>
590
+ <summary><b>meta &mdash; サーバー設定とデータ(3モード)</b></summary>
591
+
592
+ | パラメータ | 型 | 説明 |
593
+ |-----------|------|-------------|
594
+ | `category` | string | オプション &mdash; カテゴリでフィルター |
595
+
596
+ | モード | 説明 |
597
+ |--------|-------------|
598
+ | `fp_sources` | 設定とAPIキーステータスを含むすべての利用可能なデータソースの一覧 |
599
+ | `fp_config` | サーバー設定 &mdash; バージョン、ロードされたプロバイダー、テクニック数 |
600
+ | `fp_signatures` | シグネチャデータベース一覧 &mdash; JARM、バナー、WAF、アプリケーションシグネチャ |
601
+
602
+ </details>
603
+
604
+ ---
605
+
606
+ ### CLI使用法
607
+
608
+ ```bash
609
+ # 利用可能なすべてのツールとテクニックを一覧表示
610
+ npx fingerprint-mcp --list
611
+
612
+ # 任意のツールを直接実行
613
+ npx fingerprint-mcp --tool recon '{"url":"https://example.com","depth":"quick"}'
614
+ npx fingerprint-mcp --tool scan_tls '{"host":"example.com"}'
615
+ npx fingerprint-mcp --tool scan_ports '{"host":"10.0.1.50","ports":[22,80,443,3306,8080]}'
616
+ npx fingerprint-mcp --tool scan_dns '{"domain":"example.com"}'
617
+ npx fingerprint-mcp --tool scan_http '{"url":"https://example.com"}'
618
+ npx fingerprint-mcp --tool scan_waf '{"url":"https://example.com"}'
619
+ npx fingerprint-mcp --tool scan_services '{"host":"10.0.1.50","service":"redis"}'
620
+ npx fingerprint-mcp --tool enumerate '{"domain":"example.com"}'
621
+ npx fingerprint-mcp --tool analyze '{"type":"headers","data":"Server: nginx/1.24.0\nX-Powered-By: Express"}'
622
+ npx fingerprint-mcp --tool correlate '{"type":"honeypot","signals":{"jarm":"...","banner":"..."}}'
623
+ npx fingerprint-mcp --tool meta '{}'
624
+
625
+ # OSINTツール(APIキーが必要)
626
+ SHODAN_API_KEY=your-key npx fingerprint-mcp --tool osint '{"target":"203.0.113.42","type":"ip"}'
627
+ ```
628
+
629
+ ---
630
+
631
+ ## データソース(21)
632
+
633
+ | ソース | 認証 | 提供するもの |
634
+ |--------|------|-------------|
635
+ | TCPプローブ | なし | ポートスキャン、バナー取得、サービス検出 |
636
+ | TLS/SSL分析 | なし | 証明書解析、JARMフィンガープリンティング、JA4X、暗号列挙、SNIテスト |
637
+ | SSHプローブ | なし | プロトコルバージョン、アルゴリズム監査、ソフトウェア検出 |
638
+ | HTTP分析 | なし | ヘッダーフィンガープリンティング、faviconハッシュ、cookie分析、メソッド列挙、CORS |
639
+ | Web検出 | なし | 技術検出、アナリティクス、ソースマップ、WebSocket、GraphQL、SPAフレームワーク |
640
+ | パス発見 | なし | 機密ファイル、git漏洩、デバッグエンドポイント、APIバージョン、robots.txt |
641
+ | DNS解決 | なし | レコード列挙、メール認証分析、SaaS検出、サーバーフィンガープリンティング |
642
+ | WAF/CDN検出 | なし | WAF識別、CDN検出、WAFフィンガープリンティング |
643
+ | タイミング分析 | なし | レスポンスタイミングベースライン、クロックスキュー検出 |
644
+ | HTTP/2 & HTTP/3 | なし | HTTP/2検出とフィンガープリンティング、HTTP/3 Alt-Svc発見 |
645
+ | SMTPプローブ | なし | SMTPバナー分析、STARTTLS検査 |
646
+ | IoT/組み込み | なし | IoTデバイス検出、UPnP/SSDP発見 |
647
+ | アプリケーション検出 | なし | CMS、フレームワーク、eコマースプラットフォーム識別 |
648
+ | サービスプローブ | なし | MySQL、PostgreSQL、Redis、FTP、VNC/RDPフィンガープリンティング |
649
+ | インフラ検出 | なし | クラウドプロバイダー、ホスティングプロバイダー、CDN識別 |
650
+ | 相関エンジン | なし | シグナル整合性、ハニーポット検出、スプーフィング検出、トポロジーマッピング |
651
+ | 識別エンジン | なし | ハッシュベースの識別、C2検出、シグネチャマッチング |
652
+ | [Shodan](https://www.shodan.io) | `SHODAN_API_KEY` | ホストインテリジェンス &mdash; オープンポート、バナー、脆弱性、OS検出 |
653
+ | [Censys](https://censys.io) | `CENSYS_API_ID` | ホストデータ &mdash; サービス、TLS証明書、自律システム情報 |
654
+ | [SecurityTrails](https://securitytrails.com) | `SECURITYTRAILS_API_KEY` | WAFオリジン発見、パッシブDNS履歴、過去のレコード |
655
+ | [VirusTotal](https://www.virustotal.com) | `VIRUSTOTAL_API_KEY` | ドメイン/IPレピュテーション、検出結果、DNS履歴、カテゴリ |
656
+
657
+ ---
658
+
659
+ ## アーキテクチャ
660
+
661
+ ```
662
+ src/
663
+ index.ts # CLIエントリーポイント(--help、--list、--tool、stdioサーバー)
664
+ protocol/
665
+ mcp-server.ts # MCPサーバーセットアップ(stdioトランスポート)
666
+ tools.ts # ツールレジストリ — 13のコンポジットツールすべてをここで登録
667
+ types/
668
+ index.ts # 共有型(ToolDef、ToolContext、ToolResult)
669
+ utils/
670
+ rate-limiter.ts # プロバイダーごとのレートリミッター
671
+ cache.ts # APIレスポンス用TTLキャッシュ
672
+ require-key.ts # APIキー検証ヘルパー
673
+ murmurhash3.ts # faviconハッシュ用MurmurHash3
674
+ composite/ # 13のコンポジットツールオーケストレーター
675
+ recon.ts # 完全リコンオーケストレーター(quick/standard/deep)
676
+ scan-ports.ts # ポートスキャンコンポジット
677
+ scan-tls.ts # TLS分析コンポジット
678
+ scan-dns.ts # DNSインテリジェンスコンポジット
679
+ scan-http.ts # HTTPフィンガープリンティングコンポジット
680
+ scan-paths.ts # パス発見コンポジット
681
+ scan-waf.ts # WAF/CDN検出コンポジット
682
+ scan-services.ts # サービスプローブコンポジット
683
+ analyze.ts # パッシブ分析コンポジット
684
+ correlate.ts # 相関エンジンコンポジット
685
+ enumerate.ts # スコープ拡張コンポジット
686
+ osint.ts # OSINTエンリッチメントコンポジット
687
+ meta.ts # サーバーメタコンポジット
688
+ helpers.ts # 共有コンポジットヘルパー
689
+ tcp/ # TCPプローブテクニック(3)
690
+ tls/ # TLS/SSL分析テクニック(8)
691
+ ssh/ # SSHプローブテクニック(3)
692
+ http/ # HTTPフィンガープリンティングテクニック(16)
693
+ web/ # Web技術検出テクニック(9)
694
+ path/ # パス発見テクニック(5)
695
+ dns/ # DNSインテリジェンステクニック(7)
696
+ waf/ # WAF/CDN検出テクニック(4)
697
+ timing/ # タイミング分析テクニック(2)
698
+ h2/ # HTTP/2 & HTTP/3テクニック(3)
699
+ smtp/ # SMTPプローブテクニック(2)
700
+ iot/ # IoT/組み込み検出テクニック(2)
701
+ app/ # アプリケーション検出テクニック(3)
702
+ service/ # サービスプローブテクニック(5)
703
+ infra/ # インフラ検出テクニック(3)
704
+ correlation/ # 相関エンジン(5)
705
+ identify/ # 識別エンジン(3)
706
+ passive/ # パッシブ分析(3)
707
+ osint/ # OSINTエンリッチメントテクニック(6)
708
+ enum/ # 列挙テクニック(8)
709
+ meta/ # メタツール(3)
710
+ data/ # シグネチャデータベースとパターンライブラリ
711
+ jarm-signatures.ts # 既知のJARMフィンガープリント(C2、サーバー、CDN)
712
+ waf-signatures.ts # WAF検出シグネチャ
713
+ service-banners.ts # サービスバナーパターン
714
+ tech-patterns.ts # 技術検出パターン
715
+ favicon-hashes.ts # 既知のfavicon MurmurHash3値
716
+ c2-signatures.ts # C2フレームワークシグネチャ
717
+ ... # 15以上のシグネチャ/パターンデータベース
718
+ ```
719
+
720
+ **設計上の決定:**
721
+
722
+ - **13のコンポジットツール、103のテクニック** &mdash; エージェントは高レベルツール(`recon`、`scan_tls`、`scan_http`)を呼び出します。各コンポジットは複数の低レベルテクニックをオーケストレーションし、相関された結果を返します。これにより粒度を維持しながらツール呼び出しのオーバーヘッドを削減します。
723
+ - **21プロバイダー、1サーバー** &mdash; すべてのフィンガープリンティングレイヤーが独立したモジュールです。コンポジットオーケストレーターがコンテキストと深度に基づいてテクニックを選択します。
724
+ - **アクティブ優先、OSINTはオプション** &mdash; 80以上のテクニックがAPIキーなしでターゲットを直接プローブして動作します。OSINTプロバイダー(Shodan、Censys、VirusTotal、SecurityTrails)はエンリッチメントを追加しますが、決して必須ではありません。
725
+ - **プロバイダーごとのレートリミッター** &mdash; 各プロバイダーが独自の`RateLimiter`インスタンスを持ちます。アクティブプローブは検出を避けるためレート制限され、OSINT APIはそれぞれのクォータに合わせて調整されています。
726
+ - **TTLキャッシュ** &mdash; DNSレコード(10分)、OSINT結果(15分)、CTログ(30分)がキャッシュされ、マルチツールワークフロー中の冗長な検索を回避します。
727
+ - **グレースフルデグラデーション** &mdash; 不足しているAPIキーがサーバーをクラッシュさせることはありません。OSINTツールは説明的なメッセージを返します:「Shodanホスト検索を有効にするにはSHODAN_API_KEYを設定してください。」
728
+ - **3つの依存関係** &mdash; `@modelcontextprotocol/sdk`、`zod`、`cheerio`。すべてのネットワークI/Oはネイティブの`fetch()`とNode.jsの`net`/`tls`/`dns`モジュール経由です。nmapなし、外部バイナリなし。
729
+
730
+ ---
731
+
732
+ ## 制限事項
733
+
734
+ - OSINTツール(Shodan、Censys、VirusTotal、SecurityTrails)はそれぞれのテクニックにAPIキーが必要
735
+ - Censys無料プランは月250クエリに制限
736
+ - VirusTotal無料プランは日500クエリに制限
737
+ - ポートスキャンはTCPコネクト(SYNスキャンではない)を使用 &mdash; nmapより隠密性が低いがroot権限は不要
738
+ - JARMフィンガープリンティングはターゲットへの直接TCPアクセスが必要(ファイアウォールによりブロックされる場合あり)
739
+ - UPnP/SSDP発見はローカルネットワークでのみ動作
740
+ - サービスプローブ(MySQL、PostgreSQL、Redis)は接続するが認証しない
741
+ - サブドメイン列挙はCTログとパッシブソースに依存(ブルートフォースなし)
742
+ - macOS / Linuxでテスト済み(Windowsは未テスト)
743
+
744
+ ---
745
+
746
+ ## MCPセキュリティスイートの一部
747
+
748
+ | プロジェクト | ドメイン | ツール |
749
+ |------------|---------|--------|
750
+ | [hackbrowser-mcp](https://github.com/badchars/hackbrowser-mcp) | ブラウザベースのセキュリティテスト | 39ツール、Firefox、インジェクションテスト |
751
+ | [cloud-audit-mcp](https://github.com/badchars/cloud-audit-mcp) | クラウドセキュリティ(AWS/Azure/GCP) | 38ツール、60以上のチェック |
752
+ | [github-security-mcp](https://github.com/badchars/github-security-mcp) | GitHubセキュリティ態勢 | 39ツール、45チェック |
753
+ | [cve-mcp](https://github.com/badchars/cve-mcp) | 脆弱性インテリジェンス | 23ツール、5ソース |
754
+ | [osint-mcp-server](https://github.com/badchars/osint-mcp-server) | OSINTとリコネサンス | 37ツール、12ソース |
755
+ | [darknet-mcp-server](https://github.com/badchars/darknet-mcp-server) | ダークウェブと脅威インテリジェンス | 66ツール、16ソース |
756
+ | **fingerprint-mcp** | **ユニバーサルデジタルフィンガープリンティング** | **13ツール、103テクニック、21プロバイダー** |
757
+
758
+ ---
759
+
760
+ <p align="center">
761
+ <b>認可されたセキュリティテストと評価にのみ使用してください。</b><br>
762
+ ターゲットに対してフィンガープリンティングを実行する前に、必ず適切な認可を得てください。
763
+ </p>
764
+
765
+ <p align="center">
766
+ <a href="LICENSE">AGPL-3.0ライセンス</a> &bull; Bun + TypeScriptで構築
767
+ </p>