Регистрация Главная Сообщество
Сообщения за день Справка Регистрация
Навигация
Zhyk.org LIVE! Реклама на Zhyk.org Правила Форума Награды и достижения Доска "почета"

Ответ
 
Опции темы
Старый 03.08.2010, 16:13   #1
-= Элитный Мастер =-
 Главнокомандующий
Аватар для Kitsune
 
Kitsune сломал счётчик популярности :(Kitsune сломал счётчик популярности :(Kitsune сломал счётчик популярности :(Kitsune сломал счётчик популярности :(Kitsune сломал счётчик популярности :(Kitsune сломал счётчик популярности :(Kitsune сломал счётчик популярности :(Kitsune сломал счётчик популярности :(Kitsune сломал счётчик популярности :(Kitsune сломал счётчик популярности :(Kitsune сломал счётчик популярности :(
Регистрация: 20.01.2010
Сообщений: 1,539
Популярность: 22780
Золото Zhyk.Ru: 600
Сказал(а) спасибо: 43
Поблагодарили 1,717 раз(а) в 538 сообщениях
 
По умолчанию Теория брута. Часть 3. C# version

> Теория брута. Часть 3 <

Данная статья является продолжением серии статей на тему о том что такое Брутфорс.
В данном гайде речь пойдет о генерации последовательных паролей с целью покрытия всего диапазона возможных комбинаций. Данный вид генерации паролей является классической схемой грубого перебора.

Конечный материал данной статьи (скрин):
  • [Ссылки могут видеть только зарегистрированные пользователи. ]

Теория:
  • Грубый перебор представляет собой перебор всех возможных комбинация из указанного словаря заданной длины.

    Что это означает?
    Для примера возьмем словарь из 3х символов: abc.
    Суммарное кол-во комбинаций комбинаций расчитывается по формуле:
    (длина словаря) ^ (длина пароля)
    ^ - возведение в степень.
    Цитата:
    Сообщение от Пример
    3 ^ 3 = 27
    Список комбинаций:
    aaa, aab, aac,
    aba, abb, abc,
    aca, acb, acc,

    baa, bab, bac,
    bba, bbb, bbc,
    bca, bcb, bcc,

    caa, cab, cac,
    cba, cbb, cbc,
    cca, ccb, ccc

    Соответственно, если длина словаря у нас 26 символов(латинский алфавит), а длина пароля 6 символов, то суммарное кол-во комбинаций будет равно: 26 ^ 6 = 308 915 776.
  • Алгоритм генерации:
    У нас имеется массив чисел, который имеет размерность такуюже как и длина пароля.

    К примеру у нас пароль длиной 3 символа:
    Массив у нас выглядит так [0, 0, 0] массив индексов
    Так же мы имеем наш словарь: abc (длина 3)
    Соответственно значения, которые может принимать индекс (0-2).

    Логика алгоритма проста. В цикле мы инкрементируем(+1 делаем) последний элемент массива с индексами и выполняем 2 проверки.
    После инкрементирования мы получаем элемент из словаря по индексу для каждого элемента массива и записываем в одну строку.

    1ая проверка:
    Проверка идет задом на перед, тоесть с последнего элемента до первого.
    Если элемент, который мы инкрементируем равен 2 (максимальное значение), то мы его обнуляем, а индекс перед ним плюсуем на 1 и так до первого элемента массива.

    2ая проверка:
    Проверяем все индексы, если все имеют максимальное значение, то прерываем цикл и выходим.

    Цитата:
    Сообщение от Пример инкрементирования
    000, 001, 002,
    010, 011, 012,
    020, 021, 022,

    100, 101, 102,
    110, 111, 112,
    120, 121, 122,

    200, 201, 202,
    210, 211, 212,
    220, 221, 222

    А заменив индексы, на элементы из словаря мы получим как раз выше описанный пример.

Давайте приступим к реализации:
  1. Для реализации данного проекта были созданы следующие классы:
    • PasGen.cs
      Статический класс, реализующий сам алгоритм генерации.
  2. Рассмотрим структуру нашего класса:
    Код:
    public static class PassGen
    {
        // Событие, которые будет вызываться каждый раз при генерации пароля
        public static event EventHandler ProgressChanged;
        private static void OnProgressChanged(object sender, EventArgs e)
        {
            if (ProgressChanged != null)
                ProgressChanged(sender, e);
        }
    
        // Наш словарь
        private static string dictAlphaL = "abcdefghijklmnopqrstuvwxyz";
    
        // Свойства хранящие в себе информаю о текущем пароле
        // и общем кол-во паролей, которое будет сгенерировано
        public static Int32 CurrentPassword { get; set; }
        public static Int32 TotalPasswords { get; set; }
    
        // Метод, который производит генерацию паролей и сохраняет
        // их в указанный нами файл
        public static void Generate(string path, int length)
        {
            // Создаем новый поток и указываем ему анонимный метод для выполнения
            Thread worker = new Thread(new ThreadStart(
                delegate
                {
                    try
                    {
                        // Обнуляем счетчик сгенерированных паролей
                        CurrentPassword = 0;
                        // Считаем кол-во паролей, которое будет сгенерировано
                        TotalPasswords = dictAlphaL.Length;
                        for (int i = 0; i < length - 1; i++) TotalPasswords *= dictAlphaL.Length;
    
                        // Создаем билдер строк, который будет хранить у нас пароль
                        StringBuilder pwd = new StringBuilder();
    
                        // Создаем массив с интовыми значениями, который
                        // будет хранить индексы элементов из словаря
                        int[] baseVal = new int[length];
                        // присваиваем всем индексам начальное значение 0
                        for (int i = 0; i < baseVal.Length; i++) baseVal[i] = 0;
    
                        // Создаем поток на запись в файл
                        using (StreamWriter sw = new StreamWriter(File.Open(path, FileMode.Create)))
                        {
                            // Основной цикл, который будет производить генерацию паролей
                            // Исходя из данных условий, цикл будет выполнятся бесконечно
                            // или же пока мы програмно из него сами не выйдем
                            while (true)
                            {
                                // Вложенный цикл, который у нас производит корректировку значений
                                // массива с индексами
                                for (int i = baseVal.Length - 1; i >= 0; i--)
                                {
                                    if (i != 0)
                                    {
                                        if (baseVal[i] == dictAlphaL.Length)
                                        {
                                            baseVal[i] = 0;
                                            baseVal[i - 1]++;
                                        }
                                    }
                                }
    
                                // Переинициализуруем билдер пароля, чтобы стереть из него все данные.
                                pwd = new StringBuilder();
                                // Из полученных индексов формируем пароль
                                // Берем символ из словаря по индексу для каждого элемента массива
                                foreach (int i in baseVal) { pwd.Append(dictAlphaL[i]); }
                                // Записываем наш полученный пароль как новую строку в файл
                                sw.WriteLine("{0}", pwd.ToString());
    
                                // На данном этапе производим проверку не пора ли нам выйти из цикла
                                bool exit = true;
                                // Для каждого индекса в массиве выполняем проверку, не равен ли он максимальному
                                // для себя значению. Если хоть один индекс не равен, значит отменяем выход
                                // и устанавливаем флаг в False.
                                foreach (int i in baseVal) if (i != dictAlphaL.Length - 1) { exit = false; break; }
                                // Сама проверка на выход
                                // Если в предыдущем шаге все индексы имели максимальное значение
                                // То условия сейчас выполнится и мы програмно выйдем из цикла
                                if (exit) break;
    
                                // Если условие еще не выполнилось, то увеличиваем последний
                                // индекс из массива на 1
                                baseVal[baseVal.Length - 1]++;
                                // Увеличиваем на 1 свойство отвечающее на кол-во
                                // сгенерированных паролей
                                CurrentPassword++;
                                // Вызываем событие
                                OnProgressChanged(null, new EventArgs());
                            }
                            sw.Close();
                        }
                    }
                    catch (Exception ex)
                    {
                        System.Windows.Forms.MessageBox.Show(ex.Message);
                    }
                }));
            // Устанавливаем приоритет потока на максимальный
            // Для ускорения процессе генерации
            worker.Priority = ThreadPriority.Highest;
            // Запускаем поток
            worker.Start();
        }
    }
    Код полностью закомментирован, чтобы вам было проще понять что именно выполняется в данный момент времени.

Во вложении находится готовый проект на Visual Studio 2010.
Вложения
Тип файла: rar BruteTheory3.rar (44.1 Кб, 181 просмотров)
________________
Fireball - Быстрое снятие и загрузка скриншотов на хостинг.

Последний раз редактировалось Kitsune; 03.08.2010 в 16:17.
  Ответить с цитированием
4 пользователя(ей) сказали cпасибо:
cunt85 (29.01.2011), Dunя (03.08.2010), warl0ck (10.08.2010), †Hyde† (04.12.2014)
Старый 04.08.2010, 01:56   #2
 Разведчик
Аватар для DiabloIIIII
 
DiabloIIIII никому не известный тип
Регистрация: 10.06.2010
Сообщений: 20
Популярность: 12
Сказал(а) спасибо: 4
Поблагодарили 1 раз в 1 сообщении
 
По умолчанию Re: Теория брута. Часть 3. C# version

А можно както изменить буттон на круглый просто у меня должна быть кнопка круглая.
  Ответить с цитированием
Старый 04.08.2010, 10:11   #3
-= Элитный Мастер =-
 Главнокомандующий
Аватар для Kitsune
 
Kitsune сломал счётчик популярности :(Kitsune сломал счётчик популярности :(Kitsune сломал счётчик популярности :(Kitsune сломал счётчик популярности :(Kitsune сломал счётчик популярности :(Kitsune сломал счётчик популярности :(Kitsune сломал счётчик популярности :(Kitsune сломал счётчик популярности :(Kitsune сломал счётчик популярности :(Kitsune сломал счётчик популярности :(Kitsune сломал счётчик популярности :(
Регистрация: 20.01.2010
Сообщений: 1,539
Популярность: 22780
Золото Zhyk.Ru: 600
Сказал(а) спасибо: 43
Поблагодарили 1,717 раз(а) в 538 сообщениях
 
По умолчанию Re: Теория брута. Часть 3. C# version

DiabloIIIII,
1. Это не имеет отношения к гайду.
2. Создайте свою кнопку любой формы и рисуйте её хоть зигзагами.
________________
Fireball - Быстрое снятие и загрузка скриншотов на хостинг.
  Ответить с цитированием
Старый 05.08.2010, 13:47   #4
 Разведчик
Аватар для MaNЬяК
 
MaNЬяК никому не известный тип
Регистрация: 26.07.2010
Сообщений: 1
Популярность: 10
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
 
По умолчанию Re: Теория брута. Часть 3. C# version

Где можно скачать полный список команд и их обозночение для C#
  Ответить с цитированием
Старый 05.08.2010, 13:57   #5
-= Элитный Мастер =-
 Главнокомандующий
Аватар для Kitsune
 
Kitsune сломал счётчик популярности :(Kitsune сломал счётчик популярности :(Kitsune сломал счётчик популярности :(Kitsune сломал счётчик популярности :(Kitsune сломал счётчик популярности :(Kitsune сломал счётчик популярности :(Kitsune сломал счётчик популярности :(Kitsune сломал счётчик популярности :(Kitsune сломал счётчик популярности :(Kitsune сломал счётчик популярности :(Kitsune сломал счётчик популярности :(
Регистрация: 20.01.2010
Сообщений: 1,539
Популярность: 22780
Золото Zhyk.Ru: 600
Сказал(а) спасибо: 43
Поблагодарили 1,717 раз(а) в 538 сообщениях
 
По умолчанию Re: Теория брута. Часть 3. C# version

MaNЬяК, в C# нет команд. печаль
________________
Fireball - Быстрое снятие и загрузка скриншотов на хостинг.
  Ответить с цитированием
Старый 05.08.2010, 17:47   #6
 Разведчик
Аватар для DiabloIIIII
 
DiabloIIIII никому не известный тип
Регистрация: 10.06.2010
Сообщений: 20
Популярность: 12
Сказал(а) спасибо: 4
Поблагодарили 1 раз в 1 сообщении
 
По умолчанию Re: Теория брута. Часть 3. C# version

TBX1n, я очень плохо знаю c# плиз скажи куда войти и как сделать свою кнопку

Последний раз редактировалось DiabloIIIII; 05.08.2010 в 17:49.
  Ответить с цитированием
Старый 05.08.2010, 18:18   #7
-= Элитный Мастер =-
 Главнокомандующий
Аватар для Kitsune
 
Kitsune сломал счётчик популярности :(Kitsune сломал счётчик популярности :(Kitsune сломал счётчик популярности :(Kitsune сломал счётчик популярности :(Kitsune сломал счётчик популярности :(Kitsune сломал счётчик популярности :(Kitsune сломал счётчик популярности :(Kitsune сломал счётчик популярности :(Kitsune сломал счётчик популярности :(Kitsune сломал счётчик популярности :(Kitsune сломал счётчик популярности :(
Регистрация: 20.01.2010
Сообщений: 1,539
Популярность: 22780
Золото Zhyk.Ru: 600
Сказал(а) спасибо: 43
Поблагодарили 1,717 раз(а) в 538 сообщениях
 
По умолчанию Re: Теория брута. Часть 3. C# version

DiabloIIIII, задача по созданию своих элементов управления вам не по силам. Через месяца 2-3 усердного изучения C# может быть и сможете. А так, лучше найдите чью-то готовую и используйте.
________________
Fireball - Быстрое снятие и загрузка скриншотов на хостинг.
  Ответить с цитированием
Старый 05.08.2010, 18:54   #8
 Разведчик
Аватар для DiabloIIIII
 
DiabloIIIII никому не известный тип
Регистрация: 10.06.2010
Сообщений: 20
Популярность: 12
Сказал(а) спасибо: 4
Поблагодарили 1 раз в 1 сообщении
 
По умолчанию Re: Теория брута. Часть 3. C# version

Ладно я буду молчать=)Я не знаю как даже чужую поставить.Я молчу
  Ответить с цитированием
Старый 07.08.2010, 01:30   #9
Заблокирован
 Разведчик
Аватар для ВаняМелдо
 
ВаняМелдо никому не известный тип
Регистрация: 23.12.2009
Сообщений: 3
Популярность: 10
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Отправить сообщение для ВаняМелдо с помощью ICQ Отправить сообщение для ВаняМелдо с помощью Skype™
 
По умолчанию Re: Теория брута. Часть 3. C# version

простите если вопрос не по теме, но всё же=) если я пойду на компьютерный курсы соответсвующие теме, меня этому научат?
  Ответить с цитированием
Старый 07.08.2010, 17:33   #10
-= Элитный Мастер =-
 Главнокомандующий
Аватар для Kitsune
 
Kitsune сломал счётчик популярности :(Kitsune сломал счётчик популярности :(Kitsune сломал счётчик популярности :(Kitsune сломал счётчик популярности :(Kitsune сломал счётчик популярности :(Kitsune сломал счётчик популярности :(Kitsune сломал счётчик популярности :(Kitsune сломал счётчик популярности :(Kitsune сломал счётчик популярности :(Kitsune сломал счётчик популярности :(Kitsune сломал счётчик популярности :(
Регистрация: 20.01.2010
Сообщений: 1,539
Популярность: 22780
Золото Zhyk.Ru: 600
Сказал(а) спасибо: 43
Поблагодарили 1,717 раз(а) в 538 сообщениях
 
По умолчанию Re: Теория брута. Часть 3. C# version

ВаняМелдо, нет. На сколько мне известно, на компьютерных кусрах учат включение/выключению пк и работе в паре примитивных программ.
________________
Fireball - Быстрое снятие и загрузка скриншотов на хостинг.
  Ответить с цитированием
Старый 30.11.2014, 18:49   #11
 Разведчик
Аватар для Elena1994
 
Elena1994 никому не известный тип
Регистрация: 30.11.2014
Сообщений: 1
Популярность: 10
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
 
По умолчанию Re: Теория брута. Часть 3. C# version

Длину чего вы передаете в метод Generate?
  Ответить с цитированием
Старый 30.11.2014, 23:19   #12
-= Мастер Света =-
 Рыцарь-капитан
Аватар для Ginrey
 
Ginrey троюродный дядя Чака НоррисаGinrey троюродный дядя Чака НоррисаGinrey троюродный дядя Чака НоррисаGinrey троюродный дядя Чака НоррисаGinrey троюродный дядя Чака НоррисаGinrey троюродный дядя Чака НоррисаGinrey троюродный дядя Чака НоррисаGinrey троюродный дядя Чака НоррисаGinrey троюродный дядя Чака НоррисаGinrey троюродный дядя Чака НоррисаGinrey троюродный дядя Чака Норриса
Регистрация: 14.06.2012
Сообщений: 511
Популярность: 7566
Сказал(а) спасибо: 4
Поблагодарили 181 раз(а) в 88 сообщениях
 
По умолчанию Re: Теория брута. Часть 3. C# version

Цитата:
Длину чего вы передаете в метод Generate?

эта строчка о чем то говорит? - // Считаем кол-во паролей, которое будет сгенерировано
________________
Хотите как то отблагодарить за помощь?
Не стесняйтесь нажимайте "Спасибо"

Делаю программы на заказ, по всем вопросам в скайп: Ginrey2
  Ответить с цитированием
Старый 17.01.2015, 14:22   #13
 Разведчик
Аватар для sanchezsanya
 
sanchezsanya на правильном пути
Регистрация: 24.06.2010
Сообщений: 8
Популярность: 33
Сказал(а) спасибо: 0
Поблагодарили 5 раз(а) в 5 сообщениях
 
По умолчанию Re: Теория брута. Часть 3. C# version

Есть в VS такая штука для дизайнеров как Blend. Открой форму через Blend и делай что хочешь

Добавлено через 2 часа 37 минут
Самое важное в бруте - это запросы и обработка ответов от сервера. То, что написано в первом посте это генерация баз для брута, и для этих целей есть отдельные утилиты

Последний раз редактировалось sanchezsanya; 17.01.2015 в 17:00. Причина: Добавлено сообщение
  Ответить с цитированием
Старый 09.07.2015, 21:18   #14
 Разведчик
Аватар для RedWh1te
 
RedWh1te никому не известный тип
Регистрация: 09.07.2015
Сообщений: 1
Популярность: 10
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
 
По умолчанию Re: Теория брута. Часть 3. C# version

Было бы неплохо начинать разбитые гайды с ссылок на прошлые части. -_-
  Ответить с цитированием
Старый 09.07.2015, 21:46   #15
Почетный Пользователь
 Сержант
Аватар для MembRupt
 
MembRupt сломал счётчик популярности :(MembRupt сломал счётчик популярности :(MembRupt сломал счётчик популярности :(MembRupt сломал счётчик популярности :(MembRupt сломал счётчик популярности :(MembRupt сломал счётчик популярности :(MembRupt сломал счётчик популярности :(MembRupt сломал счётчик популярности :(MembRupt сломал счётчик популярности :(MembRupt сломал счётчик популярности :(MembRupt сломал счётчик популярности :(
Регистрация: 18.07.2013
Сообщений: 148
Популярность: 83981
Сказал(а) спасибо: 564
Поблагодарили 258 раз(а) в 195 сообщениях
 
По умолчанию Re: Теория брута. Часть 3. C# version

Цитата:
Сообщение от RedWh1teПосмотреть сообщение
Было бы неплохо начинать разбитые гайды с ссылок на прошлые части. -_-

К счастью, за автора это делает форум... Смотреть внизу страницы:
Теория брута. Часть 1. C# version
Теория брута. Часть 2. C# version
  Ответить с цитированием
Ответ


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
[Руководство] Создание бота для PW. Часть 1. C# version Kitsune C# 22 09.12.2015 12:46
[Руководство] Создаём фейк программмы. Часть 2. C# version Kitsune C# 13 10.11.2012 21:34
[Руководство] Теория брута. Часть 1. C# version Kitsune C# 6 16.02.2012 20:28
[Руководство] Создаём фейк программмы. Часть 1. C# version Kitsune C# 116 27.02.2011 02:41
[Руководство] Теория брута. Часть 2. C# version Kitsune C# 0 02.08.2010 21:18

Заявление об ответственности / Список мошенников

Часовой пояс GMT +4, время: 08:44.

Пишите нам: [email protected]
Copyright © 2024 vBulletin Solutions, Inc.
Translate: zCarot. Webdesign by DevArt (Fox)
G-gaMe! Team production | Since 2008
Hosted by GShost.net