Доступ к готовым решениям

Переход в группу "Пользователь"

300.00
Одноразовый платёж
Быстрый переход в группу "Пользователи", без надобности написания постов и ожидания.

Покупка дает возможность:
Быть полноправным участником форума
Нормальное копирование кода
Создавать темы
Скачивать файлы
Доступ к архиву Pawno-Info

C# Настоящий Brute Force aka Полный перебор

Mathian

Лев Попов
Пользователь
Регистрация
3 Фев 2013
Сообщения
3,003
Лучшие ответы
6
Репутация
813
Награды
2
Всем Хай! Когда я впервые услышал о Bruteforce, то я представил себе перебор абсолютно все варианты от "a" до over999 "z". Давненько писал полный перебор и вот он, только стоит подумать об исключениях. Данным кодом можно получить абсолютно все комбинации паролей, но умрёте вы, сотни и тысячи поколений, а он ещё будет генерировать. Код:
C#:
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;
            }
        }
    }
}
C#:
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;
            }
        }
    }
}
 
Сверху Снизу