![]() |
|
Модераторы: skyboy |
![]()
|
|
| kdaemonv |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 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 - на мой взгяд и первой достаточно для полной идентификации пароля??? |
|||
|
||||
| kdaemonv |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 24 Регистрация: 21.10.2005 Репутация: нет Всего: нет |
Никто не хочет отвечать - наверно нереально
А вот насчет излишества с nr2 - так это же реально излишество. Хэш пароля может занимать в два раза меньше места в базе данных без потери в качестве!!! Или я не прав? |
|||
|
||||
| En_t_end |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2074 Регистрация: 4.12.2004 Репутация: нет Всего: 20 |
kdaemonv
Ты правила форума читал ? Просто люди бан получить не хотят... |
|||
|
||||
| kdaemonv |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 24 Регистрация: 21.10.2005 Репутация: нет Всего: нет |
Виноват - не читал
Но я никого не прошу дать ссылку на взломщик или тем более написать код самого взломщика - я пытаюсь разобраться в конкретном алгоритме шифрования для возможного его использования и для решения достаточно ли безопасен мускул пассворд() - вот и все. |
|||
|
||||
| Ignat |
|
|||
![]() Флудератор ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 4030 Регистрация: 19.4.2004 Где: غيليندزيك مدينة Репутация: 21 Всего: 73 |
kdaemonv, если не лень - сделай step by step debug. Меня, если честно, ломает разбираться.
MySQL AB будет благодарна, если покажешь им как можно пороли дешифровать. Это сообщение отредактировал(а) Ignat - 21.11.2005, 09:59 -------------------- Теперь при чем :P |
|||
|
||||
| kdaemonv |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 24 Регистрация: 21.10.2005 Репутация: нет Всего: нет |
Если и покажу, как можно пароли дешифровать, то не скоро. А вот то что хэш можно хранить в поле размером 4 байта или 8 символов, а не 16 символов, так это же очевидно!!!
|
|||
|
||||
| kdaemonv |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 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 символов включающий печатные и непечатные символы). Пусть пользователей не пугает то, что на практике часто подбор пароля получается намного быстрее - хацкеры - они такие А насчет функции обратной хешированию - я конечно же не эксперт по шифрованию, но буду стараться ее отыскать - может реально MySQL AB поблагодарит Жду комментариев :-D. |
|||
|
||||
| AlDev |
|
|||
|
Опытный идиотъ ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1927 Регистрация: 17.4.2005 Где: Irk, rus Репутация: нет Всего: 50 |
эм... для каждой сессии соединения даже один и тот-же пароль будет отправлятся в совершенно разном виде... mysql отправляет scramble buff клиенту и получает в ответ некиу комбинацию хаширования этого самого scramble и пароля. |
|||
|
||||
| kdaemonv |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 24 Регистрация: 21.10.2005 Репутация: нет Всего: нет |
Alex Batsuev, я это знаю.
Вопрос о способе получения хэша даже не стоит (это тема не программирования а скорее взлома). Предполагается, что хэш уже имеется. Нужно его токо расшифровать!!! |
|||
|
||||
| kdaemonv |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 24 Регистрация: 21.10.2005 Репутация: нет Всего: нет |
Немного пооптимизировав функцию перебора, я добился скорости 37 млн. паролей в секунду - мне кажется, это не предел (к такому выводу я пришел, просмотрев ассемблерный код).
Ознакомившись с одной из прог такого класса - PasswordsPro (правда эта прога - целый комбайн, но я то занимаюсь своим проектом не более месяца да и то от случая к случаю и думаю в скором будущем ознакомлюсь и с другими функциями хэширования) от InsidePro (той самой что написала SAMInside), я увидел что она такая же медленная как и моя в первом варианте - на моем целероне 700 PasswordsPro перебирает всего около 9 млн. паролей в секунду. А еще я прочитал одну статейку о Rainbow Tables - ну прям то что я придумал пока думал над кодом своей проги (вот токо я опоздал на 25 лет - эту идею воплотили еще в 1980 годах). |
|||
|
||||
![]()
|
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | MySQL | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |