예제 #1
0
 public static void RunCracking(List <UserData> passwords, List <string> dictionary)
 {
     for (int i = 0; i < dictionary.Count; i++)
     {
         string word = dictionary[i];
         List <UserDataCleatTxt> partialResult = StringHandler.WordController(word, passwords);
     }
 }
예제 #2
0
        /// <summary>
        /// Takes in an altered word to then see if it's the same hash value as the password
        /// Takes a list of userdata objects and a string possible password
        /// </summary>
        /// <param name="userInfos"></param>
        /// <param name="possiblePassword"></param>
        /// <returns></returns>
        private static List <UserDataCleatTxt> CheckSingleWord(List <UserData> userInfos, string possiblePassword)
        {
            var PassCount = 0;

            char[] charArray = possiblePassword.ToCharArray();

            byte[] passwordAsBytes = Array.ConvertAll(charArray, StringHandler.GetConverter());

            byte[] hashedPassword = new SHA1CryptoServiceProvider().ComputeHash(passwordAsBytes);

            List <UserDataCleatTxt> results = new List <UserDataCleatTxt>();

            foreach (var encryptedUserInfo in userInfos)
            {
                if (CompareBytes(encryptedUserInfo.EncryptedPass, hashedPassword))
                {
                    results.Add(new UserDataCleatTxt(encryptedUserInfo.Username, possiblePassword));
                    PassCount++;
                    Console.WriteLine($"{encryptedUserInfo.Username} {possiblePassword}");
                }
            }
            return(results);
        }