@slicedearth/whoisleuth-cli 1.32.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 (189) hide show
  1. package/LICENSE +661 -0
  2. package/LICENSES/Retire.js-Apache-2.0.txt +199 -0
  3. package/NOTICE +76 -0
  4. package/README.md +84 -0
  5. package/TRADEMARKS.md +41 -0
  6. package/bin/whoisleuth.mjs +35 -0
  7. package/cli/archive-inspect.mjs +198 -0
  8. package/cli/arguments.mjs +1022 -0
  9. package/cli/artifact-verify.mjs +210 -0
  10. package/cli/bulk-checkpoint.mjs +218 -0
  11. package/cli/bulk-command-runner.mjs +109 -0
  12. package/cli/bulk-output.mjs +112 -0
  13. package/cli/bulk.mjs +133 -0
  14. package/cli/compare.mjs +238 -0
  15. package/cli/completion.mjs +175 -0
  16. package/cli/csv.mjs +1 -0
  17. package/cli/discover.mjs +50 -0
  18. package/cli/discovery-command-runner.mjs +36 -0
  19. package/cli/discovery-observation-snapshot.mjs +315 -0
  20. package/cli/discovery-scan-command-runner.mjs +141 -0
  21. package/cli/discovery-scan.mjs +325 -0
  22. package/cli/discovery-snapshot.mjs +133 -0
  23. package/cli/discovery-workflow.mjs +73 -0
  24. package/cli/doctor.mjs +137 -0
  25. package/cli/errors.mjs +21 -0
  26. package/cli/evidence-command-arguments.mjs +145 -0
  27. package/cli/evidence-command-runner.mjs +106 -0
  28. package/cli/evidence-signing.mjs +215 -0
  29. package/cli/exit-codes.mjs +9 -0
  30. package/cli/export-evidence.mjs +28 -0
  31. package/cli/formatters/evidence-report.mjs +3 -0
  32. package/cli/formatters/html.mjs +69 -0
  33. package/cli/formatters/json.mjs +135 -0
  34. package/cli/formatters/markdown.mjs +3 -0
  35. package/cli/formatters/terminal.mjs +658 -0
  36. package/cli/http.mjs +27 -0
  37. package/cli/lookup-command-runner.mjs +87 -0
  38. package/cli/lookup-diff.mjs +171 -0
  39. package/cli/mail-review.mjs +204 -0
  40. package/cli/manual.mjs +34 -0
  41. package/cli/network-command-runner.mjs +88 -0
  42. package/cli/output-file.mjs +97 -0
  43. package/cli/page-compare.mjs +123 -0
  44. package/cli/posture.mjs +20 -0
  45. package/cli/progress-events.mjs +53 -0
  46. package/cli/progress.mjs +56 -0
  47. package/cli/registry-access.mjs +3 -0
  48. package/cli/registry-support.mjs +120 -0
  49. package/cli/risk-calibration.mjs +294 -0
  50. package/cli/runner-types.mjs +1 -0
  51. package/cli/runner.mjs +726 -0
  52. package/cli/saved-lookup.mjs +87 -0
  53. package/cli/source-reliability.mjs +727 -0
  54. package/cli/strict-exit.mjs +55 -0
  55. package/cli/terminal-presentation.mjs +147 -0
  56. package/docs/cli.md +827 -0
  57. package/frontend/src/lib/analysis/acquisition-decision-packet.js +93 -0
  58. package/frontend/src/lib/analysis/acquisition-due-diligence.js +391 -0
  59. package/frontend/src/lib/analysis/artifact-integrity.js +21 -0
  60. package/frontend/src/lib/analysis/brand-profile-model.js +421 -0
  61. package/frontend/src/lib/analysis/bulk-domain-comparison.js +246 -0
  62. package/frontend/src/lib/analysis/bulk-mail-exposure.js +192 -0
  63. package/frontend/src/lib/analysis/bulk-retry-plan.js +86 -0
  64. package/frontend/src/lib/analysis/bulk-review-export.js +62 -0
  65. package/frontend/src/lib/analysis/bulk-review-model.js +266 -0
  66. package/frontend/src/lib/analysis/bulk-session-model.js +515 -0
  67. package/frontend/src/lib/analysis/bulk-sort.js +49 -0
  68. package/frontend/src/lib/analysis/campaign-model.js +265 -0
  69. package/frontend/src/lib/analysis/case-evidence-model.js +642 -0
  70. package/frontend/src/lib/analysis/case-migration-model.js +248 -0
  71. package/frontend/src/lib/analysis/case-model.js +5 -0
  72. package/frontend/src/lib/analysis/case-record-contracts.js +44 -0
  73. package/frontend/src/lib/analysis/case-record-core.js +232 -0
  74. package/frontend/src/lib/analysis/case-record-model.js +7 -0
  75. package/frontend/src/lib/analysis/case-record-operations.js +224 -0
  76. package/frontend/src/lib/analysis/case-response-model.js +640 -0
  77. package/frontend/src/lib/analysis/case-response-packet.js +573 -0
  78. package/frontend/src/lib/analysis/case-storage-model.js +93 -0
  79. package/frontend/src/lib/analysis/detection-rule-model.js +306 -0
  80. package/frontend/src/lib/analysis/dns-record-normalization.js +11 -0
  81. package/frontend/src/lib/analysis/http-summary.js +165 -0
  82. package/frontend/src/lib/analysis/investigation-guide.js +500 -0
  83. package/frontend/src/lib/analysis/investigation-template-model.js +144 -0
  84. package/frontend/src/lib/analysis/page-baseline.js +272 -0
  85. package/frontend/src/lib/analysis/page-similarity.js +179 -0
  86. package/frontend/src/lib/analysis/relationship-evidence.js +265 -0
  87. package/frontend/src/lib/analysis/relationship-observation-model.js +423 -0
  88. package/frontend/src/lib/analysis/scoring.js +135 -0
  89. package/frontend/src/lib/analysis/shortlist-model.js +209 -0
  90. package/frontend/src/lib/analysis/utils.js +265 -0
  91. package/frontend/src/lib/analysis/watchlist-history.js +643 -0
  92. package/frontend/src/lib/analysis/watchlist-store.js +127 -0
  93. package/frontend/src/lib/analysis/website-snapshot-model.js +302 -0
  94. package/frontend/src/lib/analysis/workspace-archive-crypto.js +282 -0
  95. package/frontend/src/lib/analysis/workspace-archive.js +472 -0
  96. package/lib/abort.mjs +26 -0
  97. package/lib/abusech-auth.mjs +19 -0
  98. package/lib/availability.mjs +716 -0
  99. package/lib/bounded-contract-normalizers.mjs +61 -0
  100. package/lib/browser-library-profile.mjs +310 -0
  101. package/lib/bulk-comparison-evidence.mjs +83 -0
  102. package/lib/classify.mjs +93 -0
  103. package/lib/client-behavior-profile.mjs +83 -0
  104. package/lib/credential-surface-profile.mjs +66 -0
  105. package/lib/csv.mjs +23 -0
  106. package/lib/ct-query.mjs +27 -0
  107. package/lib/ct-search.mjs +393 -0
  108. package/lib/distributed-operation-budget.mjs +461 -0
  109. package/lib/dns-delegation-health.mjs +344 -0
  110. package/lib/dns-intelligence.mjs +739 -0
  111. package/lib/dns-mx.mjs +24 -0
  112. package/lib/dns-resolver-selection.mjs +33 -0
  113. package/lib/domain-posture-analysis.mjs +254 -0
  114. package/lib/domain-posture-parsers.mjs +358 -0
  115. package/lib/domain-posture.mjs +745 -0
  116. package/lib/error-detail.mjs +10 -0
  117. package/lib/evidence-export.mjs +431 -0
  118. package/lib/evidence-report-markdown.mjs +71 -0
  119. package/lib/evidence-report.mjs +391 -0
  120. package/lib/external-intelligence-risk.mjs +108 -0
  121. package/lib/favicon.mjs +146 -0
  122. package/lib/feature-policy.mjs +70 -0
  123. package/lib/generated/retire-browser-catalog.mjs +8724 -0
  124. package/lib/generated/unicode-confusables-17.mjs +93 -0
  125. package/lib/hostname.mjs +38 -0
  126. package/lib/html-signals.mjs +680 -0
  127. package/lib/http-intelligence.mjs +232 -0
  128. package/lib/idn-confusable-policy.mjs +86 -0
  129. package/lib/idn-confusables.mjs +465 -0
  130. package/lib/lookup-cache.mjs +130 -0
  131. package/lib/lookup-progress.mjs +291 -0
  132. package/lib/lookup-source-progress.mjs +109 -0
  133. package/lib/lookup-threat-provider-inventory.mjs +13 -0
  134. package/lib/lookup.mjs +592 -0
  135. package/lib/observation.mjs +114 -0
  136. package/lib/observed-network-context.mjs +355 -0
  137. package/lib/operation-budget.mjs +489 -0
  138. package/lib/page-fingerprints.mjs +481 -0
  139. package/lib/page-role-profile.mjs +117 -0
  140. package/lib/perceptual-hash.mjs +451 -0
  141. package/lib/rdap-attempts.mjs +34 -0
  142. package/lib/rdap-bootstrap.mjs +173 -0
  143. package/lib/rdap-capabilities.mjs +292 -0
  144. package/lib/rdap-client.mjs +125 -0
  145. package/lib/rdap-normalization.mjs +691 -0
  146. package/lib/rdap-registrar.mjs +196 -0
  147. package/lib/rdap-transport.mjs +39 -0
  148. package/lib/rdap-types.mjs +1 -0
  149. package/lib/rdap-validation.mjs +94 -0
  150. package/lib/rdap.mjs +16 -0
  151. package/lib/registry-access.mjs +32 -0
  152. package/lib/registry-capabilities.mjs +117 -0
  153. package/lib/registry-capability-catalogue.mjs +1206 -0
  154. package/lib/registry-comparison.mjs +318 -0
  155. package/lib/registry-dates.mjs +190 -0
  156. package/lib/registry-insights.mjs +325 -0
  157. package/lib/response-policy.mjs +256 -0
  158. package/lib/risk-scoring.mjs +164 -0
  159. package/lib/safe-fetch.mjs +446 -0
  160. package/lib/security-txt.mjs +359 -0
  161. package/lib/service-binding-dns.mjs +608 -0
  162. package/lib/sslbl-certificates.generated.mjs +143 -0
  163. package/lib/sslbl-intelligence.mjs +241 -0
  164. package/lib/static-html-analysis.mjs +340 -0
  165. package/lib/structured-data-identity.mjs +323 -0
  166. package/lib/threat-intelligence-contract.mjs +5 -0
  167. package/lib/threat-intelligence-definition-registry.mjs +34 -0
  168. package/lib/threat-intelligence-fixtures.mjs +82 -0
  169. package/lib/threat-intelligence-manifests.mjs +512 -0
  170. package/lib/threat-intelligence-runtime.mjs +662 -0
  171. package/lib/threat-intelligence-targets.mjs +168 -0
  172. package/lib/threat-intelligence-types.mjs +3 -0
  173. package/lib/threatfox-intelligence.mjs +307 -0
  174. package/lib/tls-intelligence.mjs +814 -0
  175. package/lib/typosquat-generator.mjs +884 -0
  176. package/lib/urlhaus-intelligence.mjs +361 -0
  177. package/lib/urlscan-intelligence.mjs +349 -0
  178. package/lib/website-security-posture.mjs +325 -0
  179. package/lib/website-technology.mjs +437 -0
  180. package/lib/whois-authority.mjs +98 -0
  181. package/lib/whois-chain.mjs +261 -0
  182. package/lib/whois-contacts.mjs +163 -0
  183. package/lib/whois-contracts.mjs +3 -0
  184. package/lib/whois-normalization.mjs +27 -0
  185. package/lib/whois-transport.mjs +100 -0
  186. package/lib/whois-values.mjs +92 -0
  187. package/lib/whois.mjs +1187 -0
  188. package/package.json +55 -0
  189. package/third-party-notices.txt +5571 -0
