#!/usr/bin/python "Analyze password entropy." import sys import random freqs = {} def put(context, result): if context not in freqs: freqs[context] = [result] else: freqs[context].append(result) def gen(table): context = None while True: context = random.choice(table[context]) if context is None: break yield context def passwords(filename): for line in line in open(filename): if line.endswith('\n'): line = line[:-1] if line.endswith('\r'): line = line[:-1] login, pw = line.split('\t') yield pw import cgitb cgitb.enable(format='text') for pw in passwords(sys.argv[1]): prev = None for letter in pw: put(prev, letter) prev = letter put(prev, None) #print freqs for ii in range(10): print ''.join(gen(freqs))