Combining passwords for brute force:

#!/bin/bash
 
# Comprueba que se han pasado tres argumentos al script
if [ "$#" -ne 3 ]; then
  echo "Usage: $0 <words> <combinations> <output_file>"
  exit 1
fi
 
# Asigna los argumentos a variables
WORDLIST="$1"
COMBINATIONS="$2"
FINAL_WORDLIST="$3"
 
# Procesa la wordlist y las combinaciones
while read -r line; do
  while read -r combo; do
    echo "${line}${combo}"
  done < "$COMBINATIONS"
done < "$WORDLIST" > "$FINAL_WORDLIST"
 
echo "New wordlist has been created: $FINAL_WORDLIST"

Convert a wordlist to its md5 equivalent (all passwords to md5):

while read -r password; do echo -n "$password" | openssl md5 | awk '{print $2}'; done < wordlist.txt > hashes_md5.txt

More efficient one:

import hashlib
import sys
 
def generate_md5_hash(input_file, output_file):
    try:
        with open(input_file, 'r') as f_in, open(output_file, 'w') as f_out:
            for line in f_in:
                password = line.strip()
                # Generate MD5 hash
                md5_hash = hashlib.md5(password.encode()).hexdigest()
                f_out.write(md5_hash + '\n')
        print(f"MD5 hashes have been successfully written to {output_file}")
    except FileNotFoundError:
        print(f"Error: The file {input_file} was not found.")
    except Exception as e:
        print(f"An unexpected error occurred: {e}")
 
if __name__ == "__main__":
    if len(sys.argv) != 3:
        print("Usage: python3 generate_md5.py <input_wordlist> <output_file>")
    else:
        input_file = sys.argv[1]
        output_file = sys.argv[2]
        generate_md5_hash(input_file, output_file)

Duplicate to x times each word of a wordlist

import sys
 
def repeat_words(wordlist_path, max_repeats, output_path):
    try:
        with open(wordlist_path, 'r') as file:
            words = file.readlines()
    except FileNotFoundError:
        print(f"File not found: {wordlist_path}")
        sys.exit(1)
 
    with open(output_path, 'w') as outfile:
        for word in words:
            word = word.strip()  # Remove any trailing whitespace or newline characters
            for i in range(1, max_repeats + 1):
                outfile.write(word * i + '\n')
 
if __name__ == "__main__":
    if len(sys.argv) != 4:
        print("Usage: python3 script.py /path/to/wordlist MAX_REPEATS output_wordlist")
        sys.exit(1)
 
    wordlist_path = sys.argv[1]
    max_repeats = int(sys.argv[2])
    output_path = sys.argv[3]
 
    repeat_words(wordlist_path, max_repeats, output_path)