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

StackOverflow https://stackoverflow.com/questions/503030

  •  20-08-2019
  •  | 
  •  

Вопрос

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

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

Результирующими шестнадцатеричными значениями для пароля dinosaur являются

00ч:4A 6E 3C 34 29 32 2E 59 51 6B 2B 4E 4F 20 47 75 ;Ин<4)2.YQk+NO Gu 10 часов:6А 33 09 ;j3.20 часов: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 ;ЗАТИРКА 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.

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

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

Это было полезно?

Решение

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

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

Другие советы

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

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

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

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

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

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

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

Я бы порекомендовал ИДА Про для этой задачи.Это стоит той цены, которую дает вам помощь is, - преобразовать исполняемый код в читаемый на ассемблере.Есть и другие дизассемблеры, которые бесплатны, если вы не хотите платить деньги, но я не встречал ничего столь мощного, как IDA Pro.Бесплатным статическим дизассемблером / отладчиком, который я бы порекомендовал, был бы PEBrowse от Маленький софт поскольку он хорош для быстрого просмотра работающей системы и имеет хорошую поддержку PDB для загрузки символов отладки.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top