hash в скрипте логина

Discussion in 'PHP' started by sidrus, 12 Aug 2009.

  1. sidrus

    sidrus New Member

    Joined:
    16 Feb 2009
    Messages:
    19
    Likes Received:
    0
    Reputations:
    0
    вобщем такая проблемма
    у меня сервер л2 и у него в базе все пароли лежат в хеше вирлпул база 64
    а когда с сайта запрашиваю опредилённый аккаунт он нелогинется скарей всего иззи того что при логине пасс кодируется в другом хеше
    вот скрипт логина
    тут разработчик скрипта сказал с 87 по 91 строчки править нада, но сто тока не пробовал ниработает
    PHP:
    <?php session_start();
    if (
    __FILE__==$_SERVER['SCRIPT_FILENAME']) {
        die (
    "You can't access this file directly...");
    }

    class 
    login {
        var 
    $name 'login';
        var 
    $version '1.0 CL@$Rev: 1125 $';
        var 
    $module_type 'client';
        var 
    $admin_side false;


        function 
    auth_check($login$passwd) {
            global 
    $db;
            
    $login addslashes($login);
            
    $result $db['prim']->query("SELECT ".AC_PASSWORD." AS password FROM ".TBL_ACCOUNTS." WHERE ".AC_LOGIN." = '".$login."'");
            return (
    $account $db['prim']->fetch_array($result)) && $account['password'] == $passwd;
        }

        function 
    clear_login($txt) {
        global 
    $CFG_CLIENT,$CFG;

            
    $expire_t time() - 86400;
            
    setcookie("logged_usr",    ""$expire_t);
            
    setcookie("login_usr",     ""$expire_t);
            
    setcookie("pass_usr",      ""$expire_t);
            
    setcookie("auth_usr_hash"""$expire_t);

            
    setcookie("serv_id"""0'/');
            unset(
    $_COOKIE['serv_id']);

            
    $text '';
            
    $CFG_CLIENT['skin'] = 'login';
            
    $CFG_CLIENT['default_module'] = $this->name;
            
    $CFG $CFG_CLIENT;
            unset(
    $_POST);
            unset(
    $_COOKIE);
            
    $content = array(
                
    'text_err' => $txt,
                
    'text' => $text,
                
    'ses_name' => session_name(),
                
    'ses_id' => session_id(),
                
    'form_action' => '?module='.$this->name,
                
    '_template_' => 'LOGIN',
            );

            return 
    $content;
        }

        function 
    _main() {
        global 
    $request$db$CFG_CLIENT,$CFG;
            if(isset(
    $_REQUEST['logout'])){
                return 
    $this->clear_login("{login_logout}");
            }
            if (!isset(
    $_POST['getin_usr'])) {                //no form submitted
                  
    if (!isset($_COOKIE['logged_usr'])) {             //no cookie set yet
                    //login
                    
    $CFG_CLIENT['skin'] = 'login';
                    
    $CFG_CLIENT['default_module'] = $this->name;
                    
    $CFG $CFG_CLIENT;
                    
    $content = array(
                        
    'text_err' => '',
                        
    'text' => $text,
                        
    'ses_name' => session_name(),
                        
    'ses_id' => session_id(),
                        
    'form_action' => '?module='.$this->name,
                        
    '_template_' => 'LOGIN',
                    );
                    return 
    $content;
                } else {    
    //else check cookie auth.
                    
    if ($this->auth_check($_COOKIE['login_usr'], $_COOKIE['pass_usr'])) {
                        if (
    $_COOKIE['auth_usr_hash']==md5($_COOKIE['login_usr'].date("d-a").$_SERVER['HTTP_USER_AGENT'])) {
                            
    setcookie("logged_usr"'1');
                            
    setcookie("login_usr"$_COOKIE['login_usr']);
                            
    setcookie("pass_usr"$_COOKIE['pass_usr']);
                            
    setcookie("auth_usr_hash"md5($_COOKIE['login_usr'].date("d-a").$_SERVER['HTTP_USER_AGENT']));
                        } else {
                            return 
    $this->clear_login("{login_have}");
                            exit;
                        }
                    } else {
                        return 
    $this->clear_login("{login_have}");
                        exit;
                    }
                }
            } else {      
    //else check form, cookie auth.
                
    if ($this->auth_check($_POST['login_usr'],  base64_encode(pack('H*'sha1(utf8_encode($_POST['pass_usr'])))) ) ) {
                    if(isset(
    $_SESSION['captcha_keystring']) && isset($_POST['keystring']) && ($_SESSION['captcha_keystring'] ==  $_POST['keystring'])) {
                        
    setcookie("logged_usr"'1');
                        
    setcookie("login_usr"$_POST['login_usr']);
                        
    setcookie("pass_usr"base64_encode(pack('H*'sha1(utf8_encode($_POST['pass_usr'])))));
                        
    setcookie("auth_usr_hash"md5($_POST['login_usr'].date("d-a").$_SERVER['HTTP_USER_AGENT']) );
                        
    $CFG_CLIENT['skin'] = "default";
                        
    $CFG_CLIENT['default_module'] = "info";
                        
    $CFG $CFG_CLIENT;
                        
    header("Location: ./");
                    } else {
                        return 
    $this->clear_login("{login_err_captcha}");
                        exit;
                    }
                    unset(
    $_SESSION['captcha_keystring']);
                } else {
                    return 
    $this->clear_login("{login_have}");
                    exit;
                }
            }
        }
    }
    ?>

    помогите плиз
     
    #1 sidrus, 12 Aug 2009
    Last edited: 13 Aug 2009
  2. dinar_007

    dinar_007 Мадемуазель

    Joined:
    18 Jan 2005
    Messages:
    1,019
    Likes Received:
    770
    Reputations:
    97
    Код нормально в теги оформи...
    И че за хэш такой вирлпул база 64
    Что-ж лентяи то какие...
     
  3. sidrus

    sidrus New Member

    Joined:
    16 Feb 2009
    Messages:
    19
    Likes Received:
    0
    Reputations:
    0
    Whirlpool(Base64): это кодировка
    а вот пример пароля зашифрованного в даную кодировку
    6qGPqcqjrta9V4TIv48FIDXgiDu9s/Cs5HCSDVQ67bYaAW4UItOdIFhK69rZfBY3VtGHGizHFUELI/icAcFO2Q==

    мне нада в этом скрипте эту кадировку поставить
     
  4. mailbrush

    mailbrush Well-Known Member

    Joined:
    24 Jun 2008
    Messages:
    1,997
    Likes Received:
    996
    Reputations:
    155
    md5 у тебя.
    dinar_007, whirlpool.
     
  5. dinar_007

    dinar_007 Мадемуазель

    Joined:
    18 Jan 2005
    Messages:
    1,019
    Likes Received:
    770
    Reputations:
    97
    if ($this->auth_check($_POST['login_usr'], base64_encode(pack('H*', sha1(utf8_encode($_POST['pass_usr'])))) ) ) {
    Эту строку раскуривай...

    И функция какая-то у тебя долбанная
    PHP:
         function auth_check($login$passwd) {
              global 
    $db;
              
    $login addslashes($login);
              
    $result $db['prim']->query("SELECT ".AC_PASSWORD." AS password FROM ".TBL_ACCOUNTS." WHERE ".AC_LOGIN." = '".$login."'");
              return (
    $account $db['prim']->fetch_array($result)) && $account['password'] == $passwd;
         }
    Делай
    select count(*) from tbl_name where login='lgn' and password='pass'
     
  6. sidrus

    sidrus New Member

    Joined:
    16 Feb 2009
    Messages:
    19
    Likes Received:
    0
    Reputations:
    0



    спс за ответ но чтото я некак не разкурю твоего совета))


    как я понимаю мне в этой части кода нада заменить кодировки пароля и всё
    PHP:
    return $this->clear_login("{login_have}");
                        exit;
                    }
                }
            } else {      
    //else check form, cookie auth.
                
    if ($this->auth_check($_POST['login_usr'],  base64_encode(pack('H*'sha1(utf8_encode($_POST['pass_usr'])))) ) ) {
                    if(isset(
    $_SESSION['captcha_keystring']) && isset($_POST['keystring']) && ($_SESSION['captcha_keystring'] ==  $_POST['keystring'])) {
                        
    setcookie("logged_usr"'1');
                        
    setcookie("login_usr"$_POST['login_usr']);
                        
    setcookie("pass_usr"base64_encode(pack('H*'sha1(utf8_encode($_POST['pass_usr'])))));
                        
    setcookie("auth_usr_hash"md5($_POST['login_usr'].date("d-a").$_SERVER['HTTP_USER_AGENT']) );
                        
    $CFG_CLIENT['skin'] = "default";
     
  7. sidrus

    sidrus New Member

    Joined:
    16 Feb 2009
    Messages:
    19
    Likes Received:
    0
    Reputations:
    0
    тока если в место MD5 пишу Whirlpool нифига не происходит(
     
  8. sidrus

    sidrus New Member

    Joined:
    16 Feb 2009
    Messages:
    19
    Likes Received:
    0
    Reputations:
    0
    ну что никого нет кто мог бы в крипте сменить кодировку?
     
  9. FireFenix

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

    Joined:
    3 Jun 2009
    Messages:
    390
    Likes Received:
    115
    Reputations:
    23
    Вру......

    замени на base64_encode(hash('whirlpool', $text)); где $text - что приходит на шифрование
     
    #9 FireFenix, 12 Aug 2009
    Last edited: 12 Aug 2009
  10. sidrus

    sidrus New Member

    Joined:
    16 Feb 2009
    Messages:
    19
    Likes Received:
    0
    Reputations:
    0

    блин ссори но я непонял где мне нада это вставить?
     
  11. Sharky

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

    Joined:
    1 May 2006
    Messages:
    487
    Likes Received:
    312
    Reputations:
    46
    Меняй название на нормальное или я сношу тему
     
  12. sidrus

    sidrus New Member

    Joined:
    16 Feb 2009
    Messages:
    19
    Likes Received:
    0
    Reputations:
    0
    ребят!
    ну что идей никаких чтоли нету?
    как этот мд5 на вирлпуль сменить?
     
  13. sidrus

    sidrus New Member

    Joined:
    16 Feb 2009
    Messages:
    19
    Likes Received:
    0
    Reputations:
    0
    ребята
    ну помогите плиз со скриптом
     
  14. Funk

    Funk Member

    Joined:
    8 Jun 2009
    Messages:
    12
    Likes Received:
    17
    Reputations:
    0
    тебе сказала что и на что заменить. а если не можешь сам вставить и ждешь готовый исправленный вариант значит бросай свой сервак л2 ибо какой же из тебя админ. по каждому вопросу тысячу раз будешь тут темы создавать
     
  15. b3

    b3 Banned

    Joined:
    5 Dec 2004
    Messages:
    2,170
    Likes Received:
    1,155
    Reputations:
    202
    13 строка:
    function auth_check($login, $passwd) {
    замени на:
    function auth_check($login, $passwd) {
    $passwd = base64_encode(hash('whirlpool', $passwd));


    Funk
    Администрируя сервер ла2 необязательно знать php, js, ajax, perl etc...
    а вот mysql нада знать.
     
    #15 b3, 18 Aug 2009
    Last edited: 18 Aug 2009