private static void Test3() { var auditor = new RandomAuditor(new Random(73), new SubGenPredictor()); var generator = CreatePasswordGenerator(auditor); for (var i = 0; i < 4; i++) { Console.WriteLine(string.Format("{0}\t{1}", i, generator.GeneratePassword())); //Console.ReadLine(); } auditor.DebugOutput = true; Console.WriteLine(generator.GeneratePassword()); Console.ReadLine(); }
private static void Test4() { var auditor = new RandomAuditor(new Random(50), new SubGenPredictor()); var generator = CreatePasswordGenerator(auditor); //var generator = new PasswordGenerator(new Random(50)); var passwords = new List<Password>(); var currentStates = new List<State>(); var passwordCount = 0; GetPassword(generator, passwords); AddSiblings(currentStates, new State(passwords, null)); while (currentStates.Count > 1) { passwordCount++; Console.WriteLine(string.Format("Observed: {0}\tPossible states: {1}", passwordCount, currentStates.Count)); //Console.ReadLine(); GetPassword(generator, passwords); var newStates = new List<State>(); foreach (var state in currentStates) AddSiblings(newStates, new State(state, null)); currentStates = newStates; } /* var predictor = new SubGenPredictor(currentStates[0].Predictor); var possibleRandomOutputs = new List<WeightedValue>[generator.PasswordLength + 4]; possibleRandomOutputs[0] = predictor.PredictWeightedNext(generator.PasswordLength).ToList(); possibleRandomOutputs[1] = predictor.PredictWeightedNext(Password.SpecialChars.Length).ToList(); possibleRandomOutputs[2] = predictor.PredictWeightedNext(generator.PasswordLength - 1).ToList(); possibleRandomOutputs[3] = predictor.PredictWeightedNext(Password.UpperCaseChars.Length).ToList(); possibleRandomOutputs[4] = predictor.PredictWeightedNext(generator.PasswordLength - 2).ToList(); possibleRandomOutputs[5] = predictor.PredictWeightedNext(Password.LowerCaseChars.Length).ToList(); possibleRandomOutputs[6] = predictor.PredictWeightedNext(generator.PasswordLength - 3).ToList(); possibleRandomOutputs[7] = predictor.PredictWeightedNext(Password.NumberChars.Length).ToList(); for(var i = 0; i < generator.PasswordLength - 4; i++) possibleRandomOutputs[i + 8] = predictor.PredictWeightedNext(Password.AllChars.Length).ToList(); */ while (true) { auditor.Predictor = currentStates[0].Predictor; auditor.DebugOutput = true; GetPassword(generator, passwords); Console.ReadLine(); } }