Skip to main content

Credential validation tool for Active Directory Domain Services.

Project description

CredWolf

CI Python 3.11+ License Docs

InstallationQuick startUsageCLI referenceDocumentationContributing

Credential validation tool for Active Directory Domain Services.

CredWolf tests username and secret combinations (passwords, NT hashes, Kerberos keys, or ticket files) against a domain controller and reports which credentials are valid. It also supports username enumeration via Kerberos to discover valid AD accounts without causing login attempts. It is designed for authorized penetration testing, red team engagements, and security audits where you need to verify whether recovered or suspected credentials are active.

Warning: This tool is intended for authorized security testing only. You must have explicit written permission from the system owner before testing credentials against any Active Directory environment. Unauthorized access to computer systems is illegal.

Full documentation

Features

  • NTLM + Kerberos — validate credentials over SMB, LDAP, LDAPS, and Kerberos pre-authentication (UDP/TCP)
  • Every secret type — passwords, NT hashes (bare + LM:NT), RC4 keys, AES128 keys, AES256 keys, and ticket files (ccache/kirbi with auto-detection)
  • Username enumeration — discover valid AD accounts via Kerberos without triggering login failures or lockouts; ASREProastable accounts flagged automatically
  • Username case correction — when using Kerberos AES authentication, the KDC returns the correct username casing in the salt. CredWolf detects this and uses the corrected name in all output
  • 88+ credential permutations — every meaningful combination of user sources, secret sources, encryption types, and transports
  • Paired files — user:password, user:hash, and user:key files for pre-matched credential testing
  • Machine-parseable outputdomain/user:secret@type format, easy to grep or pipe
  • Safety-first errors — clock skew stops execution immediately, per-user skip on unknown/revoked principals, detailed account status detection
  • Rate limiting--delay, --jitter, and --max-lockouts to avoid triggering lockout policies
  • Validation only — no post-authentication activity by design

Installation

pip install credwolf
# or
pipx install credwolf
# or
uv tool install credwolf

The cw command is also installed as a shorthand for credwolf.

See the installation guide for source and Docker options.

Quick start

# Validate a password over SMB
$ credwolf -d evil.corp ntlm --dc-ip 10.0.0.1 -u Administrator -p 'Password1!'
[+] evil.corp/Administrator:Password1!@password

# Validate an NT hash (pass-the-hash)
$ credwolf -d evil.corp ntlm --dc-ip 10.0.0.1 -u Administrator --hash 7facdc498ed1680c4fd1448319a8c04f
[+] evil.corp/Administrator:7facdc498ed1680c4fd1448319a8c04f@nt_hash

# Validate an AES256 key over Kerberos (pass-the-key)
$ credwolf -d evil.corp kerberos --kdc-ip 10.0.0.1 -u Administrator --aes256-key 9b12da6a4bdc263c1ac8f6302dc071e6e84321a263fa48784534b1ae43db2925 --transport tcp
[+] evil.corp/Administrator:9b12da6a4bdc263c1ac8f6302dc071e6e84321a263fa48784534b1ae43db2925@aes256_key

# Enumerate valid usernames (no login attempts, no lockout risk)
$ credwolf -d evil.corp userenum --kdc-ip 10.0.0.1 -U users.txt
[+] evil.corp/Administrator
[+] evil.corp/svc_backup  no_preauth (ASREProastable)
[*] Enumeration complete: 2/5 users found

See the full usage guide and CLI reference for all options.

Supported protocols

Protocol Transport Secret types
NTLM SMB (default), LDAP, LDAPS Password, NT hash
Kerberos UDP (default), TCP Password, RC4 key, AES128 key, AES256 key, ticket (ccache/kirbi)

Development

git clone https://github.com/StrongWind1/CredWolf.git
cd CredWolf
uv sync                        # install dev dependencies
make check                     # run lint + typecheck + tests

See CONTRIBUTING.md for contribution guidelines.

Credits

Built on Impacket. Inspired by CrackMapExec, Kerbrute, smartbrute, and SprayHound.

License

Apache License 2.0

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

credwolf-1.0.0.tar.gz (1.8 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

credwolf-1.0.0-py3-none-any.whl (35.3 kB view details)

Uploaded Python 3

File details

Details for the file credwolf-1.0.0.tar.gz.

File metadata

  • Download URL: credwolf-1.0.0.tar.gz
  • Upload date:
  • Size: 1.8 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.10.9 {"installer":{"name":"uv","version":"0.10.9","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for credwolf-1.0.0.tar.gz
Algorithm Hash digest
SHA256 a18329c19be2d87816a67452b61e99f7161608f40a7bf47dd6bad50f8fe2c520
MD5 3c752915f19950d7a9e8cdc3aef1e347
BLAKE2b-256 90d8f573f31c73dff74bce944aab1256f1c8294218ee346ef253f383fef8bdda

See more details on using hashes here.

File details

Details for the file credwolf-1.0.0-py3-none-any.whl.

File metadata

  • Download URL: credwolf-1.0.0-py3-none-any.whl
  • Upload date:
  • Size: 35.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.10.9 {"installer":{"name":"uv","version":"0.10.9","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for credwolf-1.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 4455ce201475846355ad7ac033c4d7cf9e30c8a8c21e50b951d054ec5c902fd7
MD5 6821513f1b62d22dba8883b52a368272
BLAKE2b-256 983c04e9d2ab9787987b241846825b83b2e4eee05e9de7837499e0b576c5056f

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page