🔐 Hash Auditor
Audit your passwords. Hash them. Identify hashes. Crack your own.
"The password is the lock. Most people use a paper clip."
What is it?
A pocket knife for password hygiene: measure how weak your passwords really are, compute hashes in common formats, identify a hash's algorithm from its length, and brute-force your own hashes with a wordlist and common mutations. Every cracked hash in your lab is a story your novel's hacker would tell with a smirk.
Features
Core
- 📏
check— length, character classes, entropy, weak-list, patterns, verdict - 🔑
hash— md5, sha1, sha256, sha512 - 🕵️
identify— guess the algorithm from hash length - 💥
crack— wordlist attack with mutations (Cap1tals,+123,+!, ...)
v0.2.0 — the cracking-lab expansion
- 🧬
audit— integrated risk audit: strength + breach exposure + leet + date + keyboard-walk + randomness, folded into one 0-100 risk score - 🎯
recognize— ranked hash-format identification with confidence scores (bcrypt, argon2, scrypt, PBKDF2, Django, phpass, LDAP, MySQL, ...) - 🌈
rainbow— build, save and query real rainbow tables (reduction chains) - 🎭
mask— hashcat-style mask attacks (?l?d?s, custom charsets) with keyspace/entropy/time estimates - 🔀
combine— combinator and hybrid word+mask attacks - 🧩
pcfg— probabilistic context-free grammar guesses in probability order - 📚
breach— simulated breach-corpus exposure scoring (Zipf-ranked) - 📜
policy— configurable password policies with presets (basic/corporate/NIST) - 🔄
history— password-rotation enforcement (reuse, similarity, mutation gates) - 🎲
generate— diceware, syllable, leet and PIN generators with entropy - 📊
stats— wordlist statistics incl. Zipf-exponent fit and Markov bigrams - 🔗
similarity— edit distance, mutation classification, clustering - ⌨️
keyboard— QWERTY walk generation and detection - 📅
dates— date-fragment extraction and date-password detection - 🔤
fingerprint— structural shape fingerprints (Password123!→ULDS) - 🧮
entropy— Shannon, chi-squared, Markov and effective-bit analysis - 🗂️
parse— hash-dump parsing (user:hash, CSV, salted) → hashcat format - ➕ pure-Python
checksums(CRC32/CRC16/Adler-32/FNV/Luhn), incrementalbrutewith checkpoint/resume, leet-reversal dictionary matching, and wordlist pipeline tools - 📦 Zero dependencies
Install
pip install hash-auditor
From source:
git clone https://github.com/AnonymoDGH/hash-auditor
cd hash-auditor
pip install -e .
Quickstart
# 1. Audit a password
hashaudit check "password123"
# [*] length: 11
# [*] character classes:2
# [*] entropy (approx): 51.5 bits
# [-] in the known-weak list
# [-] verdict: weak
# 2. Hash something
hashaudit hash --algo md5 "sunshine"
# 3e1d2e2e1e7c7a1c5e2d8f6f1c2e3d4a (fake value — compute your own)
# 3. Identify a hash by its length
hashaudit identify 5d41402abc4b2a76b9719d911017c592
# md5
# 4. Crack your own hash with a wordlist
hashaudit crack --hash 5d41402abc4b2a76b9719d911017c592 --wordlist rockyou.txt
# [+] FOUND: 'hello'
# 5. v0.2.0: integrated risk audit
hashaudit audit "Summer2024!"
# [*] risk score: 87/100 -> critical
# [-] issues:
# - found in breach corpus ...
# 6. v0.2.0: identify a hash format with confidence
hashaudit recognize '$2b$12$...'
# 1. bcrypt (confidence: 0.97) -- bcrypt revision 'b'; cost factor 12
# 7. v0.2.0: mask attack on your own hash
hashaudit mask '?d?d?d?d' --hash <md5-of-a-pin>
# [+] FOUND: '1234' after 1,235 attempts
CLI reference
| Command | What it does |
|---|---|
hashaudit check <password> |
Full audit report |
hashaudit hash <password> --algo <a> |
Compute a hash |
hashaudit identify <hex> |
Guess algorithm from length |
hashaudit crack --hash <hex> --wordlist <f> [--algo <a>] |
Brute-force with mutations |
hashaudit crack --nomutate |
Skip mutation candidates |
hashaudit audit <password> / --file <f> |
Integrated risk audit (0-100 score) |
hashaudit recognize <hash> |
Ranked hash-format identification |
hashaudit rainbow --table <f> [--lookup <md5>] |
Build / query a rainbow table |
hashaudit mask <mask> --info / --hash <hex> |
Mask attack or keyspace info |
hashaudit combine --wordlist <f> --mode <m> |
Combinator / hybrid attack |
hashaudit pcfg --count <n> |
PCFG guesses in probability order |
hashaudit breach <password> / --file <f> |
Breach-corpus exposure score |
hashaudit policy <password> [--preset <p>] |
Policy check (basic/corporate/nist) |
hashaudit history <new> --file <f> |
Rotation-policy check vs history |
hashaudit generate --scheme <s> |
diceware / syllable / leet / pin |
hashaudit stats --file <f> |
Wordlist statistics + Zipf fit |
hashaudit similarity <old> <new> |
How two passwords are related |
hashaudit entropy <password> |
Deep randomness analysis |
hashaudit parse --file <f> [--hashcat] |
Parse a hash dump |
How it works
Tests
pip install pytest
pytest
License
MIT — audit your own habits, crack your own hashes, and keep the villain's password cracking on the page.
Release files for hash-auditor 0.2.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| hash_auditor-0.2.0.tar.gz | 118.4 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| hash_auditor-0.2.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 215.2 kB
Release files / hash_auditor-0.2.0.tar.gz
| Download URL | hash_auditor-0.2.0.tar.gz |
|---|---|
| Size | 118.4 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
368cb61938f7c85be938d6cfb16fe21913ae6979e1c8b8c51a880b6ac74f1cd9
|
|
BLAKE2b-256 checksum How to use checksums |
ad90ad88b6be306f1b28dd8776a58e14a5f883bfc4b7675b448c9f14f973e949
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.14.3
|
Release files / hash_auditor-0.2.0-py3-none-any.whl
| Download URL | hash_auditor-0.2.0-py3-none-any.whl |
|---|---|
| Size | 96.8 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
0e5ec18ca9557fa85bd7ca6fd2956e056de92a1882c99dbbed7216a087f94f35
|
|
BLAKE2b-256 checksum How to use checksums |
2a8e0a327a2a20b17e221ac683ef4959c02eed5d8815133399983349146d6053
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.14.3
|