Алгоритм в NewBB Plus

Discussion in 'Криптография, расшифровка хешей' started by qPhoenix, 13 Jan 2006.

  1. qPhoenix

    qPhoenix Banned

    Joined:
    15 Dec 2005
    Messages:
    87
    Likes Received:
    50
    Reputations:
    8
    Версия: E-Xoops 1.05Rev3
    Поля в базе:
    actkey - 8 симвалафф [a..z][1..0] (например 3f148c2c)
    pass - 32 символа, кажись md5 (например f31587f6860740431a7065a45feb9694)

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

    FHT Elder - Старейшина

    Joined:
    21 Sep 2005
    Messages:
    454
    Likes Received:
    212
    Reputations:
    168
    Слышь сделай проще =)
    Регаемся на форуме, с пассом 12345
    Вскрываем базу выдергиваем свой хешик и пытаемся его отбрутить
    Если брутнулся то все в кармане твой алгоритм =)
    Если нет-то нада смотреть, думать.
     
  3. DetMyl

    DetMyl Люминевый самолет

    Joined:
    17 Dec 2005
    Messages:
    109
    Likes Received:
    75
    Reputations:
    70
    Итак: вот ф-ция которая отвечает за логин:
    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) == ) {
        
    $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($passsubstr($myrow['pass'], 02)) == $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' это ключ активации....
     
Loading...