Быстрый лёгкий надёжный форумный движок
Вы не вошли.
Страницы 1
Всем привет!
Давно не заходил на свой форум, забыл пароль администратора, можно его как-то вытянуть из базы MySQL ?
Offline
@wst, нет.
Восстанавливаете пароль стандартными средствами форума.
или
Регистрируете нового юзера с нужным паролем. Идете в PhpMyAdmin и в таблице users форума копируете поле password из этого юзера в админа. Заходите под админом с этим паролем на форум и удаляете юзера.
Моя сборка FluxBB 1.5, ForkBB · сообщество
Offline
А можно как-то сделать чтобы пароли хранились в базе в открытом виде, в смысле без md5 ?
Offline
@wst, нельзя пароли хранить в базе в открытом виде!!!
Из года в год придумывают новые алгоритмы хеширования, чтобы усложнить нахождение коллизий при подборе паролей, а вы решили в открытом виде пароли хранить.
md5 давно уже не рекомендуют использовать для хеширования паролей, так же как и sha1 (гугл выложил алгоритм нахождения коллизий для этой функции).
Моя сборка FluxBB 1.5, ForkBB · сообщество
Offline
Но в качестве теста можно такое реализовать ? Я так понимаю за это отвечает кусок кода в register.php
Offline
@wst, не только. По коду следует искать переменную с частью имени password (например: $password1, $form_password) и функцию pun_hash() обрабатывающую такую переменную.
Код придется менять в functions.php, login.php, register.php, profile.php. Возможно еще где.
Моя сборка FluxBB 1.5, ForkBB · сообщество
Offline
А на что менять эту функцию ? Вот допустим была тема, тут меняли алгоритм шифрования с SHA1 на MD5 https://fluxbb.qb7.ru/forum/viewtopic.php?id=3592
но если в том случае функция оставалась неизменна, то мне же как я понимаю надо вместо pun_hash() использовать что-то иное ?
Offline
@wst, ее надо удалить там, где речь идет о паролях и вычислении хешей к ним.
Моя сборка FluxBB 1.5, ForkBB · сообщество
Offline
Ну с register.php и profile.php разобрался, а вот с login.php чёт не очень, там такие конструкции выстроены...
Может мне кто-нибудь пояснить, я не понимаю, код в login.php со строки 41:
if (!empty($cur_user['password']))
{
$form_password_hash = $form_password; // Will result in a SHA-1 hash
// If there is a salt in the database we have upgraded from 1.3-legacy though haven't yet logged in
if (!empty($cur_user['salt']))
{
$is_salt_authorized = $cur_user['password'];
if ($is_salt_authorized) // 1.3 used sha1(salt.sha1(pass))
{
$authorized = true;
$db->query('UPDATE '.$db->prefix.'users SET password=\''.$form_password_hash.'\', salt=NULL WHERE id='.$cur_user['id']) or error('Unable to update user password', __FILE__, __LINE__, $db->error());
}
}
// If the length isn't 40 then the password isn't using sha1, so it must be md5 from 1.2
else if (strlen($cur_user['password']) != 40)
{
$is_md5_authorized = $cur_user['password']; // Visman
if ($is_md5_authorized)
{
$authorized = true;
$db->query('UPDATE '.$db->prefix.'users SET password=\''.$form_password_hash.'\' WHERE id='.$cur_user['id']) or error('Unable to update user password', __FILE__, __LINE__, $db->error());
}
}
}
if (!$authorized)
$errors[] = $lang_login['Wrong user/pass'];
flux_hook('login_after_validation');
Как я понимаю чтоб снять проверку хеша, надо код заменить примерно на такой:
$result = mysql_query("SELECT * FROM users WHERE login='$login'",$db); //извлекаем из базы все данные о пользователе с введенным логином
$myrow = mysql_fetch_array($result);
if (empty($myrow['password']))
Просто не особо разбираюсь в PHP...
Редактировался wst (2017-02-24 23:10:29)
Offline
Страницы 1