예제 #1
0
            public StringPatternAnalyzerResult Run()
            {
                SpecialCharacter.ResetMiddleSpecialCharacterCount();
                SequentialCharacter.ResetSequentialCharacterCount();
                RepeatedCharacters repeatedCharacters = new RepeatedCharacters
                {
                    Count     = 0,
                    Deduction = 0
                };

                for (int index = 0; index < password.Length; index++)
                {
                    CheckCharacter(index);
                    CheckRepeatedCharacters(index, ref repeatedCharacters);
                }
                sequentialLetters = CheckSequentialLetters();
                sequentialNumbers = CheckSequentialNumbers();
                sequentialSymbols = CheckSequentialSymbols();

                int score = 0;

                ApplyPositiveMultipliers(ref score);
                ApplyNagativeMultipliers(ref score, repeatedCharacters);
                return(StringPatternAnalyzerResult.FromScore(score));
            }
            internal StringPatternAnalyzerResult Run()
            {
                SpecialCharacter.ResetMiddleSpecialCharacterCount();
                SequentialCharacter.ResetSequentialCharacterCount();
                RepeatedCharacters repeatedCharacters = new RepeatedCharacters
                {
                    Count     = 0,
                    Deduction = 0
                };

                for (int index = 0; index < password.Length; index++)
                {
                    CheckCharacter(index);
                    CheckRepeatedCharacters(index, ref repeatedCharacters);
                }
                throw new NotImplementedException();
            }
예제 #3
0
            private SequentialCharacter CheckSequentialNumbers()
            {
                const string        numbers           = "01234567890";
                SequentialCharacter sequentialNumbers = new SequentialCharacter();

                /* Check for sequential numeric string patterns (forward and reverse) */
                for (int s = 0; s < numbers.Length - 2; s++)
                {
                    string sequence         = numbers.Substring(s, 3);
                    string reversedSequence = sequence.Reverse().ToString();
                    if (password.Contains(sequence) || password.Contains(reversedSequence))
                    {
                        sequentialNumbers.Count++;
                        sequentialNumbers.SequentialCount++;
                    }
                }
                return(sequentialNumbers);
            }
예제 #4
0
            private SequentialCharacter CheckSequentialSymbols()
            {
                const string        symbols           = " !\"#$%&\'()*+,-./:;<=>?@[\\]^_{|}~!\"§$%&/()=?{[]}\\,.-;:_";
                SequentialCharacter sequentialSymbols = new SequentialCharacter();

                /* Check for sequential symbol string patterns (forward and reverse) */
                for (int s = 0; s < symbols.Length - 2; s++)
                {
                    string sequence         = symbols.Substring(s, 3);
                    string reversedSequence = sequence.Reverse().ToString();
                    if (password.Contains(sequence) || password.Contains(reversedSequence))
                    {
                        sequentialSymbols.Count++;
                        sequentialSymbols.SequentialCount++;
                    }
                }
                return(sequentialSymbols);
            }
예제 #5
0
            private SequentialCharacter CheckSequentialLetters()
            {
                const string        alphabet          = "abcdefghijklmnopqrstuvwxyz";
                const string        keyboard          = "qwertyuiopasdfghjklzxcvbnm";
                SequentialCharacter sequentialLetters = new SequentialCharacter();

                /* Check for sequential alpha string patterns (forward and reverse) */
                for (int s = 0; s < 23; s++)
                {
                    string sequence                 = alphabet.Substring(s, 3);
                    string reversedSequence         = sequence.Reverse().ToString();
                    string keyboardSequence         = keyboard.Substring(s, 3);
                    string reversedKeyboardSequence = keyboardSequence.Reverse().ToString();
                    if (password.Contains(sequence, StringComparison.OrdinalIgnoreCase) || password.Contains(reversedSequence, StringComparison.OrdinalIgnoreCase) || password.ToLower().Contains(keyboardSequence) || password.ToLower().Contains(reversedKeyboardSequence))
                    {
                        sequentialLetters.Count++;
                        sequentialLetters.SequentialCount++;
                    }
                }
                return(sequentialLetters);
            }