Convert Sysinternals AD Explorer .dat snapshots to
ldapdomaindump format.
This enables offline analysis of Active Directory data captured with AD
Explorer using the full ldapdomaindump ecosystem (ldd2bloodhound,
ldd2pretty, and custom scripts that consume the JSON files).
| File | Content |
|---|---|
domain_users.json/html/grep |
User accounts |
domain_computers.json/html/grep |
Computer accounts |
domain_groups.json/html/grep |
Groups |
domain_policy.json/html/grep |
Domain policy (lockout, pwd) |
domain_trusts.json/html/grep |
Domain trusts |
domain_users_by_group.html |
Users sorted by group |
domain_computers_by_os.html |
Computers sorted by OS |
JSON files use the same schema as ldapdomaindump ({"dn": "...", "attributes": {...}}), so downstream tools work without modification.
- Python >= 3.12
- ADExplorerSnapshot.py (and its dependencies: bloodhound-ce, dissect.cstruct, rich, etc.)
pip install -r requirements.txtOr install the dependency directly:
pip install git+https://github.com/c3c/ADExplorerSnapshot.pypython -m adldd <snapshot.dat> -o <output_dir>
positional arguments:
snapshot Path to the AD Explorer .dat snapshot file.
options:
-o, --outdir DIR Output directory (default: current directory).
--no-html Disable HTML output.
--no-json Disable JSON output.
--no-grep Disable greppable output.
-v, --verbose Enable debug logging.
--version Show version and exit.
Convert a snapshot, writing all formats to ./output:
python -m adldd dc01.dat -o ./outputJSON only (for scripting / downstream tools):
python -m adldd dc01.dat -o ./output --no-html --no-grepThen use ldapdomaindump utilities on the output:
# Pretty enum4linux-style output
python -m ldapdomaindump.pretty -d ./output
# Convert to BloodHound v1 CSV
python -m ldapdomaindump.convert ./output/domain_users.json ./output/domain_groups.json ./output/domain_computers.json ./output/domain_trusts.json- The
.datfile is parsed using the ADExplorerSnapshot.py library, which reverse-engineers the proprietary binary format. - Each AD object is classified by its
objectClassattribute:user(notcomputer) →domain_userscomputer→domain_computersgroup→domain_groupsdomain/domainDNS(withobjectSid) →domain_policytrustedDomain→domain_trusts
- Attributes are normalized to JSON-safe values (bytes → base64, SIDs → string representation) and written in ldapdomaindump format.
- HTML and greppable reports are generated using the same attribute lists and formatting logic as ldapdomaindump.
MIT