CrackMeUp is a Python wrapper around Hashcat for password audit workflows. It automates multi-pass cracking with curated wordlist/rule combinations, tracks progress in optional session files, and generates summary outputs for analysis.
At the end of a run, CrackMeUp combines discovered cracks, runs a final hashcat --show, and exports a CSV report with:
- Username
- Hash
- Plaintext password
- Password length
- Password complexity category
- Hashcat installed and available in
PATH - Python 3
- Python dependencies from
requirements.txt - Hash file prepared for the target Hashcat mode (for NTLM audits this is commonly
-m 1000)
Install dependencies:
pip install -r requirements.txtpython3 crackmeup.py -m MODE -d HASH_DIR -p POT_FILE.pot -f HASH_FILE [options] -s crackmeup_session.jsonCrackMeUp expects four things every time:
- A hash mode, such as
1000for NTLM - A hash file inside your working directory
- A pot file name that already includes the
.potextension, such asad_name-ntlm.pot - A working directory where it can write logs, reports, and session files
Use -p for the full pot filename, not just the base name. The script does not append .pot for you.
- Pick your hash mode and confirm the hash file is in
HASH_DIR. - Choose a pot filename with
.potincluded. - Run the command.
- Review the output files written to
HASH_DIR.
-m,--mode: Hashcat mode (example:1000for NTLM)-d,--hash_dir: Directory containing hash input and where outputs are written-p,--pot: Pot file name, including the.potextension-f,--hash_file: Hash file to crack (insidehash_dir)
-a,--all: Run every wordlist/rule combination and create timestamped pot files for each pass-s,--session: JSON file used to resume or track progress between runs-e,--effort: Controls the cracking set size (low,medium, orhigh)-w,--workload: Hashcat workload profile (auto,1,2,3,4)--auto_mask: Launch mask attacks automatically from passwords discovered during cracking--mask_threshold: Minimum mask frequency required before an automatic mask attack is triggered--unhex: Decode$HEX[...]passwords in the final CSV and report output--report-only: Skip cracking and generate reports from an existing session or pot file--generate-rules: Build a custom.rulefile from patterns discovered in cracked passwords--patd-format: Write auser:hash:passwordfile for Password! At The Disco imports--rules_path: Override the rules directory--wordlist_path: Override the wordlists directory
Basic crack with a single pot file name:
python3 crackmeup.py \
-m 1000 \
-d /opt/tools/hashcat-files/hashes/2023PWAudit \
-f 20231028-ad-int-hashes.txt \
-p ad_name-ntlm.potResume a run with session tracking and higher effort:
python3 crackmeup.py \
-m 1000 \
-d /opt/tools/hashcat-files/hashes/2023PWAudit \
-f 20231028-ad-int-hashes.txt \
-p ad_name-ntlm.pot \
-s crackmeup-session.json \
-e highRun every combination, enable automatic mask attacks, and decode $HEX[...] passwords in the report:
python3 crackmeup.py \
-m 1000 \
-d /opt/tools/hashcat-files/hashes/2023PWAudit \
-f 20231028-ad-int-hashes.txt \
-p ad_name-ntlm.pot \
-a \
--auto_mask \
--mask_threshold 20 \
--unhexReport-only mode using an existing session or pot file:
python3 crackmeup.py \
-m 1000 \
-d /opt/tools/hashcat-files/hashes/2023PWAudit \
-f 20231028-ad-int-hashes.txt \
-p ad_name-ntlm.pot \
--report-only \
-s crackmeup-session.json--sessionstores completed combinations and completed masks so interrupted runs can continue without repeating work.- If the run is interrupted with
Ctrl+C, the current progress is saved before the script exits. --workload autopicks a higher workload for fast hashes and a lower workload for slower hashes.--report-onlyskips cracking and only generates reports from the pot files it can find.
Effort level controls how many wordlists/rules are used:
low: smallest set (fastest)medium: balanced/defaulthigh: largest set (most comprehensive)
CrackMeUp writes outputs to hash_dir, including:
- Hashcat run logs (
hashcat-*.log) - Pot files per run (
*.pot) - Session tracking file (
*.json, when--sessionis used) - Line-delimited run summaries (
hashcat_session_log_*.json) - Combined deduplicated pot-style output (
hashcat_combined_*.txt) - Final Hashcat show output (
temp-*.txt) - Final CSV analysis report (
hashcat-*.csv)
- For long cracking jobs over SSH, use
screenortmux. - Ensure your wordlist/rule paths match your environment, or override with
--wordlist_pathand--rules_path.