-
Notifications
You must be signed in to change notification settings - Fork 0
/
diceware.py
39 lines (28 loc) · 1 KB
/
diceware.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
import random, string
def generate_password():
passwd = []
num = 3
# Generate a random number between 1 and 999
rand_num = str(random.randint(1, 999))
for w in range(num):
# Generate 5 random numbers between 1 and 6
roll = ''.join([str(random.randint(1, 6)) for _ in range(5)])
word = wl_dict[roll]
# Randomly capitalizes the current word
if random.randrange(2) == 1:
word = word.capitalize()
# Appends word to array
passwd.append(word)
# Generate a random special character
passwd.append(random.choice(string.punctuation))
# Concatenate the words, number, and special character to form the password
final_pw = ''.join(passwd) + rand_num
return final_pw
# Load the diceware wordlist
with open("diceware.txt", "r") as f:
wl = [line.strip() for line in f]
wl_dict = {}
for line in range(len(wl)):
l = wl[line].split("\t")
wl_dict[l[0]] = l[1]
print("Password = " + generate_password())