Версия: E-Xoops 1.05Rev3 Поля в базе: actkey - 8 симвалафф [a..z][1..0] (например 3f148c2c) pass - 32 символа, кажись md5 (например f31587f6860740431a7065a45feb9694) Перерыл половину скриптов, так и не нашел алгоритма... (с ПХП у мну слабенько ) Еси кто сталкивался с таким зверем - поведайте плз, как же там все таки пасс шифруют...
Слышь сделай проще =) Регаемся на форуме, с пассом 12345 Вскрываем базу выдергиваем свой хешик и пытаемся его отбрутить Если брутнулся то все в кармане твой алгоритм =) Если нет-то нада смотреть, думать.
Итак: вот ф-ция которая отвечает за логин: PHP: function login($uname, $pass) { global $myts, $db; $uname = $myts->makeTboxData4Save($uname); $result = $db->query("SELECT * FROM ".$db->prefix('users')." WHERE uname='".$uname."'"); if ( $db->num_rows($result) == 1 ) { $convert = false; $passed = false; $myrow = $db->fetch_array($result); if ( !empty($myrow['uid']) ) { if ( $myrow['pass'] == md5($pass) ) { $passed = true; } elseif ( $pass == $myrow['pass'] ) { $convert = true; $passed = true; } elseif (function_exists('crypt')) { if (crypt($pass, substr($myrow['pass'], 0, 2)) == $myrow['pass'] ) { $convert = true; $passed = true; } } if ( $convert ) { $newpass = md5($pass); $db->query("UPDATE ".$db->prefix('users')." SET pass='$newpass' WHERE uname='$uname'"); } if ( $passed ) { return new XoopsUser($myrow); } } } return false; } Есть 3 варианта: 1)if $myrow['pass'] == md5($pass) , пароль зашифрован MD5, если совпал, все ок. 2)elseif $pass == $myrow['pass'] , пароль лежит в базе незашифрованный, если совпал, все ок и зашифровать пароль с MD5 и записать в базу... 3) elseif (function_exists('crypt')) { if (crypt($pass, substr($myrow['pass'], 0, 2)) == $myrow['pass'] ) Хммм. в этом случае я не уверен, но мне кажется что бывает вариант, когда пароль зашифроан с помощью некоей ф-ции crypt, в этом случае ,если совпало то ок и зашифровать пароль с MD5 и записать в базу... Т.е. пароль должен быть зашифрован в MD5, проверь внимательней. P.S.: А 'actkey' это ключ активации....