whopper 0.1.8 → 0.2.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 (107) hide show
  1. package/README.md +4 -0
  2. package/dist/analyzer/apply.d.ts.map +1 -1
  3. package/dist/analyzer/apply.js +67 -7
  4. package/dist/analyzer/apply.js.map +1 -1
  5. package/dist/analyzer/apply.test.js +204 -0
  6. package/dist/analyzer/apply.test.js.map +1 -1
  7. package/dist/analyzer/index.test.js +52 -0
  8. package/dist/analyzer/index.test.js.map +1 -1
  9. package/dist/analyzer/types.d.ts +2 -0
  10. package/dist/analyzer/types.d.ts.map +1 -1
  11. package/dist/analyzer/util.d.ts +3 -0
  12. package/dist/analyzer/util.d.ts.map +1 -0
  13. package/dist/analyzer/util.js +10 -0
  14. package/dist/analyzer/util.js.map +1 -0
  15. package/dist/browser/index.d.ts +1 -1
  16. package/dist/browser/index.d.ts.map +1 -1
  17. package/dist/browser/index.js +52 -15
  18. package/dist/browser/index.js.map +1 -1
  19. package/dist/browser/index.test.js +58 -1
  20. package/dist/browser/index.test.js.map +1 -1
  21. package/dist/browser/types.d.ts +5 -1
  22. package/dist/browser/types.d.ts.map +1 -1
  23. package/dist/browser/utils.d.ts +2 -0
  24. package/dist/browser/utils.d.ts.map +1 -1
  25. package/dist/browser/utils.js +47 -0
  26. package/dist/browser/utils.js.map +1 -1
  27. package/dist/browser/utils.test.js +18 -1
  28. package/dist/browser/utils.test.js.map +1 -1
  29. package/dist/commands/detect.d.ts.map +1 -1
  30. package/dist/commands/detect.js +3 -1
  31. package/dist/commands/detect.js.map +1 -1
  32. package/dist/commands/detect.test.js +23 -2
  33. package/dist/commands/detect.test.js.map +1 -1
  34. package/dist/commands/detect_types.d.ts +2 -2
  35. package/dist/commands/detect_types.d.ts.map +1 -1
  36. package/dist/commands/detect_utils.d.ts.map +1 -1
  37. package/dist/commands/detect_utils.js +56 -52
  38. package/dist/commands/detect_utils.js.map +1 -1
  39. package/dist/commands/detect_utils.test.js +49 -22
  40. package/dist/commands/detect_utils.test.js.map +1 -1
  41. package/dist/commands/hello.d.ts +3 -0
  42. package/dist/commands/hello.d.ts.map +1 -0
  43. package/dist/commands/hello.js +12 -0
  44. package/dist/commands/hello.js.map +1 -0
  45. package/dist/commands/version.d.ts +3 -0
  46. package/dist/commands/version.d.ts.map +1 -0
  47. package/dist/commands/version.js +10 -0
  48. package/dist/commands/version.js.map +1 -0
  49. package/dist/commands/version.test.d.ts +2 -0
  50. package/dist/commands/version.test.d.ts.map +1 -0
  51. package/dist/commands/version.test.js +27 -0
  52. package/dist/commands/version.test.js.map +1 -0
  53. package/dist/detector/index.d.ts +5 -0
  54. package/dist/detector/index.d.ts.map +1 -0
  55. package/dist/detector/index.js +16 -0
  56. package/dist/detector/index.js.map +1 -0
  57. package/dist/detector/matcher.d.ts +5 -0
  58. package/dist/detector/matcher.d.ts.map +1 -0
  59. package/dist/detector/matcher.js +50 -0
  60. package/dist/detector/matcher.js.map +1 -0
  61. package/dist/detector/types.d.ts +10 -0
  62. package/dist/detector/types.d.ts.map +1 -0
  63. package/dist/detector/types.js +2 -0
  64. package/dist/detector/types.js.map +1 -0
  65. package/dist/logger/types.js +2 -2
  66. package/dist/logger/types.js.map +1 -1
  67. package/dist/main.js +0 -0
  68. package/dist/signatures/_types.d.ts +2 -0
  69. package/dist/signatures/_types.d.ts.map +1 -1
  70. package/dist/signatures/index.d.ts.map +1 -1
  71. package/dist/signatures/index.js +4 -0
  72. package/dist/signatures/index.js.map +1 -1
  73. package/dist/signatures/nginx.d.ts +3 -0
  74. package/dist/signatures/nginx.d.ts.map +1 -0
  75. package/dist/signatures/nginx.js +12 -0
  76. package/dist/signatures/nginx.js.map +1 -0
  77. package/dist/signatures/signatures.test.js +10 -0
  78. package/dist/signatures/signatures.test.js.map +1 -1
  79. package/dist/signatures/technologies/adobe_flash.d.ts.map +1 -1
  80. package/dist/signatures/technologies/adobe_flash.js +5 -2
  81. package/dist/signatures/technologies/adobe_flash.js.map +1 -1
  82. package/dist/signatures/technologies/amazon_cloudfront.d.ts +3 -0
  83. package/dist/signatures/technologies/amazon_cloudfront.d.ts.map +1 -0
  84. package/dist/signatures/technologies/amazon_cloudfront.js +12 -0
  85. package/dist/signatures/technologies/amazon_cloudfront.js.map +1 -0
  86. package/dist/signatures/technologies/cloudflare.d.ts +3 -0
  87. package/dist/signatures/technologies/cloudflare.d.ts.map +1 -0
  88. package/dist/signatures/technologies/cloudflare.js +20 -0
  89. package/dist/signatures/technologies/cloudflare.js.map +1 -0
  90. package/dist/signatures/technologies/cs_cart.js +4 -4
  91. package/dist/signatures/technologies/cs_cart.js.map +1 -1
  92. package/dist/signatures/technologies/microcms.js +3 -3
  93. package/dist/signatures/technologies/microcms.js.map +1 -1
  94. package/dist/signatures/technologies/nginx.d.ts.map +1 -1
  95. package/dist/signatures/technologies/nginx.js +1 -0
  96. package/dist/signatures/technologies/nginx.js.map +1 -1
  97. package/dist/signatures/technologies/shopify.d.ts.map +1 -1
  98. package/dist/signatures/technologies/shopify.js +2 -3
  99. package/dist/signatures/technologies/shopify.js.map +1 -1
  100. package/dist/signatures/technologies/spiwer.d.ts +3 -0
  101. package/dist/signatures/technologies/spiwer.d.ts.map +1 -0
  102. package/dist/signatures/technologies/spiwer.js +10 -0
  103. package/dist/signatures/technologies/spiwer.js.map +1 -0
  104. package/dist/signatures/technologies/wordpress.d.ts.map +1 -1
  105. package/dist/signatures/technologies/wordpress.js +1 -0
  106. package/dist/signatures/technologies/wordpress.js.map +1 -1
  107. package/package.json +1 -1
@@ -13,40 +13,49 @@ export function colorizeConfidence(confidence) {
13
13
  }
14
14
  }
15
15
  export function makeDetectCommandOutput(detections, signatures) {
16
- // Handle directly detected softwares
17
- const detectedSoftwares = detections.map((detection) => {
16
+ // Handle directly detected softwares (one entry per version)
17
+ const detectedSoftwares = detections.flatMap((detection) => {
18
18
  const signature = signatures.find((signature) => signature.name === detection.name);
19
- const detectedSoftware = {
20
- name: detection.name,
21
- confidence: maxConfidence(detection.evidences?.map((e) => e.confidence) || []),
22
- };
23
- if (signature.description) {
24
- detectedSoftware.description = signature.description;
25
- }
26
- const evidences = detection.evidences;
27
- if (evidences && evidences.length > 0) {
28
- detectedSoftware.evidences = evidences;
29
- }
30
- const versions = [
31
- ...new Set(evidences
32
- ?.map((evidence) => evidence.version)
33
- .filter((v) => v !== undefined)),
34
- ];
35
- if (versions && versions.length > 0) {
36
- detectedSoftware.versions = versions;
19
+ const evidences = detection.evidences || [];
20
+ // Group evidences by version
21
+ const versionGroups = new Map();
22
+ for (const evidence of evidences) {
23
+ const key = evidence.version;
24
+ if (!versionGroups.has(key)) {
25
+ versionGroups.set(key, []);
26
+ }
27
+ versionGroups.get(key).push(evidence);
37
28
  }
38
- const cpes = signature.cpe
39
- ? [
40
- ...new Set(evidences
41
- ?.map((evidence) => evidence.version)
42
- .filter((v) => v !== undefined)
43
- .map((version) => signature.cpe + ":" + version)),
44
- ]
45
- : undefined;
46
- if (cpes && cpes.length > 0) {
47
- detectedSoftware.cpes = cpes;
29
+ // If no evidences, create a single entry
30
+ if (versionGroups.size === 0) {
31
+ const ds = {
32
+ name: detection.name,
33
+ confidence: maxConfidence([]),
34
+ };
35
+ if (signature.description) {
36
+ ds.description = signature.description;
37
+ }
38
+ return [ds];
48
39
  }
49
- return detectedSoftware;
40
+ return [...versionGroups.entries()].map(([version, versionEvidences]) => {
41
+ const ds = {
42
+ name: detection.name,
43
+ confidence: maxConfidence(versionEvidences.map((e) => e.confidence)),
44
+ };
45
+ if (signature.description) {
46
+ ds.description = signature.description;
47
+ }
48
+ if (versionEvidences.length > 0) {
49
+ ds.evidences = versionEvidences;
50
+ }
51
+ if (version) {
52
+ ds.version = version;
53
+ if (signature.cpe) {
54
+ ds.cpe = signature.cpe + ":" + version;
55
+ }
56
+ }
57
+ return ds;
58
+ });
50
59
  });
51
60
  // Handle implied softwares
52
61
  const impliedSoftwares = detectedSoftwares.flatMap((detectedSoftware) => {
@@ -68,12 +77,13 @@ export function makeDetectCommandOutput(detections, signatures) {
68
77
  return [impliedSoftware];
69
78
  });
70
79
  });
71
- const mergedByName = new Map();
80
+ const mergedByKey = new Map();
72
81
  const allSoftwares = [...detectedSoftwares, ...impliedSoftwares];
73
82
  for (const software of allSoftwares) {
74
- const existing = mergedByName.get(software.name);
83
+ const key = software.name + "|" + (software.version || "");
84
+ const existing = mergedByKey.get(key);
75
85
  if (!existing) {
76
- mergedByName.set(software.name, software);
86
+ mergedByKey.set(key, software);
77
87
  continue;
78
88
  }
79
89
  const impliedBy = [
@@ -89,17 +99,11 @@ export function makeDetectCommandOutput(detections, signatures) {
89
99
  if (description) {
90
100
  merged.description = description;
91
101
  }
92
- const versions = [
93
- ...new Set([...(existing.versions || []), ...(software.versions || [])]),
94
- ];
95
- if (versions.length > 0) {
96
- merged.versions = versions;
102
+ if (existing.version) {
103
+ merged.version = existing.version;
97
104
  }
98
- const cpes = [
99
- ...new Set([...(existing.cpes || []), ...(software.cpes || [])]),
100
- ];
101
- if (cpes.length > 0) {
102
- merged.cpes = cpes;
105
+ if (existing.cpe) {
106
+ merged.cpe = existing.cpe;
103
107
  }
104
108
  const evidences = [
105
109
  ...(existing.evidences || []),
@@ -111,28 +115,28 @@ export function makeDetectCommandOutput(detections, signatures) {
111
115
  if (uniqueImpliedBy.length > 0) {
112
116
  merged.impliedBy = uniqueImpliedBy.join(", ");
113
117
  }
114
- mergedByName.set(software.name, merged);
118
+ mergedByKey.set(key, merged);
115
119
  }
116
120
  return {
117
- detectedSoftwares: [...mergedByName.values()],
121
+ detectedSoftwares: [...mergedByKey.values()],
118
122
  };
119
123
  }
120
124
  export function printDetectCommandOutputAsText(output, showEvidence) {
121
125
  console.log();
122
126
  for (const detection of output.detectedSoftwares) {
123
127
  let message = `* ${chalk.green(detection.name)}`;
124
- const versions = [
125
- ...new Set(detection.evidences?.map((e) => e.version).filter((v) => v)),
126
- ];
127
- if (versions.length > 0) {
128
- message += ` ${versions.join(", ")}`;
128
+ if (detection.version) {
129
+ message += ` ${detection.version}`;
129
130
  }
130
131
  console.log(message);
131
132
  if (!showEvidence) {
132
133
  continue;
133
134
  }
134
135
  for (const evidence of detection.evidences || []) {
135
- console.log(` [${evidence.type}] ${evidence.value}`);
136
+ const evidenceValue = evidence.type === "body" && evidence.sourceUrl
137
+ ? evidence.sourceUrl
138
+ : evidence.value;
139
+ console.log(` [${evidence.type}] ${evidenceValue}`);
136
140
  }
137
141
  if (detection.impliedBy) {
138
142
  console.log(` [implied] ${detection.impliedBy}`);
@@ -1 +1 @@
1
- {"version":3,"file":"detect_utils.js","sourceRoot":"","sources":["../../src/commands/detect_utils.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"detect_utils.js","sourceRoot":"","sources":["../../src/commands/detect_utils.ts"],"names":[],"mappings":"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"}
@@ -45,7 +45,7 @@ describe("makeDetectCommandOutput", () => {
45
45
  expect(result.detectedSoftwares[0].name).toBe("nginx");
46
46
  expect(result.detectedSoftwares[0].description).toBe("Web server");
47
47
  expect(result.detectedSoftwares[0].confidence).toBe("high");
48
- expect(result.detectedSoftwares[0].versions).toEqual(["1.20.0"]);
48
+ expect(result.detectedSoftwares[0].version).toBe("1.20.0");
49
49
  });
50
50
  it("should generate CPEs when signature has cpe", () => {
51
51
  const detections = [
@@ -62,9 +62,7 @@ describe("makeDetectCommandOutput", () => {
62
62
  },
63
63
  ];
64
64
  const result = makeDetectCommandOutput(detections, baseSignatures);
65
- expect(result.detectedSoftwares[0].cpes).toEqual([
66
- "cpe:2.3:a:nginx:nginx:1.20.0",
67
- ]);
65
+ expect(result.detectedSoftwares[0].cpe).toBe("cpe:2.3:a:nginx:nginx:1.20.0");
68
66
  });
69
67
  it("should not include cpes when signature has no cpe", () => {
70
68
  const detections = [
@@ -81,19 +79,19 @@ describe("makeDetectCommandOutput", () => {
81
79
  },
82
80
  ];
83
81
  const result = makeDetectCommandOutput(detections, baseSignatures);
84
- expect(result.detectedSoftwares[0].cpes).toBeUndefined();
82
+ expect(result.detectedSoftwares[0].cpe).toBeUndefined();
85
83
  });
86
84
  });
87
85
  describe("confidence calculation", () => {
88
- it("should use highest confidence from evidences", () => {
86
+ it("should use highest confidence from evidences with same version", () => {
89
87
  const detections = [
90
88
  {
91
89
  name: "nginx",
92
90
  evidences: [
93
91
  {
94
92
  type: "header",
95
- value: "nginx",
96
- version: undefined,
93
+ value: "nginx/1.20.0",
94
+ version: "1.20.0",
97
95
  confidence: "low",
98
96
  },
99
97
  {
@@ -106,7 +104,8 @@ describe("makeDetectCommandOutput", () => {
106
104
  },
107
105
  ];
108
106
  const result = makeDetectCommandOutput(detections, baseSignatures);
109
- expect(result.detectedSoftwares[0].confidence).toBe("high");
107
+ const nginx = result.detectedSoftwares.find((s) => s.version === "1.20.0");
108
+ expect(nginx.confidence).toBe("high");
110
109
  });
111
110
  });
112
111
  describe("implied softwares", () => {
@@ -200,7 +199,7 @@ describe("makeDetectCommandOutput", () => {
200
199
  },
201
200
  ];
202
201
  const result = makeDetectCommandOutput(detections, baseSignatures);
203
- expect(result.detectedSoftwares[0].versions).toEqual(["1.20.0"]);
202
+ expect(result.detectedSoftwares[0].version).toBe("1.20.0");
204
203
  });
205
204
  it("should merge implied software from multiple sources", () => {
206
205
  const signatures = [
@@ -239,7 +238,7 @@ describe("makeDetectCommandOutput", () => {
239
238
  expect(js.impliedBy).toContain("Vue");
240
239
  expect(js.confidence).toBe("high"); // Should use highest confidence
241
240
  });
242
- it("should merge versions and cpes when same software detected multiple ways", () => {
241
+ it("should create separate entries when same software has different versions", () => {
243
242
  const signatures = [
244
243
  { name: "nginx", cpe: "cpe:2.3:a:nginx:nginx" },
245
244
  ];
@@ -268,14 +267,18 @@ describe("makeDetectCommandOutput", () => {
268
267
  },
269
268
  ];
270
269
  const result = makeDetectCommandOutput(detections, signatures);
271
- const nginx = result.detectedSoftwares.find((s) => s.name === "nginx");
272
- expect(nginx).toBeDefined();
273
- expect(nginx.versions).toContain("1.18.0");
274
- expect(nginx.versions).toContain("1.20.0");
275
- expect(nginx.cpes).toContain("cpe:2.3:a:nginx:nginx:1.18.0");
276
- expect(nginx.cpes).toContain("cpe:2.3:a:nginx:nginx:1.20.0");
277
- expect(nginx.confidence).toBe("high");
278
- expect(nginx.evidences).toHaveLength(2);
270
+ const nginxEntries = result.detectedSoftwares.filter((s) => s.name === "nginx");
271
+ expect(nginxEntries).toHaveLength(2);
272
+ const v1180 = nginxEntries.find((s) => s.version === "1.18.0");
273
+ expect(v1180).toBeDefined();
274
+ expect(v1180.cpe).toBe("cpe:2.3:a:nginx:nginx:1.18.0");
275
+ expect(v1180.confidence).toBe("medium");
276
+ expect(v1180.evidences).toHaveLength(1);
277
+ const v1200 = nginxEntries.find((s) => s.version === "1.20.0");
278
+ expect(v1200).toBeDefined();
279
+ expect(v1200.cpe).toBe("cpe:2.3:a:nginx:nginx:1.20.0");
280
+ expect(v1200.confidence).toBe("high");
281
+ expect(v1200.evidences).toHaveLength(1);
279
282
  });
280
283
  it("should merge description from existing or new software", () => {
281
284
  const signatures = [
@@ -326,11 +329,12 @@ describe("printDetectCommandOutputAsText", () => {
326
329
  .join("\n");
327
330
  expect(allOutput).toContain("nginx");
328
331
  });
329
- it("should print versions when available", () => {
332
+ it("should print version when available", () => {
330
333
  const output = {
331
334
  detectedSoftwares: [
332
335
  {
333
336
  name: "nginx",
337
+ version: "1.20.0",
334
338
  confidence: "high",
335
339
  evidences: [
336
340
  {
@@ -369,6 +373,29 @@ describe("printDetectCommandOutputAsText", () => {
369
373
  expect(allOutput).toContain("[header]");
370
374
  expect(allOutput).toContain("Server: nginx");
371
375
  });
376
+ it("should print sourceUrl for body evidences", () => {
377
+ const output = {
378
+ detectedSoftwares: [
379
+ {
380
+ name: "WordPress",
381
+ confidence: "high",
382
+ evidences: [
383
+ {
384
+ type: "body",
385
+ value: "<!doctype html>...",
386
+ version: undefined,
387
+ confidence: "high",
388
+ sourceUrl: "https://example.com/index.html",
389
+ },
390
+ ],
391
+ },
392
+ ],
393
+ };
394
+ printDetectCommandOutputAsText(output, true);
395
+ const allOutput = consoleLogSpy.mock.calls.map((c) => c[0]).join("\n");
396
+ expect(allOutput).toContain("[body] https://example.com/index.html");
397
+ expect(allOutput).not.toContain("<!doctype html>...");
398
+ });
372
399
  it("should not print evidences when showEvidence is false", () => {
373
400
  const output = {
374
401
  detectedSoftwares: [
@@ -434,7 +461,7 @@ describe("printDetectCommandOutputAsJSON", () => {
434
461
  {
435
462
  name: "nginx",
436
463
  description: "Web server",
437
- versions: ["1.20.0"],
464
+ version: "1.20.0",
438
465
  confidence: "high",
439
466
  },
440
467
  ],
@@ -443,7 +470,7 @@ describe("printDetectCommandOutputAsJSON", () => {
443
470
  const jsonOutput = JSON.parse(consoleLogSpy.mock.calls[0][0]);
444
471
  expect(jsonOutput.detectedSoftwares[0].name).toBe("nginx");
445
472
  expect(jsonOutput.detectedSoftwares[0].description).toBe("Web server");
446
- expect(jsonOutput.detectedSoftwares[0].versions).toEqual(["1.20.0"]);
473
+ expect(jsonOutput.detectedSoftwares[0].version).toBe("1.20.0");
447
474
  });
448
475
  });
449
476
  //# sourceMappingURL=detect_utils.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"detect_utils.test.js","sourceRoot":"","sources":["../../src/commands/detect_utils.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"detect_utils.test.js","sourceRoot":"","sources":["../../src/commands/detect_utils.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { Command } from "commander";
2
+ export declare const helloCommand: () => Command;
3
+ //# sourceMappingURL=hello.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hello.d.ts","sourceRoot":"","sources":["../../src/commands/hello.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAOpC,eAAO,MAAM,YAAY,QAAO,OAQ/B,CAAC"}
@@ -0,0 +1,12 @@
1
+ import { Command } from "commander";
2
+ import chalk from "chalk";
3
+ export const helloCommand = () => {
4
+ return new Command("hello")
5
+ .description("Prints a greeting message")
6
+ .option("-n, --name <name>", "Name to greet")
7
+ .action((options) => {
8
+ const name = options.name || "World";
9
+ console.log(chalk.green(`Hello, ${name}!`));
10
+ });
11
+ };
12
+ //# sourceMappingURL=hello.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hello.js","sourceRoot":"","sources":["../../src/commands/hello.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,KAAK,MAAM,OAAO,CAAC;AAM1B,MAAM,CAAC,MAAM,YAAY,GAAG,GAAY,EAAE;IACxC,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC;SACxB,WAAW,CAAC,2BAA2B,CAAC;SACxC,MAAM,CAAC,mBAAmB,EAAE,eAAe,CAAC;SAC5C,MAAM,CAAC,CAAC,OAAgB,EAAE,EAAE;QAC3B,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,IAAI,OAAO,CAAC;QACrC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,UAAU,IAAI,GAAG,CAAC,CAAC,CAAC;IAC9C,CAAC,CAAC,CAAC;AACP,CAAC,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { Command } from "commander";
2
+ export declare const versionCommand: () => Command;
3
+ //# sourceMappingURL=version.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../../src/commands/version.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAGpC,eAAO,MAAM,cAAc,QAAO,OAMjC,CAAC"}
@@ -0,0 +1,10 @@
1
+ import { Command } from "commander";
2
+ import { VERSION } from "../cli.js";
3
+ export const versionCommand = () => {
4
+ return new Command("version")
5
+ .description("Displays the current version of the CLI tool.")
6
+ .action(() => {
7
+ console.log(VERSION);
8
+ });
9
+ };
10
+ //# sourceMappingURL=version.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/commands/version.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,MAAM,CAAC,MAAM,cAAc,GAAG,GAAY,EAAE;IAC1C,OAAO,IAAI,OAAO,CAAC,SAAS,CAAC;SAC1B,WAAW,CAAC,+CAA+C,CAAC;SAC5D,MAAM,CAAC,GAAG,EAAE;QACX,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IACvB,CAAC,CAAC,CAAC;AACP,CAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=version.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"version.test.d.ts","sourceRoot":"","sources":["../../src/commands/version.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,27 @@
1
+ import { describe, it, expect, vi, beforeEach, afterEach } from "vitest";
2
+ import { versionCommand } from "./version.js";
3
+ import { VERSION } from "../cli.js";
4
+ describe("versionCommand", () => {
5
+ let consoleLogSpy;
6
+ beforeEach(() => {
7
+ consoleLogSpy = vi.spyOn(console, "log").mockImplementation(() => { });
8
+ });
9
+ afterEach(() => {
10
+ consoleLogSpy.mockRestore();
11
+ });
12
+ it("should create a command named version", () => {
13
+ const command = versionCommand();
14
+ expect(command.name()).toBe("version");
15
+ });
16
+ it("should have a description", () => {
17
+ const command = versionCommand();
18
+ expect(command.description()).toContain("version");
19
+ });
20
+ it("should print the version when action is called", async () => {
21
+ const command = versionCommand();
22
+ // Parse with just the command name, no extra arguments
23
+ await command.parseAsync([], { from: "user" });
24
+ expect(consoleLogSpy).toHaveBeenCalledWith(VERSION);
25
+ });
26
+ });
27
+ //# sourceMappingURL=version.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"version.test.js","sourceRoot":"","sources":["../../src/commands/version.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AACzE,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,QAAQ,CAAC,gBAAgB,EAAE,GAAG,EAAE;IAC9B,IAAI,aAA0C,CAAC;IAE/C,UAAU,CAAC,GAAG,EAAE;QACd,aAAa,GAAG,EAAE,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,kBAAkB,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;IACxE,CAAC,CAAC,CAAC;IAEH,SAAS,CAAC,GAAG,EAAE;QACb,aAAa,CAAC,WAAW,EAAE,CAAC;IAC9B,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,uCAAuC,EAAE,GAAG,EAAE;QAC/C,MAAM,OAAO,GAAG,cAAc,EAAE,CAAC;QACjC,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACzC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,2BAA2B,EAAE,GAAG,EAAE;QACnC,MAAM,OAAO,GAAG,cAAc,EAAE,CAAC;QACjC,MAAM,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;IACrD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,gDAAgD,EAAE,KAAK,IAAI,EAAE;QAC9D,MAAM,OAAO,GAAG,cAAc,EAAE,CAAC;QACjC,uDAAuD;QACvD,MAAM,OAAO,CAAC,UAAU,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;QAC/C,MAAM,CAAC,aAAa,CAAC,CAAC,oBAAoB,CAAC,OAAO,CAAC,CAAC;IACtD,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -0,0 +1,5 @@
1
+ import type { Context } from "../browser/index.js";
2
+ import type { Signature } from "../signatures/_types.js";
3
+ import type { Detection } from "./types.js";
4
+ export declare function detect(context: Context, signatures: Signature[]): Detection[];
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/detector/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AAEzD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAE5C,wBAAgB,MAAM,CAAC,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,GAAG,SAAS,EAAE,CAe7E"}
@@ -0,0 +1,16 @@
1
+ import { applySignature } from "./matcher.js";
2
+ export function detect(context, signatures) {
3
+ const detections = [];
4
+ for (const signature of signatures) {
5
+ const [matched, evidences] = applySignature(context, signature);
6
+ if (matched) {
7
+ detections.push({
8
+ name: signature.name,
9
+ confidence: signature.confidence,
10
+ evidences,
11
+ });
12
+ }
13
+ }
14
+ return detections;
15
+ }
16
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/detector/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAG9C,MAAM,UAAU,MAAM,CAAC,OAAgB,EAAE,UAAuB;IAC9D,MAAM,UAAU,GAAgB,EAAE,CAAC;IAEnC,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;QACnC,MAAM,CAAC,OAAO,EAAE,SAAS,CAAC,GAAG,cAAc,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;QAChE,IAAI,OAAO,EAAE,CAAC;YACZ,UAAU,CAAC,IAAI,CAAC;gBACd,IAAI,EAAE,SAAS,CAAC,IAAI;gBACpB,UAAU,EAAE,SAAS,CAAC,UAAU;gBAChC,SAAS;aACV,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,OAAO,UAAU,CAAC;AACpB,CAAC"}
@@ -0,0 +1,5 @@
1
+ import type { Context } from "../browser/index.js";
2
+ import type { Signature } from "../signatures/_types.js";
3
+ import type { Evidence } from "./types.js";
4
+ export declare const applySignature: (context: Context, signature: Signature) => [boolean, Evidence[]];
5
+ //# sourceMappingURL=matcher.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"matcher.d.ts","sourceRoot":"","sources":["../../src/detector/matcher.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AACzD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAe3C,eAAO,MAAM,cAAc,GACzB,SAAS,OAAO,EAChB,WAAW,SAAS,KACnB,CAAC,OAAO,EAAE,QAAQ,EAAE,CA4CtB,CAAC"}
@@ -0,0 +1,50 @@
1
+ const matchString = (value, rule) => {
2
+ if (rule.contains && value.includes(rule.contains)) {
3
+ return true;
4
+ }
5
+ if (rule.regex && new RegExp(rule.regex).test(value)) {
6
+ return true;
7
+ }
8
+ return false;
9
+ };
10
+ export const applySignature = (context, signature) => {
11
+ for (const rule of signature.rules) {
12
+ let ruleMatched = false;
13
+ const evidences = [];
14
+ // Match headers
15
+ if (rule.headers) {
16
+ for (const [header, match] of Object.entries(rule.headers)) {
17
+ const response = context.responses.find((res) => res.headers[header.toLowerCase()]);
18
+ if (response) {
19
+ const headerValue = response.headers[header.toLowerCase()];
20
+ if (headerValue && matchString(headerValue, match)) {
21
+ ruleMatched = true;
22
+ evidences.push({
23
+ type: "header",
24
+ value: `${header}: ${headerValue}`,
25
+ });
26
+ }
27
+ }
28
+ }
29
+ }
30
+ // Match bodies
31
+ if (rule.bodies) {
32
+ for (const match of rule.bodies) {
33
+ for (const response of context.responses) {
34
+ const body = response.headers["content-type"]?.includes("text")
35
+ ? response.body
36
+ : "";
37
+ if (body && matchString(body, match)) {
38
+ ruleMatched = true;
39
+ evidences.push({ type: "body", value: body });
40
+ }
41
+ }
42
+ }
43
+ }
44
+ if (ruleMatched) {
45
+ return [true, evidences];
46
+ }
47
+ }
48
+ return [false, []];
49
+ };
50
+ //# sourceMappingURL=matcher.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"matcher.js","sourceRoot":"","sources":["../../src/detector/matcher.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,GAAG,CAClB,KAAa,EACb,IAA2C,EAClC,EAAE;IACX,IAAI,IAAI,CAAC,QAAQ,IAAI,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;QACnD,OAAO,IAAI,CAAC;IACd,CAAC;IACD,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;QACrD,OAAO,IAAI,CAAC;IACd,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,cAAc,GAAG,CAC5B,OAAgB,EAChB,SAAoB,EACG,EAAE;IACzB,KAAK,MAAM,IAAI,IAAI,SAAS,CAAC,KAAK,EAAE,CAAC;QACnC,IAAI,WAAW,GAAG,KAAK,CAAC;QACxB,MAAM,SAAS,GAAe,EAAE,CAAC;QAEjC,gBAAgB;QAChB,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACjB,KAAK,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;gBAC3D,MAAM,QAAQ,GAAG,OAAO,CAAC,SAAS,CAAC,IAAI,CACrC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,CAC3C,CAAC;gBACF,IAAI,QAAQ,EAAE,CAAC;oBACb,MAAM,WAAW,GAAG,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC;oBAC3D,IAAI,WAAW,IAAI,WAAW,CAAC,WAAW,EAAE,KAAK,CAAC,EAAE,CAAC;wBACnD,WAAW,GAAG,IAAI,CAAC;wBACnB,SAAS,CAAC,IAAI,CAAC;4BACb,IAAI,EAAE,QAAQ;4BACd,KAAK,EAAE,GAAG,MAAM,KAAK,WAAW,EAAE;yBACnC,CAAC,CAAC;oBACL,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;QAED,eAAe;QACf,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAChB,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;gBAChC,KAAK,MAAM,QAAQ,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;oBACzC,MAAM,IAAI,GAAG,QAAQ,CAAC,OAAO,CAAC,cAAc,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC;wBAC7D,CAAC,CAAC,QAAQ,CAAC,IAAI;wBACf,CAAC,CAAC,EAAE,CAAC;oBACP,IAAI,IAAI,IAAI,WAAW,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,CAAC;wBACrC,WAAW,GAAG,IAAI,CAAC;wBACnB,SAAS,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;oBAChD,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;QAED,IAAI,WAAW,EAAE,CAAC;YAChB,OAAO,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;QAC3B,CAAC;IACH,CAAC;IACD,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;AACrB,CAAC,CAAC"}
@@ -0,0 +1,10 @@
1
+ export type Evidence = {
2
+ type: "header" | "body";
3
+ value: string;
4
+ };
5
+ export type Detection = {
6
+ name: string;
7
+ confidence: "high" | "medium" | "low";
8
+ evidences: Evidence[];
9
+ };
10
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/detector/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,QAAQ,GAAG;IACrB,IAAI,EAAE,QAAQ,GAAG,MAAM,CAAC;IACxB,KAAK,EAAE,MAAM,CAAC;CACf,CAAC;AAEF,MAAM,MAAM,SAAS,GAAG;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,GAAG,QAAQ,GAAG,KAAK,CAAC;IACtC,SAAS,EAAE,QAAQ,EAAE,CAAC;CACvB,CAAC"}