Hashcat

Hashcat password cracking reference. Attack modes (dictionary, combinator, brute-force, hybrid, association), hash mode table, rule engine, mask syntax, optimization flags, common pentest cracking workflows, and wordlist resources.

#Quick Start

#Basic Usage

hashcat -m <mode> -a <attack> hash.txt wordlist.txt
hashcat -m 1000 -a 0 ntlm.txt rockyou.txt
hashcat --show hash.txt          # show cracked
hashcat --left hash.txt          # show uncracked
hashcat -b                       # benchmark all modes
hashcat -b -m 1000              # benchmark specific mode
hashcat --restore                # resume last session
hashcat --session=myrun -m 1000 -a 0 hash.txt wordlist.txt

#Attack Modes (-a)

Mode Name Description
0 Straight Wordlist (+ rules)
1 Combination Word1 + Word2
3 Brute-force/Mask Pattern-based
6 Hybrid Wordlist+Mask word + ?d?d?d
7 Hybrid Mask+Wordlist ?d?d?d + word
9 Association Word per hash

#Output Formats

# Output cracked to file
hashcat -m 1000 hash.txt wordlist.txt -o cracked.txt

# Output format (comma-separated field selection)
hashcat -m 1000 hash.txt wordlist.txt --outfile-format=2
# 1 = hash[:salt]
# 2 = plain
# 3 = hex_plain
# 4 = crack_pos
# 5 = timestamp absolute
# 6 = timestamp relative
# Default: --outfile-format=1,3

# Show already cracked from potfile
hashcat -m 1000 hash.txt --show
hashcat -m 1000 hash.txt --show --outfile-format=2

# Username:hash format
hashcat -m 1000 hash.txt wordlist.txt --username
hashcat -m 1000 hash.txt --show --username

#Session Management

# Name a session
hashcat --session=crack1 -m 1000 hash.txt wordlist.txt

# Pause (press p during execution)
# Resume
hashcat --session=crack1 --restore

# Skip current attack and move to next
# Press s during execution

# Checkpoint (quit + save at next restore point)
# Press c during execution

# Status display during run
# Press s for status
hashcat --status --status-timer=10 -m 1000 hash.txt wordlist.txt

#Hash Modes

#Most Common Modes

Comprehensive table of the most-used hash modes in pentesting:

Mode Hash Type Example Use
0 MD5 Web apps, databases
100 SHA1 Web apps, Git
1400 SHA256 Modern web apps
1700 SHA512 Modern web apps
1800 sha512crypt ($6$) Linux /etc/shadow
500 md5crypt ($1$) Linux /etc/shadow (legacy)
7400 sha256crypt ($5$) Linux /etc/shadow
3200 bcrypt ($2*$) Modern web apps
1000 NTLM Windows SAM/AD
2100 DCC2 (mscash2) Cached domain creds
5500 NTLMv1 / NTLMv1+ESS Network capture (Responder)
5600 NTLMv2 Network capture (Responder)
13100 Kerberos 5 TGS-REP (Kerberoast) AD attack
18200 Kerberos 5 AS-REP (AS-REP Roast) AD attack
7500 Kerberos 5 AS-REQ Pre-Auth AD attack
19600 Kerberos 5 TGS-REP (AES128) AD attack
19700 Kerberos 5 TGS-REP (AES256) AD attack
31300 MS SNTP (TimeRoast) NTP-based AD attack (v7+)
22000 WPA-PBKDF2-PMKID+EAPOL Wi-Fi
16800 WPA-PMKID-PBKDF2 Wi-Fi PMKID
2500 WPA/WPA2 Wi-Fi (legacy mode)
400 phpass (WordPress/Joomla) CMS cracking
11600 7-Zip Archive cracking
13000 RAR5 Archive cracking
13400 KeePass 1/2 Password manager
15300 DPAPI masterkey v1 Windows DPAPI
15900 DPAPI masterkey v2 Windows DPAPI
28100 Windows Hello PIN/Password Windows biometric
16100 TACACS+ Network auth
7300 IPMI2 RAKP HMAC-SHA1 Server BMC
10300 SAP CODVN H (PWDSALTEDHASH) SAP
12500 RAR3-hp Archive cracking
9600 MS Office 2013 Document cracking
9500 MS Office 2010 Document cracking
9400 MS Office 2007 Document cracking
9700 MS Office 97-03 (MD5+RC4) Document cracking
11300 Bitcoin/Litecoin wallet Crypto wallet
16600 Electrum Wallet (Salt-Type 1-3) Crypto wallet
6211-6213 TrueCrypt (various) Full disk encryption
13711-13723 VeraCrypt (various) Full disk encryption
12700 Blockchain My Wallet Crypto wallet
3000 LM Legacy Windows
1500 DES (Unix) Legacy systems
7900 Drupal7 CMS cracking
21 osCommerce/xt:Commerce E-commerce
11 Joomla (MD5) CMS cracking
121 SMF (Simple Machines Forum) Forum
2611 vBulletin < 3.8.5 Forum
2711 vBulletin >= 3.8.5 Forum
10000 Django (PBKDF2-SHA256) Python web
124 Django (SHA1) Python web (legacy)

