Subversion Repositories pub

Compare Revisions

Ignore whitespace Rev 215 → Rev 216

/relevation/trunk/devtools/genpw.py
5,7 → 5,7
"""
# Relevation Password Printer
#
# Copyright (c) 2011, Toni Corvera
# Copyright (c) 2011,2012 Toni Corvera
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
32,6 → 32,7
import random
import string
import locale
import os
import sys
 
try:
47,9 → 48,14
STDSET = string.uppercase + string.punctuation
DEFAULT_CSET = FAVOURED_SET * 8 + STDSET
 
REJECTS_SET = [ 'l', '1', 'I', '0', 'O' ] # FIXME: What else?
# Taken from pwgen's list ("B8G6I1l0OQDS5Z2")
REJECTS_SET = [ 'B','8', 'G','6', 'I','1','l', '0','O','Q','D', 'S','5', 'Z','2' ]
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):
'''
119,7 → 125,7
if len(positional) > 1:
rounds = int(positional[1])
except ValueError:
sys.stderr.write('Usage: pwgen [-B] [length] [num pw]\n');
sys.stderr.write('Usage: %s [-B] [length] [num pw]\n' % os.path.basename(sys.argv[0]));
sys.exit(2);
 
def newpw():
130,9 → 136,14
if DO_CHECK:
( score, verdict, _ ) = checkpw.check(pw)
if secure:
while score < checkpw.STRONG_THRESHOLD:
strikes_left = STRIKES
while strikes_left > 0 and 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: