Здравствуйте. Предлагаю на ваш суд усовершенствование наивного словарного алгоритма подбора паролей в UNIX. Придумал его самостоятельно -- так что не судите строго. Наивный алгоритм таков:
Алгоритм A:
[1] Выберем очередную запись из файла зашифрованных паролей.
[2] Выберем очередное слово из словаря для пробы. Зашифруем его.
[3] Сравненим полученные строки. Если не равны, то -> [2].
[4] Запомним полученную информацию и -> [1].
---
Не смейтесь -- это действительно самый наивный алгоритм и существует множество его усовершенствований. Я предлагаю вашему вниманию одно из них, которое может работать совместно с другими -- главная идея в использовании хэширования.
Алгоритм B:
[1] Строки, содержащие зашифрованные пароли поместим в hash-таблицу.
[2] Выберем очередное слово из словаря и зашифруем его.
[3] Hash-поиском за O(1) поищем в hash-таблице полученный шифр. Если не найден, то -> [2].
[4] Запомним полученную информацию и исключим данный шифр из hash-таблицы.
[5] Если hash-таблица не пуста то -> [2].
---
Данный алгоритм хорош тем, что позволяет обрабатывать все записи в файле паролей одновременно, из чего следует, что уязвимый пароль будет найден независимо от того, насколько хороши остальные. Разумеется данная идея уже применяется где-то, так что, если знаете где, может подскажете -- просто интересно.
|