Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Конвертировать MD5 хэш, Перенос пользователей PHPNuke->DLE 
V
    Опции темы
andro_id
Дата 7.3.2008, 15:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 45
Регистрация: 17.4.2007
Где: Москва

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



При переносе пользователей из PHPNuke в DLE встала проблема с соответствием пролей, т.к. у этих движков различный механизм кодирования. Изучив различия я выявил следующее:

PHPNuke дает след. пароль/хэш
passwd = 76a2173be6393254e72ffa4d6df1030a

DLE дает след. пароль/хэш
passwd = d0c93357b7c3e56e0fa19a81405728cc

Воспользовавшись сайтом _http://passcracking.com и при попытке расшифровать хэш DLE, получаем в точности хэш PHPNuke, т.е. 76a2173be6393254e72ffa4d6df1030a. Получается, что md5(md5_lcase)    d0c93357b7c3e56e0fa19a81405728cc = 76a2173be6393254e72ffa4d6df1030a.
На том же сайте делаем еще одно преобразование полученного хэша и получаем пароль passwd.

Вопрос: как преобразовать пароли PHPNuke в пароли DLE ?

Это сообщение отредактировал(а) andro_id - 7.3.2008, 15:34
PM MAIL WWW ICQ Skype   Вверх
MoLeX
Дата 7.3.2008, 15:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Местный пингвин
****


Профиль
Группа: Модератор
Сообщений: 4076
Регистрация: 17.5.2007

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



с учетом что у пользователя может быть пароль 2;5xW%1$c1 то на расшифровку уйдет очень много времени этого хеша... само идеальное что приходит в голову - написать скрипт который пробежиться по БД сгенерит для каждого юзера новый пасс, зашифрует его, отправит ему на мыло и запишет в БД...


--------------------
Amazing  smile 
PM MAIL WWW ICQ   Вверх
andro_id
Дата 7.3.2008, 16:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 45
Регистрация: 17.4.2007
Где: Москва

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



Цитата(MoLeX @ 7.3.2008,  16:42)
само идеальное что приходит в голову - написать скрипт который пробежиться по БД сгенерит для каждого юзера новый пасс, зашифрует его, отправит ему на мыло и запишет в БД...

Ну это уже есть, хотелось чтоб не пришлось утруждать пользователей.
PM MAIL WWW ICQ Skype   Вверх
MoLeX
Дата 7.3.2008, 16:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Местный пингвин
****


Профиль
Группа: Модератор
Сообщений: 4076
Регистрация: 17.5.2007

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



Цитата(andro_id @  7.3.2008,  16:14 Найти цитируемый пост)
хотелось чтоб не пришлось утруждать пользователей.

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

Добавлено через 5 минут и 30 секунд
прочентов 90% что ты получишь коллизию а не оригинальный пасс.
почитай что пишет вики и безопасен ли md5



--------------------
Amazing  smile 
PM MAIL WWW ICQ   Вверх
Kefir
Дата 7.3.2008, 16:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


«Hakuna Matata»
***


Профиль
Группа: Комодератор
Сообщений: 1878
Регистрация: 25.1.2003
Где: Tampere, Suomi

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



Так я не понял. Переносим из нюка в дле:
Код

function plain_to_phpnuke($pwd) {
  return md5($pwd);
}
function plain_to_dle($pwd) {
  return md5(strtolower(md5($pwd)));
}
// тоже самое можно записать так:
function plain_to_dle_2($pwd) {
  return md5(strtolower(plain_to_phpnuke($pwd)));
}

Из чего делаем простой вывод:
Код

function phpnuke_to_dle($pwd_phpnuke) {
  return md5(strtolower($pwd_phpnuke));
}

Вот и всё. Вот из DLE в PHP Nuke - это да, там надо обратно из мд5 ломать, а тут не нужно знать изначального пароля - просто ещё раз мд5 сделать (по сути даже реестр не надо менять, ибо они должны быть уже в нижнем, но это так - для чистоты и правильности).

Это сообщение отредактировал(а) Kefir - 7.3.2008, 16:32
PM MAIL WWW Skype   Вверх
andro_id
Дата 7.3.2008, 17:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 45
Регистрация: 17.4.2007
Где: Москва

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



To Kefir: Вот вот, это я и хотел увидеть. Попробую твой код, отпишусь. Спасибо.
PM MAIL WWW ICQ Skype   Вверх
andro_id
Дата 15.3.2008, 19:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 45
Регистрация: 17.4.2007
Где: Москва

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



Все работает, однако если для одного пользователя. Если делать для всех, на втором затыкается с ошибкой:

Fatal error: Cannot redeclare phpnuke_to_dle() (previously declared in Z:\home\testdle.ru\www\convert\index.php:45) in Z:\home\testdle.ru\www\convert\index.php on line 45
Не может повторно задекларить функцию.

Код

$result = $db->query("SELECT * FROM ".NUKE_PREFIX."_users" );
  while ($row = $db->get_row($result)) {
  
    $password    = $row['user_password'];
    $name        = $row['username'];
    $email       = $row['user_email'];
    $icq         = $row['user_icq'];

    $allow_mail  = $row['user_viewemail'];
    $comm_num    = $row['user_posts'];

    if (!$allow_mail) $allow_mail = 1;
    if (!$comm_num) $comm_num = 0;
    
  function phpnuke_to_dle($password) {     // вот на эту строчку ругается
    return md5(strtolower($password));
  }
  
    $password    = phpnuke_to_dle($password);
    
    if ($name != "") {
      $query = "INSERT INTO ".DLE_PREFIX."_users (password, name, email, icq, allow_mail, comm_num, reg_date) VALUES ('$password', '$name', '$email', '$icq', '$allow_mail', '$comm_num', now())";
      $db->query($query);
    };
  }


Как обмануть?
PM MAIL WWW ICQ Skype   Вверх
Nigel
Дата 15.3.2008, 21:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


познаю мир
**


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

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



Цитата(andro_id @ 15.3.2008,  19:49)
Как обмануть?

Кого?)
Каждый раз пытаешься объявить функцию.
Вынеси ее наверх.
PM MAIL   Вверх
Kefir
Дата 16.3.2008, 10:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


«Hakuna Matata»
***


Профиль
Группа: Комодератор
Сообщений: 1878
Регистрация: 25.1.2003
Где: Tampere, Suomi

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



Код

  function phpnuke_to_dle($password) {     // вот на эту строчку ругается
    return md5(strtolower($password));
  }
  
  $result = $db->query("SELECT * FROM ".NUKE_PREFIX."_users" );
  while ($row = $db->get_row($result)) {
  
    $password    = $row['user_password'];
    $name        = $row['username'];
    $email       = $row['user_email'];
    $icq         = $row['user_icq'];
    $allow_mail  = $row['user_viewemail'];
    $comm_num    = $row['user_posts'];
    if (!$allow_mail) $allow_mail = 1;
    if (!$comm_num) $comm_num = 0;
    
    $password    = phpnuke_to_dle($password);
    
    if ($name != "") {
      $query = "INSERT INTO ".DLE_PREFIX."_users (password, name, email, icq, allow_mail, comm_num, reg_date) VALUES ('$password', '$name', '$email', '$icq', '$allow_mail', '$comm_num', now())";
      $db->query($query);
    };
  }

PM MAIL WWW Skype   Вверх
andro_id
Дата 16.3.2008, 11:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 45
Регистрация: 17.4.2007
Где: Москва

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



Спасибо большое. Всё заработало.
PM MAIL WWW ICQ Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Базы Данных | Следующая тема »


 




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


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

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