![]() |
Криптография против криптографии.
[Введение]
Собственно хочу здесь описать реверс или если можно так назвать взлом одного программного продукта реализующего шифрование файлов. Программа довольно старая, просто товарищ откопал где-то зашифрованные ей файлы, на каком-то древнем серве и захотел прочитать их содержимое, но естественно пароль(ключ) на котором шифровались данные он давно забыл. В данном случае интерес представляет метод определения открытого текста, который может использоваться при взломе (востановлении паролей) других программ. Программа: Endec Version 1.0 (разработка KLUdGE ToolWare), распространяется бесплатно. скачать [Алгоритм шифрования] В результате анализа удалось выявить несложный алгоритм шифрования: Код:
//Позиция символа в файле умножается на соответствующий[Алгоритм дешифрования] Операция сложения по модулю два является обратимой. Отсюда следует, что если сложить самый часто встречаемый символ с зашифрованным текстом, удастся выявить число X. Далее для получения гипотезы о символе пароля достаточно было бы поделить соответствующие X на соответствующие позиции этих X-ов в файле, но это не возможно, потому что при получении числа X, результат произведения помещается в переменную размером в 2 байта. Поэтому результат округляется и по нему не возможно с помощью деления восстановить символ пароля. Для этого потребуется таблица 256x256, значениями которой будут результаты произведения номера столбца на номер строки, причем номера столбцов – позиция символа в дешифруемом файле, а номера строк – вероятные символы пароля. Будем производить основной перебор по длине пароля. На каждой итерации для определения возможного символа пароля берем каждый соответствующий символ дешифруемого файла и складываем по модулю 2 с наиболее часто встречающимся символом, в зависимости от типа текста (пробел или 0). Затем получившийся результат сравниваем со значением из нашей таблицы и в соответствии с позицией из той же таблицы выбираем возможный символ пароля. Далее выбираем наиболее часто встречаемый возможный символ пароля и принимаем его за основную гипотезу о символе пароля на данной итерации. Далее дешифруем текст с полученной гипотезой. Считаем Хи2 статистику для данного текста и запоминаем. Гипотеза с наибольшей Хи2 статистикой будет считаться наиболее вероятным паролем. Хи квадрат статистика - Сумма квадратов количества встречаемости каждого символа в тексте. Наибольшее число позволяет определить наиболее структурированный текст, а значит и наиболее открытый (т.е. правильный, а не случайный). Алгоритм дешифрования будет выглядеть след. образом: Код:
//Создание таблицы каждая ячейка, которой содержит произведение столбца[ЗЫ] Вообщем удалось восстановить старый пароль товарища. Да кстати прога поддерживает максимальную длину пароля - 70 символов. Так что чем длиннее пароль - тем дольше время перебора. Но например 7 - значный пароль подбирается за пару секунд ;) Если кому интересно программа дешифратор MyEndec можете поиграться зашифровать и восстановить пароль. Или кому нибудь предложить зашифровать прогой, а сами угадаете пароль типа ;) А если будет совсем интересно могу выложить исходники на С. |
лол, нафиг такое дерьмо ломать?
наврятли хоть один уважающий себя человек будет юазать тулзу, которая шифрует данные с помощью ксора, а потому и ценность поста нулевая. |
Цитата:
ЗЫ Я не грю что сломал офигенный криптостойкий алгоритм, я привел пример применения алгоритма определения открытого текста. |
Цитата:
Сейчас уже моск не варит Хмм...если шифровать таким образом строки в программе для ее защиты,то и ключ будет хранится где-то в проге...думаю встанет вопрос о поиске ключа,ну это опять же если применять эту статью для защиты ПО |
Цитата:
|
Ну насколько я понял, это просто частный случай частотного анализа... Ага?
|
Цитата:
|
| Время: 01:19 |