#Hash Identification

# hashid - identify hash type
hashid '$2a$10$...'
hashid -m 'hash_value'    # show hashcat mode
hashid -j 'hash_value'    # show John format

# hash-identifier (interactive)
hash-identifier

# haiti - modern identifier
haiti 'hash_value'
haiti -e hashcat 'hash_value'  # show hashcat modes only

# hashcat built-in (v6.2.6+)
hashcat --identify hash.txt

# Name-That-Hash
nth -t 'hash_value'
nth -f hash.txt

#Hash Extraction Tools

# From /etc/shadow (Linux)
unshadow /etc/passwd /etc/shadow > combined.txt

# From Windows SAM
secretsdump.py -sam SAM -system SYSTEM -security SECURITY LOCAL

# From NTDS.dit (AD)
secretsdump.py -ntds ntds.dit -system SYSTEM LOCAL
secretsdump.py domain/user:pass@dc-ip -just-dc-ntlm

# From KeePass
keepass2john database.kdbx > keepass.hash

# From 7-Zip
7z2john archive.7z > 7z.hash

# From RAR
rar2john archive.rar > rar.hash

# From PDF
pdf2john.pl document.pdf > pdf.hash

# From Office documents
office2john.py document.docx > office.hash

# From Wi-Fi captures
hcxpcapngtool capture.pcapng -o hash.22000

# From Kerberos (Impacket)
GetUserSPNs.py domain/user:pass -dc-ip DC -request -outputfile tgs.txt
GetNPUsers.py domain/ -usersfile users.txt -dc-ip DC -format hashcat

#Rules

#Built-in Rules

Rule File Description Size
best64.rule Best 64 rules (fast, effective) 64 rules
rockyou-30000.rule Generated from rockyou analysis 30K rules
d3ad0ne.rule Community classic 34K rules
dive.rule Deep mutations 99K rules
Incisive-leetspeak.rule L33t speak ~1K rules
toggles1.rule - toggles5.rule Case toggling (pos 1-5) Variable
OneRuleToRuleThemAll.rule Community best-of 52K rules
InsidePro-PasswordsPro.rule PasswordsPro port 3K rules
InsidePro-HashManager.rule HashManager port 700 rules
T0XlC.rule Community rules 12K rules
generated.rule Auto-generated 60K rules
generated2.rule Auto-generated v2 65K rules

#Rule Syntax

Table of rule functions:

Function Description Example
: Do nothing (passthrough) :
l Lowercase all l
u Uppercase all u
c Capitalize first, lower rest c
C Lowercase first, upper rest C
t Toggle case all t
TN Toggle case at position N T3
$X Append char X $1
^X Prepend char X ^!
r Reverse word r
d Duplicate entire word d
pN Duplicate word N times p2
f Reflect (append reversed) f
sXY Replace all X with Y sa@
@X Remove all instances of X @a
[ Remove first char [
] Remove last char ]
DN Delete char at position N D0
iNX Insert X at position N i4!
oNX Overwrite char at N with X o0H
'N Truncate at position N '8
xNM Extract M chars from pos N x04
zN Duplicate first char N times z3
ZN Duplicate last char N times Z2
q Duplicate every char q
{ Rotate word left {
} Rotate word right }
k Swap first two chars k
K Swap last two chars K
*NM Swap chars at position N and M *04

