Prefer nth (Name That Hash) over hashid: it outputs the exact Hashcat -m and John format so you can paste and run. Hashcat can also suggest a mode if you run it without -m.
# Name That Hash (recommended)pipx install name-that-hash
nth -t '<HASH_STRING>'nth -f <HASH_FILE.txt>
# Hashcat autodetect (no -m; it will suggest or prompt)echo '<HASH>' > detect.hash
hashcat detect.hash --show
# orhashcat detect.hash <WORDLIST>
Ambiguity: e.g. 32-char hex can be MD5 or NTLM — context (source) matters. Don’t truncate == or leading $ when copying.
Extraction/Format Conversion
File to Hash
Convert files/artefacts to a hash format that hashcat or John can crack.
# Find all JtR utilitiessudo updatedb && locate '*2john' | grep -v 'pycache'# Zip (then crack: hashcat -m 17200 for PKZIP, or JtR for zips)zip2john <ZIP_FILE> > hash_zip.txt
# RARrar2john <RAR_FILE> > hash_rar.txt
# Office docsoffice2john <OFFICE_FILE> > hash_office.txt
# PDFpdf2john <PDF_FILE> > hash_pdf.txt
# Bitlockerbitlocker2john -i <VHD_FILE> > pre_hash_vhd.txt
grep "bitlocker\$0" pre_hash_vhd.txt > hash_crackme_vhd.txt
hashcat -a 0 -m 22100 hash_crackme_vhd.txt <WORDLIST>
# Mount with Bitlocker (after cracking)sudo apt install -y dislocker
sudo mkdir -p /media/{bitlocker,bitlockermount}sudo losetup -f -P Backup.vhd
ls -la /dev/loop*
sudo dislocker /dev/<LOOP_DEV> -u<PASSWORD> -- /media/bitlocker
sudo mount -o loop /media/bitlocker/dislocker-file /media/bitlockermount
# SSH: find private keysgrep -rnE '^\-{5}BEGIN [A-Z0-9]+ PRIVATE KEY\-{5}$' /* 2>/dev/null
# Check if key is password protectedssh-keygen -yf <PRIVKEY>
# Get hashssh2john <PRIVKEY> > ssh.hash
# OpenSSL-encrypted archivewhile read p; do openssl enc -aes-256-cbc -d -in <ENC_FILE> -k "$p" 2>/dev/null | tar xz 2>/dev/null
if[ $? -eq 0]; then echo "Success! Password is: $p" break
fidone < <WORDLIST>
# Manually generate keywords or use cewl via OSINTcat << EOF > keywords.txt
<KEYWORDS>
EOF# Rule examples: c (Capitalize first), C (lowercase first, rest upper), t (toggle case)# $! append ! ; $1$9$9$8 append 1998 ; sa@ replace a with @ ; so0 replace o with 0 ; ss$ replace s with $cat << EOF > custom.rule
c
C
t \$!
\$1\$9\$9\$8
\$1\$9\$9\$8\$!
sa@
so0
ss\$
EOF# Generate permutated wordlisthashcat --force -r custom.rule keywords.txt --stdout | sort -u > wordlist.txt
# Crack with same ruleshashcat -a 0 -m <HASH_ID> -r custom.rule <HASH> wordlist.txt
CUPP Profiling
Build a targeted wordlist from personal information (name, birthday, pet, company, etc.). Use when you have OSINT on the target and want passwords likely derived from that data.
git clone https://github.com/Mebus/cupp.git
cd cupp
python3 cupp.py -i
Interactive prompts: name, surname, nickname, birthday, partner, pet, company, keywords, etc. Output is a wordlist tailored to the target.
Cracking
Hash Identification
See §0. Hash identification above. Fallback: hashid -jm '<HASH>'.