Всем Хай! Когда я впервые услышал о Bruteforce, то я представил себе перебор абсолютно все варианты от "a" до over999 "z". Давненько писал полный перебор и вот он, только стоит подумать об исключениях: Код: using System; using System.Collections.Generic; using System.Linq; using System.IO; namespace Cycle { class Program { static void Main(string[] args) { string Chars = "Алфавит"; for (int i = 0; i <= 3; i++) { foreach (var Password in GetCombinations(Chars.ToArray(), i)) Console.WriteLine(Password); } Console.ReadLine(); } private static IEnumerable<string> GetCombinations(char[] Chars, int MaximumLength) { if (MaximumLength < 1) yield break; foreach (var a in Chars) { yield return a.ToString(); foreach (var b in GetCombinations(Chars, MaximumLength - 1)) yield return a + b; } } } } Данным кодом можно получить абсолютно все комбинации паролей, но на это уйдёт огромное количество времени. Я не говорю, что это самый лучший способ(скорей наоборот), но это и есть настоящий Brute Force. Код: using System; using System.Collections.Generic; using System.Linq; using System.IO; namespace Cycle { class Program { static void Main(string[] args) { Console.Title = "Cycle"; int Attempt = 0; Console.WriteLine("Введите минимальную длину пароля:"); int MinQuantity = int.Parse(Console.ReadLine()); Console.WriteLine("Введите максимальную длину пароля:"); int MaxQuantity = int.Parse(Console.ReadLine()); string Chars = "aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ0123456789"; for (int i = MinQuantity; i <= MaxQuantity; i++) { foreach (var Password in GetCombinations(Chars.ToArray(), i)) { Attempt++; Console.WriteLine("Попытка номер:" + Attempt + " | Пароль:" + Password); StreamWriter file = new StreamWriter("Passwords.txt", true); file.WriteLine(Password); file.Close(); } } Console.ReadLine(); } private static IEnumerable<string> GetCombinations(char[] Chars, int MaximumLength) { if (MaximumLength < 1) yield break; foreach (var a in Chars) { yield return a.ToString(); foreach (var b in GetCombinations(Chars, MaximumLength - 1)) yield return a + b; } } } }