#Custom Rule Examples

# Capitalize + append year
c $2 $0 $2 $5
c $2 $0 $2 $6

# Leet speak substitutions
sa@ se3 si1 so0 ss$
sa@ se3 si! so0 ss5 st7

# Common patterns - capitalize + suffix
c $!       # Password!
c $1 $2 $3 # Password123
c $!$!     # Password!!
c $@       # Password@

# Uppercase all
u           # PASSWORD

# Duplicate word
c d         # PasswordPassword

# Prepend and append
^( $)       # (password)
^# $!       # #password!

# Year patterns
$2 $0 $2 $4
$2 $0 $2 $5
$2 $0 $2 $6

# Multi-rule chaining
c sa@ se3 $1 $!     # P@ssword -> P@ssw0rd1!

#Using Rules

# Single rule file
hashcat -m 1000 hash.txt wordlist.txt -r best64.rule

# Multiple rule files (chained - multiplicative)
hashcat -m 1000 hash.txt wordlist.txt -r best64.rule -r toggles1.rule
# Total rules = best64 x toggles1 combinations

# Inline rule
hashcat -m 1000 hash.txt wordlist.txt -j 'c$!'

# Generate rules randomly
hashcat -m 1000 hash.txt wordlist.txt -g 10000

# Debug rules (see which rule cracked what)
hashcat -m 1000 hash.txt wordlist.txt -r best64.rule --debug-mode=1 --debug-file=matched.rule

# Rule-left (for straight attack) and rule-right
hashcat -m 0 hash.txt wordlist.txt -j 'c' -k '$!'

#Masks

#Charset Placeholders

Placeholder Charset
?l abcdefghijklmnopqrstuvwxyz
?u ABCDEFGHIJKLMNOPQRSTUVWXYZ
?d 0123456789
?s space + !"#$%&'()*+,-./:;<=>?@[]^_`{|}~
?h 0123456789abcdef
?H 0123456789ABCDEF
?a ?l?u?d?s (all printable ASCII)
?b 0x00-0xFF (all 256 bytes)
?1 Custom charset 1 (user-defined)
?2 Custom charset 2 (user-defined)
?3 Custom charset 3 (user-defined)
?4 Custom charset 4 (user-defined)

#Common Masks

# 8-char lowercase
hashcat -m 0 -a 3 hash.txt ?l?l?l?l?l?l?l?l

# Password pattern: Ullllldd (capital + lower + 2 digits)
hashcat -m 0 -a 3 hash.txt ?u?l?l?l?l?l?d?d

# 4-digit PIN
hashcat -m 0 -a 3 hash.txt ?d?d?d?d

# 6-8 digit PIN with increment
hashcat -m 0 -a 3 hash.txt ?d?d?d?d?d?d?d?d --increment --increment-min=6

# Custom charset: only specific chars
hashcat -m 0 -a 3 hash.txt -1 'Pp' -2 'Aa' ?1?2ssword?d?d

# Upper + lower + digit
hashcat -m 0 -a 3 hash.txt -1 ?l?u?d ?1?1?1?1?1?1?1?1

# Increment: try all lengths 1-8
hashcat -m 0 -a 3 hash.txt ?a?a?a?a?a?a?a?a --increment --increment-min=1

# Common password structure: Word + digits + special
hashcat -m 0 -a 3 hash.txt -1 ?l?u ?1?1?1?1?1?1?d?d?s

# Hex charset (for specific attacks)
hashcat -m 0 -a 3 hash.txt -1 '0123456789abcdef' ?1?1?1?1?1?1?1?1

#Mask Files (.hcmask)

