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.
How it works
xwllz is pure Python by default — no system binaries required. It detects
optional accelerators (nmap, masscan, rustscan, nuclei, httpx, dnsx,
dig) on your PATH and uses them automatically when present, and falls back to
its built-in engines otherwise. Data is stored in SQLite.
The ASM loop
Each run produces a snapshot. xwllz monitor re-runs discovery and diffs
against the previous snapshot, showing you exactly what's new, changed, or
removed across your perimeter.
Quickstart
pipx 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
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.
Disclaimer
This software is intended for defensive security purposes only. Use it solely on systems and networks you own or are explicitly authorized to test. The author(s) assume no liability for any damages or legal issues arising from misuse.
Always comply with all applicable laws and regulations.
License
MIT
Release files for xwllz 0.1.5
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.5.tar.gz | 39.3 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| xwllz-0.1.5-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 67.3 kB
Release files / xwllz-0.1.5.tar.gz
| Download URL | xwllz-0.1.5.tar.gz |
|---|---|
| Size | 39.3 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
19e68a69f3b4c046cfaa0714d40c399089aada6f060ec3021e750578f52e02a8
|
|
BLAKE2b-256 checksum How to use checksums |
52573fad808f51cad53ec1852f3c0a45f8922cdaed604e6c37f198c48b1bb43d
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 19, 2026.
Transparency logRelease files / xwllz-0.1.5-py3-none-any.whl
| Download URL | xwllz-0.1.5-py3-none-any.whl |
|---|---|
| Size | 28.1 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
0836d0933b0c6328a22964b26245174c59c71fb3aaacd87d8f88370a52617b06
|
|
BLAKE2b-256 checksum How to use checksums |
b984b19734db74337d0ce5ea2373fe295a77a92cdb85670f91e5366e30d8baaf
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 19, 2026.
Transparency log