### Common Hashcat Switches:
1. **`-m` (Hash Type):**
Specifies the type of hash being cracked. Hashcat supports many hash types (e.g., NTLM, MD5, SHA-1), and each type has a unique identifier.
- Example: `-m 1000` for NTLM hashes, `-m 0` for MD5, `-m 1800` for SHA-512.
2. **`-a` (Attack Mode):**
Defines the attack mode to use. Hashcat supports several attack modes:
- `-a 0`: Straight (Dictionary) attack.
- `-a 1`: Combination attack (merging two wordlists).
- `-a 3`: Mask attack (brute-force with a mask).
- `-a 6`: Hybrid Wordlist + Mask.
- `-a 7`: Hybrid Mask + Wordlist.
3. **`-o` (Output File):**
Specifies the file to write cracked passwords to.
- Example: `-o cracked.txt`.
4. **`-r` (Rules File):**
Applies rules to modify or transform words from a wordlist. Rules can manipulate words to test variations (e.g., adding numbers or changing letter case).
- Example: `-r rules/best64.rule`.
5. **`--force`:**
Forces Hashcat to ignore warnings (e.g., compatibility issues with certain hardware). Use cautiously, as it can cause errors or crashes.
6. **`--session` (Session Name):**
Names a session to resume it later if the cracking process is interrupted. This is useful for long-running attacks.
- Example: `--session mysession`.
7. **`-w` (Workload Profile):**
Sets the workload profile for the GPU, which affects speed and responsiveness:
- `-w 1`: Low workload (low power, useful if you want to keep your system responsive).
- `-w 3`: High workload (high power, fastest cracking, less responsive).
8. **`-i` (Incremental Mode):**
Enables incremental mode, allowing Hashcat to incrementally increase the length of the password candidates.
- Often used with a mask attack (`-a 3`).
9. **`--increment-min` and `--increment-max`:**
Sets the minimum and maximum password lengths when using incremental mode.
- Example: `--increment-min=4 --increment-max=8`.
10. **`-O` (Optimized Kernel):**
Enables optimized kernel, which is faster but restricts the maximum password length.
- Example: `-O` for cracking shorter passwords.
11. **`--status`:**
Displays the status of the cracking process periodically, showing progress, speed, and other useful information.
12. **`--potfile-path`:**
Specifies the path to the potfile (file that stores cracked passwords). Useful to maintain different potfiles for different projects.
- Example: `--potfile-path cracked.pot`.