1. identify hash type correctly
2. use fastest targeted attack first
3. reuse cracked passwords to build better candidates
4. save potfiles / restore points
5. only brute-force when masks are justified
Bad workflow:
- giant brute force with no model
- random monster wordlists first
Attack ladder
Hashcat
straight → rules → combinator → hybrid → mask
John
single → wordlist+rules → incremental
Use masks when:
- structure is known
- policy is constrained
- previous cracks reveal a pattern
Identify correctly
hashid hash.txt
hashcat --example-hashesjohn --list=formats | head
Never rely on length alone when formats collide.
02Hashcat Deep Dive
Core attack modes
-a 0 straight / dictionary
-a 1 combinator
-a 3 mask / brute force
-a 6 wordlist + mask
-a 7 mask + wordlist
-r rules
--increment variable-length masks
High-value examples
hashcat -m 1000 -a 0 hashes rockyou.txt
hashcat -m 1000 -a 0 hashes rockyou.txt -r rules/best64.rule
hashcat -m 1000 -a 3 hashes ?u?l?l?l?l?d?dhashcat -m 1000 -a 6 hashes words.txt ?d?dhashcat -m 1000 -a 7 hashes ?u?l?l?l words.txt
Custom charsets / masks
-1 ?l?d
-2 _-!@
hashcat -a 3 hashes -1 ?l?d ?1?1?1?1?1?1
Model from policy:
first upper + 5 lowers + 2 digits
→ ?u?l?l?l?l?l?d?d
03John the Ripper Deep Dive
Best modes
john hashes.txt
john --single hashes.txt
john --wordlist=rockyou.txt --rules hashes.txt
john --incremental hashes.txt
john --show hashes.txt
PACK# analyze cracked passwords, generate masks/rulesmaskprocessor# fast mask word generationprinceprocessor# word chaining / passphrase candidatescrunch# exhaustive lists when search space is narrow
Mutation helpers
best64.ruledive.ruleOneRuleToRuleThemAllPantagrule# larger, breach-derived rule sets
Start small and smart before huge rule explosions.