Модераторы: skyboy
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> MySQL PASSWORD(), подобрать или расшифровать??? 
V
    Опции темы
kdaemonv
Дата 20.11.2005, 11:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 24
Регистрация: 21.10.2005

Репутация: нет
Всего: нет



Я тут встречал сообщения о том, что в разных версиях Мускула используются разные алгоритмы шифрования пароля. Я из сырцов версии 4.0.20 выцепил вот этот код:

void hash_password(ulong *result, const char *password)
{
register ulong nr=1345345333L, add=7, nr2=0x12345671L;
ulong tmp;
for (; *password ; password++)
{
if (*password == ' ' || *password == '\t')
continue; /* skipp space in password */
tmp= (ulong) (uchar) *password;
nr^= (((nr & 63)+add)*tmp)+ (nr << 8);
nr2+=(nr2 << 8) ^ nr;
add+=tmp;
}
result[0]=nr & (((ulong) 1L << 31) -1L); /* Don't use sign bit (str2int) */;
result[1]=nr2 & (((ulong) 1L << 31) -1L);
return;
}

Что это за алгоритм и реально ли его взломать (то есть не перебирать все возможные варианты пароля для сравнения с искомым а дешифровать его из хэша)? И скажите плиз, зачем тут вторая половина хэша, получаемая из nr2 - на мой взгяд и первой достаточно для полной идентификации пароля???
PM MAIL   Вверх
kdaemonv
Дата 20.11.2005, 13:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 24
Регистрация: 21.10.2005

Репутация: нет
Всего: нет



Никто не хочет отвечать - наверно нереально smile.

А вот насчет излишества с nr2 - так это же реально излишество. Хэш пароля может занимать в два раза меньше места в базе данных без потери в качестве!!! Или я не прав?
PM MAIL   Вверх
En_t_end
Дата 20.11.2005, 15:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2074
Регистрация: 4.12.2004

Репутация: нет
Всего: 20



kdaemonv
Ты правила форума читал ?
Просто люди бан получить не хотят...
PM MAIL ICQ Skype GTalk Jabber   Вверх
kdaemonv
Дата 21.11.2005, 09:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 24
Регистрация: 21.10.2005

Репутация: нет
Всего: нет



Виноват - не читал smile

Но я никого не прошу дать ссылку на взломщик или тем более написать код самого взломщика - я пытаюсь разобраться в конкретном алгоритме шифрования для возможного его использования и для решения достаточно ли безопасен мускул пассворд() - вот и все.
PM MAIL   Вверх
Ignat
Дата 21.11.2005, 09:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Флудератор
****


Профиль
Группа: Экс. модератор
Сообщений: 4030
Регистрация: 19.4.2004
Где: غيليندزيك مدينة

Репутация: 21
Всего: 73



kdaemonv, если не лень - сделай step by step debug. Меня, если честно, ломает разбираться.
MySQL AB будет благодарна, если покажешь им как можно пороли дешифровать.



Это сообщение отредактировал(а) Ignat - 21.11.2005, 09:59


--------------------
Теперь при чем :P
PM   Вверх
kdaemonv
Дата 21.11.2005, 10:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 24
Регистрация: 21.10.2005

Репутация: нет
Всего: нет



Если и покажу, как можно пароли дешифровать, то не скоро. А вот то что хэш можно хранить в поле размером 4 байта или 8 символов, а не 16 символов, так это же очевидно!!!
PM MAIL   Вверх
kdaemonv
Дата 1.12.2005, 17:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 24
Регистрация: 21.10.2005

Репутация: нет
Всего: нет



Все же я ошибался (а свои ошибки стоит признавать - на них мы и учимся, да и не токо мы).

Хэш пароля (как первая половина nr так и вторая nr2) изменяется в цикле, длина которого зависит от длинны пароля. Поэтому часто будут такие ситуации, что одному и тому же nr соответствуют разные nr2.

Учитывая то, что у nr и nr2 не используются знаковые биты, скажу что они могут принимать максимальное значение 2 147 483 647. Это значит что вариантов хэша может быть
2147483647 * 2147483647 = 4 611 686 018 427 387 903 (4 квинтильона, если не ошибаюсь).

Немного оптимизировав алгоритм хэширования mysql, я написал подборщик паролей, который на моем целерончике 700 перебирал примерно 9 млн. паролей в секунду. Таким образом я могу подобрать 6-символьный пароль, состоящий только из 26 символов латинского алфавита, всего за пол минуты. Этого во многих случаях бывает достаточно.

НО даже если я еще оптимизирую свой код и запущу его на 1000 компьютеров подобным моему, мне придется ждать около 15 лет пока будут перебраны все возможные пароли (это к примеру пароль из 16 символов включающий печатные и непечатные символы).

Пусть пользователей не пугает то, что на практике часто подбор пароля получается намного быстрее - хацкеры - они такие smile (у них очень много уловок). Вам просто необходимо ставить пароли подлиннее и с набором символов пообширнее.

А насчет функции обратной хешированию - я конечно же не эксперт по шифрованию, но буду стараться ее отыскать - может реально MySQL AB поблагодарит smile.

Жду комментариев :-D.
PM MAIL   Вверх
AlDev
Дата 1.12.2005, 17:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный идиотъ
***


Профиль
Группа: Участник Клуба
Сообщений: 1927
Регистрация: 17.4.2005
Где: Irk, rus

Репутация: нет
Всего: 50



Цитата(kdaemonv @ 1.12.2005, 22:06)
А насчет функции обратной хешированию - я конечно же не эксперт по шифрованию, но буду стараться ее отыскать - может реально MySQL AB поблагодарит


эм... для каждой сессии соединения даже один и тот-же пароль будет отправлятся в совершенно разном виде...
mysql отправляет scramble buff клиенту и получает в ответ некиу комбинацию хаширования этого самого scramble и пароля.
PM MAIL WWW ICQ YIM MSN   Вверх
kdaemonv
Дата 1.12.2005, 18:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 24
Регистрация: 21.10.2005

Репутация: нет
Всего: нет



Alex Batsuev, я это знаю.
Вопрос о способе получения хэша даже не стоит (это тема не программирования а скорее взлома).
Предполагается, что хэш уже имеется. Нужно его токо расшифровать!!!
PM MAIL   Вверх
kdaemonv
Дата 7.12.2005, 02:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 24
Регистрация: 21.10.2005

Репутация: нет
Всего: нет



Немного пооптимизировав функцию перебора, я добился скорости 37 млн. паролей в секунду - мне кажется, это не предел (к такому выводу я пришел, просмотрев ассемблерный код).

Ознакомившись с одной из прог такого класса - PasswordsPro (правда эта прога - целый комбайн, но я то занимаюсь своим проектом не более месяца да и то от случая к случаю и думаю в скором будущем ознакомлюсь и с другими функциями хэширования) от InsidePro (той самой что написала SAMInside), я увидел что она такая же медленная как и моя в первом варианте - на моем целероне 700 PasswordsPro перебирает всего около 9 млн. паролей в секунду.

А еще я прочитал одну статейку о Rainbow Tables - ну прям то что я придумал пока думал над кодом своей проги (вот токо я опоздал на 25 лет - эту идею воплотили еще в 1980 годах).

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | MySQL | Следующая тема »


 




[ Время генерации скрипта: 0.0497 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.