Zone Transfer
Test whether a domain's nameservers allow DNS zone transfer (AXFR), and show the zone contents when they do.
Warning: Authorised use only. This tool contacts nameservers and can expose a full zone. Use it only on systems you are allowed to test.
Install
pip install lupaxa-zone-transfer
zone-transfer --help
CLI
zone-transfer example.com
zone-transfer example.com example.org
zone-transfer example.com --nameserver ns1.example.net --nameserver 203.0.113.10
zone-transfer example.com --format json
zone-transfer example.com --fail-open
zone-transfer example.com --timeout 10 --no-color
python -m lupaxa.zone_transfer --version
The tool discovers NS records (or uses --nameserver), sorts them by
name with IPv4 before IPv6 for each host, tries AXFR on every address,
prints a status table, and dumps records
when a transfer is allowed. On a TTY it shows a spinner on stderr while
lookups and transfers run. --fail-open exits 2 if any server
allowed AXFR. --format json writes {domain, error, attempts}
objects. On a colour terminal, allowed is red and refused is green.
Library
from lupaxa.zone_transfer import inspect_domain
report = inspect_domain("example.com")
print(report.attempts[0].status)
Pass on_progress to receive lookup and transfer events. The library
does not print; the CLI uses that hook for the spinner.
Development
make init
make python-install-dev
make python-check
Documentation
The published guide is at https://zone-transfer.thelupaxaproject.org/.
Site Markdown lives in mkdocs/.
python -m pip install -r requirements.txt
make mkdocs-serve
Release files for lupaxa-zone-transfer 0.1.2
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| lupaxa_zone_transfer-0.1.2.tar.gz | 10.5 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| lupaxa_zone_transfer-0.1.2-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 24.9 kB
Release files / lupaxa_zone_transfer-0.1.2.tar.gz
| Download URL | lupaxa_zone_transfer-0.1.2.tar.gz |
|---|---|
| Size | 10.5 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
bd154938e6e119b4a38c1f6f6de866b1e580d98f64f03b732f1a4efeded2b8e9
|
|
BLAKE2b-256 checksum How to use checksums |
f249589ae6d324f664aac79c37eef7f23efa6130a4e2132b90666c77056dd86e
|
| 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 25, 2026.
Transparency logRelease files / lupaxa_zone_transfer-0.1.2-py3-none-any.whl
| Download URL | lupaxa_zone_transfer-0.1.2-py3-none-any.whl |
|---|---|
| Size | 14.4 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
7aef08f5f1ca86bff1f4f53c99872da634152e4c065e531119331e1c379889bb
|
|
BLAKE2b-256 checksum How to use checksums |
4237822d03db23ebd98455f4b5cc7a0ab835e8b4a316a8b25cc86c993ede4ced
|
| 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 25, 2026.
Transparency log