@slicedearth/whoisleuth-cli 2.6.0 → 2.7.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.
- package/DISCLOSURE +8 -5
- package/NOTICE +3 -2
- package/README.md +60 -67
- package/cli/artifact-validation/case-response.mjs +6 -857
- package/cli/artifact-validation/lookup-evidence.mjs +15 -2
- package/cli/artifact-verify.mjs +32 -1
- package/cli/case-command.mjs +17 -17
- package/cli/case-pack.mjs +7 -1
- package/cli/ci-report.mjs +17 -5
- package/cli/command-definition.mjs +5 -5
- package/cli/doctor.mjs +37 -3
- package/cli/formatters/html.mjs +3 -0
- package/cli/formatters/json.mjs +8 -1
- package/cli/formatters/terminal-lookup.mjs +24 -1
- package/cli/history-command-definitions.mjs +1 -1
- package/cli/investigation-plan.mjs +15 -0
- package/cli/lookup-brief.mjs +11 -5
- package/cli/lookup-command-runner.mjs +20 -13
- package/cli/review-command-definitions.mjs +11 -11
- package/cli/saved-lookup.mjs +22 -7
- package/cli/source-reliability.mjs +12 -10
- package/cli/support-arguments.mjs +1 -1
- package/cli/support-command-definitions.mjs +5 -4
- package/cli/support-command-runner.mjs +6 -4
- package/cli/workflow-command-definitions.mjs +2 -1
- package/docs/cli-reference.md +49 -11
- package/docs/cli.md +109 -32
- package/docs/contextual-reviews.md +10 -0
- package/docs/infrastructure-observations.md +9 -0
- package/lib/dmarc-discovery.mjs +4 -2
- package/lib/dns-inheritance-review.mjs +14 -1
- package/lib/evidence-export.mjs +10 -4
- package/lib/evidence-report.mjs +2 -1
- package/lib/generated/cisa-kev-catalog.mjs +17 -4
- package/lib/generated/registrar-standing-catalogue.mjs +7 -7
- package/lib/generated/retire-browser-catalog.mjs +178 -5
- package/lib/idn-confusables.mjs +5 -1
- package/lib/lookup-collection-receipt.mjs +52 -0
- package/lib/lookup-diagnostics.mjs +2 -12
- package/lib/lookup-progress.mjs +29 -31
- package/lib/lookup-response-contract.mjs +9 -0
- package/lib/lookup-response.mjs +15 -14
- package/lib/lookup-source-progress.mjs +4 -2
- package/lib/lookup.mjs +33 -2
- package/lib/rdap-capabilities.mjs +43 -9
- package/lib/registry-insights.mjs +17 -6
- package/lib/sslbl-certificates.generated.mjs +143 -142
- package/lib/whois-authority.mjs +56 -1
- package/lib/whois-chain.mjs +2 -1
- package/lib/whois-contracts.mjs +2 -0
- package/lib/whois-normalization.mjs +4 -4
- package/package.json +6 -6
- package/packages/analysis/bounded-json.mjs +12 -2
- package/packages/cases/case-attachment-model.mjs +36 -1
- package/packages/cases/case-checkpoint-receipts.mjs +68 -0
- package/packages/cases/case-evidence-links.mjs +28 -0
- package/packages/cases/case-evidence-model.mjs +39 -6
- package/packages/cases/case-migration-model.mjs +9 -1
- package/packages/cases/case-object-coverage.mjs +106 -20
- package/packages/cases/case-record-operations.mjs +13 -0
- package/packages/cases/case-record-projection.mjs +28 -2
- package/packages/cases/case-report.mjs +5 -4
- package/packages/cases/case-response-packet-validation.mjs +880 -0
- package/packages/cases/case-response-packet-vocabulary.mjs +12 -1
- package/packages/cases/case-response-packet.mjs +2 -15
- package/packages/cases/case-response-review-inputs.mjs +18 -1
- package/packages/cases/case-type-presentation.mjs +10 -0
- package/packages/cases/case-workflow-metadata.mjs +0 -8
- package/packages/comparison/capture-context.mjs +3 -2
- package/packages/contracts/analyst-review-state-contract.mjs +1 -1
- package/packages/contracts/case-portability.mjs +59 -28
- package/packages/contracts/cli-doctor.mjs +4 -0
- package/packages/contracts/cli-lookup.mjs +57 -46
- package/packages/contracts/lookup-evidence.mjs +12 -2
- package/packages/contracts/registry-insights.mjs +6 -0
- package/packages/evidence/dmarc-policy-context.mjs +80 -0
- package/packages/evidence/lookup-collection-receipt.mjs +140 -0
- package/packages/evidence/lookup-collection-review.mjs +74 -0
- package/packages/interchange/external-findings-import.mjs +8 -4
- package/packages/investigation/bulk-mail-exposure.mjs +2 -2
- package/packages/investigation/domain-history-review.mjs +7 -1
- package/packages/workspace/brand-keyword-campaign.mjs +11 -1
- package/packages/workspace/bulk-session-model.mjs +8 -0
- package/third-party-notices.txt +29 -29
package/DISCLOSURE
CHANGED
|
@@ -9,12 +9,15 @@ WHOISleuth is intended for authorised defensive investigation, abuse response,
|
|
|
9
9
|
threat research, domain acquisition due diligence, asset review, and education.
|
|
10
10
|
Network collection is initiated explicitly by the operator, uses bounded
|
|
11
11
|
requests, and keeps source provenance and incomplete results visible. Hosted
|
|
12
|
-
and
|
|
12
|
+
and main-CLI collection does not exploit targets, bypass access controls,
|
|
13
13
|
submit credentials, execute remote page scripts, or automate enforcement
|
|
14
|
-
actions. The separate
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
14
|
+
actions. The separate optional rendered-capture companion is distributed as a
|
|
15
|
+
locally assembled archive, not as part of the hosted application or main CLI,
|
|
16
|
+
and is not published to a package registry. It executes page JavaScript only
|
|
17
|
+
after explicit authorisation, in a disposable, sandboxed, network-bounded
|
|
18
|
+
browser. Admitted resource operators receive their requested URLs; screenshots
|
|
19
|
+
and sanitised digest/manifest artefacts remain local for operator-controlled
|
|
20
|
+
review and deletion.
|
|
18
21
|
|
|
19
22
|
Operators are responsible for using WHOISleuth only on systems and data they
|
|
20
23
|
are authorised to examine and in accordance with applicable laws, provider
|
package/NOTICE
CHANGED
|
@@ -13,8 +13,9 @@ which are licensed under the Mozilla Public License 2.0. These packages are not
|
|
|
13
13
|
part of the production runtime.
|
|
14
14
|
|
|
15
15
|
The generated browser-library catalogue projection is derived from the
|
|
16
|
-
Retire.js browser repository,
|
|
17
|
-
and
|
|
16
|
+
Retire.js browser repository, with its source version and digest recorded in
|
|
17
|
+
the projection, and has been modified by selecting and bounding the fields
|
|
18
|
+
used by WHOISleuth. Retire.js is licensed under the
|
|
18
19
|
Apache License 2.0. See LICENSES/Retire.js-Apache-2.0.txt for the full licence
|
|
19
20
|
text.
|
|
20
21
|
|
package/README.md
CHANGED
|
@@ -1,13 +1,17 @@
|
|
|
1
1
|
# WHOISleuth CLI
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
run from
|
|
6
|
-
|
|
3
|
+
Investigate domains, IP addresses and ASNs from your terminal, review selected
|
|
4
|
+
local files, and prepare evidence for a browser or offline handoff. Networked
|
|
5
|
+
commands run from your computer; offline commands read selected local input.
|
|
6
|
+
The CLI does not use the hosted WHOISleuth login or workspace.
|
|
7
7
|
|
|
8
|
-
|
|
8
|
+
[CLI guide](https://github.com/slicedearth/whoisleuth/blob/main/docs/cli.md) ·
|
|
9
|
+
[Searchable commands](https://www.whoisleuth.com/cli) ·
|
|
10
|
+
[Compatibility reference](https://github.com/slicedearth/whoisleuth/blob/main/docs/cli-reference.md)
|
|
9
11
|
|
|
10
|
-
|
|
12
|
+
## Install and update
|
|
13
|
+
|
|
14
|
+
Use Node.js 24 or later. Run without a global installation:
|
|
11
15
|
|
|
12
16
|
```bash
|
|
13
17
|
npm exec --yes --ignore-scripts --package=@slicedearth/whoisleuth-cli -- whoisleuth --help
|
|
@@ -17,95 +21,84 @@ Or install the `whoisleuth` command globally:
|
|
|
17
21
|
|
|
18
22
|
```bash
|
|
19
23
|
npm install --global --ignore-scripts @slicedearth/whoisleuth-cli
|
|
24
|
+
whoisleuth --version
|
|
20
25
|
whoisleuth doctor
|
|
21
26
|
```
|
|
22
27
|
|
|
23
|
-
|
|
24
|
-
|
|
28
|
+
Update an existing installation with
|
|
29
|
+
`npm install --global --ignore-scripts @slicedearth/whoisleuth-cli@latest`, then
|
|
30
|
+
check `whoisleuth --version` and `whoisleuth doctor` again. The package requires
|
|
31
|
+
no lifecycle scripts; its version follows the application version.
|
|
25
32
|
|
|
26
|
-
##
|
|
33
|
+
## First commands
|
|
27
34
|
|
|
28
|
-
|
|
35
|
+
Browse the installed commands and plan a Lookup without collecting:
|
|
29
36
|
|
|
30
37
|
```bash
|
|
31
|
-
whoisleuth --help
|
|
32
38
|
whoisleuth commands --common
|
|
33
39
|
whoisleuth lookup example.test --plan --json
|
|
34
40
|
```
|
|
35
41
|
|
|
36
|
-
|
|
42
|
+
For a target you are authorised to assess, use Fast or Deep Lookup:
|
|
37
43
|
|
|
38
44
|
```bash
|
|
39
45
|
whoisleuth example.test
|
|
40
46
|
whoisleuth lookup example.test --deep --summary
|
|
41
|
-
whoisleuth bulk domains.txt --csv
|
|
42
|
-
whoisleuth discover example.test --preset common --jsonl
|
|
43
|
-
whoisleuth compare lookup.json --json
|
|
44
|
-
whoisleuth mail-headers message.eml --json
|
|
45
|
-
whoisleuth verify-artifact lookup.json --json --strict-exit
|
|
46
47
|
```
|
|
47
48
|
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
49
|
+
Fast is registration-first; Deep adds the applicable DNS, website, TLS and
|
|
50
|
+
other declared sources. `whoisleuth <command> --help` explains that command's
|
|
51
|
+
inputs, request boundaries, output formats and exit policy.
|
|
51
52
|
|
|
52
|
-
##
|
|
53
|
+
## Save, verify and continue in the browser
|
|
53
54
|
|
|
54
|
-
|
|
55
|
+
Save a private Lookup by closing the interactive evidence browser normally,
|
|
56
|
+
verify it offline, then create the separate browser-compatible export:
|
|
55
57
|
|
|
56
58
|
```bash
|
|
57
|
-
whoisleuth
|
|
58
|
-
whoisleuth
|
|
59
|
-
whoisleuth
|
|
60
|
-
whoisleuth
|
|
59
|
+
whoisleuth lookup example.test --deep --browse --save-lookup lookup.json
|
|
60
|
+
whoisleuth verify-artifact lookup.json --json
|
|
61
|
+
whoisleuth export lookup.json --output evidence.json
|
|
62
|
+
whoisleuth verify-artifact evidence.json --json
|
|
61
63
|
```
|
|
62
64
|
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
Focused `whoisleuth <command> --help` states the exact target, request, input and
|
|
71
|
-
output limits. `lookup --plan` lists planned sources before collection.
|
|
72
|
-
|
|
73
|
-
Terminal text is the default. Commands expose JSON, JSONL, CSV, Markdown, HTML
|
|
74
|
-
or domain-only output only where declared. `--output` writes a private local
|
|
75
|
-
file atomically and refuses an existing path unless `--force` is selected.
|
|
76
|
-
`--strict-exit` and `--fail-on` expose selected evidence states to automation.
|
|
77
|
-
|
|
78
|
-
`case open --domain example.test --output cases.json` creates an ordinary local
|
|
79
|
-
Case file. `case show`, `note`, `pin`, `assess` and `recheck` review or update it
|
|
80
|
-
offline. Mutations require explicit output and preserve earlier retained evidence;
|
|
81
|
-
see `docs/cli.md#local-case-files` for JSON inputs and conflict handling. Working
|
|
82
|
-
files contain private analyst content, not attached file bytes.
|
|
65
|
+
In the console's Lookup page, open **Replay exported evidence** and select
|
|
66
|
+
`evidence.json`. Review its digest and source states before retaining evidence
|
|
67
|
+
in a case. Keep `lookup.json` as the private CLI original; it can contain raw
|
|
68
|
+
registration responses and is not the browser replay format. The evidence
|
|
69
|
+
export excludes raw registration payloads and expanded contacts; replay does
|
|
70
|
+
not upload either file.
|
|
83
71
|
|
|
84
|
-
|
|
85
|
-
encrypts selected evidence files and their manifest. Use the same explicit
|
|
86
|
-
passphrase file with `verify-artifact --package` to authenticate and verify it
|
|
87
|
-
offline. Ordinary ZIPs and folder exports remain unencrypted; see `docs/cli.md`
|
|
88
|
-
for complete examples and file-handling boundaries.
|
|
72
|
+
## Work with selected files
|
|
89
73
|
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
74
|
+
```bash
|
|
75
|
+
whoisleuth bulk domains.txt --csv-with-metadata
|
|
76
|
+
whoisleuth mail-headers message.eml --json
|
|
77
|
+
whoisleuth compare lookup.json --json
|
|
78
|
+
```
|
|
93
79
|
|
|
94
|
-
|
|
95
|
-
|
|
80
|
+
`domains.txt` contains one target per line. `message.eml` is a message file you
|
|
81
|
+
select for local review. `lookup.json` is the saved CLI document from the
|
|
82
|
+
example above. Bulk performs collection; the mail-header and comparison
|
|
83
|
+
commands in this example are offline.
|
|
96
84
|
|
|
97
|
-
|
|
85
|
+
Use `whoisleuth commands --group respond --mode offline` to find local case,
|
|
86
|
+
packet and handoff tools. The [case-file guide](https://github.com/slicedearth/whoisleuth/blob/main/docs/cli.md#local-case-files)
|
|
87
|
+
covers ordinary case files, JSON inputs and conflict handling. Output written
|
|
88
|
+
with `--output` is private and atomic, and existing files require explicit
|
|
89
|
+
`--force`. A completed command can still contain partial source evidence.
|
|
98
90
|
|
|
99
|
-
|
|
91
|
+
## Separate tools and security
|
|
100
92
|
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
npm
|
|
105
|
-
|
|
93
|
+
The [rendered-capture companion](https://github.com/slicedearth/whoisleuth/tree/main/packages/web-capture)
|
|
94
|
+
and [filesystem-local application](https://github.com/slicedearth/whoisleuth/tree/main/packages/local-application)
|
|
95
|
+
are separate, locally assembled archives—not included in this CLI or published
|
|
96
|
+
as npm packages. Their guides cover installation and their distinct storage
|
|
97
|
+
and collection boundaries.
|
|
106
98
|
|
|
107
|
-
The package includes `docs/cli.md`
|
|
108
|
-
|
|
109
|
-
|
|
99
|
+
The package also includes `docs/cli.md` and `docs/cli-reference.md` for offline
|
|
100
|
+
reading. Report suspected vulnerabilities through the private channel in the
|
|
101
|
+
[security policy](https://github.com/slicedearth/whoisleuth/blob/main/SECURITY.md).
|
|
110
102
|
|
|
111
|
-
Copyright 2026 slicedearth. Licensed under
|
|
103
|
+
Copyright 2026 slicedearth. Licensed under
|
|
104
|
+
[AGPL-3.0-only](https://github.com/slicedearth/whoisleuth/blob/main/LICENSE).
|