Какая функция использовалась для кодирования этих паролей в AFX?

Я пытаюсь определить формат файла паролей, который используется DLL-библиотекой LOGIN, источник которого не найден. Инструмент администратора был написан на AFX, поэтому я надеюсь, что он, возможно, даст представление о алгоритме, используемом для кодирования паролей.

Используя инструмент администратора, у нас есть два пароля, которые закодированы. Первый - это "динозавр123456789", а шестнадцатеричный код шифрования находится здесь:

Полученные шестнадцатеричные значения для пароля динозавра

00h: 4A 6E 3C 34 29 32 2E 59 51 6B 2B 4E 4F 20 47 75; Jn<4)2.YQk+ НЕТ Gu 10 ч: 6A 33 09; j3. 20h: 64 69 6E 6F 73 61 75 72 31 32 33 34 35 36 37 38; динозавр 12345678 30 ч: 39 30; 90

Другой пароль "gertcha" закодирован как e8h: 4D 35 4C 46 53 5C 7E; GROUT M5LFS\~

Я пытался найти обычный XOR, но ничего не смог найти. Пароли имеют одинаковую длину в файле паролей, поэтому я предполагаю, что это обратимая кодировка (это было другое время!). Мне интересно, могли ли у классов AFX быть средства, которые будут использоваться для такого рода вещей?

Если кто-то может разработать кодировку, то это было бы здорово!

Спасибо Мэтью

[edit:] Хорошо, во-первых, я иду дальше и собираюсь оставить прошлое позади в новом решении. Было бы неплохо по-прежнему использовать старые данные. Действительно, если кто-то хочет решить это как загадку, то я все же хотел бы иметь возможность использовать это.

Для тех, кто хочет пойти, я сделал два пароля.

Все "а" - пароль с 19 а: 47 7D 47 38 58 57 7C 73 59 2D 50; G}G8XW|sY-P 79 68 29 3E 44 52 31 6B 09; YH)>DR1k.

Все "б" - пароль с 16 б. 48 7D 2C 71 78 67 4B 46 49 48 5F; H},qxgKFIH_ 69 7D 39 79 5E 09; я} ^ 9y.

Это убедило меня в том, что здесь нет простого решения и что есть обратная связь.

4 ответа

Решение

Что ж, я сделал быстрый криптоанализ и пока могу сказать, что каждый пароль начинается со значения ascii + 26. Следующий октет, по-видимому, является разницей между первым символом пароля и вторым, добавленный к значению ascii. 3-е письмо я еще не понял. Я думаю, можно с уверенностью сказать, что вы имеете дело с каким-то шифром обратной связи, поэтому XOR ничего не показывает. Я думаю, что значение каждого октета будет зависеть от предыдущего.

Я могу продолжать, но это занимает много времени. Надеюсь, это может дать вам начало, или, может быть, дать вам пару идей.

Но так как выходные данные равны по длине с входными данными, это выглядит как какой-то шифр с фиксированным ключом. Это может быть тривиальный XOR.

Я предлагаю протестировать следующие пароли:

 * AAAAAAAA
 * aaaaaaaa
 * BBBBBBBB
 * ABABABAB
 * BABABABA
 * AAAABBBB
 * BBBBAAAA
 * AAAAAAAAAAAAAAAA
 * AAAAAAAABBBBBBBB
 * BBBBBBBBAAAAAAAA

Возможно, это позволит нам взломать шифр без обратного инжиниринга DLL.

Может ли DLL кодировать односимвольные пароли? Или даже пароль из нулевого символа?

Вы захотите начать с самых тривиальных тестовых случаев.

Вы можете смотреть на эту проблему с неправильной точки зрения. Я думаю, что лучше всего выяснить, как создаются хэши паролей, - это перепроектировать логин DLL.

Я бы порекомендовал IDA Pro для этой задачи. Это стоит того, чтобы получить помощь за то, что она превращает исполняемый код в читаемый ассемблер. Есть и другие дизассемблеры, которые бесплатны, если вы не хотите платить деньги, но я не встречал ничего более мощного, чем IDA Pro. Свободным статическим дизассемблером / отладчиком, который я бы порекомендовал, будет PEBrowse от SmidgeonSoft, так как он хорош для быстрого поиска по работающей системе и имеет хорошую поддержку PDB для загрузки отладочных символов.

Другие вопросы по тегам