57 lines
1.7 KiB
Python
57 lines
1.7 KiB
Python
import random
|
|
import string
|
|
|
|
|
|
def load_file(filename):
|
|
"""
|
|
We load a file and make a list out of it. Note that the same function is
|
|
used for both files (both adjectives and subjects). Functions should be
|
|
made as generic as possible.
|
|
|
|
There IS a problem you can fix, some logins will have spaces in them. Try
|
|
to remove them in this function!
|
|
"""
|
|
words = []
|
|
with open(filename, "r") as fp:
|
|
lines = fp.readlines()
|
|
for line in lines:
|
|
words.append(line.strip()) # what does strip() do, what does append() do? remember CTRL+Q!
|
|
return words
|
|
|
|
|
|
def generate_username():
|
|
"""
|
|
We'll generate a random pair of adjectives and subjects from two wordlists.
|
|
You NEED to have both files in you python project for this to work! Note
|
|
the capitalize method call to make it all prettier...
|
|
"""
|
|
adjectives = load_file("./adjectives.txt")
|
|
subjects = load_file("./subjects.txt")
|
|
adjective = random.choice(adjectives)
|
|
subject = random.choice(subjects)
|
|
username = adjective.capitalize() + subject.capitalize()
|
|
return username
|
|
|
|
|
|
def generate_password(length=10, complictated=True):
|
|
"""
|
|
We generate a password with default settings. You can overide these by
|
|
changing the arguments in the function call.
|
|
"""
|
|
password = ""
|
|
if complictated:
|
|
chars = string.ascii_letters + string.digits + string.punctuation
|
|
else:
|
|
chars = string.ascii_letters
|
|
for i in range(0, length):
|
|
password += random.choice(chars)
|
|
return password
|
|
|
|
|
|
if __name__ == "__main__":
|
|
# let's do some testing!
|
|
username_test = generate_username()
|
|
print(username_test)
|
|
password_test = generate_password()
|
|
print(password_test)
|