FOR AUTHORIZED SECURITY TESTING ONLY
This tool is designed exclusively for:
- Authorized penetration testing with written permission
- Digital forensics and incident response
- Educational purposes in controlled environments
- Security research with proper authorization
- Password policy compliance testing
- Bug bounty programs with proper scope
UNAUTHORIZED PASSWORD CRACKING IS ILLEGAL AND UNETHICAL.
Users are responsible for complying with all applicable laws and regulations. The authors assume no responsibility for misuse of this tool.
- Advanced identification engine with confidence scoring
- 20+ hash types including MD5, SHA family, NTLM, bcrypt, scrypt, Argon2
- Entropy analysis and pattern recognition
- Batch processing for multiple hashes
- Format validation and charset analysis
- Dictionary attacks with threading support
- Rule-based attacks with custom rule sets
- Brute force attacks with configurable charset
- Mask attacks with pattern support (?l?u?d?s)
- Hybrid attacks combining multiple methods
- Combinator attacks for wordlist combinations
- Statistical analysis of hash collections
- Entropy calculations and randomness testing
- Pattern detection in hash sets
- Crack difficulty estimation with time predictions
- Performance benchmarking of hash functions
- Automatic downloads of popular wordlists (rockyou, SecLists, etc.)
- Local storage in project wordlists/ folder
- Auto-detection of available wordlists for cracking
- Wordlist validation and statistics
- Custom wordlist generation with rules
- Wordlist merging and deduplication
- Clear command for easy cleanup
- Intuitive command structure with subcommands
- Colored output for better readability
- Progress tracking with real-time statistics
- Detailed reporting with JSON export
- Configurable threading for performance tuning
pip install hashkitgit clone https://github.com/abderrahimghazali/hashkit.git
cd hashkit
pip install -e .git clone https://github.com/abderrahimghazali/hashkit.git
cd hashkit
pip install -e ".[dev]"# Identify a single hash
hashkit identify 5d41402abc4b2a76b9719d911017c592
# Verbose identification with details
hashkit identify -v aaf4c61ddcc5e8a2dabede0f3b482cd9aea9434d# Auto-detect wordlist from local wordlists/ folder
hashkit crack 5d41402abc4b2a76b9719d911017c592
# Dictionary attack with specific wordlist
hashkit crack 5d41402abc4b2a76b9719d911017c592 -w rockyou.txt
# Specify hash type and attack mode
hashkit crack -t md5 -m dictionary -w wordlist.txt -threads 8 hash_value
# Rule-based attack
hashkit crack hash_value -w wordlist.txt -m rule_based
# Brute force attack (short hashes only)
hashkit crack hash_value -m bruteforce --max-length 4
# Mask attack
hashkit crack hash_value -m mask --mask "?l?l?l?d?d"# Analyze hash file
hashkit analyze hashes.txt
# Generate detailed report
hashkit analyze hashes.txt -o analysis_report.json
# Estimate crack difficulty
hashkit difficulty 5d41402abc4b2a76b9719d911017c592# List cached wordlists (stored in local wordlists/ folder)
hashkit wordlist list
# Download popular wordlists to local wordlists/ folder
hashkit wordlist download rockyou
hashkit wordlist download common-passwords
hashkit wordlist download john
hashkit wordlist download darkweb2017
# Clear all cached wordlists
hashkit wordlist clear
# Validate wordlist
hashkit wordlist validate /path/to/wordlist.txt| Hash Type | Length | Security | Use Cases |
|---|---|---|---|
| MD5 | 32 | ❌ Broken | Legacy systems, checksums |
| SHA1 | 40 | Git (legacy), old systems | |
| SHA224 | 56 | ✅ Secure | General purpose |
| SHA256 | 64 | ✅ Secure | Cryptocurrency, modern apps |
| SHA384 | 96 | ✅ Secure | High security applications |
| SHA512 | 128 | ✅ Secure | Password hashing, security |
| SHA3-* | Variable | ✅ Secure | Next-gen applications |
| BLAKE2b/s | Variable | ✅ Secure | High performance hashing |
| NTLM | 32 | ❌ Weak | Windows authentication |
| bcrypt | Variable | ✅ Very Secure | Password storage |
| scrypt | Variable | ✅ Very Secure | Password storage |
| Argon2 | Variable | ✅ Very Secure | Modern password storage |
| PBKDF2 | Variable | ✅ Secure | Key derivation |
Uses wordlists to test common passwords:
# Auto-detect wordlist from wordlists/ folder
hashkit crack hash_value
# Use specific wordlist
hashkit crack hash_value -w rockyou.txt -m dictionaryApplies transformation rules to wordlist entries:
hashkit crack hash_value -w wordlist.txt -m rule_basedCommon rules:
:- No changel- Lowercaseu- Uppercasec- Capitalizer- Reverse$1- Append "1"^@- Prepend "@"
Tests all possible combinations up to specified length:
hashkit crack hash_value -m bruteforce --max-length 6Uses patterns to generate candidates:
hashkit crack hash_value -m mask --mask "?u?l?l?l?d?d"Mask characters:
?l- Lowercase letter (a-z)?u- Uppercase letter (A-Z)?d- Digit (0-9)?s- Symbol (!@#$%...)
Combines multiple attack methods automatically:
hashkit crack hash_value -w wordlist.txt -m hybridHashKit stores wordlists locally in the project directory:
hashkit/
├── wordlists/ # Auto-created wordlist storage
│ ├── rockyou.txt # Downloaded wordlists
│ ├── john.txt
│ └── custom.txt # Your personal wordlists
├── hashkit/ # Source code
└── README.md
When no -w option is specified, HashKit automatically searches the wordlists/ folder:
- rockyou (preferred - 14M+ passwords)
- common-passwords (1M most common)
- john (John the Ripper default)
- darkweb2017 (10K from breaches)
- Largest available (if none of above found)
- ✅ Project-local: Wordlists travel with your project
- ✅ Version control: Add to .gitignore to avoid committing large files
- ✅ Auto-detection: No need to specify
-wfor common use cases - ✅ Easy cleanup:
hashkit wordlist clearremoves all cached wordlists
HashKit supports configuration through:
- Command-line arguments
- Environment variables
- Configuration files
export HASHKIT_CACHE_DIR="/custom/cache/path"
export HASHKIT_DEFAULT_THREADS=8
export HASHKIT_MAX_WORDLIST_SIZE=1000000000Adjust thread count based on your system:
# Use all CPU cores
hashkit crack hash_value -w wordlist.txt --threads $(nproc)
# Conservative threading
hashkit crack hash_value -w wordlist.txt --threads 4For large wordlists, HashKit uses chunked processing to manage memory efficiently.
Install GPU acceleration support:
pip install "hashkit[gpu]"- ✅ Only use on systems you own or have explicit permission to test
- ✅ Follow responsible disclosure for vulnerabilities
- ✅ Respect rate limits and system resources
- ✅ Document authorization and scope
- ❌ Never use for unauthorized access
- ❌ Never crack passwords without permission
- ❌ Never use for malicious purposes
- Use dedicated testing environments
- Secure storage of wordlists and results
- Regular updates of hash databases
- Proper logging and audit trails
- Fork the repository
- Create a feature branch
- Add tests for new functionality
- Ensure all tests pass
- Submit a pull request
# Run all tests
pytest
# Run with coverage
pytest --cov=hashkit
# Run specific test categories
pytest tests/test_identifier.py
pytest tests/test_cracker.py# Format code
black hashkit/
# Sort imports
isort hashkit/
# Lint code
flake8 hashkit/
# Type checking
mypy hashkit/"Wordlist not found" or "No wordlists available"
# Download popular wordlists to local wordlists/ folder
hashkit wordlist download rockyou
hashkit wordlist download john
hashkit wordlist download common-passwords
# List available wordlists
hashkit wordlist list"Hash type not identified"
# Use verbose mode for details
hashkit identify -v your_hash_here"Low performance"
# Increase thread count
hashkit crack hash_value -w wordlist.txt --threads 8
# Use smaller wordlists for testing"Memory issues with large wordlists" HashKit automatically chunks large wordlists. If issues persist, use smaller wordlists or increase available RAM.
# Enable debug logging
export HASHKIT_DEBUG=1
hashkit crack hash_value -w wordlist.txt- SecLists - Comprehensive security wordlists
- John the Ripper - Password cracking inspiration
- Hashcat - Advanced cracking techniques
- OWASP - Security best practices
- 🐛 Issues: GitHub Issues
- 💬 Discussions: GitHub Discussions
Remember: With great power comes great responsibility. Use HashKit ethically and legally.