Какая функция использовалась для кодирования этих паролей в AFX? - PullRequest
1 голос
/ 02 февраля 2009

Я пытаюсь определить формат файла паролей, который используется 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 + NO Gu 10 ч: 6А 33 09; j3. 20h: 64 69 6E 6F 73 61 75 72 31 32 33 34 35 36 37 38; dinosaur12345678 30 ч: 39 30; 90 </p>

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

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

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

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

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

Для тех, кто хочет попробовать, у меня есть два пароля.

Все «а» - пароль с 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.

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

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

Ответы [ 4 ]

1 голос
/ 02 февраля 2009

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

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

0 голосов
/ 02 февраля 2009

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

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

0 голосов
/ 02 февраля 2009

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

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

0 голосов
/ 02 февраля 2009

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

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

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

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

...