Post-exploitation NTDS dump analyzer — correlates secretsdump output with hashcat potfiles to identify shared passwords and weak credentials in Active Directory
Project description
TattleTale
Analyze secretsdump output and hashcat potfiles to find shared passwords, weak credentials, and other issues in Active Directory. No dependencies.
Built from years of hands-on experience in enterprise penetration testing. Used in real-world assessments of Fortune 500 companies and critical infrastructure.
Install
pip
pip install ntds-tattletale
Then run it:
tattletale -d dump.ntds -p cracked.pot
Standalone
It's a single Python file with no dependencies. Grab it and go:
curl -O https://raw.githubusercontent.com/coryavra/tattletale/master/tattletale.py
python3 tattletale.py -d dump.ntds -p cracked.pot
Container
The included Containerfile works with Apple Containers (macOS 26+) and Docker (OCI-compliant).
# Apple Containers (native to macOS)
container build -t tattletale .
container run --rm -v "$(pwd)/data:/mnt/shared" tattletale \
-d /mnt/shared/ntds.dit \
-p /mnt/shared/cracked.pot \
-o /mnt/shared/report
# Docker works too
docker build -t tattletale .
docker run --rm -v "$(pwd)/data:/mnt/shared" tattletale \
-d /mnt/shared/ntds.dit \
-p /mnt/shared/cracked.pot \
-o /mnt/shared/report
Usage
tattletale -d <file> [-p <file>] [-t <files>] [options]
REQUIRED
-d, --dit <file> secretsdump output file
OPTIONS
-p, --pot <file> hashcat potfile with cracked hashes
-t, --targets <files> target lists (admins.txt, svc.txt, etc)
-o, --output <dir> export reports to directory
-r, --redact-partial show first 2 chars only (Pa**********)
-R, --redact-full hide passwords completely (************)
-h, --help show help message
-V, --version show version
POLICY
--policy-length <n> minimum password length
--policy-complexity <n> require n-of-4 character classes (upper, lower, digit, symbol)
--policy-no-username password cannot contain username
Examples
# Basic analysis - just the dump file
tattletale -d ntds.dit
# With cracked hashes from hashcat
tattletale -d ntds.dit -p hashcat.pot
# Track high-value targets with multiple lists
tattletale -d ntds.dit -p hashcat.pot -t domain_admins.txt svc_accounts.txt
# Redacted output for client reports
tattletale -d ntds.dit -p hashcat.pot -r -o ./report
# Check cracked passwords against policy (8 chars, 3-of-4 complexity)
tattletale -d ntds.dit -p hashcat.pot --policy-length 8 --policy-complexity 3
Output
Statistics
Overview of the dump: total accounts, cracking progress, hash types, and security warnings like empty passwords or legacy LM hashes.
High Value Targets
Shows the status of accounts from your target lists. Grouped by file so you can track domain admins separately from service accounts.
Shared Credentials
Accounts that share the same password hash. Grouped by password with target accounts highlighted.
Password Analysis
Pattern analysis across all cracked passwords: length distribution, character composition, common patterns (seasons, years, keyboard walks), and most reused passwords.
Input formats
| File | Format | Example |
|---|---|---|
| DIT dump | secretsdump output | DOMAIN\user:1001:LM_HASH:NT_HASH::: |
| Potfile | hashcat potfile | NT_HASH:cleartext |
| Targets | one username per line | administrator |
See also
Standing on the shoulders of giants:
- secretsdump.py - extract hashes from NTDS.DIT
- hashcat - crack the hashes
- CrackMapExec - password spraying and more
License
MIT
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file ntds_tattletale-3.1.0.tar.gz.
File metadata
- Download URL: ntds_tattletale-3.1.0.tar.gz
- Upload date:
- Size: 16.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
fa8e90cc82f5a2a6e7327ad6ebba52da10f0479843d8eeba29e07ce958a76e32
|
|
| MD5 |
edbf134cc1a9b198d28c86fcf4427cc1
|
|
| BLAKE2b-256 |
453619ea190d73c954e66ea52bbe6429d369c3b518362ed997d453753df68696
|
Provenance
The following attestation bundles were made for ntds_tattletale-3.1.0.tar.gz:
Publisher:
publish.yml on coryavra/tattletale
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
ntds_tattletale-3.1.0.tar.gz -
Subject digest:
fa8e90cc82f5a2a6e7327ad6ebba52da10f0479843d8eeba29e07ce958a76e32 - Sigstore transparency entry: 887582229
- Sigstore integration time:
-
Permalink:
coryavra/tattletale@67b1cd37ddb09b663497033771c2844b88de2652 -
Branch / Tag:
refs/tags/v3.1.0 - Owner: https://github.com/coryavra
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@67b1cd37ddb09b663497033771c2844b88de2652 -
Trigger Event:
release
-
Statement type:
File details
Details for the file ntds_tattletale-3.1.0-py3-none-any.whl.
File metadata
- Download URL: ntds_tattletale-3.1.0-py3-none-any.whl
- Upload date:
- Size: 16.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
94c1aaa07ad4e6493ee54f02ac894c7fe488e1e5acd99f7f830826766133f518
|
|
| MD5 |
673f632c7d67572b88fb48982082a3ed
|
|
| BLAKE2b-256 |
277759504a03a554db4eb5383457ff39d1a24b7e6ab4d0b2f76ac0bfe24a5c1a
|
Provenance
The following attestation bundles were made for ntds_tattletale-3.1.0-py3-none-any.whl:
Publisher:
publish.yml on coryavra/tattletale
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
ntds_tattletale-3.1.0-py3-none-any.whl -
Subject digest:
94c1aaa07ad4e6493ee54f02ac894c7fe488e1e5acd99f7f830826766133f518 - Sigstore transparency entry: 887582306
- Sigstore integration time:
-
Permalink:
coryavra/tattletale@67b1cd37ddb09b663497033771c2844b88de2652 -
Branch / Tag:
refs/tags/v3.1.0 - Owner: https://github.com/coryavra
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@67b1cd37ddb09b663497033771c2844b88de2652 -
Trigger Event:
release
-
Statement type: