Skip to content

Instantly share code, notes, and snippets.

@eckozero
Last active August 29, 2015 14:11
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save eckozero/d56b32b3bb62b0dcf96b to your computer and use it in GitHub Desktop.
Save eckozero/d56b32b3bb62b0dcf96b to your computer and use it in GitHub Desktop.
Quick and dirty passkey generator written in Python
#!/usr/bin/env python
#
# Usage like
# python keygen.py n (where n is the length of the passkey required)
import random, string, sys
key_length = str(sys.argv[1])
alphabet = []
alphabet2 = []
symbols = []
passkey = []
YES_NO = ["yes", "y", "no", "n"]
for char in string.ascii_lowercase:
alphabet.append(char)
for char in string.ascii_uppercase:
alphabet2.append(char)
for char in string.punctuation:
symbols.append(char)
def generate_passkey(key_length):
"""Generates a random passkey with a length equal to the "key_length" arg"""
value_invalid = True
if int(key_length) < 14:
print "WARNING:"
print "Cannot guarantee a secure password with so few characters."
print "Please consider running again with at least 14 characters.\n"
proceed = raw_input("Proceed? Y/N: ")
if proceed.lower() not in YES_NO:
print "\nExiting"
else:
if proceed[0].lower() == "y":
print "Proceeding. Please be aware that passkey may not be secure\n"
else:
print "Exiting. Please run again with 14 or more characters"
value_invalid = False
while value_invalid == True:
passkey_length = key_length
#check integer selected
try:
val = int(passkey_length)
value_invalid = False
except ValueError:
print "Not a number, please use format './filename.py {length of key}",
print "e.g. './keygen.py 16' for a 16 digit key"
value_invalid = True
if value_invalid == True:
sys.exit(0)
else:
for each in range(0, int(passkey_length)):
random_number = random.randint(0,4)
if random_number == 0:
passkey.append(alphabet[random.randint(0,25)])
if random_number == 1:
passkey.append(alphabet2[random.randint(0,25)])
if random_number == 2:
passkey.append(str(random.randint(0,9)))
if random_number == 3:
passkey.append(symbols[random.randint(0, 31)])
print "".join(passkey)
else:
sys.exit(0)
generate_passkey(key_length)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment