CF - кодировщик файлов
Автор - Потапкин Роман Сергеевич
Телефон (домашний) (095) 408-77-21 (с 21:00 до 23:00)
Эта программа для тех, кто любит и жаждет поломать голову над
какой-нибудь задачкой. Я предлагаю программу-кодировщик,
которая кодирует-раскодирует файлы с паролем.
До сих пор никто не смог узнать пароль из закодированного файла,
хотя они знали, где лежит пароль.
Далее я опишу, как происходит закодирование и раскодирование файла.
В начале файла имеется заголовок, который имеет следующую структуру:
- строка 'Закодированный файл'^M^J^Z;
- восемь знаков вопроса;
- пять байт - закодированный пароль.
Смысл кодирования пароля заключается в следующем :
1. Запрашиваем пароль любой длины.
2. Из символов пароля создаем пять последовательностей по следующим
формулам (хотя возможно другое количество и качество) :
a1 = a1 + n;
a2 = a2 - n;
a3 = a3 xor n;
a4 = a4 + a1 + n;
a5 = a5 + a2 + n,
где a1..a5 - последовательность (это и есть закодированный пароль),
n - очередной символ пароля. Для большей путаницы можно брать не
только ASCII-код символа, но и скан-код (можно вообще только его).
Таким образом получаем пять последовательностей, причем вероятность
восстановления исходника пароля по закодированным пяти байтам невоз-
можно (точнее, из одного и того же закодированного можно наштамповать
множество оригиналов пароля, а если пользоваться перебором, то на
это занятие может уйти полжизни (Вашей или Вашего компьютера),
поскольку существует миллиарды вариантов).
3. Опять же из символов пароля создаем одну или несколько последователь-
ностей, с помощью которой кодируем файл методом XOR (или подобным
"реверсивным" методом, позволяющим по одному и тому же алгоритму
закодировать или раскодировать данные).
Для раскодирования идем следующими шагами :
1. Запрашиваем пароль для проверки.
2. Кодируем введенный пароль по тем же пяти формулам.
3. Лезем в закодированный файл и сравниваем введенный пароль с тем,
который лежит в заголовке файла. Если не совпадает, либо выходим,
либо идем на п.1.
4. Из введенного пароля создаем вторую последовательность,
с помощью которой и приводим файл в первоначальное состояние.
Приведенный выше алгоритм имеет следующие преимущества :
1. Невозможность восстановления оригинала пароля (то есть невозможно
создание программы, которая бы просто говорила, с каким паролем
закрыт данный файл);
2. Невозможность обмана программы кодирования-раскодирования
каким-нибудь дебаггером (даже если она будет думать, что пароль
правильный, она раскодирует, но неверно).
Если мои доводы показались Вам убедительными, можете свободно
пользоваться этим алгоритмом для своих целей (желательно с указанием
моего авторства в смысле метода), а если нет, попробуйте доказать,
что я слишком самоуверен и что любая защита может быть сломана.
Счастливой работы !
|