Skip to content
La2Base
Home
DownloadsWikiForumFAQ
Search
ruen
Sign up Login
HomeFilesWikiLogin
  • Home
  • Downloads
  • Wiki
  • FAQ
  • Contact Us
  • About
  • Rules
  • Privacy
  • Terms of Service

© 2026 la2base.com · All rights reserved

ruen
Forum/FAQ/Расшифровка Пароля
Search

Расшифровка Пароля

1 replies1,694 viewsCurrently viewing: 1
AbsT
AbsT

User

Ветеран

Posts: 1514

На форуме с: 12/10/2007

Репутация: +768

Рейтинг: 0

· 01/03/2009, 06:34 PM

Ввиду того, что на форуме очень часто стали появляться вопросы "Как расшифровать" пароль, я пишу пояснение.
Почему я сделал все так длинно?
Ну потому что уже достали конкретно, разжевываю для самых тупых наверное 3c2f1c34aa11.gif

Схема получения "шифрованного" пароля:
Исходный пароль -> UTF-8 -> SHA-1 -> Raw(Перевод в бинарную строку) -> Base64 := Помещение результата в базу.
Пояснения к терминам:

  • SHA-1 - один, из многочисленных методов получения "контрольной суммы" или "отпечатка" от исходных данных.
    Контрольные суммы НЕ относятся к семейству шифровалок, поэтому данные на выходе не содержат никакого пароля. Просто - его отпечаток.
    Как например ваша подпись на документе.
    В подписи нет вашего имени и отчества, и например без правильной подписи вам откажут в банке даже при наличии имени и отчества.
    Это как отдаленный, но сопоставимый пример, смысл надеюсь понятен.
  • RAW - В переводе означает "сырой". Подробно раскладывать не буду, скажу коротко: преобразование в Бинарную строку.
  • Base64 - Транспортное кодирование, и вовсе не шифрование. (Уже исходный вид пароля).
    В данном случае используется исключительно для удобства хранения "бинарной строки" в базе данных.
    Легко декодируется и кодируется, как два пальца.


Ответ на вопрос "а как некоторые все-таки получают пароль":
В этом случае эти "некоторые" применяют брут(brute) или в народе "перебор паролей".
Специальные и самописные программы которые по заданному алгоритму подбирают пароли, и воссоздают его по схеме указанной вверху.
Если отпечаток сгенерированного пароля, совпадает с требуемым отпечатком - цель достигнута.
Есть программы которые используют как ЦПУ, так и ГПУ(видеокарта)...что позволяет достичь перебора ~1миллиона паролей в секунду.
Хотя все зависит от алгоритма и стойкости пароля.
Например крепкий пароль из 20 символов и больше можно подбирать неделю, месяц, год...может и больше.

Но эту тему обсуждать мы не будем, ибо тут хакерством мы не промышляем.

—————————————————————————————————————————————————————————————

Интересные факты:
  1. В базе логин-сервера НЕТ паролей, только их отпечатки.
  2. Применяется алг.SHA-1, а не MD5 как некоторые "опытные головы" любят всем говорить.
  3. Base64 не является методом шифрования данных.
  4. SHA-1,MD5 и прочие так-же - не являются методом шифрования данных.
  5. Не существует программ на "расшифровки", возможно вы путаете их с программами подбора (брут).
  6. Утверждение "раз зашифровали, можно и расшифровать" в данном случае не уместно.


Поговорим еще (для безнадежных и упрямых):

Если вы настолько уверены, что из отпечатка SHA-1 можно восстановить оригинальный пароль - вот вам задача.
Вы видели когда-нибудь число CRC32 пользуясь архиваторами типа Winrar?


Вот...мы имеем отпечаток(контрольную сумму) 8F3E13F1, и файл на 700 киллобайт.
Давайте закодируем наш отпечаток в base64 и мы получаем OEYzRTEzRjE=
После этого удаляем файл весом 700кбайт и теперь у вас задача:
Восстановить содержимое файла в полном объеме имея в наличии 12байт (закодированная контрольная сумма).

Если справитесь - свистните мне. Награда обеспечена! rofl.gif rofl.gif


—————————————————————————————————————————————————


Как сервер при входе проверяет пароль?:
Я полагаю, что вы думаете что при входе сервер расшифровывает пароль и значит способ есть.
Нет, вы ошибаетесь.
Посмотрите на схему в начале темы, таким образом при регистрации мы получаем пароль и он хранится в базе.
При входе, на логин сервер приходит оригинальный и голый пароль.
Затем этот оригинальный пароль на стороне логин-сервера шифруется по схеме выше образовывая бинарную(raw) строку. (Без применения base64).
Затем из базы достается сохраненная ранее base64 строка, декодируется получая raw значение, и если обе идентичны - пароль валидный.
Кусок исходного кода логин-сервера:

Код
..............
MessageDigest md = MessageDigest.getInstance("SHA");
byte[] raw = password.getBytes("UTF-8");  <<<<<<-------------------
byte[] hash = md.digest(raw); <<<<<<-------------------

byte[] expected = null;


con = L2DatabaseFactory.getInstance().getConnection();
PreparedStatement statement = con.prepareStatement("SELECT password, accessLevel, lastServer FROM accounts WHERE login=?"); <<<<<<-------------------
statement.setString(1, user);
ResultSet rset = statement.executeQuery();
if (rset.next())
{
expected = Base64.decode(rset.getString("password")); <<<<<<-------------------
..............

Полный исходник тут: http://www.l2jserver.com/svn/trunk/L2_Game...Controller.java


+ Еще пара ссылок:
http://ru.wikipedia.org/wiki/Base64
http://ru.wikipedia.org/wiki/SHA1

—————————————————————————————————————————————————


После всех разъяснений настало время дать ответ на главный вопрос:
  • Нет, из данных которые хранятся в базе данных НЕЛЬЗЯ воссоздать оригинальный пароль.
    Как я уже сказал выше, хранимые в базе данные абсолютно не содержат никаких сведений об исходном пароле.





На этом пожалуй все...буду надеяться что не увижу больше таких тупых вопросов.
Если есть дополнения к моему материалу - пишите тут. Вопросы в этой тему буду удалять.

— &#197;lderdom - ingen gl&#228;dje..

0
Войдите или зарегистрируйтесь чтобы ответить