crack_hashes.py
import hashlib from tqdm import tqdm # List of supported hash types hash_names = [ 'blake2b', 'blake2s', 'md5', 'sha1', 'sha224', 'sha256', 'sha384', 'sha3_224', 'sha3_256', 'sha3_384', 'sha3_512', 'sha512', ] def crack_hash(hash, wordlist, hash_type=None): """Crack a hash using a wordlist. Args: hash (str): The hash to crack. wordlist (str): The path to the wordlist. Returns: str: The cracked hash. """ hash_fn = getattr(hashlib, hash_type, None) if hash_fn is None or hash_type not in hash_names: # not supported hash type raise ValueError(f'[!] Invalid hash type: {hash_type}, supported are {hash_names}') # Count the number of lines in the wordlist to set the total total_lines = sum(1 for line in open(wordlist, 'r')) print(f"[*] Cracking hash {hash} using {hash_type} with a list of {total_lines} words.") # open the wordlist with open(wordlist, 'r') as f: # iterate over each line for line in tqdm(f, desc='Cracking hash', total=total_lines): if hash_fn(line.strip().encode()).hexdigest() == hash: return line if __name__ == "__main__": import argparse parser = argparse.ArgumentParser(description='Crack a hash using a wordlist.') parser.add_argument('hash', help='The hash to crack.') parser.add_argument('wordlist', help='The path to the wordlist.') parser.add_argument('--hash-type', help='The hash type to use.', default='md5') args = parser.parse_args() print() print("[+] Found password:", crack_hash(args.hash, args.wordlist, args.hash_type))Join 50,000+ Python Programmers & Enthusiasts like you!
Email address Subscribe This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.Ethical Hacking with Python EBook
Web Security with Python EBook
Cryptography with Python EBook
Practical Python PDF Processing EBook
Real-Time Traffic Monitoring System with YOLOv9 eBook
Mastering YOLO: Build an Automatic Number Plate Recognition System
© 2026 The Python Code. All rights reserved.