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
@@ -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
+ <a href="README.ja.md">日本語</a> |
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
+ <strong>Português (Brasil)</strong> |
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">Fingerprinting digital universal para agentes de IA.</h3>
37
+
38
+ <p align="center">
39
+ TCP, TLS/SSL, SSH, HTTP, DNS, WAF/CDN, IoT, SMTP, sondagem de servicos, JARM, JA4X, hash de favicon, topologia de infraestrutura, deteccao de C2, enriquecimento OSINT &mdash; unificados em um unico servidor MCP.<br>
40
+ Seu agente de IA obtem <b>fingerprinting de espectro completo sob demanda</b>, nao 11 ferramentas CLI desconectadas e correlacao manual.
41
+ </p>
42
+
43
+ <br>
44
+
45
+ <p align="center">
46
+ <a href="#o-problema">O Problema</a> &bull;
47
+ <a href="#como-e-diferente">Como e Diferente</a> &bull;
48
+ <a href="#inicio-rapido">Inicio Rapido</a> &bull;
49
+ <a href="#o-que-a-ia-pode-fazer">O que a IA Pode Fazer</a> &bull;
50
+ <a href="#referencia-de-ferramentas-13-ferramentas-103-tecnicas">Ferramentas (13)</a> &bull;
51
+ <a href="#fontes-de-dados-21">Fontes de Dados</a> &bull;
52
+ <a href="#arquitetura">Arquitetura</a> &bull;
53
+ <a href="CHANGELOG.md">Changelog</a> &bull;
54
+ <a href="CONTRIBUTING.md">Contribuir</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="Licenca"></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 Ferramentas">
63
+ <img src="https://img.shields.io/badge/techniques-103-f97316" alt="103 Tecnicas">
64
+ </p>
65
+
66
+ <p align="center">
67
+ <img src="https://raw.githubusercontent.com/badchars/fingerprint-mcp/main/.github/demo.gif" alt="demonstracao do fingerprint-mcp" width="800">
68
+ </p>
69
+
70
+ ---
71
+
72
+ ## O Problema
73
+
74
+ Fazer o fingerprinting de um servidor hoje significa lidar com uma duzia de ferramentas desconectadas. Voce executa `nmap` para varredura de portas, `testssl.sh` para analise de certificados, `curl -I` para cabecalhos HTTP, `dig` para DNS, `wafw00f` para deteccao de WAF, `ssh-audit` para SSH, uma ferramenta JARM separada, Wappalyzer para deteccao de tecnologias &mdash; e depois gasta 30 minutos cruzando manualmente tudo em uma planilha para descobrir o que realmente esta rodando.
75
+
76
+ ```
77
+ Fluxo de trabalho tradicional de fingerprinting:
78
+ analisar certificados TLS -> testssl.sh / openssl s_client
79
+ capturar cabecalhos HTTP -> curl -I
80
+ detectar tecnologias web -> wappalyzer CLI
81
+ reconhecimento DNS -> dig / nslookup / dnsenum
82
+ varredura de portas -> nmap -sV
83
+ deteccao de WAF -> wafw00f
84
+ auditoria SSH -> ssh-audit
85
+ fingerprinting de servicos -> nmap scripts
86
+ fingerprint JARM -> jarm (ferramenta separada)
87
+ verificar bancos OSINT -> shodan CLI, censys CLI
88
+ correlacionar tudo -> manualmente em uma planilha
89
+ ──────────────────────────────
90
+ Total: 11 ferramentas, 30+ minutos, correlacao manual
91
+ ```
92
+
93
+ O **fingerprint-mcp** oferece ao seu agente de IA 13 ferramentas compostas que encapsulam 103 tecnicas de fingerprinting em 21 provedores via [Model Context Protocol](https://modelcontextprotocol.io). O agente executa fingerprinting multicamada em paralelo, correlaciona sinais entre as camadas TCP/TLS/HTTP/DNS/SSH, detecta honeypots e infraestrutura C2, e apresenta um panorama de inteligencia unificado &mdash; em uma unica conversa.
94
+
95
+ ```
96
+ Com fingerprint-mcp:
97
+ Voce: "Faca um reconhecimento profundo em target.com"
98
+
99
+ Agente: -> recon {url: "https://target.com", depth: "deep"}
100
+
101
+ -> TLS: nginx/1.24.0 via JARM (3fd21b20d00000...),
102
+ certificado Let's Encrypt, 2 SANs, TLS 1.2+1.3
103
+ -> HTTP: Express.js atras do Cloudflare WAF,
104
+ React SPA, Google Analytics, 14 cabecalhos de seguranca analisados
105
+ -> DNS: registros A/AAAA/MX/TXT, SPF/DKIM/DMARC configurados,
106
+ Slack + Google Workspace detectados via CNAME/MX
107
+ -> Portas: 80, 443, 22 (OpenSSH 9.6), 8080 (servidor de desenvolvimento)
108
+ -> WAF: Cloudflare detectado, IP de origem descoberto via conexao direta
109
+ -> Enumeracao: 12 subdominios via logs CT, wildcard DNS detectado
110
+ -> "target.com roda nginx/1.24.0 com Express.js atras do
111
+ Cloudflare WAF. IP de origem 203.0.113.42 exposto na porta 8080.
112
+ TLS esta corretamente configurado (equivalente a A+), mas o servidor
113
+ de desenvolvimento na porta 8080 nao tem protecao WAF. 3 subdominios
114
+ apontam para infraestrutura desativada — risco potencial de takeover."
115
+ ```
116
+
117
+ ---
118
+
119
+ ## Como e Diferente
120
+
121
+ Ferramentas existentes fornecem dados brutos uma camada por vez. O fingerprint-mcp da ao seu agente de IA a capacidade de **raciocinar em todas as camadas de fingerprinting simultaneamente**.
122
+
123
+ <table>
124
+ <thead>
125
+ <tr>
126
+ <th></th>
127
+ <th>Abordagem Tradicional</th>
128
+ <th>fingerprint-mcp</th>
129
+ </tr>
130
+ </thead>
131
+ <tbody>
132
+ <tr>
133
+ <td><b>Interface</b></td>
134
+ <td>11 ferramentas CLI diferentes com formatos de saida distintos</td>
135
+ <td>MCP &mdash; agente de IA chama ferramentas de forma conversacional</td>
136
+ </tr>
137
+ <tr>
138
+ <td><b>Tecnicas</b></td>
139
+ <td>Uma ferramenta, uma camada por vez</td>
140
+ <td>103 tecnicas em 21 provedores, executadas em paralelo</td>
141
+ </tr>
142
+ <tr>
143
+ <td><b>Analise TLS</b></td>
144
+ <td>Saida do testssl.sh, parse manual do JARM separadamente</td>
145
+ <td>Agente combina certificado + JARM + JA4X + suites de cifra + SNI + logs CT em uma chamada</td>
146
+ </tr>
147
+ <tr>
148
+ <td><b>Correlacao</b></td>
149
+ <td>Copiar e colar resultados em uma planilha</td>
150
+ <td>Agente correlaciona cruzando: "JARM corresponde a framework C2 conhecido, timing HTTP confirma honeypot"</td>
151
+ </tr>
152
+ <tr>
153
+ <td><b>Bypass de WAF</b></td>
154
+ <td>wafw00f detecta WAF, voce busca manualmente a origem</td>
155
+ <td>Agente detecta WAF, descobre IP de origem e verifica que serve o mesmo conteudo</td>
156
+ </tr>
157
+ <tr>
158
+ <td><b>Chaves API</b></td>
159
+ <td>Necessarias para Shodan, Censys, etc.</td>
160
+ <td>80+ tecnicas ativas funcionam sem nenhuma chave API; chaves desbloqueiam enriquecimento OSINT</td>
161
+ </tr>
162
+ <tr>
163
+ <td><b>Configuracao</b></td>
164
+ <td>Instalar nmap, testssl, wafw00f, ssh-audit, jarm, wappalyzer...</td>
165
+ <td><code>npx fingerprint-mcp</code> &mdash; um comando, zero configuracao</td>
166
+ </tr>
167
+ </tbody>
168
+ </table>
169
+
170
+ ---
171
+
172
+ ## Inicio Rapido
173
+
174
+ ### Opcao 1: npx (sem instalacao)
175
+
176
+ ```bash
177
+ npx fingerprint-mcp
178
+ ```
179
+
180
+ Todas as 80+ tecnicas ativas de fingerprinting funcionam imediatamente. Nenhuma chave API necessaria para fingerprinting de TCP, TLS, SSH, HTTP, DNS, WAF, caminhos, servicos, timing, IoT, SMTP, infraestrutura e aplicacoes.
181
+
182
+ ### Opcao 2: Clonar
183
+
184
+ ```bash
185
+ git clone https://github.com/badchars/fingerprint-mcp.git
186
+ cd fingerprint-mcp
187
+ bun install
188
+ ```
189
+
190
+ ### Variaveis de ambiente (opcional)
191
+
192
+ ```bash
193
+ # Enriquecimento OSINT (todas opcionais — fingerprinting ativo funciona sem nenhuma chave)
194
+ export SHODAN_API_KEY=your-key # Habilita osint_shodan, ssh_hostkey_lookup
195
+ export CENSYS_API_ID=your-id # Habilita osint_censys (gratis: 250 consultas/mes)
196
+ export CENSYS_API_SECRET=your-secret # Segredo da API Censys
197
+ export SECURITYTRAILS_API_KEY=your-key # Habilita waf_origin, enum_passive_dns
198
+ export VIRUSTOTAL_API_KEY=your-key # Habilita osint_virustotal (gratis: 500 consultas/dia)
199
+ ```
200
+
201
+ Todas as chaves API sao opcionais. Sem elas, voce ainda obtem fingerprinting completo de TCP/TLS/SSH/HTTP/DNS/WAF/caminhos/servicos/timing/IoT/SMTP/infraestrutura/aplicacoes, correlacao, analise passiva, enumeracao e ferramentas meta &mdash; 80+ tecnicas que funcionam sondando o alvo diretamente.
202
+
203
+ ### Conectar ao seu agente de IA
204
+
205
+ <details open>
206
+ <summary><b>Claude Code</b></summary>
207
+
208
+ ```bash
209
+ # Com npx
210
+ claude mcp add fingerprint-mcp -- npx fingerprint-mcp
211
+
212
+ # Com clone local
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
+ Adicione em `~/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 / outros clientes MCP</b></summary>
245
+
246
+ Mesmo formato de configuracao JSON. Aponte o comando para `npx fingerprint-mcp` ou o caminho da sua instalacao local.
247
+
248
+ </details>
249
+
250
+ ### Comece a consultar
251
+
252
+ ```
253
+ Voce: "Faca o fingerprinting completo de target.com — TLS, stack HTTP, WAF, DNS, portas abertas"
254
+ ```
255
+
256
+ E so isso. O agente lida com fingerprinting multicamada, correlacao de sinais e analise de infraestrutura automaticamente.
257
+
258
+ ---
259
+
260
+ ## O que a IA Pode Fazer
261
+
262
+ ### Reconhecimento Rapido
263
+
264
+ ```
265
+ Voce: "Reconhecimento rapido em target.com"
266
+
267
+ Agente: -> recon {url: "https://target.com", depth: "quick"}
268
+
269
+ -> TCP: portas 80, 443, 22 abertas
270
+ -> TLS: certificado Let's Encrypt RSA, TLS 1.2+1.3, assinatura 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 configurado
273
+ -> WAF: Cloudflare detectado (cabecalho cf-ray)
274
+ -> "target.com e um React SPA em Express.js atras do nginx/1.24.0,
275
+ servido pelo Cloudflare CDN. TLS configurado corretamente com
276
+ Let's Encrypt. SSH na porta 22 rodando OpenSSH 9.6. E-mail
277
+ gerenciado pelo Google Workspace com SPF/DKIM/DMARC completo."
278
+ ```
279
+
280
+ ### Investigacao TLS Profunda
281
+
282
+ ```
283
+ Voce: "Analise a configuracao TLS de suspicious-server.com em detalhes"
284
+
285
+ Agente: -> scan_tls {host: "suspicious-server.com"}
286
+
287
+ -> Certificado: autoassinado, CN=localhost, expirado ha 47 dias
288
+ -> JARM: 2ad2ad0002ad2ad00042d42d00000069d641f34fe76acdc05c40262f8815e5
289
+ (corresponde ao perfil padrao do Cobalt Strike)
290
+ -> JA4X: fingerprint corresponde a padrao de framework C2 conhecido
291
+ -> Suites de cifra: aceita cifras fracas (RC4, 3DES)
292
+ -> SNI: responde de forma identica a qualquer valor SNI
293
+ -> Logs CT: certificado nao registrado (nao confiavel publicamente)
294
+ -> "ALTO RISCO: Configuracao TLS indica fortemente infraestrutura C2.
295
+ Certificado autoassinado expirado, fingerprint JARM corresponde ao Cobalt Strike,
296
+ aceita cifras fracas e responde a valores SNI arbitrarios.
297
+ Recomenda-se investigacao imediata e bloqueio."
298
+ ```
299
+
300
+ ### Bypass de WAF e Descoberta de Origem
301
+
302
+ ```
303
+ Voce: "target.com esta atras de um WAF. Voce consegue encontrar o servidor de origem?"
304
+
305
+ Agente: -> scan_waf {url: "https://target.com"}
306
+ -> scan_dns {domain: "target.com"}
307
+ -> enumerate {domain: "target.com"}
308
+
309
+ -> WAF: Cloudflare (AS13335), pagina de desafio em requisicoes suspeitas
310
+ -> DNS: registro A aponta para IP Cloudflare 104.21.x.x
311
+ -> Subdominios: dev.target.com resolve para 203.0.113.42 (nao-Cloudflare)
312
+ -> Conexao direta a 203.0.113.42:443 retorna o mesmo certificado TLS
313
+ -> Historico SecurityTrails: origem era 203.0.113.42 antes do Cloudflare
314
+ -> "IP de origem encontrado: 203.0.113.42. Descoberto via subdominio
315
+ dev.target.com que contorna o Cloudflare. A origem serve o mesmo
316
+ certificado TLS e responde ao cabecalho Host de target.com.
317
+ A origem nao tem protecao WAF — acesso direto possivel."
318
+ ```
319
+
320
+ ### Descoberta de Servicos em um Host
321
+
322
+ ```
323
+ Voce: "Quais servicos estao rodando em 10.0.1.50?"
324
+
325
+ Agente: -> scan_ports {host: "10.0.1.50"}
326
+ -> scan_services {host: "10.0.1.50", ports: [22, 80, 3306, 5432, 6379, 8080]}
327
+
328
+ -> Porta 22: OpenSSH 8.9p1 Ubuntu, chave de host ED25519
329
+ -> Porta 80: Apache/2.4.57, PHP/8.2, WordPress 6.4
330
+ -> Porta 3306: MySQL 8.0.36, autenticacao necessaria
331
+ -> Porta 5432: PostgreSQL 16.1, SSL necessario
332
+ -> Porta 6379: Redis 7.2.4, SEM autenticacao (aberto)
333
+ -> Porta 8080: servidor de desenvolvimento Node.js Express, CORS: *
334
+ -> "CRITICO: Redis na porta 6379 nao tem autenticacao — qualquer pessoa na
335
+ rede pode ler/escrever dados. O servidor de desenvolvimento Express na 8080
336
+ tem CORS wildcard. MySQL e PostgreSQL exigem autenticacao corretamente.
337
+ WordPress esta 2 versoes menores atrasado. Acao imediata necessaria
338
+ para o Redis e a exposicao do servidor de desenvolvimento."
339
+ ```
340
+
341
+ ---
342
+
343
+ ## Referencia de Ferramentas (13 ferramentas, 103 tecnicas)
344
+
345
+ <details open>
346
+ <summary><b>recon &mdash; Reconhecimento completo com selecao de tecnicas baseada em profundidade</b></summary>
347
+
348
+ | Parametro | Tipo | Descricao |
349
+ |-----------|------|-----------|
350
+ | `url` | string | URL alvo para fingerprinting |
351
+ | `depth` | `quick` \| `standard` \| `deep` | Profundidade da varredura: quick=5 tecnicas, standard=20, deep=50+ |
352
+
353
+ Orquestra tecnicas de todos os provedores com base no nivel de profundidade. O modo rapido fornece uma visao geral rapida; o modo profundo executa fingerprinting exaustivo incluindo enumeracao, OSINT e correlacao.
354
+
355
+ </details>
356
+
357
+ <details>
358
+ <summary><b>scan_ports &mdash; Varredura de portas TCP com deteccao de servicos (3 tecnicas)</b></summary>
359
+
360
+ | Parametro | Tipo | Descricao |
361
+ |-----------|------|-----------|
362
+ | `host` | string | Host alvo (IP ou dominio) |
363
+ | `ports` | number[] | Opcional &mdash; portas especificas para varredura (padrao: portas comuns) |
364
+
365
+ | Tecnica | Descricao |
366
+ |---------|-----------|
367
+ | `tcp_probe` | Varredura TCP connect para detectar portas abertas |
368
+ | `tcp_banner` | Captura de banner em portas abertas para identificacao de servicos |
369
+ | `tcp_analysis` | Analise de combinacao de portas e inferencia de servicos |
370
+
371
+ </details>
372
+
373
+ <details>
374
+ <summary><b>scan_tls &mdash; Analise completa de TLS/SSL (8 tecnicas)</b></summary>
375
+
376
+ | Parametro | Tipo | Descricao |
377
+ |-----------|------|-----------|
378
+ | `host` | string | Host alvo (IP ou dominio) |
379
+ | `port` | number | Opcional &mdash; porta TLS (padrao: 443) |
380
+
381
+ | Tecnica | Descricao |
382
+ |---------|-----------|
383
+ | `tls_certificate` | Parsing de certificado X.509 &mdash; sujeito, emissor, SANs, validade, cadeia |
384
+ | `tls_jarm` | Fingerprinting ativo JARM &mdash; 10 sondas TLS Client Hello, hash de 62 caracteres |
385
+ | `tls_ja4x` | Fingerprinting passivo JA4X de TLS a partir de propriedades do certificado |
386
+ | `tls_ciphers` | Enumeracao de suites de cifra e analise de forca |
387
+ | `tls_protocols` | Deteccao de versoes de protocolo TLS suportadas (SSLv3 ate TLS 1.3) |
388
+ | `tls_sni` | Teste de comportamento SNI &mdash; certificado padrao vs. hostname solicitado |
389
+ | `tls_ct_logs` | Consulta de logs de Certificate Transparency via crt.sh |
390
+ | `tls_ocsp` | Verificacao de grampeamento OCSP e status de revogacao |
391
+
392
+ </details>
393
+
394
+ <details>
395
+ <summary><b>scan_dns &mdash; Inteligencia DNS (7 tecnicas)</b></summary>
396
+
397
+ | Parametro | Tipo | Descricao |
398
+ |-----------|------|-----------|
399
+ | `domain` | string | Dominio alvo |
400
+
401
+ | Tecnica | Descricao |
402
+ |---------|-----------|
403
+ | `dns_records` | Enumeracao completa de registros &mdash; A, AAAA, MX, NS, TXT, CNAME, SOA |
404
+ | `dns_email_auth` | Analise de registros SPF, DKIM e DMARC |
405
+ | `dns_saas` | Deteccao de SaaS/servicos via padroes CNAME e MX (Slack, Zendesk, etc.) |
406
+ | `dns_server` | Fingerprinting de servidor DNS (BIND, PowerDNS, Cloudflare, etc.) |
407
+ | `dns_takeover` | Deteccao de subdomain takeover via analise de CNAME pendente |
408
+ | `dns_zone` | Tentativa de transferencia de zona (AXFR) |
409
+ | `dns_caa` | Analise de registro CAA para restricoes de autoridade certificadora |
410
+
411
+ </details>
412
+
413
+ <details>
414
+ <summary><b>scan_http &mdash; Fingerprinting HTTP/web (29 tecnicas)</b></summary>
415
+
416
+ | Parametro | Tipo | Descricao |
417
+ |-----------|------|-----------|
418
+ | `url` | string | URL alvo |
419
+
420
+ | Tecnica | Provedor | Descricao |
421
+ |---------|----------|-----------|
422
+ | `http_headers` | HTTP | Analise de cabecalhos de resposta e identificacao de servidor |
423
+ | `http_header_order` | HTTP | Fingerprint de ordem de cabecalhos (assinatura de software do servidor) |
424
+ | `http_security_headers` | HTTP | Auditoria de cabecalhos de seguranca (CSP, HSTS, X-Frame-Options, etc.) |
425
+ | `http_cookies` | HTTP | Analise de cookies &mdash; flags, prefixos, deteccao de framework |
426
+ | `http_methods` | HTTP | Enumeracao de metodos HTTP permitidos (OPTIONS) |
427
+ | `http_cors` | HTTP | Analise de politica CORS e deteccao de configuracao incorreta |
428
+ | `http_compression` | HTTP | Algoritmos de compressao suportados (gzip, br, zstd) |
429
+ | `http_caching` | HTTP | Analise de cabecalhos de cache (deteccao de CDN, proxy reverso) |
430
+ | `http_etag` | HTTP | Analise de formato ETag para identificacao de backend |
431
+ | `http_error` | HTTP | Fingerprinting de paginas de erro (paginas de erro personalizadas vs. padrao) |
432
+ | `http_redirect` | HTTP | Analise de cadeia de redirecionamento |
433
+ | `http_timing` | HTTP | Linha base de tempo de resposta para perfilamento de desempenho do servidor |
434
+ | `http_favicon` | HTTP | Hash de favicon (MurmurHash3) para identificacao de tecnologia |
435
+ | `http_robots` | HTTP | Parsing de robots.txt e extracao de caminhos proibidos |
436
+ | `http_sitemap` | HTTP | Descoberta de sitemap e extracao de URLs |
437
+ | `http_wellknown` | HTTP | Descoberta de endpoints .well-known (security.txt, openid, etc.) |
438
+ | `web_tech` | Web | Deteccao de tecnologias via padroes HTML/JS/CSS |
439
+ | `web_analytics` | Web | Deteccao de servicos de analytics e rastreamento |
440
+ | `web_sourcemaps` | Web | Descoberta de arquivos source map |
441
+ | `web_websocket` | Web | Deteccao de endpoints WebSocket |
442
+ | `web_graphql` | Web | Deteccao de endpoint GraphQL e introspecao |
443
+ | `web_spa` | Web | Deteccao de framework de aplicacao single-page |
444
+ | `web_cdn` | Web | Deteccao de CDN via cabecalhos de resposta e DNS |
445
+ | `web_meta` | Web | Analise de tags meta HTML (gerador, dicas de framework) |
446
+ | `web_feed` | Web | Descoberta de feeds RSS/Atom |
447
+ | `h2_detect` | HTTP/2 | Deteccao de suporte ao protocolo HTTP/2 |
448
+ | `h2_fingerprint` | HTTP/2 | Fingerprinting de servidor HTTP/2 (SETTINGS, WINDOW_UPDATE) |
449
+ | `h2_h3` | HTTP/2 | Deteccao de suporte HTTP/3 (QUIC) via cabecalho Alt-Svc |
450
+ | `app_cms` | Application | Deteccao de CMS (WordPress, Drupal, Joomla, etc.) |
451
+
452
+ </details>
453
+
454
+ <details>
455
+ <summary><b>scan_paths &mdash; Inteligencia de caminhos (5 tecnicas)</b></summary>
456
+
457
+ | Parametro | Tipo | Descricao |
458
+ |-----------|------|-----------|
459
+ | `url` | string | URL alvo |
460
+ | `categories` | string[] | Opcional &mdash; categorias a verificar (sensitive, git, debug, api, config) |
461
+
462
+ | Tecnica | Descricao |
463
+ |---------|-----------|
464
+ | `path_sensitive` | Descoberta de arquivos sensiveis (arquivos de backup, arquivos de configuracao, dumps de banco de dados) |
465
+ | `path_robots` | Analise de robots.txt e sitemap.xml para caminhos ocultos |
466
+ | `path_git` | Deteccao de vazamento de repositorio Git (.git/HEAD, .git/config) |
467
+ | `path_debug` | Descoberta de endpoints de debug (phpinfo, server-status, consoles de debug) |
468
+ | `path_api` | Descoberta de versoes de API e endpoints de documentacao |
469
+
470
+ </details>
471
+
472
+ <details>
473
+ <summary><b>scan_waf &mdash; Deteccao e fingerprinting de WAF/CDN (4 tecnicas)</b></summary>
474
+
475
+ | Parametro | Tipo | Descricao |
476
+ |-----------|------|-----------|
477
+ | `url` | string | URL alvo |
478
+
479
+ | Tecnica | Descricao |
480
+ |---------|-----------|
481
+ | `waf_detect` | Deteccao de presenca de WAF via analise de cabecalho de resposta e comportamento |
482
+ | `waf_cdn` | Identificacao de provedor CDN (Cloudflare, Akamai, Fastly, etc.) |
483
+ | `waf_fingerprint` | Identificacao de produto WAF e deteccao de versao |
484
+ | `waf_origin` | Descoberta de IP de origem atras de WAF/CDN (requer `SECURITYTRAILS_API_KEY`) |
485
+
486
+ </details>
487
+
488
+ <details>
489
+ <summary><b>scan_services &mdash; Sondagem em nivel de servico (12 tecnicas)</b></summary>
490
+
491
+ | Parametro | Tipo | Descricao |
492
+ |-----------|------|-----------|
493
+ | `host` | string | Host alvo (IP ou dominio) |
494
+ | `ports` | number[] | Opcional &mdash; portas especificas para sondar |
495
+ | `service` | string | Opcional &mdash; servico especifico para sondar (mysql, postgres, redis, ftp, ssh, smtp, vnc, iot) |
496
+
497
+ | Tecnica | Provedor | Descricao |
498
+ |---------|----------|-----------|
499
+ | `ssh_probe` | SSH | Deteccao de versao do protocolo SSH e software |
500
+ | `ssh_algorithms` | SSH | Auditoria de algoritmos SSH (KEX, cifras, MACs, tipos de chave de host) |
501
+ | `ssh_hostkey_lookup` | SSH | Consulta de chave de host SSH via Shodan (requer `SHODAN_API_KEY`) |
502
+ | `svc_mysql` | Service | Deteccao de versao MySQL e fingerprinting de capacidades |
503
+ | `svc_postgres` | Service | Deteccao de versao PostgreSQL e verificacao de suporte SSL |
504
+ | `svc_redis` | Service | Deteccao de versao Redis e status de autenticacao |
505
+ | `svc_ftp` | Service | Analise de banner FTP e verificacao de login anonimo |
506
+ | `svc_vnc_rdp` | Service | Deteccao de servico VNC/RDP e avaliacao de seguranca |
507
+ | `smtp_banner` | SMTP | Analise de banner SMTP e identificacao de MTA |
508
+ | `smtp_starttls` | SMTP | Suporte SMTP STARTTLS e inspecao de certificado |
509
+ | `iot_detect` | IoT | Deteccao de dispositivos IoT via padroes de banner e paginas padrao |
510
+ | `iot_upnp` | IoT | Descoberta de dispositivos UPnP/SSDP na rede local |
511
+
512
+ </details>
513
+
514
+ <details>
515
+ <summary><b>enumerate &mdash; Expansao de escopo (8 tecnicas)</b></summary>
516
+
517
+ | Parametro | Tipo | Descricao |
518
+ |-----------|------|-----------|
519
+ | `domain` | string | Dominio alvo |
520
+
521
+ | Tecnica | Descricao |
522
+ |---------|-----------|
523
+ | `enum_subdomains` | Enumeracao de subdominios via multiplos metodos |
524
+ | `enum_wildcard` | Deteccao de wildcard DNS |
525
+ | `enum_tld` | Expansao de TLD (target.com -> target.net, target.org, etc.) |
526
+ | `enum_related` | Descoberta de dominios relacionados via infraestrutura compartilhada |
527
+ | `enum_asn` | Descoberta de vizinhos ASN &mdash; outros dominios na mesma rede |
528
+ | `enum_ct` | Extracao de subdominios de logs de Certificate Transparency |
529
+ | `enum_passive_dns` | Historico de DNS passivo (requer `SECURITYTRAILS_API_KEY`) |
530
+ | `enum_scope` | Resumo de escopo e visao geral da superficie de ataque |
531
+
532
+ </details>
533
+
534
+ <details>
535
+ <summary><b>osint &mdash; Enriquecimento OSINT (6 tecnicas)</b></summary>
536
+
537
+ | Parametro | Tipo | Descricao |
538
+ |-----------|------|-----------|
539
+ | `target` | string | Endereco IP ou dominio para enriquecer |
540
+ | `type` | `ip` \| `domain` | Opcional &mdash; tipo de alvo (auto-detectado se omitido) |
541
+
542
+ | Tecnica | Autenticacao | Descricao |
543
+ |---------|--------------|-----------|
544
+ | `osint_shodan` | `SHODAN_API_KEY` | Consulta de host Shodan &mdash; portas abertas, banners, vulnerabilidades, SO |
545
+ | `osint_censys` | `CENSYS_API_ID` + `CENSYS_API_SECRET` | Dados de host Censys &mdash; servicos, TLS, sistema autonomo |
546
+ | `osint_reverse_ip` | Nenhuma | Consulta reversa de IP &mdash; outros dominios no mesmo IP |
547
+ | `osint_whois` | Nenhuma | Dados de registro WHOIS &mdash; registrador, datas, nameservers |
548
+ | `osint_webarchive` | Nenhuma | Historico do Web Archive &mdash; primeiro/ultimo snapshot, frequencia de alteracao |
549
+ | `osint_virustotal` | `VIRUSTOTAL_API_KEY` | Relatorio VirusTotal de dominio/IP &mdash; deteccoes, categorias, DNS |
550
+
551
+ </details>
552
+
553
+ <details>
554
+ <summary><b>analyze &mdash; Analise passiva de fingerprint (3 modos)</b></summary>
555
+
556
+ | Parametro | Tipo | Descricao |
557
+ |-----------|------|-----------|
558
+ | `type` | `headers` \| `html` \| `banner` | Tipo de dado a analisar |
559
+ | `data` | string | Dados brutos para analisar (cole cabecalhos, HTML ou saida de banner) |
560
+
561
+ | Modo | Descricao |
562
+ |------|-----------|
563
+ | `fp_analyze_headers` | Analise passiva de cabecalhos HTTP &mdash; deteccao de servidor, framework, proxy sem enviar trafego |
564
+ | `fp_analyze_html` | Analise passiva de HTML &mdash; deteccao de tecnologia, identificacao de framework a partir do codigo-fonte |
565
+ | `fp_analyze_banner` | Analise passiva de banner &mdash; identificacao de servico a partir de texto bruto de banner |
566
+
567
+ </details>
568
+
569
+ <details>
570
+ <summary><b>correlate &mdash; Motor de correlacao multi-sinal (7 modos)</b></summary>
571
+
572
+ | Parametro | Tipo | Descricao |
573
+ |-----------|------|-----------|
574
+ | `type` | `consistency` \| `honeypot` \| `spoofing` \| `compare` \| `topology` \| `c2` \| `identify` | Modo de correlacao |
575
+ | `signals` | object | Sinais de fingerprint para correlacionar (varia por modo) |
576
+
577
+ | Modo | Descricao |
578
+ |------|-----------|
579
+ | `fp_consistency` | Verificacao de consistencia de sinais entre camadas &mdash; TCP, TLS, HTTP e DNS concordam? |
580
+ | `fp_honeypot` | Deteccao de honeypot &mdash; verifica combinacoes impossiveis de servicos e anomalias comportamentais |
581
+ | `fp_spoofing` | Deteccao de spoofing &mdash; identifica discrepancias entre cabecalhos do servidor e comportamento real |
582
+ | `fp_compare` | Comparacao lado a lado dos perfis de fingerprint de dois hosts |
583
+ | `fp_topology` | Mapeamento de topologia de infraestrutura &mdash; CDN, balanceador de carga, cadeia de proxy reverso |
584
+ | `fp_c2` | Deteccao de framework C2 via correlacao de JARM, TLS, HTTP e timing |
585
+ | `fp_identify` | Identificacao baseada em hash contra banco de dados de assinaturas conhecidas |
586
+
587
+ </details>
588
+
589
+ <details>
590
+ <summary><b>meta &mdash; Configuracao e dados do servidor (3 modos)</b></summary>
591
+
592
+ | Parametro | Tipo | Descricao |
593
+ |-----------|------|-----------|
594
+ | `category` | string | Opcional &mdash; filtrar por categoria |
595
+
596
+ | Modo | Descricao |
597
+ |------|-----------|
598
+ | `fp_sources` | Listar todas as fontes de dados disponiveis com configuracao e status de chaves API |
599
+ | `fp_config` | Configuracao do servidor &mdash; versao, provedores carregados, contagem de tecnicas |
600
+ | `fp_signatures` | Listagem do banco de dados de assinaturas &mdash; JARM, banner, WAF, assinaturas de aplicacoes |
601
+
602
+ </details>
603
+
604
+ ---
605
+
606
+ ### Uso via CLI
607
+
608
+ ```bash
609
+ # Listar todas as ferramentas e tecnicas disponiveis
610
+ npx fingerprint-mcp --list
611
+
612
+ # Executar qualquer ferramenta diretamente
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
+ # Ferramentas OSINT (requerem chaves API)
626
+ SHODAN_API_KEY=your-key npx fingerprint-mcp --tool osint '{"target":"203.0.113.42","type":"ip"}'
627
+ ```
628
+
629
+ ---
630
+
631
+ ## Fontes de Dados (21)
632
+
633
+ | Fonte | Autenticacao | O que fornece |
634
+ |-------|--------------|---------------|
635
+ | Sondagem TCP | Nenhuma | Varredura de portas, captura de banner, deteccao de servicos |
636
+ | Analise TLS/SSL | Nenhuma | Parsing de certificados, fingerprinting JARM, JA4X, enumeracao de cifras, teste SNI |
637
+ | Sondagem SSH | Nenhuma | Versao do protocolo, auditoria de algoritmos, deteccao de software |
638
+ | Analise HTTP | Nenhuma | Fingerprinting de cabecalhos, hash de favicon, analise de cookies, enumeracao de metodos, CORS |
639
+ | Deteccao web | Nenhuma | Deteccao de tecnologias, analytics, source maps, WebSocket, GraphQL, frameworks SPA |
640
+ | Descoberta de caminhos | Nenhuma | Arquivos sensiveis, vazamentos git, endpoints de debug, versoes de API, robots.txt |
641
+ | Resolucao DNS | Nenhuma | Enumeracao de registros, analise de autenticacao de e-mail, deteccao de SaaS, fingerprinting de servidor |
642
+ | Deteccao WAF/CDN | Nenhuma | Identificacao de WAF, deteccao de CDN, fingerprinting de WAF |
643
+ | Analise de timing | Nenhuma | Linha base de tempo de resposta, deteccao de desvio de relogio |
644
+ | HTTP/2 e HTTP/3 | Nenhuma | Deteccao e fingerprinting HTTP/2, descoberta HTTP/3 Alt-Svc |
645
+ | Sondagem SMTP | Nenhuma | Analise de banner SMTP, inspecao STARTTLS |
646
+ | IoT/Embarcados | Nenhuma | Deteccao de dispositivos IoT, descoberta UPnP/SSDP |
647
+ | Deteccao de aplicacoes | Nenhuma | Identificacao de CMS, framework e plataforma de e-commerce |
648
+ | Sondagem de servicos | Nenhuma | Fingerprinting MySQL, PostgreSQL, Redis, FTP, VNC/RDP |
649
+ | Deteccao de infraestrutura | Nenhuma | Identificacao de provedor de nuvem, hospedagem, CDN |
650
+ | Motor de correlacao | Nenhuma | Consistencia de sinais, deteccao de honeypot, deteccao de spoofing, mapeamento de topologia |
651
+ | Motor de identificacao | Nenhuma | Identificacao baseada em hash, deteccao de C2, correspondencia de assinaturas |
652
+ | [Shodan](https://www.shodan.io) | `SHODAN_API_KEY` | Inteligencia de host &mdash; portas abertas, banners, vulnerabilidades, deteccao de SO |
653
+ | [Censys](https://censys.io) | `CENSYS_API_ID` | Dados de host &mdash; servicos, certificados TLS, informacao de sistema autonomo |
654
+ | [SecurityTrails](https://securitytrails.com) | `SECURITYTRAILS_API_KEY` | Descoberta de origem WAF, historico DNS passivo, registros historicos |
655
+ | [VirusTotal](https://www.virustotal.com) | `VIRUSTOTAL_API_KEY` | Reputacao de dominio/IP, resultados de deteccao, historico DNS, categorias |
656
+
657
+ ---
658
+
659
+ ## Arquitetura
660
+
661
+ ```
662
+ src/
663
+ index.ts # Ponto de entrada CLI (--help, --list, --tool, servidor stdio)
664
+ protocol/
665
+ mcp-server.ts # Configuracao do servidor MCP (transporte stdio)
666
+ tools.ts # Registro de ferramentas — todas as 13 ferramentas compostas registradas aqui
667
+ types/
668
+ index.ts # Tipos compartilhados (ToolDef, ToolContext, ToolResult)
669
+ utils/
670
+ rate-limiter.ts # Limitador de taxa por provedor
671
+ cache.ts # Cache TTL para respostas de API
672
+ require-key.ts # Auxiliar de validacao de chave API
673
+ murmurhash3.ts # MurmurHash3 para hash de favicon
674
+ composite/ # 13 orquestradores de ferramentas compostas
675
+ recon.ts # Orquestrador de reconhecimento completo (quick/standard/deep)
676
+ scan-ports.ts # Composto de varredura de portas
677
+ scan-tls.ts # Composto de analise TLS
678
+ scan-dns.ts # Composto de inteligencia DNS
679
+ scan-http.ts # Composto de fingerprinting HTTP
680
+ scan-paths.ts # Composto de descoberta de caminhos
681
+ scan-waf.ts # Composto de deteccao WAF/CDN
682
+ scan-services.ts # Composto de sondagem de servicos
683
+ analyze.ts # Composto de analise passiva
684
+ correlate.ts # Composto do motor de correlacao
685
+ enumerate.ts # Composto de expansao de escopo
686
+ osint.ts # Composto de enriquecimento OSINT
687
+ meta.ts # Composto meta do servidor
688
+ helpers.ts # Auxiliares compostos compartilhados
689
+ tcp/ # Tecnicas de sondagem TCP (3)
690
+ tls/ # Tecnicas de analise TLS/SSL (8)
691
+ ssh/ # Tecnicas de sondagem SSH (3)
692
+ http/ # Tecnicas de fingerprinting HTTP (16)
693
+ web/ # Tecnicas de deteccao de tecnologias web (9)
694
+ path/ # Tecnicas de descoberta de caminhos (5)
695
+ dns/ # Tecnicas de inteligencia DNS (7)
696
+ waf/ # Tecnicas de deteccao WAF/CDN (4)
697
+ timing/ # Tecnicas de analise de timing (2)
698
+ h2/ # Tecnicas HTTP/2 e HTTP/3 (3)
699
+ smtp/ # Tecnicas de sondagem SMTP (2)
700
+ iot/ # Tecnicas de deteccao IoT/embarcados (2)
701
+ app/ # Tecnicas de deteccao de aplicacoes (3)
702
+ service/ # Tecnicas de sondagem de servicos (5)
703
+ infra/ # Tecnicas de deteccao de infraestrutura (3)
704
+ correlation/ # Motor de correlacao (5)
705
+ identify/ # Motor de identificacao (3)
706
+ passive/ # Analise passiva (3)
707
+ osint/ # Tecnicas de enriquecimento OSINT (6)
708
+ enum/ # Tecnicas de enumeracao (8)
709
+ meta/ # Ferramentas meta (3)
710
+ data/ # Bancos de dados de assinaturas e bibliotecas de padroes
711
+ jarm-signatures.ts # Fingerprints JARM conhecidos (C2, servidores, CDNs)
712
+ waf-signatures.ts # Assinaturas de deteccao de WAF
713
+ service-banners.ts # Padroes de banner de servicos
714
+ tech-patterns.ts # Padroes de deteccao de tecnologias
715
+ favicon-hashes.ts # Valores MurmurHash3 de favicon conhecidos
716
+ c2-signatures.ts # Assinaturas de framework C2
717
+ ... # 15+ bancos de dados de assinaturas/padroes
718
+ ```
719
+
720
+ **Decisoes de design:**
721
+
722
+ - **13 ferramentas compostas, 103 tecnicas** &mdash; O agente chama ferramentas de alto nivel (`recon`, `scan_tls`, `scan_http`). Cada composto orquestra multiplas tecnicas de baixo nivel e retorna resultados correlacionados. Isso reduz o overhead de chamadas de ferramentas enquanto mantem a granularidade.
723
+ - **21 provedores, 1 servidor** &mdash; Cada camada de fingerprinting e um modulo independente. O orquestrador composto seleciona tecnicas com base no contexto e profundidade.
724
+ - **Ativo primeiro, OSINT opcional** &mdash; 80+ tecnicas funcionam sondando o alvo diretamente com zero chaves API. Provedores OSINT (Shodan, Censys, VirusTotal, SecurityTrails) adicionam enriquecimento, mas nunca sao obrigatorios.
725
+ - **Limitadores de taxa por provedor** &mdash; Cada provedor tem sua propria instancia de `RateLimiter`. A sondagem ativa e limitada em taxa para evitar deteccao; APIs OSINT sao calibradas para suas cotas.
726
+ - **Cache TTL** &mdash; Registros DNS (10min), resultados OSINT (15min), logs CT (30min) sao armazenados em cache para evitar consultas redundantes durante fluxos de trabalho com multiplas ferramentas.
727
+ - **Degradacao elegante** &mdash; Chaves API ausentes nao travam o servidor. Ferramentas OSINT retornam mensagens descritivas: "Defina SHODAN_API_KEY para habilitar consulta de host Shodan."
728
+ - **3 dependencias** &mdash; `@modelcontextprotocol/sdk`, `zod` e `cheerio`. Todo I/O de rede via `fetch()` nativo e modulos Node.js `net`/`tls`/`dns`. Sem nmap, sem binarios externos.
729
+
730
+ ---
731
+
732
+ ## Limitacoes
733
+
734
+ - Ferramentas OSINT (Shodan, Censys, VirusTotal, SecurityTrails) requerem chaves API para suas respectivas tecnicas
735
+ - Nivel gratuito do Censys limitado a 250 consultas/mes
736
+ - Nivel gratuito do VirusTotal limitado a 500 consultas/dia
737
+ - Varredura de portas usa TCP connect (nao varredura SYN) &mdash; menos furtivo que nmap, mas nao requer privilegios root
738
+ - Fingerprinting JARM requer acesso TCP direto ao alvo (pode ser bloqueado por firewalls)
739
+ - Descoberta UPnP/SSDP funciona apenas em redes locais
740
+ - Sondagem de servicos (MySQL, PostgreSQL, Redis) conecta, mas nao autentica
741
+ - Enumeracao de subdominios depende de logs CT e fontes passivas (sem forca bruta)
742
+ - Testado em macOS / Linux (Windows nao testado)
743
+
744
+ ---
745
+
746
+ ## Parte da Suite de Seguranca MCP
747
+
748
+ | Projeto | Dominio | Ferramentas |
749
+ |---------|---------|-------------|
750
+ | [hackbrowser-mcp](https://github.com/badchars/hackbrowser-mcp) | Testes de seguranca baseados em navegador | 39 ferramentas, Firefox, testes de injecao |
751
+ | [cloud-audit-mcp](https://github.com/badchars/cloud-audit-mcp) | Seguranca em nuvem (AWS/Azure/GCP) | 38 ferramentas, 60+ verificacoes |
752
+ | [github-security-mcp](https://github.com/badchars/github-security-mcp) | Postura de seguranca GitHub | 39 ferramentas, 45 verificacoes |
753
+ | [cve-mcp](https://github.com/badchars/cve-mcp) | Inteligencia de vulnerabilidades | 23 ferramentas, 5 fontes |
754
+ | [osint-mcp-server](https://github.com/badchars/osint-mcp-server) | OSINT e reconhecimento | 37 ferramentas, 12 fontes |
755
+ | [darknet-mcp-server](https://github.com/badchars/darknet-mcp-server) | Dark web e inteligencia de ameacas | 66 ferramentas, 16 fontes |
756
+ | **fingerprint-mcp** | **Fingerprinting digital universal** | **13 ferramentas, 103 tecnicas, 21 provedores** |
757
+
758
+ ---
759
+
760
+ <p align="center">
761
+ <b>Apenas para testes e avaliacoes de seguranca autorizados.</b><br>
762
+ Sempre certifique-se de ter a devida autorizacao antes de realizar fingerprinting em qualquer alvo.
763
+ </p>
764
+
765
+ <p align="center">
766
+ <a href="LICENSE">Licenca AGPL-3.0</a> &bull; Construido com Bun + TypeScript
767
+ </p>