PDA

Просмотр полной версии : Алгоритм в NewBB Plus


qPhoenix
13.01.2006, 11:53
Версия: E-Xoops 1.05Rev3
Поля в базе:
actkey - 8 симвалафф [a..z][1..0] (например 3f148c2c)
pass - 32 символа, кажись md5 (например f31587f6860740431a7065a45feb9694)

Перерыл половину скриптов, так и не нашел алгоритма... (с ПХП у мну слабенько :( ) Еси кто сталкивался с таким зверем - поведайте плз, как же там все таки пасс шифруют...

FHT
13.01.2006, 17:20
Слышь сделай проще =)
Регаемся на форуме, с пассом 12345
Вскрываем базу выдергиваем свой хешик и пытаемся его отбрутить
Если брутнулся то все в кармане твой алгоритм =)
Если нет-то нада смотреть, думать.

DetMyl
15.01.2006, 16:31
Перерыл половину скриптов, так и не нашел алгоритма... (с ПХП у мну слабенько :( ) Еси кто сталкивался с таким зверем - поведайте плз, как же там все таки пасс шифруют...

Итак: вот ф-ция которая отвечает за логин:
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' это ключ активации....