Init_xor_table | Инициализация S-бокса |
Use_xor_table | Гаммирование данных через S-бокс |
SwaBits | Перестановка |
Init_hash | Инициализация хэширования |
Calc_hash | Хэширование |
Add_hash | Сложение данных в хэше |
Flush_hash | Очистка буффера хэша |
Make_cryption_table | Работа S-бокса |
Error | Декларация об ошибке |
LookUp | Возврат номера символа в строке |
UpStr | Перекодировка пароля |
LnTrim | Обрезка строки после |
Read_pwl_file | Чтение PWL-файла |
Dump_pwl_file | Просмотр ресурсов PWL-файла |
Enum_hdl | Прерывание программы |
Voc_pwl_file | Работа со словарем |
Try_pwl_file | Подбор пароля |
Main | Главная процедура |
Разработанная программа проводит криптоанализ на основе открытого текста. Так как имя пользователя всегда известно, то его можно использовать для проверки правильности расшифровки программа сравнивает дешифрованное имя пользователя с введенным именем. При запуске в зависимости от ключей, заданных в командой строке, программа вызывает вспомогательные функции, перечисленные следующем параграфе.
Далее программа осуществляет чтение зашифрованного PWL-файла, после чего либо начинает его расшифровку, либо просмотр ресурсов. Для PWL-файлов, создаваемых операционной системой Microsoft Windows 95, программа позволяет определить нестойкие пароли, генерируемые по ниже описанному алгоритму.
|
|
Алгоритм генерации ключа по паролю в Microsoft Windows 95
Имеем ключ (двойное слово) и пароль до 20-и символов.
1) Обнулить ключ.
2) Привести пароль к верхнему регистру.
3) Для каждого символа пароля, начиная с первого:
а) прибавить код символа к ключу
б) повернуть ключ влево 7 раз.
Данный алгоритм слаб тем, что при выбранной длине ключа в двойное слово, множество различных ключей 232 оказывается неизмеримо меньше множества различных паролей. Это означает, что существуют пароли, которые операционная система не различает.
Для PWL-файлов, создаваемых новыми версиями в операционных системах Microsoft Windows OSR2 и 98, программа осуществляет перебор ключей.
Алгоритм генерации ключа по паролю в Microsoft Windows OSR2 и 98
Имеем ключ (двойное слово) и пароль до 128-и символов.
1) Обнулить ключ.
2) Привести пароль к верхнему регистру.
3) Для каждого символа пароля, начиная с первого:
а) прибавить код символа к ключу
б) повернуть ключ влево 16 раз.
Далее программа перебирает пароли до тех пор, пока расшифрованное имя пользователя не совпадет с ранее введенным. При совпадении работа заканчивается.
Таблица 3.3