Documentation

Install the sandbox. It will not scan the open internet.

The published copy is the sandbox edition. Before any lookup it checks the target against five approved domains and requires a signed consent receipt. This page documents installation, the command-line surface, the outputs and the boundaries.

1 · Clone and install

Python 3.10 or newer. The package is installed in editable mode so the console entry point becomes available.

git clone https://github.com/muhammad-atif-161/smb-scanner-lite.git cd smb-scanner-lite pip install -e .

2 · List the permitted targets

Read-only. Prints the five approved domains and makes no network request.

smb-scanner --list-domains

3 · Run an assessment

Consent is mandatory. Without the policy flag and a name, the tool refuses.

smb-scanner example.com \ --accept-privacy-policy \ --consent-user "Your Name" \ --html report.html

4 · Verify the consent ledger

Each receipt is chained to the previous one. Verification tells you whether the ledger on this machine is intact.

smb-scanner --verify-consent-log

The allowlist is the product boundary

Any other name — including a look-alike subdomain, a raw IP address, an alternate port or a trailing dot — is rejected before a network request is made. The restriction lives in the runtime, so it cannot be disabled by editing a setting, passing a flag or modifying the interface.

example.comexample.orgexample.netscanme.nmap.orgbadssl.com

Each name is a reserved documentation domain or a public testing resource published for this purpose:

  • example.com / .org / .net — IANA reserved test domains
  • scanme.nmap.org — Nmap Project authorised test host
  • badssl.com — public TLS and certificate teaching site

Command reference

Every flag the sandbox accepts.

The public CLI is deliberately small. Anything that would widen the target list is absent rather than hidden.

Run smb-scanner --help for the authoritative list in your installed version.
FlagPurpose
--list-domainsPrint the five permitted testing domains. Makes no network request.
--accept-privacy-policyRecord that the privacy policy was read and accepted. Required before any run.
--consent-user NAMEOperator identity written into the consent receipt.
--consent-log PATHOptional path for the consent ledger (default: ~/.smb_scanner_lite/consent_proofs.jsonl).
--verify-consent-logRe-walk the SHA-256 hash chain and report whether it is intact.
--html PATHWrite an HTML report including the consent receipt.
--json PATHWrite a JSON report for machine processing.
--txt PATHWrite a plain-text report.
--guiLaunch the desktop interface for the sandbox.
--versionPrint the application and edition version.

What you get back

  • Score, grade and completed-control count
  • One evidence line per conclusive finding
  • Inconclusive results listed separately
  • Embedded consent receipt, hash-chained
  • HTML, JSON or plain text output

Where the ledger lives

Consent receipts are written to the machine that ran the assessment, by default under your home directory. The path is configurable and the file is excluded from Git.

~/.smb_scanner_lite/consent_proofs.jsonl

Desktop interface

The same sandbox runtime is available as a GUI for demonstration and teaching. It enforces the identical allowlist and consent requirements.

smb-scanner --gui
If a command fails

A blocked target exits with code 2 and a message naming the five permitted domains. A missing policy acceptance or operator name exits with a consent error. Neither case produces a network request — that is the intended behaviour, not a bug to work around.

Need a domain outside the sandbox?

The public edition will not scan it. A private assessment can, after scope and written authorisation are agreed.