hashsmith-cli
v1.0.1
Published
Modular toolkit for encoding, hashing, and cracking.
Maintainers
Readme
_ _ _ ____ _ _ _
| | | | __ _ ___| |__ / ___| _ __ ___ (_) |_| |__
| |_| |/ _` / __| '_ \\___ \| '_ ` _ \| | __| '_ \
| _ | (_| \__ \ | | |___) | | | | | | | |_| | | |
|_| |_|\__,_|___/_| |_|____/|_| |_| |_|_|\__|_| |_|Hashsmith
Hashsmith is a modular, terminal-first toolkit for encoding, decoding, hashing, cracking, and identification. It’s designed for security-focused workflows, quick experiments, and automation in scripts or pipelines.
Highlights ⚡
- Clean CLI with guided interactive mode
- Extensive encoding/decoding support (base* formats, morse, url, classical ciphers, and more)
- Modern hash support (MD5/SHA/NTLM/Bcrypt/Argon2/Scrypt, etc.)
- Identify mode for best-guess detection of encoding and hash types
- File input/output and clipboard copy support
- Themed UI with Rich
Installation 🔐
From source
pip install -r requirements.txtRun as module
python -m hashsmith --helpQuick Start ⚡
hashsmith encode -t base64 -i "hello"
hashsmith decode -t base64 -i "aGVsbG8="
hashsmith hash -t sha256 -i "secret" -c
hashsmith identify -i "aGVsbG8="Global Options 🛡️
-N,--no-banner: Disable banner-T,--theme: Accent color (cyan, green, magenta, blue, yellow, red, white)-A,--help-all: Show help for all commands-id,--identify: Shortcut for identify (use with-i/-f)
Common Input/Output Options 🧬
These options are shared across commands that accept input and output:
-i,--text: Text input-f,--file: Read input from file-o,--out: Write output to file-c,--copy: Copy output to clipboard
Commands 🛡️
1) Encode
Encode text with a selected algorithm.
Usage
hashsmith encode -t <type> [-i <text> | -f <file>] [-o <file>] [-c]Examples
hashsmith encode -t base64 -i "hello"
hashsmith encode -t caesar -s 5 -f input.txt -o output.txt
hashsmith encode -t hex -i "hello" -c2) Decode
Decode text with a selected algorithm.
Usage
hashsmith decode -t <type> [-i <text> | -f <file>] [-o <file>] [-c]Examples
hashsmith decode -t base64 -i "aGVsbG8="
hashsmith decode -t morse -i ".... . .-.. .-.. ---"
hashsmith decode -t hex -i "68656c6c6f" -c3) Hash
Hash text using a selected algorithm.
Usage
hashsmith hash -t <type> [-i <text> | -f <file>] [--salt <s>] [--salt-mode prefix|suffix] [-o <file>] [-c]Examples
hashsmith hash -t sha256 -i "hello"
hashsmith hash -t md5 -i "secret" -s "pepper" -S suffix
hashsmith hash -t sha256 -i "hello" -c4) Crack
Crack hashes using dictionary or brute-force attacks.
Usage
hashsmith crack -t <type|auto> -H <hash> -M <dict|brute> [options]Examples
hashsmith crack -t md5 -H 5f4dcc3b5aa765d61d8327deb882cf99 -M dict -w wordlists/common.txt
hashsmith crack -t sha1 -H 2aae6c35c94fcfb415dbe95f408b9ce91ee846ed -M brute -n 1 -x 4
hashsmith crack -t md5 -H 5f4dcc3b5aa765d61d8327deb882cf99 -M dict -w wordlists/common.txt -c5) Identify
Detect probable encoding and hash types. Prioritizes reliable results and avoids false positives for raw text.
Usage
hashsmith identify -i <text>
hashsmith identify -f <file>
hashsmith -id -i <text>Examples
hashsmith identify -i "aGVsbG8="
hashsmith identify -i 5f4dcc3b5aa765d61d8327deb882cf99
hashsmith -id -i "aGVsbG8="6) Interactive Mode
Guided prompt flow for encoding/decoding/hashing/cracking/identify.
Usage
hashsmith
hashsmith interactiveAlgorithms 🔐
Hashing Algorithms
| Category | Algorithms | | --- | --- | | Cryptographic | md5, md4, sha1, sha224, sha256, sha384, sha512, sha3_224, sha3_256, sha3_512 | | Modern/Alt | blake2b, blake2s, ntlm, mysql323, mysql41 | | Password | bcrypt, argon2, scrypt, mssql2000, mssql2005, mssql2012, postgres |
Encoding/Decoding Algorithms
| Category | Algorithms | | --- | --- | | Base Encodings | base64, base64url, base32, base85, base58 | | Numeric | hex, binary, decimal, octal | | Text/URL | morse, url, unicode | | Ciphers | caesar, rot13, vigenere, xor, atbash, baconian, leet, reverse, railfence, polybius | | Esoteric | brainf*ck |
Cracking Modes
| Mode | Description | | --- | --- | | dict | Dictionary attack using a wordlist | | brute | Brute-force with a chosen charset and length range |
Clipboard Support 🔐
When -c/--copy is set, output is copied to the clipboard using platform-native tools:
- macOS:
pbcopy - Windows:
clip - Linux:
xclip,xsel, orwl-copy
Themes 🛡️
Set the accent color globally:
hashsmith -T magentaTroubleshooting 🧬
- If hashing output in
base58fails, ensure the hash is hex-based. - For dictionary cracking, validate your wordlist path.
Security Notice 🛡️
Hashsmith is intended for educational and authorized security testing only. You are responsible for compliance with applicable laws.
License
See LICENSE. Hashsmith is a modular, terminal-based Swiss Army knife for encoding, decoding, hashing, and password cracking. Built for security enthusiasts 🛠️🔐
Features
- Encoding/Decoding: Base64, Hex, Binary, Morse, URL, Caesar, ROT13
- Hashing: MD5, SHA-1, SHA-256, SHA-512
- Cracking: Dictionary attack and basic brute-force
- File input/output support
- Optional salt support for hashing and cracking
Installation
- Create a virtual environment (optional)
- Install dependencies:
pip install -r requirements.txtUsage
Run via module:
python -m hashsmith --helpEncode
python -m hashsmith encode --type base64 --text "hello"
python -m hashsmith encode --type caesar --shift 5 --file input.txt --out output.txt
python -m hashsmith encode --type hex --text "hello" --copyDecode
python -m hashsmith decode --type base64 --text "aGVsbG8="
python -m hashsmith decode --type morse --text ".... . .-.. .-.. ---"
python -m hashsmith decode --type hex --text "68656c6c6f" --copyHash
python -m hashsmith hash --type sha256 --text "hello"
python -m hashsmith hash --type md5 --text "secret" --salt "pepper" --salt-mode suffix
python -m hashsmith hash --type sha256 --text "hello" --copyCrack
python -m hashsmith crack --type md5 --hash 5f4dcc3b5aa765d61d8327deb882cf99 --mode dict --wordlist wordlists/common.txt
python -m hashsmith crack --type sha1 --hash 2aae6c35c94fcfb415dbe95f408b9ce91ee846ed --mode brute --min-len 1 --max-len 4
python -m hashsmith crack --type md5 --hash 5f4dcc3b5aa765d61d8327deb882cf99 --mode dict --wordlist wordlists/common.txt --copyNotes
- Dictionary cracking uses the provided wordlist file.
- Brute-force is intentionally small by default; adjust
--min-lenand--max-lencarefully.
Roadmap
- Multithreading for cracking
- Additional encodings and hash types
- Better progress indicators
