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 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/ssh/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { ToolDef } from "../types/index.js";
2
+ export declare const tcpTools: ToolDef[];
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/tcp/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAe,MAAM,mBAAmB,CAAC;AAkc9D,eAAO,MAAM,QAAQ,EAAE,OAAO,EAwB7B,CAAC"}
@@ -0,0 +1,369 @@
1
+ import { z } from "zod";
2
+ import { RateLimiter } from "../utils/rate-limiter.js";
3
+ import { json } from "../types/index.js";
4
+ import * as net from "node:net";
5
+ const limiter = new RateLimiter(200);
6
+ // ─── Helpers ───
7
+ const DEFAULT_PORTS = [80, 443, 22, 8080, 8443];
8
+ const CONNECT_TIMEOUT = 5_000;
9
+ const BANNER_TIMEOUT = 2_000;
10
+ /** Connect to a TCP port and measure timing + grab initial banner data. */
11
+ function tcpConnect(host, port) {
12
+ return new Promise((resolve) => {
13
+ const start = performance.now();
14
+ const result = { port, open: false, connectTimeMs: 0 };
15
+ const connectTimer = setTimeout(() => {
16
+ socket.destroy();
17
+ result.error = "connection timeout";
18
+ resolve(result);
19
+ }, CONNECT_TIMEOUT);
20
+ const socket = net.connect({ host, port }, () => {
21
+ clearTimeout(connectTimer);
22
+ result.open = true;
23
+ result.connectTimeMs = Math.round((performance.now() - start) * 100) / 100;
24
+ result.remoteFamily = socket.remoteFamily;
25
+ result.localPort = socket.localPort;
26
+ const chunks = [];
27
+ let bannerTimer = null;
28
+ const finish = () => {
29
+ if (bannerTimer)
30
+ clearTimeout(bannerTimer);
31
+ socket.destroy();
32
+ if (chunks.length > 0) {
33
+ const raw = Buffer.concat(chunks);
34
+ // Attempt UTF-8 decode; fall back to hex for binary
35
+ const text = raw.toString("utf-8");
36
+ const hasBinary = text.includes("\ufffd") || /[\x00-\x08\x0e-\x1f]/.test(text.slice(0, 64));
37
+ result.banner = hasBinary
38
+ ? `(binary ${raw.length} bytes) ${raw.toString("hex").slice(0, 128)}`
39
+ : text.trim().slice(0, 1024);
40
+ }
41
+ resolve(result);
42
+ };
43
+ socket.on("data", (data) => {
44
+ chunks.push(data);
45
+ // If we got data, give a short window for more, then finish
46
+ if (bannerTimer)
47
+ clearTimeout(bannerTimer);
48
+ bannerTimer = setTimeout(finish, 500);
49
+ });
50
+ // Wait up to BANNER_TIMEOUT for any data
51
+ bannerTimer = setTimeout(finish, BANNER_TIMEOUT);
52
+ });
53
+ socket.on("error", (err) => {
54
+ clearTimeout(connectTimer);
55
+ result.error = err.message;
56
+ resolve(result);
57
+ });
58
+ });
59
+ }
60
+ function detectProtocol(banner, rawBanner) {
61
+ if (!banner)
62
+ return null;
63
+ if (banner.startsWith("SSH-")) {
64
+ const match = banner.match(/^SSH-([\d.]+)-(.+?)(?:\s+(.+))?$/);
65
+ return {
66
+ protocol: "SSH",
67
+ confidence: "high",
68
+ version: match ? match[2] : undefined,
69
+ details: match?.[3] ?? undefined,
70
+ };
71
+ }
72
+ if (/^220[\s-]/.test(banner)) {
73
+ // Distinguish FTP vs SMTP
74
+ if (/ftp|vsftpd|proftpd|pure-ftpd|filezilla/i.test(banner)) {
75
+ return { protocol: "FTP", confidence: "high", details: banner.split("\n")[0] };
76
+ }
77
+ if (/smtp|mail|postfix|sendmail|exim|exchange|esmtp/i.test(banner)) {
78
+ return { protocol: "SMTP", confidence: "high", details: banner.split("\n")[0] };
79
+ }
80
+ return { protocol: "FTP/SMTP", confidence: "medium", details: banner.split("\n")[0] };
81
+ }
82
+ if (banner.startsWith("* OK")) {
83
+ return { protocol: "IMAP", confidence: "high", details: banner.split("\n")[0] };
84
+ }
85
+ if (banner.startsWith("+OK")) {
86
+ return { protocol: "POP3", confidence: "high", details: banner.split("\n")[0] };
87
+ }
88
+ if (banner.startsWith("HTTP/")) {
89
+ const match = banner.match(/^HTTP\/([\d.]+)\s+(\d+)/);
90
+ return {
91
+ protocol: "HTTP",
92
+ confidence: "high",
93
+ version: match ? match[1] : undefined,
94
+ details: match ? `Status ${match[2]}` : undefined,
95
+ };
96
+ }
97
+ if (banner.startsWith("-NOAUTH") || banner.startsWith("+PONG") || banner.startsWith("-ERR") || banner.startsWith("$")) {
98
+ return { protocol: "Redis", confidence: "high" };
99
+ }
100
+ if (banner.startsWith("STAT ") || banner.startsWith("END")) {
101
+ return { protocol: "Memcached", confidence: "high" };
102
+ }
103
+ // MySQL greeting: starts with binary packet containing 0x0a (protocol version 10)
104
+ if (rawBanner && rawBanner.startsWith("(binary")) {
105
+ const hexPart = rawBanner.replace(/^\(binary \d+ bytes\)\s*/, "");
106
+ // MySQL: packet length (3 bytes) + sequence (1 byte) + 0x0a
107
+ if (hexPart.length >= 10 && hexPart.substring(8, 10) === "0a") {
108
+ return { protocol: "MySQL", confidence: "medium" };
109
+ }
110
+ // MongoDB wire protocol
111
+ if (hexPart.length > 24) {
112
+ return { protocol: "Binary Protocol (possible MongoDB/custom)", confidence: "low" };
113
+ }
114
+ }
115
+ return null;
116
+ }
117
+ // ─── Tool 1: tcp_probe ───
118
+ async function tcpProbe(args, _ctx) {
119
+ const host = args.host;
120
+ const ports = args.ports ?? DEFAULT_PORTS;
121
+ await limiter.acquire();
122
+ const results = [];
123
+ for (const port of ports) {
124
+ const result = await tcpConnect(host, port);
125
+ results.push(result);
126
+ }
127
+ const openPorts = results.filter((r) => r.open);
128
+ const closedPorts = results.filter((r) => !r.open);
129
+ // Backend analysis: compare timing and banners across open ports
130
+ const analysis = {
131
+ openPorts: openPorts.map((r) => r.port),
132
+ closedPorts: closedPorts.map((r) => r.port),
133
+ backendGroups: [],
134
+ loadBalancerDetected: false,
135
+ notes: [],
136
+ };
137
+ // Group by similar timing (within 20% tolerance) and banner similarity
138
+ if (openPorts.length > 1) {
139
+ const groups = new Map();
140
+ for (const result of openPorts) {
141
+ const bannerKey = result.banner?.slice(0, 50) ?? "(no banner)";
142
+ let placed = false;
143
+ for (const [key, group] of groups) {
144
+ const avgTime = group.reduce((sum, r) => sum + r.connectTimeMs, 0) / group.length;
145
+ const timeDiff = Math.abs(result.connectTimeMs - avgTime) / avgTime;
146
+ const samePrefix = key === bannerKey;
147
+ if (timeDiff < 0.2 && samePrefix) {
148
+ group.push(result);
149
+ placed = true;
150
+ break;
151
+ }
152
+ }
153
+ if (!placed) {
154
+ const key = bannerKey;
155
+ if (!groups.has(key))
156
+ groups.set(key, []);
157
+ groups.get(key).push(result);
158
+ }
159
+ }
160
+ for (const [bannerKey, group] of groups) {
161
+ const avgTime = Math.round((group.reduce((sum, r) => sum + r.connectTimeMs, 0) / group.length) * 100) / 100;
162
+ analysis.backendGroups.push({
163
+ ports: group.map((r) => r.port),
164
+ avgConnectTimeMs: avgTime,
165
+ banner: bannerKey !== "(no banner)" ? bannerKey : undefined,
166
+ });
167
+ }
168
+ if (analysis.backendGroups.length > 1) {
169
+ analysis.loadBalancerDetected = true;
170
+ analysis.notes.push("Different backend groups detected across ports — possible load balancer, reverse proxy, or different services.");
171
+ }
172
+ else {
173
+ analysis.notes.push("All open ports show similar timing and banner patterns — likely same backend.");
174
+ }
175
+ }
176
+ // Timing notes
177
+ if (openPorts.length > 0) {
178
+ const avgConnect = openPorts.reduce((sum, r) => sum + r.connectTimeMs, 0) / openPorts.length;
179
+ if (avgConnect < 5) {
180
+ analysis.notes.push("Very low latency — target is likely on same network or nearby.");
181
+ }
182
+ else if (avgConnect > 200) {
183
+ analysis.notes.push("High connection latency — target may be geographically distant or behind rate limiting.");
184
+ }
185
+ }
186
+ return json({
187
+ host,
188
+ probes: results.map((r) => ({
189
+ port: r.port,
190
+ open: r.open,
191
+ connectTimeMs: r.connectTimeMs,
192
+ remoteFamily: r.remoteFamily,
193
+ localPort: r.localPort,
194
+ banner: r.banner,
195
+ error: r.error,
196
+ })),
197
+ analysis,
198
+ });
199
+ }
200
+ // ─── Tool 2: tcp_banner ───
201
+ /** Protocol probes to send when no banner arrives automatically. */
202
+ const PROTOCOL_PROBES = [
203
+ { name: "Redis PING", probe: Buffer.from("PING\r\n"), waitMs: 1500 },
204
+ { name: "Memcached stats", probe: Buffer.from("stats\r\n"), waitMs: 1500 },
205
+ { name: "HTTP GET", probe: Buffer.from("GET / HTTP/1.0\r\nHost: target\r\n\r\n"), waitMs: 2000 },
206
+ ];
207
+ function tcpBannerGrab(host, port) {
208
+ return new Promise((resolve) => {
209
+ const start = performance.now();
210
+ let finished = false;
211
+ const finish = (result) => {
212
+ if (finished)
213
+ return;
214
+ finished = true;
215
+ socket.destroy();
216
+ resolve(result);
217
+ };
218
+ const connectTimer = setTimeout(() => {
219
+ finish({
220
+ banner: null,
221
+ protocol: null,
222
+ probeSent: null,
223
+ connectTimeMs: 0,
224
+ });
225
+ }, CONNECT_TIMEOUT);
226
+ const socket = net.connect({ host, port }, () => {
227
+ clearTimeout(connectTimer);
228
+ const connectTimeMs = Math.round((performance.now() - start) * 100) / 100;
229
+ const chunks = [];
230
+ let probeIndex = -1;
231
+ let probeSent = null;
232
+ let dataTimer = null;
233
+ let waitingForAutoResponse = true;
234
+ const processResponse = () => {
235
+ if (dataTimer)
236
+ clearTimeout(dataTimer);
237
+ const raw = Buffer.concat(chunks);
238
+ const text = raw.toString("utf-8").trim();
239
+ const hasBinary = /[\x00-\x08\x0e-\x1f]/.test(text.slice(0, 64));
240
+ const bannerStr = hasBinary
241
+ ? `(binary ${raw.length} bytes) ${raw.toString("hex").slice(0, 128)}`
242
+ : text.slice(0, 2048);
243
+ const detected = detectProtocol(bannerStr, hasBinary ? bannerStr : undefined);
244
+ finish({
245
+ banner: bannerStr || null,
246
+ protocol: detected,
247
+ probeSent,
248
+ connectTimeMs,
249
+ rawHex: hasBinary ? raw.toString("hex").slice(0, 256) : undefined,
250
+ });
251
+ };
252
+ socket.on("data", (data) => {
253
+ chunks.push(data);
254
+ waitingForAutoResponse = false;
255
+ // Give a short window for more data
256
+ if (dataTimer)
257
+ clearTimeout(dataTimer);
258
+ dataTimer = setTimeout(processResponse, 500);
259
+ });
260
+ const sendNextProbe = () => {
261
+ if (!waitingForAutoResponse && chunks.length > 0) {
262
+ // Already got data, process it
263
+ processResponse();
264
+ return;
265
+ }
266
+ probeIndex++;
267
+ if (probeIndex >= PROTOCOL_PROBES.length) {
268
+ // No more probes to try — return what we have (if anything)
269
+ if (chunks.length > 0) {
270
+ processResponse();
271
+ }
272
+ else {
273
+ finish({
274
+ banner: null,
275
+ protocol: null,
276
+ probeSent,
277
+ connectTimeMs,
278
+ });
279
+ }
280
+ return;
281
+ }
282
+ const probe = PROTOCOL_PROBES[probeIndex];
283
+ probeSent = probe.name;
284
+ waitingForAutoResponse = false;
285
+ chunks.length = 0;
286
+ try {
287
+ socket.write(probe.probe);
288
+ }
289
+ catch {
290
+ // Socket may have been closed by remote
291
+ finish({
292
+ banner: null,
293
+ protocol: null,
294
+ probeSent,
295
+ connectTimeMs,
296
+ });
297
+ return;
298
+ }
299
+ dataTimer = setTimeout(() => {
300
+ if (chunks.length > 0) {
301
+ processResponse();
302
+ }
303
+ else {
304
+ sendNextProbe();
305
+ }
306
+ }, probe.waitMs);
307
+ };
308
+ // First, wait for auto-response from server (some protocols send greeting automatically)
309
+ dataTimer = setTimeout(() => {
310
+ if (chunks.length > 0) {
311
+ processResponse();
312
+ }
313
+ else {
314
+ // No auto-banner; start sending probes
315
+ sendNextProbe();
316
+ }
317
+ }, BANNER_TIMEOUT);
318
+ });
319
+ socket.on("error", (err) => {
320
+ clearTimeout(connectTimer);
321
+ finish({
322
+ banner: null,
323
+ protocol: null,
324
+ probeSent: null,
325
+ connectTimeMs: 0,
326
+ });
327
+ });
328
+ });
329
+ }
330
+ async function tcpBanner(args, _ctx) {
331
+ const host = args.host;
332
+ const port = args.port;
333
+ await limiter.acquire();
334
+ const result = await tcpBannerGrab(host, port);
335
+ return json({
336
+ host,
337
+ port,
338
+ banner: result.banner,
339
+ protocol: result.protocol,
340
+ probeSent: result.probeSent,
341
+ connectTimeMs: result.connectTimeMs,
342
+ rawHex: result.rawHex,
343
+ });
344
+ }
345
+ // ─── Tool Definitions ───
346
+ export const tcpTools = [
347
+ {
348
+ name: "tcp_probe",
349
+ description: "TCP connection fingerprint. Connects to target port(s) and measures SYN-ACK latency, reads initial banners, and compares signals across ports to detect load balancing or different backends. Useful for infrastructure mapping without HTTP.",
350
+ schema: {
351
+ host: z.string().describe("Target host"),
352
+ ports: z
353
+ .array(z.number())
354
+ .optional()
355
+ .describe("Ports to probe (default: [80, 443, 22, 8080, 8443])"),
356
+ },
357
+ execute: tcpProbe,
358
+ },
359
+ {
360
+ name: "tcp_banner",
361
+ description: "Banner grab on arbitrary TCP port. Connects via TCP, reads initial server data, and auto-detects protocol (SSH, FTP, SMTP, MySQL, Redis, IMAP, POP3, HTTP, Memcached, MongoDB). Sends protocol-specific probes for services that do not send a greeting automatically.",
362
+ schema: {
363
+ host: z.string().describe("Target host"),
364
+ port: z.number().describe("TCP port to grab banner from"),
365
+ },
366
+ execute: tcpBanner,
367
+ },
368
+ ];
369
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tcp/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { ToolDef } from "../types/index.js";
2
+ export declare const timingTools: ToolDef[];
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/timing/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAe,MAAM,mBAAmB,CAAC;AA6gB9D,eAAO,MAAM,WAAW,EAAE,OAAO,EAuChC,CAAC"}