# Create a mask file with multiple patterns
# File: corporate.hcmask
# One mask per line, optionally with custom charsets
?u?l?l?l?l?l?d?d
?u?l?l?l?l?l?l?d?d
?u?l?l?l?l?l?d?d?d?d
?u?l?l?l?l?l?l?d?d?d?d
1,?l?u,?u?l?l?l?l?1?d?d
?u?l?l?l?l?l?l?l?d?d?s

# Use mask file
hashcat -m 1000 -a 3 hash.txt corporate.hcmask

#Hybrid Attacks (Modes 6 and 7)

# Mode 6: Wordlist + Mask (append)
# word + 3 digits
hashcat -m 1000 -a 6 hash.txt wordlist.txt ?d?d?d

# word + year
hashcat -m 1000 -a 6 hash.txt wordlist.txt ?d?d?d?d

# word + special + digits
hashcat -m 1000 -a 6 hash.txt wordlist.txt ?s?d?d

# Mode 7: Mask + Wordlist (prepend)
# 3 digits + word
hashcat -m 1000 -a 7 hash.txt ?d?d?d wordlist.txt

# Hybrid with rules
hashcat -m 1000 -a 6 hash.txt wordlist.txt ?d?d?d -r best64.rule

#Combination & Advanced Attacks

#Combination Attack (Mode 1)

# Combine two wordlists: word1 + word2
hashcat -m 0 -a 1 hash.txt list1.txt list2.txt

# With rules applied to left or right word
hashcat -m 0 -a 1 hash.txt list1.txt list2.txt -j 'c' -k '$!'
# left rule (-j): capitalize first list
# right rule (-k): append ! to second list

# Example: colors.txt + animals.txt
# blue + cat = bluecat, Blue + Cat! etc.

#Prince Attack (External)

# PRINCE: PRobability INfinite Chained Elements
# Install princeprocessor
pp64 < wordlist.txt | hashcat -m 1000 hash.txt

# Chain 1-4 words together
pp64 --elem-cnt-min=2 --elem-cnt-max=4 < wordlist.txt | hashcat -m 1000 hash.txt

# With length limits
pp64 --pw-min=8 --pw-max=16 < wordlist.txt | hashcat -m 1000 hash.txt

#Combinator3

# combinator3 - combine three wordlists
combinator3 list1.txt list2.txt list3.txt | hashcat -m 0 hash.txt

#Piping and stdin

# Pipe from external tools
crunch 8 8 -t @@@@%%%% | hashcat -m 1000 hash.txt

# From custom scripts
python3 gen.py | hashcat -m 1000 hash.txt

# kwprocessor (keyboard walks)
kwp basechars/full.base keymaps/en-us.keymap routes/2-to-16-max-3-direction-changes.route | hashcat -m 1000 hash.txt

#Optimization

#Performance Flags

# Workload profiles
-w 1    # Low (desktop usable)
-w 2    # Default
-w 3    # High (some lag)
-w 4    # Nightmare (system unusable)

# Optimized kernels (faster, max pw length 32)
-O

# Specific devices
-D 1        # CPU only
-D 2        # GPU only
-D 1,2      # CPU + GPU
--opencl-device-types=1,2

# Select specific GPU
-d 1        # First GPU
-d 1,2      # First and second GPU

# Force (bypass warnings - use cautiously)
--force

# Disable potfile (when re-cracking)
--potfile-disable

# Temperature control
--hwmon-temp-abort=90

# Limit GPU usage
-n 64       # Kernel accel (outerloop step size)
-u 256      # Kernel loops (innerloop step size)

#Hardware Performance

Approximate speeds for NTLM (mode 1000):

GPU Speed
RTX 4090 ~160 GH/s
RTX 4080 ~110 GH/s
RTX 3090 ~100 GH/s
RTX 3080 ~75 GH/s
RTX 3070 ~55 GH/s
RTX 2080 Ti ~55 GH/s
RTX 4060 ~35 GH/s
RX 7900 XTX ~85 GH/s
M1 Max ~5 GH/s
CPU (8-core) ~1 GH/s

