xwllz — Attack-surface management for blue teams
xwllz is a CLI for discovering, monitoring, and reporting on your own external
attack surface. It maps the domains, subdomains, IPs, services, certificates, and
exposure points an attacker can reach — so blue teams can see their perimeter before
attackers do.
Quickstart
pip install xwllz
xwllz init acme --domains example.com,corp.example.com
xwllz discover acme
xwllz monitor acme # re-scan and show what changed
xwllz report acme --format md
No system binaries are required. xwllz is pure Python by default; if you have
nmap, masscan, rustscan, nuclei, httpx, dnsx, or dig on your PATH,
it will detect and use them as accelerators automatically.
Data sources
Keyless by default: crt.sh (certificate transparency), DNS (A/NS/MX/SPF/DMARC/DKIM), HTTP probing, TLS/cert inspection, socket port scans.
Optional keyed enrichment (set env vars to enable):
| Source | Env vars |
|---|---|
| Shodan | SHODAN_API_KEY |
| SecurityTrails | SECURITYTRAILS_API_KEY |
| Censys | CENSYS_API_ID, CENSYS_API_SECRET |
| urlscan.io | URL_SCAN_API_KEY |
| URLhaus | URLHAUS_API_KEY |
| VirusTotal | VIRUSTOTAL_API_KEY |
Commands
xwllz init <org> --domains d1,d2 define the scope to monitor
xwllz discover <org> enumerate the attack surface
xwllz monitor <org> re-scan and report new/changed/removed
xwllz report <org> --format md|json|html
xwllz status <org> current surface dashboard
xwllz intel <indicator> URL/domain/IP lookup
xwllz whois <domain> whois lookup
xwllz cert <host> TLS certificate details
Data is stored in SQLite at ~/.local/share/xwllz/xwllz.db.
License
MIT
Release files for xwllz 0.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| xwllz-0.1.0.tar.gz | 26.5 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| xwllz-0.1.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 53.9 kB
Release files / xwllz-0.1.0.tar.gz
| Download URL | xwllz-0.1.0.tar.gz |
|---|---|
| Size | 26.5 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
18f9a5bb1b6db1b7b0c49cf2224a803c02ddb95ef7c518fd9d1d4b3a95b54b34
|
|
BLAKE2b-256 checksum How to use checksums |
e646d5b517c267d595527fa051f206a1f5a1023d1aed234e708371aea93ae349
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.12.5 {"installer":{"name":"uv","version":"0.12.5","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"26.04","id":"resolute","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
|
Release files / xwllz-0.1.0-py3-none-any.whl
| Download URL | xwllz-0.1.0-py3-none-any.whl |
|---|---|
| Size | 27.4 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
61290c25dc4ffcefe72e3a851245d63f779f4f5f30d1a55ce9547d0daee179ed
|
|
BLAKE2b-256 checksum How to use checksums |
1f5bec990b5297092a25f67c2894a838c0fdaba7ac6ffaff291098f8c05581ae
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.12.5 {"installer":{"name":"uv","version":"0.12.5","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"26.04","id":"resolute","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
|