48 lines
1.1 KiB
Python
Executable File
48 lines
1.1 KiB
Python
Executable File
#!/usr/bin/env python3
|
|
import string
|
|
import random
|
|
from pathlib import Path
|
|
|
|
MAX_WORD_LEN = 10
|
|
MIN_WORD_LEN = 6
|
|
WORDLIST_PATH = Path(__file__).parent / "wordlists/words_alpha.txt"
|
|
|
|
def check_repeating_chars(word):
|
|
last_char = None
|
|
for c in word:
|
|
if c == last_char:
|
|
return True
|
|
else:
|
|
last_char = c
|
|
|
|
return False
|
|
|
|
def gen_pass(dict_file=WORDLIST_PATH):
|
|
wordlist = []
|
|
with open(dict_file, 'r') as f:
|
|
lines = f.read().splitlines()
|
|
for i in range(len(lines)):
|
|
if (not (MIN_WORD_LEN <= len(lines[i]) <= MAX_WORD_LEN)
|
|
or check_repeating_chars(lines[i])):
|
|
continue
|
|
|
|
wordlist.append(lines[i][0].upper() + lines[i][1:])
|
|
|
|
other_chars = [string.punctuation, string.digits, string.digits]
|
|
random.shuffle(other_chars)
|
|
|
|
return (
|
|
random.choice(wordlist) +
|
|
random.choice(other_chars[0]) +
|
|
random.choice(wordlist) +
|
|
random.choice(other_chars[1]) +
|
|
random.choice(wordlist) +
|
|
random.choice(other_chars[2])
|
|
)
|
|
|
|
def main():
|
|
print(gen_pass())
|
|
|
|
if __name__ == '__main__':
|
|
main()
|