РЕШЕНИЕ ЗАДАЧИ ВОССТАНОВЛЕНИЯ ИНФОРМАЦИИ ПО ЕЕ ХЕШ ФУНКЦИИ В ГРИД СРЕДЕ - Студенческий научный форум

III Международная студенческая научная конференция Студенческий научный форум - 2011

РЕШЕНИЕ ЗАДАЧИ ВОССТАНОВЛЕНИЯ ИНФОРМАЦИИ ПО ЕЕ ХЕШ ФУНКЦИИ В ГРИД СРЕДЕ

 Комментарии
Текст работы размещён без изображений и формул.
Полная версия работы доступна во вкладке "Файлы работы" в формате PDF

Особенности распределения задач

Серверная часть разбивает все множество возможных исходных данных на интервалы длинной в три знака в заданных наборах символов (кол-во используемых символов, возведенное в третью степень), для этого в папке соответствующей задачи создается файл hashmap.hm . Файл начинается со значения 77 типа byte (для проверки корректности файла), далее идет последовательность значений типа boolean, которые указывают, проверен ли соответствующий их номеру участок множества.

Серверная часть отправляет задание клиентской в виде сообщения, в котором указываются: номер интервала, длина интервала (в этой версии сервера всегда равняется трем), минимальная длинна искомых данных, максимальная длина, информация о возможных наборах символов, хеш данных.

После чего данный фрагмент отмечается как проверяемый (в ОЗУ, а не в файле hashmap.hm) и не назначется другим клиентам, после чего клиент должен вернуть назад то же самое сообщение (в случае отсутствия искомой информации в этом интервале) или сообщить серверу о том что был найден ответ и инициализировать протокол передачи ответа.

Если клиент вернул назад сообщение от сервера, то соответствующий фрагмент отмечается в файле  hashmap.hm как проверенный. Если все оставшиеся не проверенные значения отмечены как проверяемые, то они могут быть назначены другим клиентам, несмотря на то что уже проверяются. Это нужно если какой-то из клиентов отключился или в нем произошел сбой.

 Организация списка задач

В той же папке где расположен сервер, находится файл config.hgs. Он содержит имя текущей задачи( или информацию о том, что активных задач нет). В папке задач расположен файл tasklist.hgs, в котором содержится перечень имен задач. Каждой задаче соответствует одноименная папка, в которой помимо упоминавшегося выше файла hashmap.hm находитя файл settings.hgs с настройками задачи и, в случае завершенности задачи - файл answer.txt, в котором содержится восстановленный ответ.

Особенности клиентской части

Так как в клиентском приложении заведомо не известна длина восстанавливаемых данных( она уникальна для каждой отдельной задачи), а это влияет на количество вложенных циклов перебора символов, то был применен следующий метод програмирования: функция которая вызывает саму себя:

        private static bool HashBruter(byte num, byte symCount, byte[] prechars, string constPart, string charSet)

            {

                for (byte i = 0; i < symCount; i++)

                {

                    if (num > 1)

                    {// Вызываем функцию снова, со значением счетчика num уменьшенным на единицу

                        prechars[num-2] = (byte)i;

                        if (HashBruter((byte)(num - 1), symCount, prechars, constPart, charSet))

                            return true;

                    }

                    else // Сюда попадаем, если текущий вложенный цикл является последним (num == 1)

                    {

                        string password = "";

                        foreach (byte bt in prechars)

                        {

                            if (bt != 255)

                            password += charSet[bt];

                        }

                        password = charSet[i] + password + constPart;

 

 

                        if (MD5Hash(password))//MD5Hash - ф-я проверяющая, соответствует ли хеш от входящей строки целевому хешу. Возвращает значение типа boolean

                        {

                            answer = password;

                            state = "Решение найдено";

                            return true;// завершаем функцию с значением true, что в силу if (HashBruter((byte)(num - 1), symCount, prechars, constPart, charSet)) return true; вызывает цепное завершение вложенных циклов.

                        }

                    }

                }

                return false;

            }

Руководство пользователя

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

Программа состоит из двух частей - клиентской и серверной. Серверная часть представляет собой интерфейс для постановки задач, а также распределяет их выполнение между клиентскими частями, клиентская - выполняет непосредственно сами вычисления хеш функции.

В данной версии программы реализовано восстановление только по хеш-алгоритму md5.

Примечание: В данной версии реализовано единовременное выполнение только одной задачи.

Описание MyHashGridServer

Главное меню.

Закладка Грид

 

 

Запустить. Запуск сервера.

Перезапустить. Перезапуск сервера.

Остановить. Остановка работы сервера.

Свернуть в трей. Сворачивание в трей.

И обратно.

Выход. Выход из программы.

Закладка Настройка

Сеть. Возможность выбора порта подключения.

Вычисления.  Настройки вычисления в данной версии не реализованы.

 Вид.  Настройки вида в данной версии не реализованы

Панель инструментов:

Добавление новой задачи

После нажатия "Добавить задачу" появляется окно "Новая задача"

 

 

 

Реализованы только md5 и прямой перебор.

Набор символов. Цифры 0-9.Латинские прописные и заглавные буквы.

Длина пароля. Длина пароля в символах. От Min до Max,

минимальная длина не настраивается (в данной версии), а вычисляется как max (максимальная длина) - 3 .

Имя задачи. Название задачи.

Целевой хеш. Хеш, на основе которого производится восстановление.

Удаление задачи

удаление выбранной задачи из списка задач.

Запуск

делает выбранную задачу активной (программа не указывает, какая задача является активной).

Пауза

остановка активной задачи

Главное окно:

Список задач. Названия созданных задач.

Тип. Реализован только метод перебора.

Выполнено. Степень готовности задачи.

Узлов подключено. Количество клиентских программ, участвующих в вычислениях.

Добавлен. Дата и время начала вычислений.

Закладка "общие". Параметры поставленной задачи.

Остальные закладки. На данный момент не реализованы.

Использование программы:

1. Запускаем MyHashGridServer .

2. Добавляем новую задачу, вводим необходимые параметры. Нажимаем "Далее".

3. Задача появляется в списке задач.

4. Заходим в меню "Грид" , нажимаем "Запустить".

5. Запускаем HashGridClient.

6. В его окне видим "Введите IP адрес сервера".

7. Если запускаем HashGridClient на том же компьютере, где стоит MyHashGridServer , то IP будет 127.0.0.1 , на других вводим IP-адрес сервера.

8. Далее появляется "Введите номер порта".

9. Вводим тот порт, что указан в настройках MyHashGridServer .

10. Появляется надпись "Задание принято. Поиск начат." или надпись "Отправляем запрос серверу..." . Если задач нет, то мы увидим "Нет активных задач" и отсчет времени до нового запроса к серверу.

11. В окне MyHashGridServer начнется отсчет выполнения.

12. Когда степень выполнения дойдет до 100% - данные восстановлены, клиент переходит в ждущий режим.

В директории размещения MyHashGridServer появляется папка Задачи. В ней находим папку с именем задачи, которую мы выполняли и в ней текстовый файл "answer". В нем будут расположены восстановленные данные.

Системные требования: NetFramework 3.5.
Просмотров работы: 1