@@ -0,0 +1,93 @@
1
+ // Generated by tools/unicode-confusable-audit.mts from the pinned Unicode
2
+ // UTS #39 data file. Do not edit this projection by hand.
3
+ export const GENERATED_CONFUSABLE_MAPPING_VERSION = "tr39-17.0.0-bounded-ascii-v3";
4
+ export const GENERATED_CONFUSABLE_SOURCE = Object.freeze({
5
+ "standard": "Unicode UTS #39",
6
+ "unicodeVersion": "17.0.0",
7
+ "url": "https://www.unicode.org/Public/17.0.0/security/confusables.txt",
8
+ "sha256": "091c7f82fc39ef208faf8f94d29c244de99254675e09de163160c810d13ef22a",
9
+ "license": "Unicode-3.0"
10
+ });
11
+ export const GENERATED_CONFUSABLE_POLICY = Object.freeze({
12
+ "acceptedScripts": [
13
+ "Latin",
14
+ "Cyrillic",
15
+ "Greek",
16
+ "Armenian",
17
+ "Coptic",
18
+ "Deseret",
19
+ "Lisu"
20
+ ],
21
+ "sourceCodePoints": 1,
22
+ "skeletonPerAscii": 12,
23
+ "generationPerAscii": 8,
24
+ "totalMappings": 312
25
+ });
26
+ export const GENERATED_CONFUSABLE_STATS = Object.freeze({
27
+ "sourceBytes": 745683,
28
+ "sourceLines": 9995,
29
+ "parsedMappings": 6565,
30
+ "eligibleMappings": 232,
31
+ "projectedMappings": 111,
32
+ "generationMappings": 101,
33
+ "rejectedMalformedLines": 0,
34
+ "rejectedOutsidePolicy": 5695,
35
+ "skeletonCapHits": 0,
36
+ "generationCapHits": 3
37
+ });
38
+ export const GENERATED_CONFUSABLE_GROUPS = Object.freeze({
39
+ a: "аαɑ",
40
+ b: "ьƄ",
41
+ c: "сϲⅽᴄⲥ𐐽",
42
+ d: "ԁⅾꓒ",
43
+ e: "еεҽꬲ",
44
+ f: "ϝꞙƒẝꬵք",
45
+ g: "ɡƍᶃց",
46
+ h: "һհ",
47
+ i: "іιıɪɩⲓꙇւ",
48
+ j: "јϳ",
49
+ k: "κк",
50
+ l: "ӏⅼǀꓲ",
51
+ m: "мⅿ",
52
+ n: "ոռ",
53
+ o: "оοօᴏⲟᴑꬽσϭ𐐬",
54
+ p: "рρϱⲣþƿϸⳏ",
55
+ q: "ԛգզ",
56
+ r: "гꭇꭈᴦⲅ",
57
+ s: "ѕꜱƽ𐑈",
58
+ t: "тτ",
59
+ u: "υսᴜꭎʋꞟꭒ",
60
+ v: "ѵνᴠ",
61
+ w: "ԝաᴡшɯѡⲽ",
62
+ x: "хχ",
63
+ y: "уүʏγⲩɣᶌỿꭚ",
64
+ z: "ᴢ",
65
+ });
66
+ export const GENERATED_GENERATION_CONFUSABLE_GROUPS = Object.freeze({
67
+ a: "аαɑ",
68
+ b: "ь",
69
+ c: "сᴄⲥ𐐽",
70
+ d: "ԁꓒ",
71
+ e: "еεҽꬲ",
72
+ f: "ϝꞙƒẝꬵք",
73
+ g: "ɡƍᶃց",
74
+ h: "һհ",
75
+ i: "іιıɪɩⲓꙇւ",
76
+ j: "јϳ",
77
+ k: "κк",
78
+ l: "ӏǀꓲ",
79
+ m: "м",
80
+ n: "ոռ",
81
+ o: "оοօᴏⲟᴑꬽσ",
82
+ p: "рρⲣþƿϸⳏ",
83
+ q: "ԛգզ",
84
+ r: "гꭇꭈᴦⲅ",
85
+ s: "ѕꜱƽ𐑈",
86
+ t: "тτ",
87
+ u: "υսᴜꭎʋꞟꭒ",
88
+ v: "ѵνᴠ",
89
+ w: "ԝաᴡшɯѡⲽ",
90
+ x: "хχ",
91
+ y: "уүʏγⲩɣᶌỿ",
92
+ z: "ᴢ",
93
+ });
@@ -0,0 +1,38 @@
1
+ // Linear-time validation for already-normalized ASCII DNS hostnames. Keep this
2
+ // helper deliberately independent of public-suffix policy: callers decide
3
+ // whether a syntactically valid hostname must also be registrable.
4
+ const ASCII_LABEL_RE = /^[a-z0-9-]+$/iu;
5
+ function isValidAsciiHostname(value, options = {}) {
6
+ if (typeof value !== 'string'
7
+ || value.length < 1
8
+ || value.length > 253
9
+ || (options.requireLowercase === true && value !== value.toLowerCase()))
10
+ return false;
11
+ const labels = value.split('.');
12
+ if (options.requireDot !== false && labels.length < 2)
13
+ return false;
14
+ for (const label of labels) {
15
+ if (!label
16
+ || label.length > 63
17
+ || label.startsWith('-')
18
+ || label.endsWith('-')
19
+ || !ASCII_LABEL_RE.test(label))
20
+ return false;
21
+ }
22
+ return true;
23
+ }
24
+ function isIpv4Literal(value) {
25
+ const parts = value.split('.');
26
+ return parts.length === 4 && parts.every((part) => {
27
+ if (!/^(?:0|[1-9]\d{0,2})$/u.test(part))
28
+ return false;
29
+ return Number(part) <= 255;
30
+ });
31
+ }
32
+ // Domain-only records must not accept an IPv4 literal merely because its
33
+ // dotted decimal labels also satisfy hostname syntax. IPv6 literals already
34
+ // fail the ASCII hostname grammar because they contain colons.
35
+ function isValidAsciiDomainName(value, options = {}) {
36
+ return isValidAsciiHostname(value, options) && !isIpv4Literal(value);
37
+ }
38
+ export { isValidAsciiDomainName, isValidAsciiHostname };