Incremental / Brute Force Mode
Incremental mode generates all possible character combinations up to a specified length. It is the most thorough attack because it exhaustively tries every permutation, but it is also the slowest by many orders of magnitude.
Use incremental mode only as a last resort after wordlist, single, and rule-based attacks have failed. It is practical for passwords of 6-8 characters using a restricted charset (e.g., lowercase + digits) but infeasible for longer or more complex passwords.
Basic Usage
Default incremental (all printable ASCII)
1john --incremental hashes.txt
Exhaustively tries all 95 printable ASCII characters. Extremely slow beyond 7 characters.
Restrict to lowercase letters and digits
1john --incremental=LowerNum hashes.txt
Limit password length
1john --incremental --max-length=6 hashes.txt
Built-in Incremental Charsets
John ships with several optimized incremental character sets. The charset determines which characters are used at each position.
ASCII
All 95 printable ASCII characters (slowest).
Lower
Lowercase letters only (a-z).
Upper
Uppercase letters only (A-Z).
Alpha
All letters (a-z, A-Z).
LowerNum
Lowercase + 0-9.
UpperNum
Uppercase + 0-9.
Alnum
Letters + digits.
LanMan
Uppercase only; optimized for Windows LM hashes.
Digits
Numbers only (0-9).
Printable
Printable ASCII (default).
Search Space Size Examples
Understanding the combinatorial explosion helps you judge attack feasibility:
| Charset | Size | 6-char combos | 8-char combos |
|---|---|---|---|
| lowercase (a-z) | 26 | 308 million | 208 billion |
| lower+num | 36 | 1.8 billion | 2.8 trillion |
| alpha (a-zA-Z) | 52 | 19.7 billion | 53 trillion |
| alnum | 62 | 56.8 billion | 218 trillion |
| printable ASCII | 95 | 735 billion | 6.6 quadrillion |
Warning
When to Use Incremental Mode
As Last Resort
After all wordlist, rule, and hybrid attacks fail, try incremental for remaining short passwords.
Known Charset
If you know the target uses only digits or lowercase letters, incremental becomes tractable for 6-7 characters.
CTF Challenges
Many CTF flags are intentionally weak (5-6 chars) to make incremental feasible for demo purposes.
Optimizing Incremental Speed
Use --fork for CPU parallelism
1john --incremental=LowerNum --fork=8 hashes.txt
Use GPU-accelerated opencl version
1john --incremental:LowerNum --format=md5-opencl hashes.txt
Not all formats have OpenCL variants. Check john --list=formats for those ending in -opencl.
Restrict max length aggressively
1john --incremental --max-length=6 hashes.txt
Tip
--incremental=LanMan — it's optimized for the 7-character uppercase limitation of the LM algorithm.