Hashsmith CLI for encoding, decoding, hashing, and cracking
Project description
_ _ _ ____ _ _ _
| | | | __ _ ___| |__ / ___| _ __ ___ (_) |_| |__
| |_| |/ _` / __| '_ \\___ \| '_ ` _ \| | __| '_ \
| _ | (_| \__ \ | | |___) | | | | | | | |_| | | |
|_| |_|\__,_|___/_| |_|____/|_| |_| |_|_|\__|_| |_|
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.txt
Run as module
python -m hashsmith --help
Quick 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" -c
2) 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" -c
3) 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" -c
4) 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 -c
5) 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 interactive
Algorithms 🔐
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 magenta
Troubleshooting 🧬
- 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.txt
Usage
Run via module:
python -m hashsmith --help
Encode
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" --copy
Decode
python -m hashsmith decode --type base64 --text "aGVsbG8="
python -m hashsmith decode --type morse --text ".... . .-.. .-.. ---"
python -m hashsmith decode --type hex --text "68656c6c6f" --copy
Hash
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" --copy
Crack
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 --copy
Notes
- 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
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file hashsmith_cli-0.1.1.tar.gz.
File metadata
- Download URL: hashsmith_cli-0.1.1.tar.gz
- Upload date:
- Size: 29.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.10.19
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
400836c2a82c27897d494bfdf8290ce610c85add461f7bc2d99c92b641f6c0c3
|
|
| MD5 |
ea0d221fae62c53d08eeb3c89dc7ca4c
|
|
| BLAKE2b-256 |
3db907d61de6a04e59de0a0c2702ede06f17895d02bfbb7260b2383384a960f6
|
File details
Details for the file hashsmith_cli-0.1.1-py3-none-any.whl.
File metadata
- Download URL: hashsmith_cli-0.1.1-py3-none-any.whl
- Upload date:
- Size: 31.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.10.19
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f008338c8cfdc7abbf6ed1729e115a9a140745e85a2deeeda9c50577f80d3871
|
|
| MD5 |
2c7df31b44078b3fc9fe75eae093ace1
|
|
| BLAKE2b-256 |
0fe40a80d315ec0ead10ccbc944cef9aee70b65a96d164e31d48ca590cb7e8ab
|