Тут я вижу возникает много вопросов о том, что такое Соль и с чем собственно её едят =). Хотелось бы немного прояснить ситуацию. Что необходимо понять в первую очередь... В первую очередь необходимо хотя бы поверхностно понять алгоритм хеширования. Будем разбираться на примере форумов IPB => 2.0.* В этих форумах алгоритм следующий : md5(md5($salt).md5($pass)). Для справки,в форумах IPB <= 2.0.* алгоритм такой : md5. Теперь разберём всё на примере. Допустим у нас есть пароль: 123. При регистрации в форумах IPB <= 2.0.* наш пароль хешируется алгоритмом md5 и преобразуется в такую строку: 202cb962ac59075b964b07152d234b70. Таким образом,поимев этот хеш, стырив Cookies жертвы,мы можем эту строку расшифровать благодаря множеству существующих программ и т.д. Всё просто.(Лишь бы пароль был не сильно мудрёный). Теперь переходим к IPB => 2.0.* . Что мы видим: md5(md5($salt).md5($pass)) PHP: [/COLOR][/B]. Даю определение [B][COLOR=DarkOrange]Salt[/COLOR][/B] - она-же[B][COLOR=DarkOrange] Соль[/COLOR][/B]. [B][COLOR=DarkOrange]Salt [/COLOR][/B] - это сгенерированные скриптом данные, которые усложняют подбор пароля после хеширования.А как она усложняет мы сейчас разберёмся. В IPB соль состоит из пяти случайно сгенерированных символов. Пример: [COLOR=DarkOrange]kHa$+[/COLOR] или [COLOR=DarkOrange]@pBuc[/COLOR] Теперь по порядку: Допустим мы регистрируемся в форуме [B] IPB => 2.0.* [/B] всё с тем-же паролем:[B] [COLOR=Red]123[/COLOR][/B]. Что происходит... 1)Скрипт генерирует нам случайным образом соль(у всех пользователей она будет разная) и заносит её в базу данных. Допустим нам сгенерировал вот такую : [B][COLOR=DarkOrange] XzNaX[/COLOR][/B]. 2)Скрипт берёт нашу соль и хеширует её методом [B]md5[/B]. Получилось вот так: [B][COLOR=DarkOrange]b9b91789bc2f1b3735e67f77d46053fa[/COLOR][/B].Это у нас и есть[B][COLOR=DarkOrange] md5($salt)[/COLOR][/B]. 3)Скрипт берёт наш пароль (у нас он[B][COLOR=Red] 123[/COLOR][/B]) и тоже хеширует его методом [B]md5[/B]. Получилось вот так: [B][COLOR=Red]202cb962ac59075b964b07152d234b70[/COLOR][/B].Это у нас и есть[B] [COLOR=Red]md5($pass)[/COLOR][/B]. 4)Скрипт берёт нашу хешированную соль и наш хешированный пароль,и снова хеширует их методом [B]md5[/B]. Если подставить в нашу формулу:[B] md5([COLOR=DarkOrange]md5($salt)[/COLOR].[COLOR=Red]md5($pass[/COLOR]))[PHP][/B] полученные два хеша,увидим следующее: [B]md5([COLOR=DarkOrange]b9b91789bc2f1b3735e67f77d46053fa[/COLOR].[COLOR=Red]202cb962ac59075b964b07152d234b70[/COLOR])[/B] Где точка в PHP означает продолжение строки.А значит скрипт берёт эти два хеша без точки[B]([COLOR=DarkOrange]b9b91789bc2f1b3735e67f77d46053fa[/COLOR][COLOR=Red]202cb962ac59075b964b07152d234b70[/COLOR])[/B] и хеширует их методом[B] md5[/B]. Получаем хеш :[B] [COLOR=YellowGreen]e509e1f6df1450279ec37dd253bd5b1e[/COLOR][/B]. Вот это и есть[B] [COLOR=YellowGreen]солёный хеш[/COLOR][/B]. Авторизация пользователя происходит следующим образом. Наш пользователь вводит свой ID(ник) и пароль. Скрипт подставит соль соответствующую введенному ID,и пароль,который вы ввели. В нашем примере получится так : md5(md5([COLOR=DarkOrange]XzNaX[/COLOR]).md5([COLOR=Red]123[/COLOR]))[PHP] Потом он обработает эти данные и сверит их с нашим[B] [COLOR=YellowGreen]солёным[/COLOR] [/B] хешем. Если данные совпадают,то вы авторизированы.Если нет,то вам напишут... Теперь о том что, где хранится в [B]IPB => 2.0.*[/B] В разных форумах по разному.Но в дефолтовых версиях в базе данных можно найти: Директория forummembers: тут хранится[B] "legacy_password"[/B]. Это не солёный,простой md5 хеш. Директория forummembers_converge:тут хранится[B] "converge_pass_hash"[/B] .Это [B][COLOR=YellowGreen]солёный[/COLOR][/B],итоговый md5 хеш,с которым скрипт сверяется при авторизации.И в этой-же дирректории хранится [B]"converge_pass_salt"[/B] .Это та самая соль,которую все желают поиметь =). Теперь делаем выводы. При XSS атаке мы получаем на сниффер [B][COLOR=YellowGreen]солёный хеш[/COLOR] [/B] .Что он нам даёт?Да вообщем-то ничего,кроме того,что мы можем подменив Cookies зайти на форум от имени жертвы.Получить пароль из этого хеша не представляется возможным,потому как мы не знаем Соль. Вы спросите,а как получить соль? Только не через Cookies жертвы! В Cookies она не хранится. Соль можно добыть сплойтами,SQL иньекциями и т.д.(Смотрим видео Coyl'a: [B]http://video.antichat.ru/file25.html [/B] ,читаем форум).Вообщем для того что-бы её получить нужно попасть в базу данных форума.Там же в базе данных можно подсмотреть [B]"legacy_password"[/B] ,тот самый не солёный хеш,который можно расшифровать без Соли. Ну вот,пока всё...
Trampled_clover вгешни похож (32 символа 0-9a-f), может там где "c" русскся или типа того. или каину нужно чтобы все было в верхнем регистре? Гаврила +1 Добавлю на эту статью линк на WH, а то в "Критпографии" вечно один и тот же вопрос задают. Угадайте какой ))
Автор не пожалел собственного времени на улучшение внешнего вида статьи. Хотя бы даже за это плюс. Не говоря, что всё обьяснено наилучшим образом и по-рабоче-крестьянски. А настоящий md5 это или нет имхо нет нужды выяснять, ИМХО.
спасиб, тож только что разобрался эхх, а я то думал почему ни один расшифровщик не может мой мд5 крякнуть
IPB <= 2.0.* -md5 IPB => 2.0.* -md5(md5($salt).md5($pass)) Исходя из чисто математических соображений, получается, что md5 = md5(md5($salt).md5($pass))