whopper 0.5.4 → 0.5.7

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 (236) hide show
  1. package/README.md +12 -4
  2. package/dist/analyzer/apply.d.ts.map +1 -1
  3. package/dist/analyzer/apply.js +9 -15
  4. package/dist/analyzer/apply.js.map +1 -1
  5. package/dist/analyzer/apply.test.js +28 -7
  6. package/dist/analyzer/apply.test.js.map +1 -1
  7. package/dist/analyzer/match.d.ts +8 -4
  8. package/dist/analyzer/match.d.ts.map +1 -1
  9. package/dist/analyzer/match.js +19 -2
  10. package/dist/analyzer/match.js.map +1 -1
  11. package/dist/analyzer/match.test.js +46 -10
  12. package/dist/analyzer/match.test.js.map +1 -1
  13. package/dist/commands/active_scan_runner.d.ts.map +1 -1
  14. package/dist/commands/active_scan_runner.js +12 -4
  15. package/dist/commands/active_scan_runner.js.map +1 -1
  16. package/dist/commands/active_scan_runner.test.js +113 -3
  17. package/dist/commands/active_scan_runner.test.js.map +1 -1
  18. package/dist/main.js +0 -0
  19. package/dist/signatures/_types.d.ts +2 -2
  20. package/dist/signatures/_types.d.ts.map +1 -1
  21. package/dist/signatures/signatures.test.js +4 -2
  22. package/dist/signatures/signatures.test.js.map +1 -1
  23. package/dist/signatures/technologies/akismet.js +1 -1
  24. package/dist/signatures/technologies/akismet.js.map +1 -1
  25. package/dist/signatures/technologies/akismet.test.d.ts +2 -0
  26. package/dist/signatures/technologies/akismet.test.d.ts.map +1 -0
  27. package/dist/signatures/technologies/akismet.test.js +43 -0
  28. package/dist/signatures/technologies/akismet.test.js.map +1 -0
  29. package/dist/signatures/technologies/ant_design.js +3 -4
  30. package/dist/signatures/technologies/ant_design.js.map +1 -1
  31. package/dist/signatures/technologies/ant_design.test.d.ts +2 -0
  32. package/dist/signatures/technologies/ant_design.test.d.ts.map +1 -0
  33. package/dist/signatures/technologies/ant_design.test.js +156 -0
  34. package/dist/signatures/technologies/ant_design.test.js.map +1 -0
  35. package/dist/signatures/technologies/bootstrap.js +2 -2
  36. package/dist/signatures/technologies/bootstrap.js.map +1 -1
  37. package/dist/signatures/technologies/bootstrap.test.js +59 -0
  38. package/dist/signatures/technologies/bootstrap.test.js.map +1 -1
  39. package/dist/signatures/technologies/cart_functionality.js +8 -8
  40. package/dist/signatures/technologies/cart_functionality.js.map +1 -1
  41. package/dist/signatures/technologies/cart_functionality.test.d.ts +2 -0
  42. package/dist/signatures/technologies/cart_functionality.test.d.ts.map +1 -0
  43. package/dist/signatures/technologies/cart_functionality.test.js +109 -0
  44. package/dist/signatures/technologies/cart_functionality.test.js.map +1 -0
  45. package/dist/signatures/technologies/colibri_wp.js +1 -1
  46. package/dist/signatures/technologies/colibri_wp.js.map +1 -1
  47. package/dist/signatures/technologies/colibri_wp.test.d.ts +2 -0
  48. package/dist/signatures/technologies/colibri_wp.test.d.ts.map +1 -0
  49. package/dist/signatures/technologies/colibri_wp.test.js +43 -0
  50. package/dist/signatures/technologies/colibri_wp.test.js.map +1 -0
  51. package/dist/signatures/technologies/cs_cart.js +1 -1
  52. package/dist/signatures/technologies/cs_cart.js.map +1 -1
  53. package/dist/signatures/technologies/cs_cart.test.d.ts +2 -0
  54. package/dist/signatures/technologies/cs_cart.test.d.ts.map +1 -0
  55. package/dist/signatures/technologies/cs_cart.test.js +43 -0
  56. package/dist/signatures/technologies/cs_cart.test.js.map +1 -0
  57. package/dist/signatures/technologies/cyberchimps_responsive.js +2 -2
  58. package/dist/signatures/technologies/cyberchimps_responsive.js.map +1 -1
  59. package/dist/signatures/technologies/cyberchimps_responsive.test.d.ts +2 -0
  60. package/dist/signatures/technologies/cyberchimps_responsive.test.d.ts.map +1 -0
  61. package/dist/signatures/technologies/cyberchimps_responsive.test.js +54 -0
  62. package/dist/signatures/technologies/cyberchimps_responsive.test.js.map +1 -0
  63. package/dist/signatures/technologies/elementor_header_footer_builder.js +1 -1
  64. package/dist/signatures/technologies/elementor_header_footer_builder.js.map +1 -1
  65. package/dist/signatures/technologies/elementor_header_footer_builder.test.d.ts +2 -0
  66. package/dist/signatures/technologies/elementor_header_footer_builder.test.d.ts.map +1 -0
  67. package/dist/signatures/technologies/elementor_header_footer_builder.test.js +43 -0
  68. package/dist/signatures/technologies/elementor_header_footer_builder.test.js.map +1 -0
  69. package/dist/signatures/technologies/essential_addons_for_elementor.js +1 -1
  70. package/dist/signatures/technologies/essential_addons_for_elementor.js.map +1 -1
  71. package/dist/signatures/technologies/essential_addons_for_elementor.test.d.ts +2 -0
  72. package/dist/signatures/technologies/essential_addons_for_elementor.test.d.ts.map +1 -0
  73. package/dist/signatures/technologies/essential_addons_for_elementor.test.js +43 -0
  74. package/dist/signatures/technologies/essential_addons_for_elementor.test.js.map +1 -0
  75. package/dist/signatures/technologies/flying_pages.js +1 -1
  76. package/dist/signatures/technologies/flying_pages.js.map +1 -1
  77. package/dist/signatures/technologies/flying_pages.test.d.ts +2 -0
  78. package/dist/signatures/technologies/flying_pages.test.d.ts.map +1 -0
  79. package/dist/signatures/technologies/flying_pages.test.js +43 -0
  80. package/dist/signatures/technologies/flying_pages.test.js.map +1 -0
  81. package/dist/signatures/technologies/formidable_form.js +1 -1
  82. package/dist/signatures/technologies/formidable_form.js.map +1 -1
  83. package/dist/signatures/technologies/formidable_form.test.d.ts +2 -0
  84. package/dist/signatures/technologies/formidable_form.test.d.ts.map +1 -0
  85. package/dist/signatures/technologies/formidable_form.test.js +43 -0
  86. package/dist/signatures/technologies/formidable_form.test.js.map +1 -0
  87. package/dist/signatures/technologies/godaddy_coblocks.js +1 -1
  88. package/dist/signatures/technologies/godaddy_coblocks.js.map +1 -1
  89. package/dist/signatures/technologies/godaddy_coblocks.test.d.ts +2 -0
  90. package/dist/signatures/technologies/godaddy_coblocks.test.d.ts.map +1 -0
  91. package/dist/signatures/technologies/godaddy_coblocks.test.js +43 -0
  92. package/dist/signatures/technologies/godaddy_coblocks.test.js.map +1 -0
  93. package/dist/signatures/technologies/gtranslate.js +2 -2
  94. package/dist/signatures/technologies/gtranslate.js.map +1 -1
  95. package/dist/signatures/technologies/gtranslate.test.d.ts +2 -0
  96. package/dist/signatures/technologies/gtranslate.test.d.ts.map +1 -0
  97. package/dist/signatures/technologies/gtranslate.test.js +65 -0
  98. package/dist/signatures/technologies/gtranslate.test.js.map +1 -0
  99. package/dist/signatures/technologies/intercom.js +1 -1
  100. package/dist/signatures/technologies/intercom.js.map +1 -1
  101. package/dist/signatures/technologies/intercom.test.d.ts +2 -0
  102. package/dist/signatures/technologies/intercom.test.d.ts.map +1 -0
  103. package/dist/signatures/technologies/intercom.test.js +54 -0
  104. package/dist/signatures/technologies/intercom.test.js.map +1 -0
  105. package/dist/signatures/technologies/jetpack.js +1 -1
  106. package/dist/signatures/technologies/jetpack.js.map +1 -1
  107. package/dist/signatures/technologies/jetpack.test.d.ts +2 -0
  108. package/dist/signatures/technologies/jetpack.test.d.ts.map +1 -0
  109. package/dist/signatures/technologies/jetpack.test.js +43 -0
  110. package/dist/signatures/technologies/jetpack.test.js.map +1 -0
  111. package/dist/signatures/technologies/lodash.d.ts.map +1 -1
  112. package/dist/signatures/technologies/lodash.js +21 -3
  113. package/dist/signatures/technologies/lodash.js.map +1 -1
  114. package/dist/signatures/technologies/lodash.test.js +35 -5
  115. package/dist/signatures/technologies/lodash.test.js.map +1 -1
  116. package/dist/signatures/technologies/machothemes_newsmag.js +1 -1
  117. package/dist/signatures/technologies/machothemes_newsmag.js.map +1 -1
  118. package/dist/signatures/technologies/machothemes_newsmag.test.d.ts +2 -0
  119. package/dist/signatures/technologies/machothemes_newsmag.test.d.ts.map +1 -0
  120. package/dist/signatures/technologies/machothemes_newsmag.test.js +43 -0
  121. package/dist/signatures/technologies/machothemes_newsmag.test.js.map +1 -0
  122. package/dist/signatures/technologies/magento.js +2 -2
  123. package/dist/signatures/technologies/magento.js.map +1 -1
  124. package/dist/signatures/technologies/magento.test.js +3 -3
  125. package/dist/signatures/technologies/magento.test.js.map +1 -1
  126. package/dist/signatures/technologies/opencart.js +1 -1
  127. package/dist/signatures/technologies/opencart.js.map +1 -1
  128. package/dist/signatures/technologies/opencart.test.d.ts +2 -0
  129. package/dist/signatures/technologies/opencart.test.d.ts.map +1 -0
  130. package/dist/signatures/technologies/opencart.test.js +43 -0
  131. package/dist/signatures/technologies/opencart.test.js.map +1 -0
  132. package/dist/signatures/technologies/php.d.ts.map +1 -1
  133. package/dist/signatures/technologies/php.js +9 -0
  134. package/dist/signatures/technologies/php.js.map +1 -1
  135. package/dist/signatures/technologies/php.test.d.ts +2 -0
  136. package/dist/signatures/technologies/php.test.d.ts.map +1 -0
  137. package/dist/signatures/technologies/php.test.js +119 -0
  138. package/dist/signatures/technologies/php.test.js.map +1 -0
  139. package/dist/signatures/technologies/salesforce_desk.js +1 -1
  140. package/dist/signatures/technologies/salesforce_desk.js.map +1 -1
  141. package/dist/signatures/technologies/salesforce_desk.test.d.ts +2 -0
  142. package/dist/signatures/technologies/salesforce_desk.test.d.ts.map +1 -0
  143. package/dist/signatures/technologies/salesforce_desk.test.js +43 -0
  144. package/dist/signatures/technologies/salesforce_desk.test.js.map +1 -0
  145. package/dist/signatures/technologies/seedprod_coming_soon.js +1 -1
  146. package/dist/signatures/technologies/seedprod_coming_soon.js.map +1 -1
  147. package/dist/signatures/technologies/seedprod_coming_soon.test.d.ts +2 -0
  148. package/dist/signatures/technologies/seedprod_coming_soon.test.d.ts.map +1 -0
  149. package/dist/signatures/technologies/seedprod_coming_soon.test.js +43 -0
  150. package/dist/signatures/technologies/seedprod_coming_soon.test.js.map +1 -0
  151. package/dist/signatures/technologies/svg_support.js +1 -1
  152. package/dist/signatures/technologies/svg_support.js.map +1 -1
  153. package/dist/signatures/technologies/svg_support.test.d.ts +2 -0
  154. package/dist/signatures/technologies/svg_support.test.d.ts.map +1 -0
  155. package/dist/signatures/technologies/svg_support.test.js +43 -0
  156. package/dist/signatures/technologies/svg_support.test.js.map +1 -0
  157. package/dist/signatures/technologies/swiper.js +1 -1
  158. package/dist/signatures/technologies/swiper.js.map +1 -1
  159. package/dist/signatures/technologies/swiper.test.d.ts +2 -0
  160. package/dist/signatures/technologies/swiper.test.d.ts.map +1 -0
  161. package/dist/signatures/technologies/swiper.test.js +69 -0
  162. package/dist/signatures/technologies/swiper.test.js.map +1 -0
  163. package/dist/signatures/technologies/tailwind_css.js +2 -2
  164. package/dist/signatures/technologies/tailwind_css.js.map +1 -1
  165. package/dist/signatures/technologies/tailwind_css.test.js +11 -0
  166. package/dist/signatures/technologies/tailwind_css.test.js.map +1 -1
  167. package/dist/signatures/technologies/the_events_calendar.js +1 -1
  168. package/dist/signatures/technologies/the_events_calendar.js.map +1 -1
  169. package/dist/signatures/technologies/the_events_calendar.test.d.ts +2 -0
  170. package/dist/signatures/technologies/the_events_calendar.test.d.ts.map +1 -0
  171. package/dist/signatures/technologies/the_events_calendar.test.js +43 -0
  172. package/dist/signatures/technologies/the_events_calendar.test.js.map +1 -0
  173. package/dist/signatures/technologies/underscore_js.d.ts.map +1 -1
  174. package/dist/signatures/technologies/underscore_js.js +5 -3
  175. package/dist/signatures/technologies/underscore_js.js.map +1 -1
  176. package/dist/signatures/technologies/underscore_js.test.js +12 -2
  177. package/dist/signatures/technologies/underscore_js.test.js.map +1 -1
  178. package/dist/signatures/technologies/webfactory_maintenance.js +1 -1
  179. package/dist/signatures/technologies/webfactory_maintenance.js.map +1 -1
  180. package/dist/signatures/technologies/webfactory_maintenance.test.d.ts +2 -0
  181. package/dist/signatures/technologies/webfactory_maintenance.test.d.ts.map +1 -0
  182. package/dist/signatures/technologies/webfactory_maintenance.test.js +43 -0
  183. package/dist/signatures/technologies/webfactory_maintenance.test.js.map +1 -0
  184. package/dist/signatures/technologies/woocommerce_stripe_payment_gateway.js +1 -1
  185. package/dist/signatures/technologies/woocommerce_stripe_payment_gateway.js.map +1 -1
  186. package/dist/signatures/technologies/woocommerce_stripe_payment_gateway.test.d.ts +2 -0
  187. package/dist/signatures/technologies/woocommerce_stripe_payment_gateway.test.d.ts.map +1 -0
  188. package/dist/signatures/technologies/woocommerce_stripe_payment_gateway.test.js +43 -0
  189. package/dist/signatures/technologies/woocommerce_stripe_payment_gateway.test.js.map +1 -0
  190. package/dist/signatures/technologies/wp_statistics.js +1 -1
  191. package/dist/signatures/technologies/wp_statistics.js.map +1 -1
  192. package/dist/signatures/technologies/wp_statistics.test.d.ts +2 -0
  193. package/dist/signatures/technologies/wp_statistics.test.d.ts.map +1 -0
  194. package/dist/signatures/technologies/wp_statistics.test.js +43 -0
  195. package/dist/signatures/technologies/wp_statistics.test.js.map +1 -0
  196. package/package.json +8 -2
  197. package/dist/analyzer/util.d.ts +0 -3
  198. package/dist/analyzer/util.d.ts.map +0 -1
  199. package/dist/analyzer/util.js +0 -10
  200. package/dist/analyzer/util.js.map +0 -1
  201. package/dist/commands/hello.d.ts +0 -3
  202. package/dist/commands/hello.d.ts.map +0 -1
  203. package/dist/commands/hello.js +0 -12
  204. package/dist/commands/hello.js.map +0 -1
  205. package/dist/commands/version.d.ts +0 -3
  206. package/dist/commands/version.d.ts.map +0 -1
  207. package/dist/commands/version.js +0 -10
  208. package/dist/commands/version.js.map +0 -1
  209. package/dist/commands/version.test.d.ts +0 -2
  210. package/dist/commands/version.test.d.ts.map +0 -1
  211. package/dist/commands/version.test.js +0 -27
  212. package/dist/commands/version.test.js.map +0 -1
  213. package/dist/detector/index.d.ts +0 -5
  214. package/dist/detector/index.d.ts.map +0 -1
  215. package/dist/detector/index.js +0 -16
  216. package/dist/detector/index.js.map +0 -1
  217. package/dist/detector/matcher.d.ts +0 -5
  218. package/dist/detector/matcher.d.ts.map +0 -1
  219. package/dist/detector/matcher.js +0 -50
  220. package/dist/detector/matcher.js.map +0 -1
  221. package/dist/detector/types.d.ts +0 -10
  222. package/dist/detector/types.d.ts.map +0 -1
  223. package/dist/detector/types.js +0 -2
  224. package/dist/detector/types.js.map +0 -1
  225. package/dist/signatures/nginx.d.ts +0 -3
  226. package/dist/signatures/nginx.d.ts.map +0 -1
  227. package/dist/signatures/nginx.js +0 -12
  228. package/dist/signatures/nginx.js.map +0 -1
  229. package/dist/signatures/technologies/microsoft_asp.d.ts +0 -3
  230. package/dist/signatures/technologies/microsoft_asp.d.ts.map +0 -1
  231. package/dist/signatures/technologies/microsoft_asp.js +0 -20
  232. package/dist/signatures/technologies/microsoft_asp.js.map +0 -1
  233. package/dist/signatures/technologies/spiwer.d.ts +0 -3
  234. package/dist/signatures/technologies/spiwer.d.ts.map +0 -1
  235. package/dist/signatures/technologies/spiwer.js +0 -10
  236. package/dist/signatures/technologies/spiwer.js.map +0 -1
@@ -14,7 +14,9 @@ const makeRequest = (impl) => {
14
14
  const sig = {
15
15
  name: "Magento",
16
16
  rule: { confidence: "high" },
17
- activeRules: [{ path: "./magento_version", bodyRegex: "^Magento/(\\S+)" }],
17
+ activeRules: [
18
+ { path: "./magento_version", bodyRegexes: ["^Magento/(\\S+)"] },
19
+ ],
18
20
  };
19
21
  const otherSig = {
20
22
  name: "Other",
@@ -50,7 +52,7 @@ describe("applyActiveScans", () => {
50
52
  await applyActiveScans("https://example.com/", detections, [sig], request, 5000);
51
53
  expect(detections[0].evidences).toEqual([]);
52
54
  });
53
- it("leaves detection unchanged when bodyRegex does not match", async () => {
55
+ it("leaves detection unchanged when no bodyRegex matches", async () => {
54
56
  const detections = [{ name: "Magento", evidences: [] }];
55
57
  const { request } = makeRequest(() => ({ status: 200, body: "<html/>" }));
56
58
  await applyActiveScans("https://example.com/", detections, [sig], request, 5000);
@@ -63,7 +65,7 @@ describe("applyActiveScans", () => {
63
65
  activeRules: [
64
66
  {
65
67
  path: "./magento_version",
66
- bodyRegex: "^Magento/(\\S+)",
68
+ bodyRegexes: ["^Magento/(\\S+)"],
67
69
  confidence: "low",
68
70
  },
69
71
  ],
@@ -76,5 +78,113 @@ describe("applyActiveScans", () => {
76
78
  await applyActiveScans("https://example.com/", detections, [sigLow], request, 5000);
77
79
  expect(detections[0].evidences[0].confidence).toBe("low");
78
80
  });
81
+ it("tries each regex in bodyRegexes and uses the first match", async () => {
82
+ const sigMulti = {
83
+ name: "Multi",
84
+ rule: { confidence: "high" },
85
+ activeRules: [
86
+ {
87
+ path: "./probe",
88
+ bodyRegexes: ["^First/(\\S+)", "Second (\\S+)"],
89
+ },
90
+ ],
91
+ };
92
+ const detections = [{ name: "Multi", evidences: [] }];
93
+ const { request } = makeRequest(() => ({
94
+ status: 200,
95
+ body: "Second 2.0",
96
+ }));
97
+ await applyActiveScans("https://example.com/", detections, [sigMulti], request, 5000);
98
+ expect(detections[0].evidences).toHaveLength(1);
99
+ expect(detections[0].evidences[0].version).toBe("2.0");
100
+ });
101
+ it("adds no evidence when no regex in bodyRegexes matches", async () => {
102
+ const sigMulti = {
103
+ name: "Multi",
104
+ rule: { confidence: "high" },
105
+ activeRules: [
106
+ {
107
+ path: "./probe",
108
+ bodyRegexes: ["^First/(\\S+)", "Second (\\S+)"],
109
+ },
110
+ ],
111
+ };
112
+ const detections = [{ name: "Multi", evidences: [] }];
113
+ const { request } = makeRequest(() => ({ status: 200, body: "unrelated" }));
114
+ await applyActiveScans("https://example.com/", detections, [sigMulti], request, 5000);
115
+ expect(detections[0].evidences).toEqual([]);
116
+ });
117
+ it("stops probing remaining activeRules once one produces evidence", async () => {
118
+ const sigMany = {
119
+ name: "Many",
120
+ rule: { confidence: "high" },
121
+ activeRules: [
122
+ { path: "./first", bodyRegexes: ["^Many/(\\S+)"] },
123
+ { path: "./second", bodyRegexes: ["^Many/(\\S+)"] },
124
+ { path: "./third", bodyRegexes: ["^Many/(\\S+)"] },
125
+ ],
126
+ };
127
+ const detections = [{ name: "Many", evidences: [] }];
128
+ const { get, request } = makeRequest(() => ({
129
+ status: 200,
130
+ body: "Many/1.0",
131
+ }));
132
+ await applyActiveScans("https://example.com/", detections, [sigMany], request, 5000);
133
+ expect(get).toHaveBeenCalledTimes(1);
134
+ expect(detections[0].evidences).toHaveLength(1);
135
+ });
136
+ it("snippets the match instead of truncating the whole body when oversized", async () => {
137
+ const sigUnanchored = {
138
+ name: "Magento",
139
+ rule: { confidence: "high" },
140
+ activeRules: [
141
+ { path: "./magento_version", bodyRegexes: ["Magento/(\\d+\\.\\d+)"] },
142
+ ],
143
+ };
144
+ const detections = [{ name: "Magento", evidences: [] }];
145
+ const body = `${"a".repeat(300)}Magento/2.4${"b".repeat(300)}`;
146
+ const { request } = makeRequest(() => ({ status: 200, body }));
147
+ await applyActiveScans("https://example.com/", detections, [sigUnanchored], request, 5000);
148
+ const value = detections[0].evidences[0].value;
149
+ expect(value.startsWith("...")).toBe(true);
150
+ expect(value.endsWith("...")).toBe(true);
151
+ expect(value).toContain("Magento/2.4");
152
+ expect(value.length).toBeLessThan(body.length);
153
+ expect(detections[0].evidences[0].version).toBe("2.4");
154
+ });
155
+ it("keeps the match in evidence even when it sits past the legacy 100-char cutoff", async () => {
156
+ const sigUnanchored = {
157
+ name: "Magento",
158
+ rule: { confidence: "high" },
159
+ activeRules: [
160
+ { path: "./magento_version", bodyRegexes: ["Magento/(\\d+\\.\\d+)"] },
161
+ ],
162
+ };
163
+ const detections = [{ name: "Magento", evidences: [] }];
164
+ const body = `${"a".repeat(150)}Magento/2.4`;
165
+ const { request } = makeRequest(() => ({ status: 200, body }));
166
+ await applyActiveScans("https://example.com/", detections, [sigUnanchored], request, 5000);
167
+ expect(detections[0].evidences[0].value).toContain("Magento/2.4");
168
+ expect(detections[0].evidences[0].version).toBe("2.4");
169
+ });
170
+ it("falls through to later activeRules when earlier ones do not match", async () => {
171
+ const sigMany = {
172
+ name: "Many",
173
+ rule: { confidence: "high" },
174
+ activeRules: [
175
+ { path: "./first", bodyRegexes: ["^Many/(\\S+)"] },
176
+ { path: "./second", bodyRegexes: ["^Many/(\\S+)"] },
177
+ { path: "./third", bodyRegexes: ["^Many/(\\S+)"] },
178
+ ],
179
+ };
180
+ const detections = [{ name: "Many", evidences: [] }];
181
+ const { get, request } = makeRequest((url) => url.endsWith("/second")
182
+ ? { status: 200, body: "Many/2.0" }
183
+ : { status: 404, body: "" });
184
+ await applyActiveScans("https://example.com/", detections, [sigMany], request, 5000);
185
+ expect(get).toHaveBeenCalledTimes(2);
186
+ expect(detections[0].evidences).toHaveLength(1);
187
+ expect(detections[0].evidences[0].version).toBe("2.0");
188
+ });
79
189
  });
80
190
  //# sourceMappingURL=active_scan_runner.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"active_scan_runner.test.js","sourceRoot":"","sources":["../../src/commands/active_scan_runner.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAElD,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAI3D,MAAM,WAAW,GAAG,CAAC,IAGpB,EAAE,EAAE;IACH,MAAM,GAAG,GAAG,EAAE,CAAC,EAAE,CAAC,KAAK,EAAE,GAAW,EAAE,EAAE;QACtC,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;QACpB,OAAO;YACL,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,MAAM;YACtB,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC;YACnB,IAAI,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI;SACzB,CAAC;IACJ,CAAC,CAAC,CAAC;IACH,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,EAAE,GAAG,EAAkC,EAAE,CAAC;AACnE,CAAC,CAAC;AAEF,MAAM,GAAG,GAAc;IACrB,IAAI,EAAE,SAAS;IACf,IAAI,EAAE,EAAE,UAAU,EAAE,MAAM,EAAE;IAC5B,WAAW,EAAE,CAAC,EAAE,IAAI,EAAE,mBAAmB,EAAE,SAAS,EAAE,iBAAiB,EAAE,CAAC;CAC3E,CAAC;AAEF,MAAM,QAAQ,GAAc;IAC1B,IAAI,EAAE,OAAO;IACb,IAAI,EAAE,EAAE,UAAU,EAAE,QAAQ,EAAE;CAC/B,CAAC;AAEF,QAAQ,CAAC,kBAAkB,EAAE,GAAG,EAAE;IAChC,EAAE,CAAC,sDAAsD,EAAE,KAAK,IAAI,EAAE;QACpE,MAAM,UAAU,GAAgB,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC,CAAC;QACrE,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,WAAW,CAAC,CAAC,GAAG,EAAE,EAAE;YAC3C,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,0CAA0C,CAAC,CAAC;YAC7D,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,yBAAyB,EAAE,CAAC;QAC1D,CAAC,CAAC,CAAC;QAEH,MAAM,gBAAgB,CACpB,2BAA2B,EAC3B,UAAU,EACV,CAAC,GAAG,EAAE,QAAQ,CAAC,EACf,OAAO,EACP,IAAI,CACL,CAAC;QAEF,MAAM,CAAC,GAAG,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;QACrC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAE,CAAC,SAAS,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QACjD,MAAM,CAAC,UAAU,CAAC,CAAC,CAAE,CAAC,SAAU,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC;YACjD,IAAI,EAAE,MAAM;YACZ,OAAO,EAAE,KAAK;YACd,UAAU,EAAE,MAAM;YAClB,SAAS,EAAE,0CAA0C;SACtD,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,kDAAkD,EAAE,KAAK,IAAI,EAAE;QAChE,MAAM,UAAU,GAAgB,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC,CAAC;QACnE,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC;QAEzE,MAAM,gBAAgB,CACpB,sBAAsB,EACtB,UAAU,EACV,CAAC,GAAG,EAAE,QAAQ,CAAC,EACf,OAAO,EACP,IAAI,CACL,CAAC;QAEF,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;QACnC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAE,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IAC/C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,uCAAuC,EAAE,KAAK,IAAI,EAAE;QACrD,MAAM,UAAU,GAAgB,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC,CAAC;QACrE,MAAM,EAAE,OAAO,EAAE,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;QAEnE,MAAM,gBAAgB,CACpB,sBAAsB,EACtB,UAAU,EACV,CAAC,GAAG,CAAC,EACL,OAAO,EACP,IAAI,CACL,CAAC;QAEF,MAAM,CAAC,UAAU,CAAC,CAAC,CAAE,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IAC/C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,0DAA0D,EAAE,KAAK,IAAI,EAAE;QACxE,MAAM,UAAU,GAAgB,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC,CAAC;QACrE,MAAM,EAAE,OAAO,EAAE,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC;QAE1E,MAAM,gBAAgB,CACpB,sBAAsB,EACtB,UAAU,EACV,CAAC,GAAG,CAAC,EACL,OAAO,EACP,IAAI,CACL,CAAC;QAEF,MAAM,CAAC,UAAU,CAAC,CAAC,CAAE,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IAC/C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,kDAAkD,EAAE,KAAK,IAAI,EAAE;QAChE,MAAM,MAAM,GAAc;YACxB,IAAI,EAAE,SAAS;YACf,IAAI,EAAE,EAAE,UAAU,EAAE,MAAM,EAAE;YAC5B,WAAW,EAAE;gBACX;oBACE,IAAI,EAAE,mBAAmB;oBACzB,SAAS,EAAE,iBAAiB;oBAC5B,UAAU,EAAE,KAAK;iBAClB;aACF;SACF,CAAC;QACF,MAAM,UAAU,GAAgB,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC,CAAC;QACrE,MAAM,EAAE,OAAO,EAAE,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC,CAAC;YACrC,MAAM,EAAE,GAAG;YACX,IAAI,EAAE,eAAe;SACtB,CAAC,CAAC,CAAC;QAEJ,MAAM,gBAAgB,CACpB,sBAAsB,EACtB,UAAU,EACV,CAAC,MAAM,CAAC,EACR,OAAO,EACP,IAAI,CACL,CAAC;QAEF,MAAM,CAAC,UAAU,CAAC,CAAC,CAAE,CAAC,SAAU,CAAC,CAAC,CAAE,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC/D,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"active_scan_runner.test.js","sourceRoot":"","sources":["../../src/commands/active_scan_runner.test.ts"],"names":[],"mappings":"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"}
package/dist/main.js CHANGED
File without changes
@@ -8,11 +8,11 @@ export type Rule = {
8
8
  urls?: Regex[];
9
9
  cookies?: Record<string, Regex>;
10
10
  javascriptVariables?: Record<string, Regex>;
11
- requiredJavascriptVariables?: string[];
11
+ requireAnyOfJavascriptVariables?: string[];
12
12
  };
13
13
  export type ActiveRule = {
14
14
  path: string;
15
- bodyRegex: Regex;
15
+ bodyRegexes: Regex[];
16
16
  confidence?: Confidence;
17
17
  };
18
18
  export type Signature = {
@@ -1 +1 @@
1
- {"version":3,"file":"_types.d.ts","sourceRoot":"","sources":["../../src/signatures/_types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,UAAU,GAAG,MAAM,GAAG,QAAQ,GAAG,KAAK,CAAC;AACnD,MAAM,MAAM,OAAO,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAE1C,MAAM,MAAM,KAAK,GAAG,MAAM,CAAC;AAE3B,MAAM,MAAM,IAAI,GAAG;IACjB,UAAU,EAAE,UAAU,CAAC;IACvB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IAChC,MAAM,CAAC,EAAE,KAAK,EAAE,CAAC;IACjB,IAAI,CAAC,EAAE,KAAK,EAAE,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IAChC,mBAAmB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IAG5C,2BAA2B,CAAC,EAAE,MAAM,EAAE,CAAC;CACxC,CAAC;AAEF,MAAM,MAAM,UAAU,GAAG;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,KAAK,CAAC;IACjB,UAAU,CAAC,EAAE,UAAU,CAAC;CACzB,CAAC;AAEF,MAAM,MAAM,SAAS,GAAG;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,IAAI,CAAC,EAAE,IAAI,CAAC;IACZ,WAAW,CAAC,EAAE,UAAU,EAAE,CAAC;IAC3B,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC;CAC7B,CAAC"}
1
+ {"version":3,"file":"_types.d.ts","sourceRoot":"","sources":["../../src/signatures/_types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,UAAU,GAAG,MAAM,GAAG,QAAQ,GAAG,KAAK,CAAC;AACnD,MAAM,MAAM,OAAO,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAE1C,MAAM,MAAM,KAAK,GAAG,MAAM,CAAC;AAE3B,MAAM,MAAM,IAAI,GAAG;IACjB,UAAU,EAAE,UAAU,CAAC;IACvB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IAChC,MAAM,CAAC,EAAE,KAAK,EAAE,CAAC;IACjB,IAAI,CAAC,EAAE,KAAK,EAAE,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IAChC,mBAAmB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IAG5C,+BAA+B,CAAC,EAAE,MAAM,EAAE,CAAC;CAC5C,CAAC;AAEF,MAAM,MAAM,UAAU,GAAG;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,KAAK,EAAE,CAAC;IACrB,UAAU,CAAC,EAAE,UAAU,CAAC;CACzB,CAAC;AAEF,MAAM,MAAM,SAAS,GAAG;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,IAAI,CAAC,EAAE,IAAI,CAAC;IAEZ,WAAW,CAAC,EAAE,UAAU,EAAE,CAAC;IAC3B,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC;CAC7B,CAAC"}
@@ -82,11 +82,13 @@ describe("signatures validation", () => {
82
82
  }
83
83
  }
84
84
  });
85
- it("all activeRules bodyRegex patterns should be valid regex", () => {
85
+ it("all activeRules bodyRegexes patterns should be valid regex", () => {
86
86
  for (const sig of signatures) {
87
87
  if (sig.activeRules) {
88
88
  for (const [i, rule] of sig.activeRules.entries()) {
89
- testRegex(rule.bodyRegex, sig.name, `activeRules[${i}].bodyRegex`);
89
+ for (const [j, pattern] of rule.bodyRegexes.entries()) {
90
+ testRegex(pattern, sig.name, `activeRules[${i}].bodyRegexes[${j}]`);
91
+ }
90
92
  }
91
93
  }
92
94
  }
@@ -1 +1 @@
1
- {"version":3,"file":"signatures.test.js","sourceRoot":"","sources":["../../src/signatures/signatures.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"signatures.test.js","sourceRoot":"","sources":["../../src/signatures/signatures.test.ts"],"names":[],"mappings":"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"}
@@ -5,7 +5,7 @@ export const akismetSignature = {
5
5
  rule: {
6
6
  confidence: "high",
7
7
  bodies: [
8
- "href[^>]+\\/wp\\-content\\/plugins\\/akismet\\/",
8
+ "<link\\b[^>]*\\s+href=[\"'][^\"']*\\/wp\\-content\\/plugins\\/akismet\\/",
9
9
  ],
10
10
  urls: [
11
11
  "/wp-content/plugins/akismet/.+\\.js(?:\\?ver=(\\d+(?:\\.\\d+)+))?",
@@ -1 +1 @@
1
- {"version":3,"file":"akismet.js","sourceRoot":"","sources":["../../../src/signatures/technologies/akismet.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AAEpD,MAAM,CAAC,MAAM,gBAAgB,GAAc;IACzC,IAAI,EAAE,SAAS;IACf,WAAW,EAAE,8FAA8F;IAC3G,IAAI,EAAE;QACJ,UAAU,EAAE,MAAM;QAClB,MAAM,EAAE;YACN,iDAAiD;SAClD;QACD,IAAI,EAAE;YACJ,mEAAmE;SACpE;QACD,mBAAmB,EAAE;YACnB,qBAAqB,EAAE,EAAE;SAC1B;KACF;IACD,gBAAgB,EAAE,CAAC,kBAAkB,CAAC,IAAI,CAAC;CAC5C,CAAC"}
1
+ {"version":3,"file":"akismet.js","sourceRoot":"","sources":["../../../src/signatures/technologies/akismet.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AAEpD,MAAM,CAAC,MAAM,gBAAgB,GAAc;IACzC,IAAI,EAAE,SAAS;IACf,WAAW,EAAE,8FAA8F;IAC3G,IAAI,EAAE;QACJ,UAAU,EAAE,MAAM;QAClB,MAAM,EAAE;YACN,0EAA0E;SAC3E;QACD,IAAI,EAAE;YACJ,mEAAmE;SACpE;QACD,mBAAmB,EAAE;YACnB,qBAAqB,EAAE,EAAE;SAC1B;KACF;IACD,gBAAgB,EAAE,CAAC,kBAAkB,CAAC,IAAI,CAAC;CAC5C,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=akismet.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"akismet.test.d.ts","sourceRoot":"","sources":["../../../src/signatures/technologies/akismet.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,43 @@
1
+ import { describe, it, expect } from "vitest";
2
+ import { applySignature } from "../../analyzer/apply.js";
3
+ import { akismetSignature } from "./akismet.js";
4
+ function createMockContext(overrides = {}) {
5
+ return {
6
+ browser: {},
7
+ page: {},
8
+ urls: [],
9
+ responses: [],
10
+ cookies: [],
11
+ javascriptVariables: {},
12
+ timeoutMs: 30000,
13
+ timeoutOccurred: false,
14
+ ...overrides,
15
+ };
16
+ }
17
+ function createMockResponse(overrides = {}) {
18
+ return {
19
+ url: "https://example.com",
20
+ host: "example.com",
21
+ isFirstParty: true,
22
+ status: 200,
23
+ headers: { "content-type": "text/html" },
24
+ body: "",
25
+ ...overrides,
26
+ };
27
+ }
28
+ describe("akismetSignature", () => {
29
+ describe("body matching", () => {
30
+ it("detects Akismet from a <link> stylesheet under /wp-content/plugins/akismet/", () => {
31
+ const context = createMockContext({
32
+ responses: [
33
+ createMockResponse({
34
+ body: '<link rel="stylesheet" href="https://example.com/wp-content/plugins/akismet/style.css">',
35
+ }),
36
+ ],
37
+ });
38
+ const result = applySignature(context, akismetSignature);
39
+ expect(result).toBeDefined();
40
+ });
41
+ });
42
+ });
43
+ //# sourceMappingURL=akismet.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"akismet.test.js","sourceRoot":"","sources":["../../../src/signatures/technologies/akismet.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAEzD,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAEhD,SAAS,iBAAiB,CACxB,YAAiD,EAAE;IAEnD,OAAO;QACL,OAAO,EAAE,EAAwB;QACjC,IAAI,EAAE,EAAqB;QAC3B,IAAI,EAAE,EAAE;QACR,SAAS,EAAE,EAAE;QACb,OAAO,EAAE,EAAE;QACX,mBAAmB,EAAE,EAAE;QACvB,SAAS,EAAE,KAAK;QAChB,eAAe,EAAE,KAAK;QACtB,GAAG,SAAS;KACb,CAAC;AACJ,CAAC;AAED,SAAS,kBAAkB,CAAC,YAA+B,EAAE;IAC3D,OAAO;QACL,GAAG,EAAE,qBAAqB;QAC1B,IAAI,EAAE,aAAa;QACnB,YAAY,EAAE,IAAI;QAClB,MAAM,EAAE,GAAG;QACX,OAAO,EAAE,EAAE,cAAc,EAAE,WAAW,EAAE;QACxC,IAAI,EAAE,EAAE;QACR,GAAG,SAAS;KACb,CAAC;AACJ,CAAC;AAED,QAAQ,CAAC,kBAAkB,EAAE,GAAG,EAAE;IAChC,QAAQ,CAAC,eAAe,EAAE,GAAG,EAAE;QAC7B,EAAE,CAAC,6EAA6E,EAAE,GAAG,EAAE;YACrF,MAAM,OAAO,GAAG,iBAAiB,CAAC;gBAChC,SAAS,EAAE;oBACT,kBAAkB,CAAC;wBACjB,IAAI,EAAE,yFAAyF;qBAChG,CAAC;iBACH;aACF,CAAC,CAAC;YAEH,MAAM,MAAM,GAAG,cAAc,CAAC,OAAO,EAAE,gBAAgB,CAAC,CAAC;YACzD,MAAM,CAAC,MAAM,CAAC,CAAC,WAAW,EAAE,CAAC;QAC/B,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -4,10 +4,9 @@ export const antDesignSignature = {
4
4
  rule: {
5
5
  confidence: "high",
6
6
  bodies: [
7
- "<[^>]*class=\"ant-(?:btn|col|row|layout|breadcrumb|menu|pagination|steps|select|cascader|checkbox|calendar|form|input-number|input|mention|rate|radio|slider|switch|tree-select|time-picker|transfer|upload|avatar|badge|card|carousel|collapse|list|popover|tooltip|table|tabs|tag|timeline|tree|alert|modal|message|notification|progress|popconfirm|spin|anchor|back-top|divider|drawer)",
8
- "<i class=\"anticon anticon-",
9
- "href[^>]+antd(?:@|/)?([\\d\\.]+)?(?:.+|)?\\.css",
10
- "href[^>]+antd",
7
+ '<[^>]*class="ant-(?:btn|col|row|layout|breadcrumb|menu|pagination|steps|select|cascader|checkbox|calendar|form|input-number|input|mention|rate|radio|slider|switch|tree-select|time-picker|transfer|upload|avatar|badge|card|carousel|collapse|list|popover|tooltip|table|tabs|tag|timeline|tree|alert|modal|message|notification|progress|popconfirm|spin|anchor|back-top|divider|drawer)',
8
+ '<i class="anticon anticon-',
9
+ "<link[^>]+href=[\"'][^\"']*?\\bantd\\b(?:[@/]([\\d\\.]+))?[^\"']*\\.css",
11
10
  ],
12
11
  javascriptVariables: {
13
12
  "antd.version": "^([\\d\\.]+)$",
@@ -1 +1 @@
1
- {"version":3,"file":"ant_design.js","sourceRoot":"","sources":["../../../src/signatures/technologies/ant_design.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,kBAAkB,GAAc;IAC3C,IAAI,EAAE,YAAY;IAClB,WAAW,EAAE,yHAAyH;IACtI,IAAI,EAAE;QACJ,UAAU,EAAE,MAAM;QAClB,MAAM,EAAE;YACN,6XAA6X;YAC7X,6BAA6B;YAC7B,iDAAiD;YACjD,eAAe;SAChB;QACD,mBAAmB,EAAE;YACnB,cAAc,EAAE,eAAe;SAChC;KACF;CACF,CAAC"}
1
+ {"version":3,"file":"ant_design.js","sourceRoot":"","sources":["../../../src/signatures/technologies/ant_design.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,kBAAkB,GAAc;IAC3C,IAAI,EAAE,YAAY;IAClB,WAAW,EACT,yHAAyH;IAC3H,IAAI,EAAE;QACJ,UAAU,EAAE,MAAM;QAClB,MAAM,EAAE;YACN,4XAA4X;YAC5X,4BAA4B;YAC5B,yEAAyE;SAC1E;QACD,mBAAmB,EAAE;YACnB,cAAc,EAAE,eAAe;SAChC;KACF;CACF,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=ant_design.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ant_design.test.d.ts","sourceRoot":"","sources":["../../../src/signatures/technologies/ant_design.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,156 @@
1
+ import { describe, it, expect } from "vitest";
2
+ import { applySignature } from "../../analyzer/apply.js";
3
+ import { antDesignSignature } from "./ant_design.js";
4
+ function createMockContext(overrides = {}) {
5
+ return {
6
+ browser: {},
7
+ page: {},
8
+ urls: [],
9
+ responses: [],
10
+ cookies: [],
11
+ javascriptVariables: {},
12
+ timeoutMs: 30000,
13
+ timeoutOccurred: false,
14
+ ...overrides,
15
+ };
16
+ }
17
+ function createMockResponse(overrides = {}) {
18
+ return {
19
+ url: "https://example.com",
20
+ host: "example.com",
21
+ isFirstParty: true,
22
+ status: 200,
23
+ headers: { "content-type": "text/html" },
24
+ body: "",
25
+ ...overrides,
26
+ };
27
+ }
28
+ describe("antDesignSignature", () => {
29
+ describe("body matching", () => {
30
+ it("detects Ant Design from ant-* class name", () => {
31
+ const context = createMockContext({
32
+ responses: [
33
+ createMockResponse({
34
+ body: '<button class="ant-btn ant-btn-primary">Click</button>',
35
+ }),
36
+ ],
37
+ });
38
+ const result = applySignature(context, antDesignSignature);
39
+ expect(result).toBeDefined();
40
+ });
41
+ it("detects Ant Design from anticon icon markup", () => {
42
+ const context = createMockContext({
43
+ responses: [
44
+ createMockResponse({
45
+ body: '<i class="anticon anticon-search"></i>',
46
+ }),
47
+ ],
48
+ });
49
+ const result = applySignature(context, antDesignSignature);
50
+ expect(result).toBeDefined();
51
+ });
52
+ it("detects Ant Design from CDN stylesheet with @-delimited version", () => {
53
+ const context = createMockContext({
54
+ responses: [
55
+ createMockResponse({
56
+ body: '<link rel="stylesheet" href="https://cdn.example.com/npm/antd@5.12.0/dist/reset.min.css">',
57
+ }),
58
+ ],
59
+ });
60
+ const result = applySignature(context, antDesignSignature);
61
+ expect(result).toBeDefined();
62
+ expect(result?.evidences?.some((e) => e.version === "5.12.0")).toBe(true);
63
+ });
64
+ it("detects Ant Design from CDN stylesheet with /-delimited version (cdnjs-style)", () => {
65
+ const context = createMockContext({
66
+ responses: [
67
+ createMockResponse({
68
+ body: '<link rel="stylesheet" href="https://cdn.example.com/ajax/libs/antd/5.12.0/antd.min.css">',
69
+ }),
70
+ ],
71
+ });
72
+ const result = applySignature(context, antDesignSignature);
73
+ expect(result).toBeDefined();
74
+ expect(result?.evidences?.some((e) => e.version === "5.12.0")).toBe(true);
75
+ });
76
+ it("detects Ant Design from CDN stylesheet path without version", () => {
77
+ const context = createMockContext({
78
+ responses: [
79
+ createMockResponse({
80
+ body: '<link rel="stylesheet" href="/vendor/antd/dist/antd.min.css">',
81
+ }),
82
+ ],
83
+ });
84
+ const result = applySignature(context, antDesignSignature);
85
+ expect(result).toBeDefined();
86
+ });
87
+ it("detects Ant Design from a stylesheet named antd.css without any path prefix", () => {
88
+ const context = createMockContext({
89
+ responses: [
90
+ createMockResponse({
91
+ body: '<link rel="stylesheet" href="/assets/antd.css">',
92
+ }),
93
+ ],
94
+ });
95
+ const result = applySignature(context, antDesignSignature);
96
+ expect(result).toBeDefined();
97
+ });
98
+ it("detects Ant Design from a minified antd.min.css filename", () => {
99
+ const context = createMockContext({
100
+ responses: [
101
+ createMockResponse({
102
+ body: '<link rel="stylesheet" href="/cdn/antd.min.css">',
103
+ }),
104
+ ],
105
+ });
106
+ const result = applySignature(context, antDesignSignature);
107
+ expect(result).toBeDefined();
108
+ });
109
+ it("does not detect Ant Design when 'antd' is embedded inside a longer word (e.g. antdate.css)", () => {
110
+ const context = createMockContext({
111
+ responses: [
112
+ createMockResponse({
113
+ body: '<link rel="stylesheet" href="/assets/antdate.css">',
114
+ }),
115
+ ],
116
+ });
117
+ const result = applySignature(context, antDesignSignature);
118
+ expect(result).toBeUndefined();
119
+ });
120
+ it("does not detect Ant Design from minified JavaScript that incidentally contains 'antD' inside an unrelated identifier", () => {
121
+ const context = createMockContext({
122
+ responses: [
123
+ createMockResponse({
124
+ body: "var a=someObject.href,b=a.relevantData;function c(x){return x.importantDetails}",
125
+ }),
126
+ ],
127
+ });
128
+ const result = applySignature(context, antDesignSignature);
129
+ expect(result).toBeUndefined();
130
+ });
131
+ it("does not detect Ant Design from an unrelated stylesheet whose filename contains 'antd' as a sub-word", () => {
132
+ const context = createMockContext({
133
+ responses: [
134
+ createMockResponse({
135
+ body: '<link rel="stylesheet" href="/assets/merchantDashboard.css">',
136
+ }),
137
+ ],
138
+ });
139
+ const result = applySignature(context, antDesignSignature);
140
+ expect(result).toBeUndefined();
141
+ });
142
+ });
143
+ describe("javascript variable matching", () => {
144
+ it("detects Ant Design from antd.version variable", () => {
145
+ const context = createMockContext({
146
+ javascriptVariables: {
147
+ "antd.version": "5.12.0",
148
+ },
149
+ });
150
+ const result = applySignature(context, antDesignSignature);
151
+ expect(result).toBeDefined();
152
+ expect(result?.evidences?.some((e) => e.version === "5.12.0")).toBe(true);
153
+ });
154
+ });
155
+ });
156
+ //# sourceMappingURL=ant_design.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ant_design.test.js","sourceRoot":"","sources":["../../../src/signatures/technologies/ant_design.test.ts"],"names":[],"mappings":"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"}
@@ -6,8 +6,8 @@ export const bootstrapSignature = {
6
6
  confidence: "high",
7
7
  bodies: [
8
8
  "Bootstrap v(\\d+\\.\\d+\\.\\d+(?:-[a-zA-Z0-9.-]+)?)",
9
- "bootstrap[^\"'\\s<>]*?(\\d+\\.\\d+\\.\\d+(?:-[a-zA-Z0-9.-]+)?)[^\"'\\s<>]*?\\.min\\.css",
10
- "bootstrap[^\"'\\s<>]*?(\\d+\\.\\d+\\.\\d+(?:-[a-zA-Z0-9.-]+)?)[^\"'\\s<>]*?\\.min\\.js",
9
+ "bootstrap[-/@.]?(\\d+\\.\\d+\\.\\d+(?:-[a-zA-Z0-9.-]+)?)[^\"'\\s<>]*?\\.min\\.css",
10
+ "bootstrap[-/@.]?(\\d+\\.\\d+\\.\\d+(?:-[a-zA-Z0-9.-]+)?)[^\"'\\s<>]*?\\.min\\.js",
11
11
  ],
12
12
  javascriptVariables: {
13
13
  "bootstrap.Alert.VERSION": "(\\d+\\.\\d+\\.\\d+(?:-[a-zA-Z0-9.-]+)?)",
@@ -1 +1 @@
1
- {"version":3,"file":"bootstrap.js","sourceRoot":"","sources":["../../../src/signatures/technologies/bootstrap.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,kBAAkB,GAAc;IAC3C,IAAI,EAAE,WAAW;IACjB,WAAW,EACT,qPAAqP;IACvP,GAAG,EAAE,+BAA+B;IACpC,IAAI,EAAE;QACJ,UAAU,EAAE,MAAM;QAClB,MAAM,EAAE;YACN,qDAAqD;YACrD,yFAAyF;YACzF,wFAAwF;SACzF;QACD,mBAAmB,EAAE;YACnB,yBAAyB,EAAE,0CAA0C;YACrE,uCAAuC,EACrC,0CAA0C;SAC7C;KACF;CACF,CAAC"}
1
+ {"version":3,"file":"bootstrap.js","sourceRoot":"","sources":["../../../src/signatures/technologies/bootstrap.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,kBAAkB,GAAc;IAC3C,IAAI,EAAE,WAAW;IACjB,WAAW,EACT,qPAAqP;IACvP,GAAG,EAAE,+BAA+B;IACpC,IAAI,EAAE;QACJ,UAAU,EAAE,MAAM;QAClB,MAAM,EAAE;YACN,qDAAqD;YACrD,mFAAmF;YACnF,kFAAkF;SACnF;QACD,mBAAmB,EAAE;YACnB,yBAAyB,EAAE,0CAA0C;YACrE,uCAAuC,EACrC,0CAA0C;SAC7C;KACF;CACF,CAAC"}
@@ -124,6 +124,65 @@ describe("bootstrapSignature", () => {
124
124
  expect(result).toBeDefined();
125
125
  expect(result?.evidences?.some((e) => e.version === "4.0.0-rc-1")).toBe(true);
126
126
  });
127
+ it("does not pick up an unrelated library version when the host merely contains 'bootstrap'", () => {
128
+ const context = createMockContext({
129
+ responses: [
130
+ createMockResponse({
131
+ body: '<link rel="stylesheet" href="https://bootstrapcdn.example.com/icon-lib/4.7.0/css/icon-lib.min.css">',
132
+ }),
133
+ ],
134
+ });
135
+ const result = applySignature(context, bootstrapSignature);
136
+ expect(result).toBeUndefined();
137
+ });
138
+ it("captures version from a '/bootstrap/x.y.z/' CDN path even when the host contains 'bootstrap'", () => {
139
+ const context = createMockContext({
140
+ responses: [
141
+ createMockResponse({
142
+ body: '<link rel="stylesheet" href="https://bootstrapcdn.example.com/bootstrap/4.5.2/css/bootstrap.min.css">',
143
+ }),
144
+ ],
145
+ });
146
+ const result = applySignature(context, bootstrapSignature);
147
+ expect(result).toBeDefined();
148
+ expect(result?.evidences?.some((e) => e.version === "4.5.2")).toBe(true);
149
+ });
150
+ it("captures version from a 'bootstrap@x.y.z' package path", () => {
151
+ const context = createMockContext({
152
+ responses: [
153
+ createMockResponse({
154
+ body: '<link rel="stylesheet" href="https://cdn.example.com/npm/bootstrap@5.3.2/dist/css/bootstrap.min.css">',
155
+ }),
156
+ ],
157
+ });
158
+ const result = applySignature(context, bootstrapSignature);
159
+ expect(result).toBeDefined();
160
+ expect(result?.evidences?.some((e) => e.version === "5.3.2")).toBe(true);
161
+ });
162
+ it("captures version from a 'twitter-bootstrap/x.y.z' path", () => {
163
+ const context = createMockContext({
164
+ responses: [
165
+ createMockResponse({
166
+ body: '<link rel="stylesheet" href="https://cdn.example.com/ajax/libs/twitter-bootstrap/3.4.1/css/bootstrap.min.css">',
167
+ }),
168
+ ],
169
+ });
170
+ const result = applySignature(context, bootstrapSignature);
171
+ expect(result).toBeDefined();
172
+ expect(result?.evidences?.some((e) => e.version === "3.4.1")).toBe(true);
173
+ });
174
+ it("captures version from a 'bootstrap.bundle.min.js' reference loaded via 'bootstrap@x.y.z'", () => {
175
+ const context = createMockContext({
176
+ responses: [
177
+ createMockResponse({
178
+ body: '<script src="https://cdn.example.com/npm/bootstrap@5.3.0/dist/js/bootstrap.bundle.min.js"></script>',
179
+ }),
180
+ ],
181
+ });
182
+ const result = applySignature(context, bootstrapSignature);
183
+ expect(result).toBeDefined();
184
+ expect(result?.evidences?.some((e) => e.version === "5.3.0")).toBe(true);
185
+ });
127
186
  });
128
187
  describe("javascript variable matching", () => {
129
188
  it("captures pre-release version from bootstrap.Alert.VERSION", () => {