Skip to main content

xwllz

xwllz — Attack-surface management for blue teams

PyPI version Python versions License: MIT CI

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 architecture

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

xwllz attack-surface 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)

Source distribution for xwllz 0.1.5
File Size Uploaded
xwllz-0.1.5.tar.gz 39.3 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for xwllz 0.1.5
File Interpreter ABI Platform
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 log

Release 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

Release history Release notifications | RSS feed

This release

0.1.5 This release

2 release files

0.1.4

2 release files

0.1.3

2 release files

0.1.2

2 release files

0.1.1

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page