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.fr.md ADDED
@@ -0,0 +1,769 @@
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
+ <strong>Français</strong> |
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
+ <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">Empreinte numerique universelle pour agents IA.</h3>
37
+
38
+ <p align="center">
39
+ TCP, TLS/SSL, SSH, HTTP, DNS, WAF/CDN, IoT, SMTP, sondage de services, JARM, JA4X, hachage de favicon, topologie d'infrastructure, detection C2, enrichissement OSINT &mdash; unifies dans un seul serveur MCP.<br>
40
+ Votre agent IA obtient <b>une empreinte numerique a spectre complet a la demande</b>, pas 11 outils CLI deconnectes et une correlation manuelle.
41
+ </p>
42
+
43
+ <br>
44
+
45
+ <p align="center">
46
+ <a href="#le-probleme">Le probleme</a> &bull;
47
+ <a href="#ce-qui-le-differencie">Ce qui le differencie</a> &bull;
48
+ <a href="#demarrage-rapide">Demarrage rapide</a> &bull;
49
+ <a href="#ce-que-lia-peut-faire">Ce que l'IA peut faire</a> &bull;
50
+ <a href="#reference-des-outils-13-outils-103-techniques">Outils (13)</a> &bull;
51
+ <a href="#sources-de-donnees-21">Sources de donnees</a> &bull;
52
+ <a href="#architecture">Architecture</a> &bull;
53
+ <a href="CHANGELOG.md">Journal des modifications</a> &bull;
54
+ <a href="CONTRIBUTING.md">Contribuer</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="Licence"></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 outils">
63
+ <img src="https://img.shields.io/badge/techniques-103-f97316" alt="103 techniques">
64
+ </p>
65
+
66
+ <p align="center">
67
+ <img src="https://raw.githubusercontent.com/badchars/fingerprint-mcp/main/.github/demo.gif" alt="Demo de fingerprint-mcp" width="800">
68
+ </p>
69
+
70
+ ---
71
+
72
+ ## Le probleme
73
+
74
+ Faire l'empreinte d'un serveur aujourd'hui signifie jongler avec une douzaine d'outils deconnectes. Vous executez `nmap` pour le scan de ports, `testssl.sh` pour l'analyse de certificats, `curl -I` pour les en-tetes HTTP, `dig` pour le DNS, `wafw00f` pour la detection WAF, `ssh-audit` pour SSH, un outil JARM separe, Wappalyzer pour la detection de technologies &mdash; et ensuite vous passez 30 minutes a croiser manuellement tout dans un tableur pour comprendre ce qui tourne reellement.
75
+
76
+ ```
77
+ Flux de travail traditionnel d'empreinte :
78
+ analyser les certificats TLS -> testssl.sh / openssl s_client
79
+ capturer les en-tetes HTTP -> curl -I
80
+ detecter les technologies web -> wappalyzer CLI
81
+ reconnaissance DNS -> dig / nslookup / dnsenum
82
+ scan de ports -> nmap -sV
83
+ detection WAF -> wafw00f
84
+ audit SSH -> ssh-audit
85
+ empreinte de services -> nmap scripts
86
+ empreinte JARM -> jarm (outil separe)
87
+ consulter les bases OSINT -> shodan CLI, censys CLI
88
+ correler le tout -> manuellement dans un tableur
89
+ ──────────────────────────────
90
+ Total : 11 outils, 30+ minutes, correlation manuelle
91
+ ```
92
+
93
+ **fingerprint-mcp** fournit a votre agent IA 13 outils composites encapsulant 103 techniques d'empreinte provenant de 21 fournisseurs via le [Model Context Protocol](https://modelcontextprotocol.io). L'agent execute l'empreinte multicouche en parallele, correle les signaux entre les couches TCP/TLS/HTTP/DNS/SSH, detecte les pots de miel et l'infrastructure C2, et presente une image de renseignement unifiee &mdash; le tout en une seule conversation.
94
+
95
+ ```
96
+ Avec fingerprint-mcp :
97
+ Vous : "Fais une reconnaissance approfondie de target.com"
98
+
99
+ Agent : -> recon {url: "https://target.com", depth: "deep"}
100
+
101
+ -> TLS : nginx/1.24.0 via JARM (3fd21b20d00000...),
102
+ certificat Let's Encrypt, 2 SANs, TLS 1.2+1.3
103
+ -> HTTP : Express.js derriere Cloudflare WAF,
104
+ React SPA, Google Analytics, 14 en-tetes de securite analyses
105
+ -> DNS : enregistrements A/AAAA/MX/TXT, SPF/DKIM/DMARC configures,
106
+ Slack + Google Workspace detectes via CNAME/MX
107
+ -> Ports : 80, 443, 22 (OpenSSH 9.6), 8080 (serveur de developpement)
108
+ -> WAF : Cloudflare detecte, IP d'origine decouverte via connexion directe
109
+ -> Enumeration : 12 sous-domaines via journaux CT, DNS generique detecte
110
+ -> "target.com execute nginx/1.24.0 avec Express.js derriere
111
+ Cloudflare WAF. L'IP d'origine 203.0.113.42 est exposee sur
112
+ le port 8080. TLS est correctement configure (equivalent A+)
113
+ mais le serveur de developpement sur 8080 n'a pas de protection
114
+ WAF. 3 sous-domaines pointent vers une infrastructure
115
+ desaffectee — risque potentiel de prise de controle."
116
+ ```
117
+
118
+ ---
119
+
120
+ ## Ce qui le differencie
121
+
122
+ Les outils existants vous donnent des donnees brutes une couche a la fois. fingerprint-mcp donne a votre agent IA la capacite de **raisonner simultanement a travers toutes les couches d'empreinte**.
123
+
124
+ <table>
125
+ <thead>
126
+ <tr>
127
+ <th></th>
128
+ <th>Approche traditionnelle</th>
129
+ <th>fingerprint-mcp</th>
130
+ </tr>
131
+ </thead>
132
+ <tbody>
133
+ <tr>
134
+ <td><b>Interface</b></td>
135
+ <td>11 outils CLI differents avec des formats de sortie differents</td>
136
+ <td>MCP &mdash; l'agent IA appelle les outils de maniere conversationnelle</td>
137
+ </tr>
138
+ <tr>
139
+ <td><b>Techniques</b></td>
140
+ <td>Un outil, une couche a la fois</td>
141
+ <td>103 techniques de 21 fournisseurs, executees en parallele</td>
142
+ </tr>
143
+ <tr>
144
+ <td><b>Analyse TLS</b></td>
145
+ <td>Sortie testssl.sh, analyser JARM separement manuellement</td>
146
+ <td>L'agent combine certificat + JARM + JA4X + suites de chiffrement + SNI + journaux CT en un seul appel</td>
147
+ </tr>
148
+ <tr>
149
+ <td><b>Correlation</b></td>
150
+ <td>Copier-coller les resultats dans un tableur</td>
151
+ <td>L'agent correle : "JARM correspond a un framework C2 connu, le timing HTTP confirme un pot de miel"</td>
152
+ </tr>
153
+ <tr>
154
+ <td><b>Contournement WAF</b></td>
155
+ <td>wafw00f detecte le WAF, vous cherchez l'origine manuellement</td>
156
+ <td>L'agent detecte le WAF, decouvre l'IP d'origine et verifie qu'elle sert le meme contenu</td>
157
+ </tr>
158
+ <tr>
159
+ <td><b>Cles API</b></td>
160
+ <td>Requises pour Shodan, Censys, etc.</td>
161
+ <td>80+ techniques actives fonctionnent sans cle API ; les cles debloquent l'enrichissement OSINT</td>
162
+ </tr>
163
+ <tr>
164
+ <td><b>Installation</b></td>
165
+ <td>Installer nmap, testssl, wafw00f, ssh-audit, jarm, wappalyzer...</td>
166
+ <td><code>npx fingerprint-mcp</code> &mdash; une commande, zero configuration</td>
167
+ </tr>
168
+ </tbody>
169
+ </table>
170
+
171
+ ---
172
+
173
+ ## Demarrage rapide
174
+
175
+ ### Option 1 : npx (sans installation)
176
+
177
+ ```bash
178
+ npx fingerprint-mcp
179
+ ```
180
+
181
+ Les 80+ techniques actives d'empreinte fonctionnent immediatement. Aucune cle API requise pour TCP, TLS, SSH, HTTP, DNS, WAF, chemins, services, temporisation, IoT, SMTP, infrastructure et empreinte d'applications.
182
+
183
+ ### Option 2 : Cloner
184
+
185
+ ```bash
186
+ git clone https://github.com/badchars/fingerprint-mcp.git
187
+ cd fingerprint-mcp
188
+ bun install
189
+ ```
190
+
191
+ ### Variables d'environnement (optionnelles)
192
+
193
+ ```bash
194
+ # Enrichissement OSINT (toutes optionnelles — l'empreinte active fonctionne sans cles)
195
+ export SHODAN_API_KEY=your-key # Active osint_shodan, ssh_hostkey_lookup
196
+ export CENSYS_API_ID=your-id # Active osint_censys (gratuit : 250 requetes/mois)
197
+ export CENSYS_API_SECRET=your-secret # Secret API Censys
198
+ export SECURITYTRAILS_API_KEY=your-key # Active waf_origin, enum_passive_dns
199
+ export VIRUSTOTAL_API_KEY=your-key # Active osint_virustotal (gratuit : 500 requetes/jour)
200
+ ```
201
+
202
+ Toutes les cles API sont optionnelles. Sans elles, vous obtenez toujours l'empreinte complete TCP/TLS/SSH/HTTP/DNS/WAF/chemins/services/temporisation/IoT/SMTP/infrastructure/applications, la correlation, l'analyse passive, l'enumeration et les outils meta &mdash; 80+ techniques qui fonctionnent en sondant directement la cible.
203
+
204
+ ### Connecter a votre agent IA
205
+
206
+ <details open>
207
+ <summary><b>Claude Code</b></summary>
208
+
209
+ ```bash
210
+ # Avec npx
211
+ claude mcp add fingerprint-mcp -- npx fingerprint-mcp
212
+
213
+ # Avec un clone local
214
+ claude mcp add fingerprint-mcp -- bun run /path/to/fingerprint-mcp/src/index.ts
215
+ ```
216
+
217
+ </details>
218
+
219
+ <details>
220
+ <summary><b>Claude Desktop</b></summary>
221
+
222
+ Ajouter a `~/Library/Application Support/Claude/claude_desktop_config.json` :
223
+
224
+ ```json
225
+ {
226
+ "mcpServers": {
227
+ "fingerprint": {
228
+ "command": "npx",
229
+ "args": ["-y", "fingerprint-mcp"],
230
+ "env": {
231
+ "SHODAN_API_KEY": "optional",
232
+ "CENSYS_API_ID": "optional",
233
+ "CENSYS_API_SECRET": "optional",
234
+ "SECURITYTRAILS_API_KEY": "optional",
235
+ "VIRUSTOTAL_API_KEY": "optional"
236
+ }
237
+ }
238
+ }
239
+ }
240
+ ```
241
+
242
+ </details>
243
+
244
+ <details>
245
+ <summary><b>Cursor / Windsurf / autres clients MCP</b></summary>
246
+
247
+ Meme format de configuration JSON. Pointez la commande vers `npx fingerprint-mcp` ou votre chemin d'installation local.
248
+
249
+ </details>
250
+
251
+ ### Commencer les requetes
252
+
253
+ ```
254
+ Vous : "Fais l'empreinte de tout sur target.com — TLS, pile HTTP, WAF, DNS, ports ouverts"
255
+ ```
256
+
257
+ C'est tout. L'agent gere automatiquement l'empreinte multicouche, la correlation des signaux et l'analyse d'infrastructure.
258
+
259
+ ---
260
+
261
+ ## Ce que l'IA peut faire
262
+
263
+ ### Reconnaissance rapide
264
+
265
+ ```
266
+ Vous : "Reconnaissance rapide de target.com"
267
+
268
+ Agent : -> recon {url: "https://target.com", depth: "quick"}
269
+
270
+ -> TCP : ports 80, 443, 22 ouverts
271
+ -> TLS : certificat RSA Let's Encrypt, TLS 1.2+1.3, signature JARM nginx
272
+ -> HTTP : nginx/1.24.0, Express.js, React, Cloudflare CDN
273
+ -> DNS : A 203.0.113.42, MX Google Workspace, SPF/DKIM configures
274
+ -> WAF : Cloudflare detecte (en-tete cf-ray)
275
+ -> "target.com est une SPA React sur Express.js derriere nginx/1.24.0,
276
+ servie via Cloudflare CDN. TLS correctement configure avec
277
+ Let's Encrypt. SSH sur le port 22 executant OpenSSH 9.6. Email
278
+ gere par Google Workspace avec SPF/DKIM/DMARC complet."
279
+ ```
280
+
281
+ ### Investigation TLS approfondie
282
+
283
+ ```
284
+ Vous : "Analyse la configuration TLS de suspicious-server.com en detail"
285
+
286
+ Agent : -> scan_tls {host: "suspicious-server.com"}
287
+
288
+ -> Certificat : auto-signe, CN=localhost, expire depuis 47 jours
289
+ -> JARM : 2ad2ad0002ad2ad00042d42d00000069d641f34fe76acdc05c40262f8815e5
290
+ (correspond au profil par defaut de Cobalt Strike)
291
+ -> JA4X : empreinte correspond a un modele de framework C2 connu
292
+ -> Suites de chiffrement : accepte des chiffrements faibles (RC4, 3DES)
293
+ -> SNI : repond de maniere identique a toute valeur SNI
294
+ -> Journaux CT : certificat non enregistre (non approuve publiquement)
295
+ -> "HAUT RISQUE : La configuration TLS indique fortement une infrastructure C2.
296
+ Certificat auto-signe expire, empreinte JARM correspond a Cobalt Strike,
297
+ accepte des chiffrements faibles et repond a des valeurs SNI arbitraires.
298
+ Investigation immediate et blocage recommandes."
299
+ ```
300
+
301
+ ### Contournement WAF et decouverte de l'origine
302
+
303
+ ```
304
+ Vous : "target.com est derriere un WAF. Peux-tu trouver le serveur d'origine ?"
305
+
306
+ Agent : -> scan_waf {url: "https://target.com"}
307
+ -> scan_dns {domain: "target.com"}
308
+ -> enumerate {domain: "target.com"}
309
+
310
+ -> WAF : Cloudflare (AS13335), page de defi sur les requetes suspectes
311
+ -> DNS : enregistrement A pointe vers l'IP Cloudflare 104.21.x.x
312
+ -> Sous-domaines : dev.target.com resout vers 203.0.113.42 (non Cloudflare)
313
+ -> Connexion directe a 203.0.113.42:443 renvoie le meme certificat TLS
314
+ -> Historique SecurityTrails : l'origine etait 203.0.113.42 avant Cloudflare
315
+ -> "IP d'origine trouvee : 203.0.113.42. Decouverte via le sous-domaine
316
+ dev.target.com qui contourne Cloudflare. L'origine sert le meme
317
+ certificat TLS et repond a l'en-tete Host de target.com.
318
+ L'origine n'a pas de protection WAF — acces direct possible."
319
+ ```
320
+
321
+ ### Decouverte de services sur un hote
322
+
323
+ ```
324
+ Vous : "Quels services tournent sur 10.0.1.50 ?"
325
+
326
+ Agent : -> scan_ports {host: "10.0.1.50"}
327
+ -> scan_services {host: "10.0.1.50", ports: [22, 80, 3306, 5432, 6379, 8080]}
328
+
329
+ -> Port 22 : OpenSSH 8.9p1 Ubuntu, cle d'hote ED25519
330
+ -> Port 80 : Apache/2.4.57, PHP/8.2, WordPress 6.4
331
+ -> Port 3306 : MySQL 8.0.36, authentification requise
332
+ -> Port 5432 : PostgreSQL 16.1, SSL requis
333
+ -> Port 6379 : Redis 7.2.4, SANS authentification (ouvert)
334
+ -> Port 8080 : serveur de developpement Node.js Express, CORS: *
335
+ -> "CRITIQUE : Redis sur le port 6379 n'a pas d'authentification — n'importe
336
+ qui sur le reseau peut lire/ecrire des donnees. Le serveur de developpement
337
+ Express sur 8080 a un CORS generique. MySQL et PostgreSQL requierent
338
+ correctement l'authentification. WordPress est en retard de 2 versions
339
+ mineures. Action immediate necessaire sur Redis et l'exposition du
340
+ serveur de developpement."
341
+ ```
342
+
343
+ ---
344
+
345
+ ## Reference des outils (13 outils, 103 techniques)
346
+
347
+ <details open>
348
+ <summary><b>recon &mdash; Reconnaissance complete avec selection de techniques basee sur la profondeur</b></summary>
349
+
350
+ | Parametre | Type | Description |
351
+ |-----------|------|-------------|
352
+ | `url` | string | URL cible pour l'empreinte |
353
+ | `depth` | `quick` \| `standard` \| `deep` | Profondeur de scan : quick=5 techniques, standard=20, deep=50+ |
354
+
355
+ Orchestre les techniques de tous les fournisseurs selon le niveau de profondeur. Le mode rapide donne un apercu rapide ; le mode profond execute une empreinte exhaustive incluant enumeration, OSINT et correlation.
356
+
357
+ </details>
358
+
359
+ <details>
360
+ <summary><b>scan_ports &mdash; Scan de ports TCP avec detection de services (3 techniques)</b></summary>
361
+
362
+ | Parametre | Type | Description |
363
+ |-----------|------|-------------|
364
+ | `host` | string | Hote cible (IP ou domaine) |
365
+ | `ports` | number[] | Optionnel &mdash; ports specifiques a scanner (par defaut : ports courants) |
366
+
367
+ | Technique | Description |
368
+ |-----------|-------------|
369
+ | `tcp_probe` | Scan de connexion TCP pour detecter les ports ouverts |
370
+ | `tcp_banner` | Capture de banniere sur les ports ouverts pour l'identification de services |
371
+ | `tcp_analysis` | Analyse de combinaison de ports et inference de services |
372
+
373
+ </details>
374
+
375
+ <details>
376
+ <summary><b>scan_tls &mdash; Analyse TLS/SSL complete (8 techniques)</b></summary>
377
+
378
+ | Parametre | Type | Description |
379
+ |-----------|------|-------------|
380
+ | `host` | string | Hote cible (IP ou domaine) |
381
+ | `port` | number | Optionnel &mdash; port TLS (par defaut : 443) |
382
+
383
+ | Technique | Description |
384
+ |-----------|-------------|
385
+ | `tls_certificate` | Analyse de certificat X.509 &mdash; sujet, emetteur, SANs, validite, chaine |
386
+ | `tls_jarm` | Empreinte active JARM &mdash; 10 sondes TLS Client Hello, hash de 62 caracteres |
387
+ | `tls_ja4x` | Empreinte TLS passive JA4X a partir des proprietes du certificat |
388
+ | `tls_ciphers` | Enumeration des suites de chiffrement et analyse de robustesse |
389
+ | `tls_protocols` | Detection des versions de protocole TLS supportees (SSLv3 a TLS 1.3) |
390
+ | `tls_sni` | Test de comportement SNI &mdash; certificat par defaut vs. nom d'hote demande |
391
+ | `tls_ct_logs` | Consultation des journaux Certificate Transparency via crt.sh |
392
+ | `tls_ocsp` | Agrafage OCSP et verification du statut de revocation |
393
+
394
+ </details>
395
+
396
+ <details>
397
+ <summary><b>scan_dns &mdash; Renseignement DNS (7 techniques)</b></summary>
398
+
399
+ | Parametre | Type | Description |
400
+ |-----------|------|-------------|
401
+ | `domain` | string | Domaine cible |
402
+
403
+ | Technique | Description |
404
+ |-----------|-------------|
405
+ | `dns_records` | Enumeration complete des enregistrements &mdash; A, AAAA, MX, NS, TXT, CNAME, SOA |
406
+ | `dns_email_auth` | Analyse des enregistrements SPF, DKIM et DMARC |
407
+ | `dns_saas` | Detection SaaS/services via les modeles CNAME et MX (Slack, Zendesk, etc.) |
408
+ | `dns_server` | Empreinte de serveur DNS (BIND, PowerDNS, Cloudflare, etc.) |
409
+ | `dns_takeover` | Detection de prise de controle de sous-domaine via analyse de CNAME pendants |
410
+ | `dns_zone` | Tentative de transfert de zone (AXFR) |
411
+ | `dns_caa` | Analyse des enregistrements CAA pour les restrictions d'autorite de certification |
412
+
413
+ </details>
414
+
415
+ <details>
416
+ <summary><b>scan_http &mdash; Empreinte HTTP/web (29 techniques)</b></summary>
417
+
418
+ | Parametre | Type | Description |
419
+ |-----------|------|-------------|
420
+ | `url` | string | URL cible |
421
+
422
+ | Technique | Fournisseur | Description |
423
+ |-----------|-------------|-------------|
424
+ | `http_headers` | HTTP | Analyse des en-tetes de reponse et identification du serveur |
425
+ | `http_header_order` | HTTP | Empreinte d'ordre des en-tetes (signature du logiciel serveur) |
426
+ | `http_security_headers` | HTTP | Audit des en-tetes de securite (CSP, HSTS, X-Frame-Options, etc.) |
427
+ | `http_cookies` | HTTP | Analyse des cookies &mdash; drapeaux, prefixes, detection de framework |
428
+ | `http_methods` | HTTP | Enumeration des methodes HTTP autorisees (OPTIONS) |
429
+ | `http_cors` | HTTP | Analyse de politique CORS et detection de mauvaise configuration |
430
+ | `http_compression` | HTTP | Algorithmes de compression supportes (gzip, br, zstd) |
431
+ | `http_caching` | HTTP | Analyse des en-tetes de cache (detection CDN, proxy inverse) |
432
+ | `http_etag` | HTTP | Analyse du format ETag pour identification du backend |
433
+ | `http_error` | HTTP | Empreinte de pages d'erreur (personnalisees vs. par defaut) |
434
+ | `http_redirect` | HTTP | Analyse de chaine de redirection |
435
+ | `http_timing` | HTTP | Ligne de base de temporisation de reponse pour le profilage de performance |
436
+ | `http_favicon` | HTTP | Hash de favicon (MurmurHash3) pour identification de technologie |
437
+ | `http_robots` | HTTP | Analyse de robots.txt et extraction des chemins interdits |
438
+ | `http_sitemap` | HTTP | Decouverte de sitemap et extraction d'URLs |
439
+ | `http_wellknown` | HTTP | Decouverte de points d'acces .well-known (security.txt, openid, etc.) |
440
+ | `web_tech` | Web | Detection de technologie via les modeles HTML/JS/CSS |
441
+ | `web_analytics` | Web | Detection de services d'analyse et de suivi |
442
+ | `web_sourcemaps` | Web | Decouverte de fichiers source map |
443
+ | `web_websocket` | Web | Detection de points d'acces WebSocket |
444
+ | `web_graphql` | Web | Detection de points d'acces GraphQL et introspection |
445
+ | `web_spa` | Web | Detection de frameworks d'application monopage |
446
+ | `web_cdn` | Web | Detection CDN via en-tetes de reponse et DNS |
447
+ | `web_meta` | Web | Analyse des balises meta HTML (generateur, indices de framework) |
448
+ | `web_feed` | Web | Decouverte de flux RSS/Atom |
449
+ | `h2_detect` | HTTP/2 | Detection du support du protocole HTTP/2 |
450
+ | `h2_fingerprint` | HTTP/2 | Empreinte de serveur HTTP/2 (SETTINGS, WINDOW_UPDATE) |
451
+ | `h2_h3` | HTTP/2 | Detection du support HTTP/3 (QUIC) via en-tete Alt-Svc |
452
+ | `app_cms` | Application | Detection CMS (WordPress, Drupal, Joomla, etc.) |
453
+
454
+ </details>
455
+
456
+ <details>
457
+ <summary><b>scan_paths &mdash; Renseignement de chemins (5 techniques)</b></summary>
458
+
459
+ | Parametre | Type | Description |
460
+ |-----------|------|-------------|
461
+ | `url` | string | URL cible |
462
+ | `categories` | string[] | Optionnel &mdash; categories a verifier (sensitive, git, debug, api, config) |
463
+
464
+ | Technique | Description |
465
+ |-----------|-------------|
466
+ | `path_sensitive` | Decouverte de fichiers sensibles (fichiers de sauvegarde, fichiers de configuration, exports de base de donnees) |
467
+ | `path_robots` | Analyse de robots.txt et sitemap.xml pour decouvrir les chemins caches |
468
+ | `path_git` | Detection de fuite de depot Git (.git/HEAD, .git/config) |
469
+ | `path_debug` | Decouverte de points d'acces de debogage (phpinfo, server-status, consoles de debogage) |
470
+ | `path_api` | Decouverte de versions d'API et de points d'acces de documentation |
471
+
472
+ </details>
473
+
474
+ <details>
475
+ <summary><b>scan_waf &mdash; Detection et empreinte WAF/CDN (4 techniques)</b></summary>
476
+
477
+ | Parametre | Type | Description |
478
+ |-----------|------|-------------|
479
+ | `url` | string | URL cible |
480
+
481
+ | Technique | Description |
482
+ |-----------|-------------|
483
+ | `waf_detect` | Detection de presence WAF via analyse des en-tetes de reponse et du comportement |
484
+ | `waf_cdn` | Identification du fournisseur CDN (Cloudflare, Akamai, Fastly, etc.) |
485
+ | `waf_fingerprint` | Identification du produit WAF et detection de version |
486
+ | `waf_origin` | Decouverte de l'IP d'origine derriere WAF/CDN (necessite `SECURITYTRAILS_API_KEY`) |
487
+
488
+ </details>
489
+
490
+ <details>
491
+ <summary><b>scan_services &mdash; Sondage au niveau service (12 techniques)</b></summary>
492
+
493
+ | Parametre | Type | Description |
494
+ |-----------|------|-------------|
495
+ | `host` | string | Hote cible (IP ou domaine) |
496
+ | `ports` | number[] | Optionnel &mdash; ports specifiques a sonder |
497
+ | `service` | string | Optionnel &mdash; service specifique a sonder (mysql, postgres, redis, ftp, ssh, smtp, vnc, iot) |
498
+
499
+ | Technique | Fournisseur | Description |
500
+ |-----------|-------------|-------------|
501
+ | `ssh_probe` | SSH | Detection de version de protocole SSH et de logiciel |
502
+ | `ssh_algorithms` | SSH | Audit d'algorithmes SSH (KEX, chiffrements, MACs, types de cle d'hote) |
503
+ | `ssh_hostkey_lookup` | SSH | Recherche de cle d'hote SSH via Shodan (necessite `SHODAN_API_KEY`) |
504
+ | `svc_mysql` | Service | Detection de version MySQL et empreinte de capacites |
505
+ | `svc_postgres` | Service | Detection de version PostgreSQL et verification du support SSL |
506
+ | `svc_redis` | Service | Detection de version Redis et statut d'authentification |
507
+ | `svc_ftp` | Service | Analyse de banniere FTP et verification de connexion anonyme |
508
+ | `svc_vnc_rdp` | Service | Detection de service VNC/RDP et evaluation de securite |
509
+ | `smtp_banner` | SMTP | Analyse de banniere SMTP et identification MTA |
510
+ | `smtp_starttls` | SMTP | Support SMTP STARTTLS et inspection de certificat |
511
+ | `iot_detect` | IoT | Detection de peripheriques IoT via modeles de banniere et pages par defaut |
512
+ | `iot_upnp` | IoT | Decouverte de peripheriques UPnP/SSDP sur le reseau local |
513
+
514
+ </details>
515
+
516
+ <details>
517
+ <summary><b>enumerate &mdash; Expansion du perimetre (8 techniques)</b></summary>
518
+
519
+ | Parametre | Type | Description |
520
+ |-----------|------|-------------|
521
+ | `domain` | string | Domaine cible |
522
+
523
+ | Technique | Description |
524
+ |-----------|-------------|
525
+ | `enum_subdomains` | Enumeration de sous-domaines via plusieurs methodes |
526
+ | `enum_wildcard` | Detection DNS generique |
527
+ | `enum_tld` | Expansion TLD (target.com -> target.net, target.org, etc.) |
528
+ | `enum_related` | Decouverte de domaines associes via infrastructure partagee |
529
+ | `enum_asn` | Decouverte de voisins ASN &mdash; autres domaines sur le meme reseau |
530
+ | `enum_ct` | Extraction de sous-domaines des journaux Certificate Transparency |
531
+ | `enum_passive_dns` | Historique DNS passif (necessite `SECURITYTRAILS_API_KEY`) |
532
+ | `enum_scope` | Resume du perimetre et vue d'ensemble de la surface d'attaque |
533
+
534
+ </details>
535
+
536
+ <details>
537
+ <summary><b>osint &mdash; Enrichissement OSINT (6 techniques)</b></summary>
538
+
539
+ | Parametre | Type | Description |
540
+ |-----------|------|-------------|
541
+ | `target` | string | Adresse IP ou domaine a enrichir |
542
+ | `type` | `ip` \| `domain` | Optionnel &mdash; type de cible (auto-detecte si omis) |
543
+
544
+ | Technique | Auth | Description |
545
+ |-----------|------|-------------|
546
+ | `osint_shodan` | `SHODAN_API_KEY` | Consultation d'hote Shodan &mdash; ports ouverts, bannieres, vulnerabilites, OS |
547
+ | `osint_censys` | `CENSYS_API_ID` + `CENSYS_API_SECRET` | Donnees d'hote Censys &mdash; services, TLS, systeme autonome |
548
+ | `osint_reverse_ip` | Aucune | Recherche IP inverse &mdash; autres domaines sur la meme IP |
549
+ | `osint_whois` | Aucune | Donnees d'enregistrement WHOIS &mdash; registrar, dates, serveurs de noms |
550
+ | `osint_webarchive` | Aucune | Historique Web Archive &mdash; premier/dernier instantane, frequence de modification |
551
+ | `osint_virustotal` | `VIRUSTOTAL_API_KEY` | Rapport VirusTotal domaine/IP &mdash; detections, categories, DNS |
552
+
553
+ </details>
554
+
555
+ <details>
556
+ <summary><b>analyze &mdash; Analyse passive d'empreinte (3 modes)</b></summary>
557
+
558
+ | Parametre | Type | Description |
559
+ |-----------|------|-------------|
560
+ | `type` | `headers` \| `html` \| `banner` | Type de donnees a analyser |
561
+ | `data` | string | Donnees brutes a analyser (coller en-tetes, HTML ou sortie de banniere) |
562
+
563
+ | Mode | Description |
564
+ |------|-------------|
565
+ | `fp_analyze_headers` | Analyse passive d'en-tetes HTTP &mdash; detection de serveur, framework, proxy sans envoyer de trafic |
566
+ | `fp_analyze_html` | Analyse passive HTML &mdash; detection de technologie, identification de framework a partir du source |
567
+ | `fp_analyze_banner` | Analyse passive de banniere &mdash; identification de service a partir du texte brut de la banniere |
568
+
569
+ </details>
570
+
571
+ <details>
572
+ <summary><b>correlate &mdash; Moteur de correlation multi-signaux (7 modes)</b></summary>
573
+
574
+ | Parametre | Type | Description |
575
+ |-----------|------|-------------|
576
+ | `type` | `consistency` \| `honeypot` \| `spoofing` \| `compare` \| `topology` \| `c2` \| `identify` | Mode de correlation |
577
+ | `signals` | object | Signaux d'empreinte a correler (varie selon le mode) |
578
+
579
+ | Mode | Description |
580
+ |------|-------------|
581
+ | `fp_consistency` | Verification de coherence des signaux inter-couches &mdash; les empreintes TCP, TLS, HTTP et DNS concordent-elles ? |
582
+ | `fp_honeypot` | Detection de pot de miel &mdash; verifie les combinaisons de services impossibles et les anomalies comportementales |
583
+ | `fp_spoofing` | Detection d'usurpation &mdash; identifie les discordances entre les en-tetes serveur et le comportement reel |
584
+ | `fp_compare` | Comparaison cote a cote des profils d'empreinte de deux hotes |
585
+ | `fp_topology` | Cartographie de la topologie d'infrastructure &mdash; CDN, repartiteur de charge, chaine de proxy inverse |
586
+ | `fp_c2` | Detection de framework C2 via correlation JARM, TLS, HTTP et temporisation |
587
+ | `fp_identify` | Identification basee sur le hash contre une base de donnees de signatures connues |
588
+
589
+ </details>
590
+
591
+ <details>
592
+ <summary><b>meta &mdash; Configuration et donnees du serveur (3 modes)</b></summary>
593
+
594
+ | Parametre | Type | Description |
595
+ |-----------|------|-------------|
596
+ | `category` | string | Optionnel &mdash; filtrer par categorie |
597
+
598
+ | Mode | Description |
599
+ |------|-------------|
600
+ | `fp_sources` | Lister toutes les sources de donnees disponibles avec configuration et statut des cles API |
601
+ | `fp_config` | Configuration du serveur &mdash; version, fournisseurs charges, nombre de techniques |
602
+ | `fp_signatures` | Liste de la base de donnees de signatures &mdash; signatures JARM, banniere, WAF, application |
603
+
604
+ </details>
605
+
606
+ ---
607
+
608
+ ### Utilisation CLI
609
+
610
+ ```bash
611
+ # Lister tous les outils et techniques disponibles
612
+ npx fingerprint-mcp --list
613
+
614
+ # Executer n'importe quel outil directement
615
+ npx fingerprint-mcp --tool recon '{"url":"https://example.com","depth":"quick"}'
616
+ npx fingerprint-mcp --tool scan_tls '{"host":"example.com"}'
617
+ npx fingerprint-mcp --tool scan_ports '{"host":"10.0.1.50","ports":[22,80,443,3306,8080]}'
618
+ npx fingerprint-mcp --tool scan_dns '{"domain":"example.com"}'
619
+ npx fingerprint-mcp --tool scan_http '{"url":"https://example.com"}'
620
+ npx fingerprint-mcp --tool scan_waf '{"url":"https://example.com"}'
621
+ npx fingerprint-mcp --tool scan_services '{"host":"10.0.1.50","service":"redis"}'
622
+ npx fingerprint-mcp --tool enumerate '{"domain":"example.com"}'
623
+ npx fingerprint-mcp --tool analyze '{"type":"headers","data":"Server: nginx/1.24.0\nX-Powered-By: Express"}'
624
+ npx fingerprint-mcp --tool correlate '{"type":"honeypot","signals":{"jarm":"...","banner":"..."}}'
625
+ npx fingerprint-mcp --tool meta '{}'
626
+
627
+ # Outils OSINT (necessitent des cles API)
628
+ SHODAN_API_KEY=your-key npx fingerprint-mcp --tool osint '{"target":"203.0.113.42","type":"ip"}'
629
+ ```
630
+
631
+ ---
632
+
633
+ ## Sources de donnees (21)
634
+
635
+ | Source | Auth | Ce qu'elle fournit |
636
+ |--------|------|-------------------|
637
+ | Sondage TCP | Aucune | Scan de ports, capture de banniere, detection de services |
638
+ | Analyse TLS/SSL | Aucune | Analyse de certificats, empreinte JARM, JA4X, enumeration de chiffrements, tests SNI |
639
+ | Sondage SSH | Aucune | Version de protocole, audit d'algorithmes, detection de logiciel |
640
+ | Analyse HTTP | Aucune | Empreinte d'en-tetes, hachage de favicon, analyse de cookies, enumeration de methodes, CORS |
641
+ | Detection web | Aucune | Detection de technologie, analyse, source maps, WebSocket, GraphQL, frameworks SPA |
642
+ | Decouverte de chemins | Aucune | Fichiers sensibles, fuites Git, points d'acces de debogage, versions d'API, robots.txt |
643
+ | Resolution DNS | Aucune | Enumeration d'enregistrements, analyse d'authentification email, detection SaaS, empreinte de serveur |
644
+ | Detection WAF/CDN | Aucune | Identification WAF, detection CDN, empreinte WAF |
645
+ | Analyse de temporisation | Aucune | Ligne de base de temporisation de reponse, detection d'ecart d'horloge |
646
+ | HTTP/2 & HTTP/3 | Aucune | Detection et empreinte HTTP/2, decouverte HTTP/3 Alt-Svc |
647
+ | Sondage SMTP | Aucune | Analyse de banniere SMTP, inspection STARTTLS |
648
+ | IoT/Embarque | Aucune | Detection de peripheriques IoT, decouverte UPnP/SSDP |
649
+ | Detection d'applications | Aucune | Identification de CMS, framework et plateforme e-commerce |
650
+ | Sondage de services | Aucune | Empreinte MySQL, PostgreSQL, Redis, FTP, VNC/RDP |
651
+ | Detection d'infrastructure | Aucune | Identification de fournisseur cloud, fournisseur d'hebergement, CDN |
652
+ | Moteur de correlation | Aucune | Coherence des signaux, detection de pot de miel, detection d'usurpation, cartographie de topologie |
653
+ | Moteur d'identification | Aucune | Identification basee sur le hash, detection C2, correspondance de signatures |
654
+ | [Shodan](https://www.shodan.io) | `SHODAN_API_KEY` | Renseignement d'hote &mdash; ports ouverts, bannieres, vulnerabilites, detection d'OS |
655
+ | [Censys](https://censys.io) | `CENSYS_API_ID` | Donnees d'hote &mdash; services, certificats TLS, informations de systeme autonome |
656
+ | [SecurityTrails](https://securitytrails.com) | `SECURITYTRAILS_API_KEY` | Decouverte d'origine WAF, historique DNS passif, enregistrements historiques |
657
+ | [VirusTotal](https://www.virustotal.com) | `VIRUSTOTAL_API_KEY` | Reputation domaine/IP, resultats de detection, historique DNS, categories |
658
+
659
+ ---
660
+
661
+ ## Architecture
662
+
663
+ ```
664
+ src/
665
+ index.ts # Point d'entree CLI (--help, --list, --tool, serveur stdio)
666
+ protocol/
667
+ mcp-server.ts # Configuration du serveur MCP (transport stdio)
668
+ tools.ts # Registre des outils — les 13 outils composites enregistres ici
669
+ types/
670
+ index.ts # Types partages (ToolDef, ToolContext, ToolResult)
671
+ utils/
672
+ rate-limiter.ts # Limiteur de debit par fournisseur
673
+ cache.ts # Cache TTL pour les reponses API
674
+ require-key.ts # Assistant de validation de cle API
675
+ murmurhash3.ts # MurmurHash3 pour le hachage de favicon
676
+ composite/ # 13 orchestrateurs d'outils composites
677
+ recon.ts # Orchestrateur de reconnaissance complete (quick/standard/deep)
678
+ scan-ports.ts # Composite de scan de ports
679
+ scan-tls.ts # Composite d'analyse TLS
680
+ scan-dns.ts # Composite de renseignement DNS
681
+ scan-http.ts # Composite d'empreinte HTTP
682
+ scan-paths.ts # Composite de decouverte de chemins
683
+ scan-waf.ts # Composite de detection WAF/CDN
684
+ scan-services.ts # Composite de sondage de services
685
+ analyze.ts # Composite d'analyse passive
686
+ correlate.ts # Composite du moteur de correlation
687
+ enumerate.ts # Composite d'expansion du perimetre
688
+ osint.ts # Composite d'enrichissement OSINT
689
+ meta.ts # Composite meta du serveur
690
+ helpers.ts # Assistants partages des composites
691
+ tcp/ # Techniques de sondage TCP (3)
692
+ tls/ # Techniques d'analyse TLS/SSL (8)
693
+ ssh/ # Techniques de sondage SSH (3)
694
+ http/ # Techniques d'empreinte HTTP (16)
695
+ web/ # Techniques de detection de technologie web (9)
696
+ path/ # Techniques de decouverte de chemins (5)
697
+ dns/ # Techniques de renseignement DNS (7)
698
+ waf/ # Techniques de detection WAF/CDN (4)
699
+ timing/ # Techniques d'analyse de temporisation (2)
700
+ h2/ # Techniques HTTP/2 & HTTP/3 (3)
701
+ smtp/ # Techniques de sondage SMTP (2)
702
+ iot/ # Techniques de detection IoT/embarque (2)
703
+ app/ # Techniques de detection d'applications (3)
704
+ service/ # Techniques de sondage de services (5)
705
+ infra/ # Techniques de detection d'infrastructure (3)
706
+ correlation/ # Moteur de correlation (5)
707
+ identify/ # Moteur d'identification (3)
708
+ passive/ # Analyse passive (3)
709
+ osint/ # Techniques d'enrichissement OSINT (6)
710
+ enum/ # Techniques d'enumeration (8)
711
+ meta/ # Outils meta (3)
712
+ data/ # Bases de donnees de signatures et bibliotheques de modeles
713
+ jarm-signatures.ts # Empreintes JARM connues (C2, serveurs, CDNs)
714
+ waf-signatures.ts # Signatures de detection WAF
715
+ service-banners.ts # Modeles de banniere de services
716
+ tech-patterns.ts # Modeles de detection de technologie
717
+ favicon-hashes.ts # Valeurs MurmurHash3 de favicon connues
718
+ c2-signatures.ts # Signatures de framework C2
719
+ ... # 15+ bases de donnees de signatures/modeles
720
+ ```
721
+
722
+ **Decisions de conception :**
723
+
724
+ - **13 outils composites, 103 techniques** &mdash; L'agent appelle des outils de haut niveau (`recon`, `scan_tls`, `scan_http`). Chaque composite orchestre plusieurs techniques de bas niveau et retourne des resultats correles. Cela reduit la surcharge d'appels d'outils tout en maintenant la granularite.
725
+ - **21 fournisseurs, 1 serveur** &mdash; Chaque couche d'empreinte est un module independant. L'orchestrateur composite selectionne les techniques en fonction du contexte et de la profondeur.
726
+ - **Actif d'abord, OSINT optionnel** &mdash; 80+ techniques fonctionnent en sondant directement la cible sans aucune cle API. Les fournisseurs OSINT (Shodan, Censys, VirusTotal, SecurityTrails) ajoutent un enrichissement mais ne sont jamais requis.
727
+ - **Limiteurs de debit par fournisseur** &mdash; Chaque fournisseur a sa propre instance `RateLimiter`. Le sondage actif est limite en debit pour eviter la detection ; les APIs OSINT sont calibrees selon leurs quotas.
728
+ - **Cache TTL** &mdash; Les enregistrements DNS (10 min), les resultats OSINT (15 min), les journaux CT (30 min) sont mis en cache pour eviter les requetes redondantes dans les flux de travail multi-outils.
729
+ - **Degradation gracieuse** &mdash; L'absence de cles API ne fait pas planter le serveur. Les outils OSINT retournent des messages descriptifs : "Definissez SHODAN_API_KEY pour activer la consultation d'hote Shodan."
730
+ - **3 dependances** &mdash; `@modelcontextprotocol/sdk`, `zod` et `cheerio`. Toutes les E/S reseau via `fetch()` natif et les modules `net`/`tls`/`dns` de Node.js. Pas de nmap, pas de binaires externes.
731
+
732
+ ---
733
+
734
+ ## Limitations
735
+
736
+ - Les outils OSINT (Shodan, Censys, VirusTotal, SecurityTrails) necessitent des cles API pour leurs techniques respectives
737
+ - Le niveau gratuit de Censys est limite a 250 requetes/mois
738
+ - Le niveau gratuit de VirusTotal est limite a 500 requetes/jour
739
+ - Le scan de ports utilise TCP connect (pas de scan SYN) &mdash; moins furtif que nmap mais ne necessite pas de privileges root
740
+ - L'empreinte JARM necessite un acces TCP direct a la cible (peut etre bloque par des pare-feu)
741
+ - La decouverte UPnP/SSDP ne fonctionne que sur les reseaux locaux
742
+ - Le sondage de services (MySQL, PostgreSQL, Redis) se connecte mais ne s'authentifie pas
743
+ - L'enumeration de sous-domaines repose sur les journaux CT et les sources passives (pas de force brute)
744
+ - macOS / Linux testes (Windows non teste)
745
+
746
+ ---
747
+
748
+ ## Fait partie de la suite de securite MCP
749
+
750
+ | Projet | Domaine | Outils |
751
+ |--------|---------|--------|
752
+ | [hackbrowser-mcp](https://github.com/badchars/hackbrowser-mcp) | Tests de securite bases sur navigateur | 39 outils, Firefox, tests d'injection |
753
+ | [cloud-audit-mcp](https://github.com/badchars/cloud-audit-mcp) | Securite cloud (AWS/Azure/GCP) | 38 outils, 60+ verifications |
754
+ | [github-security-mcp](https://github.com/badchars/github-security-mcp) | Posture de securite GitHub | 39 outils, 45 verifications |
755
+ | [cve-mcp](https://github.com/badchars/cve-mcp) | Renseignement sur les vulnerabilites | 23 outils, 5 sources |
756
+ | [osint-mcp-server](https://github.com/badchars/osint-mcp-server) | OSINT et reconnaissance | 37 outils, 12 sources |
757
+ | [darknet-mcp-server](https://github.com/badchars/darknet-mcp-server) | Dark web et renseignement sur les menaces | 66 outils, 16 sources |
758
+ | **fingerprint-mcp** | **Empreinte numerique universelle** | **13 outils, 103 techniques, 21 fournisseurs** |
759
+
760
+ ---
761
+
762
+ <p align="center">
763
+ <b>Pour les tests et evaluations de securite autorises uniquement.</b><br>
764
+ Assurez-vous toujours d'avoir une autorisation appropriee avant d'effectuer une empreinte sur une cible.
765
+ </p>
766
+
767
+ <p align="center">
768
+ <a href="LICENSE">Licence AGPL-3.0</a> &bull; Construit avec Bun + TypeScript
769
+ </p>