Approximate speeds for bcrypt (mode 3200):

GPU Speed
RTX 4090 ~180 KH/s
RTX 3090 ~100 KH/s
RTX 3080 ~80 KH/s
CPU (8-core) ~2 KH/s

#Distributed Cracking

# Brain server (v6.0+)
# Server side
hashcat --brain-server --brain-password=secret

# Client side
hashcat -m 1000 hash.txt wordlist.txt --brain-client --brain-host=server-ip --brain-password=secret

# Manual split (no brain)
# Split wordlist and run on multiple machines
hashcat -m 1000 hash.txt wordlist.txt --skip=0 --limit=5000000
hashcat -m 1000 hash.txt wordlist.txt --skip=5000000 --limit=5000000

# Keyspace split for mask attacks
hashcat -m 1000 -a 3 hash.txt ?a?a?a?a?a?a --keyspace
# Then split with --skip and --limit

#Slow Hash Strategy

# For slow hashes (bcrypt, scrypt, Argon2, etc.)
# Use smaller, targeted wordlists
# 1. Top passwords first
hashcat -m 3200 hash.txt top1000.txt

# 2. Small wordlist + light rules
hashcat -m 3200 hash.txt rockyou-top10k.txt -r best64.rule -w 3

# 3. Targeted wordlist (company-specific)
hashcat -m 3200 hash.txt custom-company.txt -r best64.rule

# 4. Mask for common patterns only
hashcat -m 3200 -a 3 hash.txt ?u?l?l?l?l?l?d?d

#Common Workflows

#AD Pentest Cracking

# Kerberoasting (TGS tickets - RC4)
hashcat -m 13100 tgs.txt rockyou.txt -r best64.rule

# Kerberoasting (AES128)
hashcat -m 19600 tgs_aes128.txt rockyou.txt -r best64.rule

# Kerberoasting (AES256)
hashcat -m 19700 tgs_aes256.txt rockyou.txt -r best64.rule

# AS-REP Roasting
hashcat -m 18200 asrep.txt rockyou.txt -r best64.rule

# DCC2 / mscash2 (cached domain credentials)
hashcat -m 2100 dcc2.txt rockyou.txt -r best64.rule -w 3

# NTLM hashes (from secretsdump)
hashcat -m 1000 ntlm.txt rockyou.txt -r OneRuleToRuleThemAll.rule

# NTLMv2 (from Responder)
hashcat -m 5600 ntlmv2.txt rockyou.txt -r best64.rule

# NTLMv1 (from Responder)
hashcat -m 5500 ntlmv1.txt rockyou.txt

# NTLMv1 - DES crack approach (crack.sh alternative)
hashcat -m 14000 des_block.txt -a 3 ?b?b?b?b?b?b?b?b

# DPAPI masterkey v1
hashcat -m 15300 dpapi_v1.txt rockyou.txt

# DPAPI masterkey v2
hashcat -m 15900 dpapi_v2.txt rockyou.txt

# MS SNTP / TimeRoast (hashcat v7+)
hashcat -m 31300 timeroast.txt rockyou.txt -r best64.rule

# Group Policy Preferences (GPP / cPassword)
# Decrypt directly with gpp-decrypt, no hashcat needed

#Web App Cracking

# bcrypt ($2a$, $2b$, $2y$)
hashcat -m 3200 bcrypt.txt rockyou.txt -w 3

# MD5 (raw)
hashcat -m 0 md5.txt rockyou.txt -r dive.rule

# MD5 salted (salt:hash or hash:salt)
hashcat -m 10 md5salt.txt rockyou.txt    # md5($pass.$salt)
hashcat -m 20 md5salt.txt rockyou.txt    # md5($salt.$pass)

# SHA1
hashcat -m 100 sha1.txt rockyou.txt

# SHA256
hashcat -m 1400 sha256.txt rockyou.txt

# SHA512
hashcat -m 1700 sha512.txt rockyou.txt

# WordPress (phpass)
hashcat -m 400 wp.txt rockyou.txt

# Drupal 7
hashcat -m 7900 drupal7.txt rockyou.txt -w 3

# Django PBKDF2-SHA256
hashcat -m 10000 django.txt rockyou.txt -w 3

# MySQL 4.1+ (SHA1)
hashcat -m 300 mysql.txt rockyou.txt

# PostgreSQL MD5
hashcat -m 12 pg.txt rockyou.txt

#Wi-Fi Cracking

# Convert cap/pcapng to hashcat format
hcxpcapngtool capture.pcapng -o hash.22000

# Convert from aircrack legacy format
hcxpcapngtool capture.cap -o hash.22000

# PMKID + EAPOL (recommended)
hashcat -m 22000 hash.22000 rockyou.txt

# PMKID only
hashcat -m 16800 pmkid.txt rockyou.txt

# Wi-Fi with rules
hashcat -m 22000 hash.22000 rockyou.txt -r best64.rule

# Wi-Fi mask (8-digit numeric)
hashcat -m 22000 -a 3 hash.22000 ?d?d?d?d?d?d?d?d

# Wi-Fi mask (common home router patterns)
hashcat -m 22000 -a 3 hash.22000 -1 ?l?d ?1?1?1?1?1?1?1?1

#Linux Shadow Cracking

# Identify the hash type from prefix
# $1$  = md5crypt (mode 500)
# $5$  = sha256crypt (mode 7400)
# $6$  = sha512crypt (mode 1800)
# $y$  = yescrypt (not yet supported by hashcat - use john)

# sha512crypt
hashcat -m 1800 shadow.txt rockyou.txt -w 3

# md5crypt
hashcat -m 500 shadow.txt rockyou.txt

# sha256crypt
hashcat -m 7400 shadow.txt rockyou.txt -w 3

# Extract hashes from shadow file
awk -F: '$2 ~ /^\$/ {print $1":"$2}' /etc/shadow > hashes.txt

#Archive & File Cracking

# 7-Zip
7z2john archive.7z > 7z.hash
# Clean the hash (remove filename prefix if needed)
hashcat -m 11600 7z.hash rockyou.txt

# RAR5
rar2john archive.rar > rar.hash
hashcat -m 13000 rar.hash rockyou.txt

# RAR3
hashcat -m 12500 rar3.hash rockyou.txt

# ZIP (PKZIP)
hashcat -m 17200 zip.hash rockyou.txt    # PKZIP compressed
hashcat -m 17210 zip.hash rockyou.txt    # PKZIP uncompressed
hashcat -m 17220 zip.hash rockyou.txt    # PKZIP compressed (multi-file)
hashcat -m 17225 zip.hash rockyou.txt    # PKZIP mixed
hashcat -m 13600 zip.hash rockyou.txt    # WinZip AES

# PDF
hashcat -m 10400 pdf.hash rockyou.txt    # PDF 1.1-1.3
hashcat -m 10500 pdf.hash rockyou.txt    # PDF 1.4-1.6
hashcat -m 10600 pdf.hash rockyou.txt    # PDF 1.7 L3
hashcat -m 10700 pdf.hash rockyou.txt    # PDF 1.7 L8

# MS Office
hashcat -m 9600 office.hash rockyou.txt  # Office 2013+
hashcat -m 9500 office.hash rockyou.txt  # Office 2010
hashcat -m 9400 office.hash rockyou.txt  # Office 2007
hashcat -m 9700 office.hash rockyou.txt  # Office 97-03 MD5
hashcat -m 9800 office.hash rockyou.txt  # Office 97-03 SHA1

# KeePass
hashcat -m 13400 keepass.hash rockyou.txt -w 3

#Wordlists Reference

Wordlist Size Source
rockyou.txt 14M passwords Kali default, /usr/share/wordlists/
SecLists Various github.com/danielmiessler/SecLists
CrackStation 1.5B passwords crackstation.net
Weakpass Various tiers weakpass.com
Kaonashi 14M+ Real breach data
HIBP 600M+ haveibeenpwned.com/Passwords
hashesorg2019 11GB Breach compilation
Probable-Wordlists Various github.com/berzerk0

