22
22
from optparse import OptionParser
23
23
from getpass import getpass
25
def get_digest(userprefix):
26
26
pass1 = getpass('New password: ')
27
27
pass2 = getpass('Re-type new password: ')
29
29
print >>sys.stderr, "They don't match, sorry"
31
return userprefix + md5.new(userprefix + pass1).hexdigest()
33
usage = "%prog [-c] passwordfile realm username"
33
def get_digest(userprefix, password=None):
36
return make_digest(userprefix, password)
38
def make_digest(userprefix, password):
39
return userprefix + md5.new(userprefix + password).hexdigest()
41
usage = "%prog [-c] [-b] passwordfile realm username"
34
42
parser = OptionParser(usage=usage)
35
43
parser.add_option('-c', action='store_true', dest='create', default=False,
36
44
help='Create a new file')
45
parser.add_option('-b', action='store_true', dest='batch', default=False,
46
help='Batch mode, password on the commandline.')
38
48
opts, args = parser.parse_args()
41
filename, realm, username = args
52
filename, realm, username, password = args
54
filename, realm, username = args
43
57
parser.error('Wrong number of arguments')
63
77
for line in fileinput.input(filename, inplace=True):
64
78
if line.startswith(prefix):
66
print get_digest(prefix)
80
print get_digest(prefix, password)
71
85
f = open(filename, 'a')
73
print >>f, get_digest(prefix)
87
print >>f, get_digest(prefix, password)
76
90
except EnvironmentError, e: