5,7 → 5,7 |
""" |
# Relevation Password Printer |
# |
# Copyright (c) 2011,2012 Toni Corvera |
# Copyright (c) 2011, Toni Corvera |
# All rights reserved. |
# |
# Redistribution and use in source and binary forms, with or without |
32,7 → 32,6 |
import random |
import string |
import locale |
import os |
import sys |
|
try: |
48,14 → 47,9 |
STDSET = string.uppercase + string.punctuation |
DEFAULT_CSET = FAVOURED_SET * 8 + STDSET |
|
# Taken from pwgen's list ("B8G6I1l0OQDS5Z2") |
REJECTS_SET = [ 'B','8', 'G','6', 'I','1','l', '0','O','Q','D', 'S','5', 'Z','2' ] |
REJECTS_SET = [ 'l', '1', 'I', '0', 'O' ] # FIXME: What else? |
DEFAULT_FORCE = '*' # Symbolic |
|
# The number of tries, when strong passwords are requested, before giving up |
# e.g. with length below 7 there won't be strong passwords |
STRIKES = 2048 |
|
def pwgen(length=DEFAULT_LENGTH, possible=DEFAULT_CSET, |
reject_ambiguous=False, force=DEFAULT_FORCE): |
''' |
125,7 → 119,7 |
if len(positional) > 1: |
rounds = int(positional[1]) |
except ValueError: |
sys.stderr.write('Usage: %s [-B] [length] [num pw]\n' % os.path.basename(sys.argv[0])); |
sys.stderr.write('Usage: pwgen [-B] [length] [num pw]\n'); |
sys.exit(2); |
|
def newpw(): |
136,14 → 130,9 |
if DO_CHECK: |
( score, verdict, _ ) = checkpw.check(pw) |
if secure: |
strikes_left = STRIKES |
while strikes_left > 0 and score < checkpw.STRONG_THRESHOLD: |
while score < checkpw.STRONG_THRESHOLD: |
pw = newpw() |
( score, verdict, _ ) = checkpw.check(pw) |
strikes_left -= 1 |
if strikes_left == 0: |
print "Giving up: Too many weak passwords" |
sys.exit(1) |
print '%s\t%d\t%s' % ( pw, score, verdict) |
#print _ |
else: |