#Wordlist Generation

# CeWL - generate wordlist from website
cewl https://target.com -d 3 -m 5 -w cewl.txt

# CeWL with email scraping
cewl https://target.com -d 3 -m 5 -w cewl.txt -e --email_file=emails.txt

# Username mangling for passwords
# john, John, JOHN, john123, John!, etc.
cat users.txt | hashcat --stdout -r best64.rule > user_passwords.txt

# crunch - pattern-based generation
crunch 8 8 -t @@@@%%%% -o wordlist.txt
# @ = lowercase, , = uppercase, % = digit, ^ = special

# CUPP - Common User Passwords Profiler
cupp -i  # Interactive - build target profile

# Mentalist - GUI wordlist generator
# Configure base words + rules visually

# hashcat stdout mode (apply rules without cracking)
hashcat --stdout wordlist.txt -r best64.rule > expanded.txt
hashcat --stdout wordlist.txt -r best64.rule -r toggles1.rule > expanded.txt

#Targeted Wordlist Strategy

# 1. Build company-specific wordlist
# Gather: company name, products, locations, seasons, years
echo -e "CompanyName\nProduct1\nCity\nSummer\nWinter" > base.txt

# 2. Expand with rules
hashcat --stdout base.txt -r best64.rule > company_expanded.txt

# 3. Add common passwords
cat rockyou-top10k.txt company_expanded.txt > target_wordlist.txt

# 4. Sort and deduplicate
sort -u target_wordlist.txt -o target_wordlist.txt

#Troubleshooting

#Common Errors

# "Token length exception"
# Hash format is wrong or mode mismatch
# Check hash format and -m mode

# "No hashes loaded"
# Wrong mode or malformed hash
hashcat --identify hash.txt  # identify correct mode

# "Separator unmatched"
# Hash contains colon but format expects different separator
hashcat -m 1000 hash.txt --separator=':'

# "All hashes found in potfile"
# Already cracked - view with --show
hashcat -m 1000 hash.txt --show
# Or disable potfile
hashcat -m 1000 hash.txt wordlist.txt --potfile-disable

# "Insufficient memory"
# Reduce workload or use smaller wordlist
-w 1 or -n 8

# "CL_OUT_OF_RESOURCES"
# GPU overloaded
-w 1 -n 8 -u 32

# Device driver warning
# Update GPU drivers
# Or use --force (not ideal)

#Potfile Management

# Default potfile location
# ~/.local/share/hashcat/hashcat.potfile (Linux)
# %APPDATA%/hashcat/hashcat.potfile (Windows)

# Show cracked from potfile
hashcat -m 1000 hash.txt --show

# Show uncracked
hashcat -m 1000 hash.txt --left

# Custom potfile
hashcat -m 1000 hash.txt wordlist.txt --potfile-path=/tmp/custom.pot

# Disable potfile
hashcat -m 1000 hash.txt wordlist.txt --potfile-disable

# Remove potfile (start fresh)
rm ~/.local/share/hashcat/hashcat.potfile

#Useful One-Liners

# Quick benchmark of common modes
for m in 0 100 1000 1400 1800 3200 5600 13100; do
  hashcat -b -m $m 2>/dev/null | tail -1
done

# Extract hashes from secretsdump output (NTLM only)
awk -F: '{print $4}' secretsdump.txt | sort -u > ntlm_only.txt

# Extract username:NTLM pairs
awk -F: '{print $1":"$4}' secretsdump.txt > user_ntlm.txt

# Count unique hashes
sort -u hashes.txt | wc -l

# Remove blank/LM hashes (aad3b435...)
grep -v 'aad3b435b51404eeaad3b435b51404ee' hashes.txt > filtered.txt

# Convert hashcat potfile output to user:password
# From: hash:password
# With: user:hash file
while IFS=: read -r hash pass; do
  user=$(grep -m1 "$hash" user_hash.txt | cut -d: -f1)
  echo "$user:$pass"
done < potfile_results.txt

#Also See

#Cyber Aurelien Guidi