Войти или зарегистрироваться
  • Вы находитесь в сообществе Rubukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на различные языки плагины наших коллег из других стран.

Дехеш паролей

Indeoo

Старожил
Пользователь
Баллы
103
Имя в Minecraft
Indeoo
Возможно ли дехешировать пароли массово? (7000 штук)
Если да, то как?
Я решил поменять движок сайта, на самописный, но перенос юзеров составляет трудности.
 
Возможно ли дехешировать пароли массово? (7000 штук)
Если да, то как?
Я решил поменять движок сайта, на самописный, но перенос юзеров составляет трудности.
Нет, точнее да, но это займет у тебя примерно 7(0) лет.
Правда период к целым числам неприменим)Так что около 92774093840000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 лет, расслабься))
 
Просто даже не имею предсталвения над тем, как хешируется друпал
 
просмотреть код отвечающий за логин / регистрацию
 
По мне так легче и правильней найти алгоритм в старом движке, и заменить алгоритм в новом
 
Берёшь алгоритм хеширования из старого движка > переносишь юзеров > кидаешь этот алгоритм в свой движок > профит
 
Хм, интересно действительно не помешалобы перегонять хеш в base64, а я у себя не догнал. Надобы реализовать
 
Ага, из друпала вытащить... Друпал это скорее CMF, чем CMS

PHP:
function user_check_password($password, $account) {
if (substr($account->pass, 0, 2) == 'U$') {
// This may be an updated password from user_update_7000(). Such hashes
// have 'U' added as the first character and need an extra md5().
$stored_hash = substr($account->pass, 1);
$password = md5($password);
}
else {
$stored_hash = $account->pass;
}
 
$type = substr($stored_hash, 0, 3);
switch ($type) {
case '$S$':
// A normal Drupal 7 password using sha512.
$hash = _password_crypt('sha512', $password, $stored_hash);
break;
case '$H$':
// phpBB3 uses "$H$" for the same thing as "$P$".
case '$P$':
// A phpass password generated using md5. This is an
// imported password or from an earlier Drupal version.
$hash = _password_crypt('md5', $password, $stored_hash);
break;
default:
return FALSE;
}
return ($hash && $stored_hash == $hash);
}
 
function _password_crypt($algo, $password, $setting) {
// The first 12 characters of an existing hash are its setting string.
$setting = substr($setting, 0, 12);
 
if ($setting[0] != '$' || $setting[2] != '$') {
return FALSE;
}
$count_log2 = _password_get_count_log2($setting);
// Hashes may be imported from elsewhere, so we allow != DRUPAL_HASH_COUNT
if ($count_log2 < DRUPAL_MIN_HASH_COUNT || $count_log2 > DRUPAL_MAX_HASH_COUNT) {
return FALSE;
}
$salt = substr($setting, 4, 8);
// Hashes must have an 8 character salt.
if (strlen($salt) != 8) {
return FALSE;
}
 
// Convert the base 2 logarithm into an integer.
$count = 1 << $count_log2;
 
// We rely on the hash() function being available in PHP 5.2+.
$hash = hash($algo, $salt . $password, TRUE);
do {
$hash = hash($algo, $hash . $password, TRUE);
} while (--$count);
 
$len = strlen($hash);
$output = $setting . _password_base64_encode($hash, $len);
// _password_base64_encode() of a 16 byte MD5 will always be 22 characters.
// _password_base64_encode() of a 64 byte sha512 will always be 86 characters.
$expected = 12 + ceil((8 * $len) / 6);
return (strlen($output) == $expected) ? substr($output, 0, DRUPAL_HASH_LENGTH) : FALSE;
}

Трудновато будет перенести) Нашёл в includes\password.inc
О боже. Почему нельзя как DLE сделать двойной md5? :D
 
дехешировать точно ничего нельзя)
 
Все 7000 паролей?:trf:
Ну зависит от алгоритма хэширования и сложности паролей.
Если там, например, 7к паролей, состоящих из 6 цифр - перебор будет недолгим ;)
Другой вопрос, что в реале же, там могут быть и пароли из более чем 22 знаков, состоящие из букв разного регистра, чисел и символов.
 
@TeHead, скрипт хешрования при переменной пароля = password и юзера account?
(Пых только недавно учить начал, а с хешированием вообще не сталкивался.)
 
Не пытайся юзать друпаловые куски, либо ищи константы, используемые в функциях... Ну и у меня подозрения что $account и $password - классы, ну $account - точно...
Аккаунт - класс, пасс - нет. Ибо если смотреть на 6 строку, есть такой код
Код:
$password = md5($password);
 

Поделиться этой страницей

Назад
Верх