Не многим из нас нравится выполнять трудоемкую задачу в одиночку. Процесс тянется долго, расходуются физические/умственные/нервные ресурсы. И в который раз мы понимаем, сколько времени можно было сэкономить, работая в коллективе.
Компьютер не является исключением из этого правила. Только он не способен осознавать, насколько сложна поставленная перед ним задача, поэтому процесс ее выполнения может растянуться на долгий срок. Другое дело кластер – своего рода коллектив компьютеров, работающих над общей задачей и каждый из которых делает то, на что способен. Однако и здесь нужен сервер, который будет распределять задачу…
Оставим эту «балталогию» и, чтобы не обсуждать абстрактные вещи, поставим конкретную задачу – перебор пароля по
MD5-хешу. Другими словами:
поиск коллизии.
Частенько возникает потребность восстановить строку, имея на руках ее MD5-хеш. Забудем идею перебора по словарю, чтобы не ограничивать себя его размерами и предположим, что не нашлось коллизии ни на одном из ресурсов в сети. Остается генерировать посимвольно строки и сравнивать их хеш с целевым. Не иначе как настоящий брутфорс! Однако выполнять этот процесс на одной машине, по меньшей мере, нерационально.
Гвоздь программы.
DefBrute – система распределенного перебора строк для MD5-хешей. Особенности ее функционирования и процесс создания были детально описаны в статье
"Система распределенных вычислений. Грид-сеть." . Там же можно найти исходные коды программного обеспечения, лежащие в основе рассматриваемой системы, с подробными комментариями.
Система состоит из серверной и клиентской частей.
Сервер.
Серверная часть (
DefBrute v1.0.exe) выполняет функции генерации, учета и передачи диапазонов строк клиентам.
Генерация диапазонов основана на множестве символов (
Char Set) (из которых, как предполагается, состоит пароль) и длины пароля (
Password Length). Процесс генерации представляет собой простую инкрементацию числа из n-ричной системы счисления. Каждому числу соответствует биективное (взаимно-однозначное) отображение из множества строк. За подробностями генерации обращайтесь к статье многоуважаемого ZaCo
«Разделение диапазона перебора паролей» . Далее сгенерированный диапазон строк передается клиенту с помощью технологии
.NET Remoting.
Главное (и единственное) окно программы состоит из нескольких областей. Рассмотрим эти области детальнее.
Область
Connect Settings содержит в себе опцию:
Server Port, которая (как нетрудно догадаться) отвечает за номер порта, который будет открыт на сервере и который также необходимо указать клиенту.
Следующая область объединяет все опции для перебора. Поле
User CharSet позволяет пользователю задать множество символов, которые, по его предположению, могут быть использованы в пароле.
Preset - предустановленные множества символов (латинские в верхнем регистре, в нижнем регистре, цифры и специальные символы). Думаю, тут все понятно.
Enemy Hash - поле в котором указывает целевой MD5-хеш.
Password Length - предполагаемая длинна пароля. Незнаем? – указываем с запасом.
Statistics - область статистики, в которой первым пунктом является поле
Clients Online. Оно показывает количество клиентов, получивших диапазон для перебора.
Range Brute Progress - прогресс-бар, отображающий процесс перебора диапазона всех возможных строк.
Collision - область, в которой выводится строка, соответствующая целевому MD5-хешу.
Клиент.
Клиент представляет собой консольное приложение, формат запуска которого:
defbc.exe <server ip> <server port>.
Возможно, кому-то покажется, что программа далека от совершенства, о чем могут свидетельствовать необработанные исключения и т.п. Для искушенного пользователя, а также для любителей оптимизировать и подгонять все «под себя», в архиве с программой присутствуют исходные коды на
C# в виде проекта (
Solution) для
Visual Studio 2008.
DefBrute v1.0 *
* Требуется наличие .NET Framework 2.0 или выше.
(c) c0n Difesa (defec.ru)