31 lines
987 B
Python
31 lines
987 B
Python
import random
|
|
import string
|
|
from passlib.pwd import genword
|
|
|
|
def load_wordlist(filepath):
|
|
"""Loads the word list from a file."""
|
|
with open(filepath, 'r') as file:
|
|
words = file.read().splitlines()
|
|
return words
|
|
|
|
def generate_random_password(length=12):
|
|
"""Generates a random password using passlib."""
|
|
return genword(length=length)
|
|
|
|
def generate_pronounceable_password(length=12):
|
|
"""Generates a pronounceable password."""
|
|
vowels = 'aeiou'
|
|
consonants = ''.join(set(string.ascii_lowercase) - set(vowels))
|
|
password = []
|
|
for _ in range(length // 2):
|
|
password.append(random.choice(consonants))
|
|
password.append(random.choice(vowels))
|
|
return ''.join(password)
|
|
|
|
def generate_passphrase(num_words=4, filepath='wordlist.txt'):
|
|
"""Generates a passphrase using words from an external file."""
|
|
wordlist = load_wordlist(filepath)
|
|
password = '-'.join(random.choice(wordlist) for _ in range(num_words))
|
|
return password
|
|
|