2012-06-11 3 views
1

У меня есть база данных с примерно 4000 членов. Мне нужно расшифровать все их пароли, чтобы я мог повторно зашифровать их с помощью MD5 и поместить в новую систему. У меня есть одна учетная запись до шифрования и после строк пароля шифрования, поэтому я предполагаю, что мне удастся выяснить метод и диапазон ключей. У меня нет доступа к исходному исходному коду, иначе я бы не был здесь.Найти метод и ключ шифрования до и после строки шифрования

Следует отметить, что существующие пароли сильно различаются.

User1 - qwDyP1db9iOPI

Пользователь2 - $ 1 $ .WXtDyLg $ yxBPAWxzd.srEWJZfqZAY/

User3 - do8sLMoVVqxKQ

USER4 - TKmnAlPe

Как подойти с такой проблемой?

ответ

3

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

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

Похоже, они, вероятно, пришли из Linux (тот, который начинается с $ 1 $, уже является хешем MD5, остальные похожи на старый стиль стиля crypt() DES).

Это не всегда имеет место при использовании паролей приложений - например, некоторые базы данных используют значительно более слабое хранилище учетных данных - но при использовании Unix/Linux запасы не сохраняли действительные пароли в течение очень долгого времени, если вообще когда-либо.

1

давайте подумаем. Предположим, я могу взломать свой путь к вашему компьютеру/БД (не невозможная задача). Поэтому у меня есть то, что у вас есть - список паролей всех пользователей, но зашифрованный. Но, скорее всего, я могу самостоятельно зарегистрироваться в вашей системе, и я знаю свой собственный пароль. Я могу найти его зашифрованную форму в БД, либо по имени пользователя, либо по последней записи, так что теперь у меня есть ясная + зашифрованная пара! Если бы я мог делать то, что вы просите, у меня были бы все пароли и полный доступ ко всем учетным записям. Это означает, что шифрование паролей или данных вообще не оказывает никакого дополнительного эффекта безопасности, и все, о чем я должен заботиться, - это предотвращение несанкционированного доступа к данным. Но это не так, поэтому вы не можете :)

BTW, MD5 не шифрование, а хэш, или, вернее, дайджест.

1

Похож twalberg прав по большей части, но я хотел бы пойти на шаг дальше, чтобы дать вам несколько практических советов:

1) Посмотрите на http://www.openwall.com/john/ (John Потрошитель) для получения необходимых сведений оригинала паролей из базы данных. Обратите внимание, что генерируемые пароли могут не быть исходными паролями (это, скорее всего, но не обязательно).

Как только вы получили все пароли с помощью этого инструмента, подумайте о себе: любой может это сделать. Ваши пользователи могут использовать эти пароли где-то в другом месте. Если кто-то ворвался на ваш сайт, они могут разоблачить людей, которые вам доверяют. Ваши пользователи могут обвинить вас, если кто-то использовал эту информацию, чтобы проникнуть в другие учетные записи. Наличие паролей с открытым текстом является рискованным для вас.

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

2) Когда вы создаете новую базу данных паролей, я рекомендую вам как минимум использовать безопасный хэш (например, SHA1 или SHA2) вместе с солью для каждого пользователя (случайное значение, добавленное к генерируемому хэш-выходу стандартным образом), чтобы защитить базу данных от случайного воздействия.

Хотя этот ответ неэффективен, он, по-видимому, практически подходит для вашей текущей базы данных, если ваша фактическая база данных паролей имеет даже приблизительно пропорции, которые вы представляете.

0

Спасибо всем за ваш вклад. Я просто хочу, чтобы все изменили свои пароли. Я не собираюсь хранить чей-то пароль. Цель заключалась в том, чтобы все 4000 пользователей не могли менять свои пароли после перехода на новую систему, но это кажется неизбежным. Как указал Давка, у меня есть учетная запись в этой базе данных и знаю мой пароль, и вы можете увидеть зашифрованную версию, поэтому подумал, что этого будет достаточно для разработки скрипта, который расшифровывает и арендует пароль в новой базе данных. Еще раз спасибо.

1

Если вы отключаетесь от своей текущей системы, не переключайтесь на обычный MD5 - есть «радужные таблицы», чтобы взломать множество общих паролей; вместо этого используйте соленый/двойной MD5 или SHA