β‘ A fast, modular hash cracking tool written in Rust π¦ with a Lua π rule engine
- π Supports multiple hash algorithms
- β‘ Wordlist-based attack mode
- π₯ Mask-based brute-force attack
- π§ Lua-powered rule engine (built-in + custom)
- π¨ Colored CLI output
- π₯οΈ Clean CLI (Clap powered)
- π§ Modular and extensible architecture
If Rust is not installed:
curl https://sh.rustup.rs -sSf | shReload shell:
source $HOME/.cargo/envVerify installation:
rustc --version
cargo --versiongit clone https://github.com/Nazi404/Hashcaust.git
cd Hashcaustcargo build --releaseπ Binary location:
target/release/hashcaustcargo run -- <hash> -t <type> -m <mode> [options]./target/release/hashcaust <hash> -t <type> -m <mode> [options]cp target/release/hashcaust /usr/local/bin/hashcaustNow you can run:
hashcaust <hash> -t <type> -m <mode>mkdir -p ~/.local/bin
cp target/release/hashcaust ~/.local/bin/Add to PATH:
echo 'export PATH=$HOME/.local/bin:$PATH' >> ~/.bashrc
source ~/.bashrcNow run globally:
hashcaust <hash> -t <type> -m <mode>hashcaust <hash> -t <type> -m wordlist -w <wordlist>hashcaust 5e884898da28047151d0e56f8dc6292773603d0d \
-t sha1 \
-m wordlist \
-w rockyou.txthashcaust <hash> -t <type> -m brute -i <mask>hashcaust <hash> -t md5 -m brute -i ?l?l?d?d| Pattern | Description | Characters |
|---|---|---|
?l |
Lowercase letters | a-z |
?u |
Uppercase letters | A-Z |
?d |
Digits | 0-9 |
?s |
Symbols | !@#$%^&*... |
?a |
All printable ASCII | Full range |
π‘ Any character that is not a
?token is treated as a literal β only that exact character is placed at that position.
| Mask | What it generates |
|---|---|
?l?l?l?l |
All 4-letter lowercase combos |
?d?d?d?d |
All 4-digit PINs (0000β9999) |
Pass?d?d |
Pass00 β Pass99 |
?u?l?l?l?d |
Capital + 3 lowercase + digit |
?a?a?a |
All 3-char printable ASCII |
-
MD Family
md4md5ntlm(MD4 over UTF-16LE)
-
SHA Family
sha1sha224sha256sha384sha512
-
SHA-3 Family
sha3_224sha3_256sha3_384sha3_512
-
BLAKE Family
blake2bblake2sblake3
argon2β PHC string format ($argon2id$v=19$...)bcryptβ standard bcrypt format ($2b$12$...)
HashCaust includes a Lua-powered rule engine that transforms each candidate before hashing it. This lets you crack more hashes from a single wordlist without duplicating files.
Rules are defined in src/rules/rules.lua and loaded at runtime.
Add -r <rule_name> to any command:
hashcaust <hash> -t <type> -m <mode> [attack options] -r <rule># Apply leet substitution to every word in rockyou
hashcaust <hash> -t sha256 -m wordlist -w rockyou.txt -r leet
# Capitalize every brute-force candidate before hashing
hashcaust <hash> -t md5 -m brute -i ?l?l?l?l?l -r capitalize
# Reverse every wordlist entry
hashcaust <hash> -t ntlm -m wordlist -w wordlist.txt -r reverse| Rule | Description | Example Input | Example Output |
|---|---|---|---|
capitalize |
First letter upper, rest lower | hELLO |
Hello |
uppercase |
All letters uppercase | hello |
HELLO |
lowercase |
All letters lowercase | HELLO |
hello |
reverse |
Reverse the string | hello |
olleh |
togglecase |
Swap case of every character | Hello |
hELLO |
leet |
Convert letters to leet substitutes | password |
p455w0rd |
| Letter | Leet | Letter | Leet | |
|---|---|---|---|---|
a / A |
4 |
s / S |
5 |
|
e / E |
3 |
t / T |
7 |
|
i / I |
1 |
g / G |
6 |
|
o / O |
0 |
b / B |
8 |
|
z / Z |
2 |
You can write your own rules in Lua and add them to src/rules/rules.lua.
function your_rule_name(str)
-- transform str
return result
end
β οΈ The function name is case-sensitive and must exactly match what you pass to-r.
Append 123 to every candidate:
function append123(str)
return str .. "123"
endDouble the string:
function double(str)
return str .. str
endReplace spaces with underscores:
function nospace(str)
return str:gsub(" ", "_")
endAdd ! at the end (common password pattern):
function exclaim(str)
return str .. "!"
endStrip leading/trailing whitespace:
function trim(str)
return str:match("^%s*(.-)%s*$")
endAfter adding the function to src/rules/rules.lua:
hashcaust <hash> -t md5 -m wordlist -w wordlist.txt -r append123
hashcaust <hash> -t sha1 -m brute -i ?l?l?l?l -r double
hashcaust <hash> -t sha256 -m wordlist -w rockyou.txt -r exclaim# MD5 β wordlist
hashcaust 5f4dcc3b5aa765d61d8327deb882cf99 -t md5 -m wordlist -w rockyou.txt
# SHA-1 β wordlist with leet rule
hashcaust 5e884898da28047151d0e56f8dc6292773603d0d -t sha1 -m wordlist -w rockyou.txt -r leet
# SHA-256 β brute force, 4 lowercase chars
hashcaust <hash> -t sha256 -m brute -i "?l?l?l?l"
# NTLM β wordlist with capitalize rule
hashcaust <hash> -t ntlm -m wordlist -w wordlist.txt -r capitalize
# bcrypt β wordlist
hashcaust '$2b$12$...' -t bcrypt -m wordlist -w passwords.txt
# Argon2 β wordlist (PHC format hash)
hashcaust '$argon2id$v=19$m=65536...' -t argon2 -m wordlist -w wordlist.txt
# Brute with literal prefix
hashcaust <hash> -t sha512 -m brute -i "admin?d?d?d"Hashcaust/
βββ src/
β βββ main.rs # CLI parsing and dispatch
β βββ attack/
β β βββ mod.rs # Module exports
β β βββ wordlist.rs # Wordlist attack engine
β β βββ brute.rs # Brute-force + mask parser
β βββ hash/
β β βββ mod.rs # Module exports
β β βββ md5.rs
β β βββ sha256.rs
β β βββ ... # One file per algorithm
β βββ rules/
β βββ rules.lua # β All rules live here (built-in + custom)
β βββ capitalize.lua
β βββ leet.lua
β βββ lowercase.lua
β βββ reverse.lua
β βββ togglecase.lua
β βββ uppercase.lua
βββ Cargo.toml
βββ README.md
- β‘ Fast hashes β direct byte comparison
- π’ Slow hashes (argon2, bcrypt) β use built-in verification β significantly slower
- π Brute-force search space grows exponentially with mask length
- π Rules are applied before hashing β one rule per run
For educational & security research purposes only. Do NOT use for illegal activities β The author is not responsible for any misuse of this tool.
William Steven β GitHub @Nazi404
"Built for those who understand what's under the hood."
This project is licensed under the GNU General Public License v3.0 (GPL-3.0) β see the LICENSE file for details.
If you like this project, give it a β on GitHub!