Вход Регистрация
Файл: IPBMafia.ru_IPB_3.4.6_Final_Rus _Nulled/board/upload/admin/sources/loginauth/convert/auth.php
Строк: 595
<?php

/**
 * <pre>
 * Invision Power Services
 * IP.Board v3.4.6
 * Login handler abstraction : Conversion method
 * Last Updated: $Date: 2012-05-10 16:10:13 -0400 (Thu, 10 May 2012) $
 * </pre>
 *
 * @author         $Author: bfarber $
 * @copyright    (c) 2001 - 2009 Invision Power Services, Inc.
 * @license        http://www.invisionpower.com/company/standards.php#license
 * @package        IP.Board
 * @link        http://www.invisionpower.com
 * @since        2.1.0
 * @version        $Revision: 10721 $
 *
 */

class login_convert extends login_core implements interface_login
{
    
/**
     * member data property
     *
     * @access    public
     * @var        array
     */
    
public $memberData;
    
    
/**
     * Login method configuration
     *
     * @access    protected
     * @var        array
     */
    
protected $method_config    = array();
    
    
/**
     * Field to look for password in
     *
     * @access    protected
     * @var        string
     */
    
protected $password_field     'conv_password';

    
/**
     * Constructor
     *
     * @access    public
     * @param    object        ipsRegistry reference
     * @param    array         Configuration info for this method
     * @param    array         Custom configuration info for this method
     * @return    @e void
     */
    
public function __constructipsRegistry $registry$method$conf=array() )
    {
        
$this->method_config    $method;
        
        
parent::__construct$registry );
    }

    
/**
     * Authenticate the request
     *
     * @access    public
     * @param    string        Username
     * @param    string        Email Address
     * @param    string        Password
     * @return    boolean        Authentication successful
     */
    
public function authenticate$username$email_address$password )
    {
        
//-----------------------------------------
        // New system?
        //-----------------------------------------
        
        
if( $this->settings['conv_login'] )
        {
            require_once( 
IPS_PATH_CUSTOM_LOGIN '/convert/newauth.php' );/*noLibHook*/
            
$conv = new converters$this->registry$this );
            
$this->return_code $conv->go$username$email_address$password );
            return;
        }
        
        
//-----------------------------------------
        // Did we actually convert?
        //-----------------------------------------
        
        
if( $this->settings['conv_configured'] != )
        {
            
$this->return_code "WRONG_AUTH";
            return 
false;
        }

        
//-----------------------------------------
        // Check for new field
        //-----------------------------------------
        
        
if( !$this->DB->checkForField'conv_password''members' ) )
        {
            
$this->password_field 'legacy_password';
        }

        
$this->loadMember$username );

        
$chosen_converter    explode"_"$this->settings['conv_chosen'] );
        
$login_handler_code end$chosen_converter );

        switch( 
$login_handler_code )
        {
            case 
'vb3':
            case 
'vb35':
            case 
'vb37':
                
$this->_authenticateVb3$username$password );
            break;
            
            case 
'ib31':
                
$this->_authenticateIb31$username$password );
              break;
               
            case 
'smf11':
            case 
'smf2':
                
$this->_authenticateSmf11$username$password );
              break;
               
            case 
'smf10':
            case 
'yabbse':
                
$this->_authenticateSmf$username$password );
            break;
            
            case 
'yabb20':
            case 
'yabb21':
                
$this->_authenticateYabb20$username$password );
            break;
            
            case 
'ubbt5':
                
$this->_authenticateUbbthreads5$username$password );
            break;
            
            case 
'snitz':
                
$this->_authenticateSnitz$username$password );
            break;
            
            case 
'punbb':
                
$this->_authenticatePunbb$username$password );
            break;
            
            case 
'dcforumplus':
                
$this->_authenticateDcforum$username$password );
            break;
            
            case 
'gcboards3':
                
$this->_authenticateGcboards$username$password );
            break;
            
            case 
'mybb':
                
$this->_authenticateMybb$username$password );
            break;
            
            case 
'wwwthreads':
                
$this->_authenticateWwwthreads$username$password );
            break;
            
            case 
'simpleforum':
                
$this->_authenticateSimpleforum$username$password );
            break;
            
            case 
'phpbb2':
            case 
'phpbb3':
                
$this->_authenticatePhpbb$username$password );
            break;
            
            case 
'ubbthreads7':
            case 
'ubbt5':
                
$this->_authenticateUbbthreads5$username$password );
            break;
            
            case 
'ubbt7':
            case 
'ubbt74':
                
$this->_authenticateUbbthreads74$username$password );
            break;
            
            case 
'seoboard':
                
$this->_authenticateSeoBoard$username$password );
            break;
            
            default:
                
$this->return_code "WRONG_AUTH";
            break;
        }
        
        if ( 
$this->return_code != 'SUCCESS' )
        {
            unset(
$this->_memberData);
        }

        return;
    }

    
/**
     * UBB.Threads 7.4.X
     *
     * @access    protected
     * @param    string        Username
     * @param    string        Password
     * @return    boolean        Successful
     */
    
protected function _authenticateUbbthreads74$username$password )
    {
        if( 
$this->_memberData$this->password_field ] == md5$this->_memberData['member_id'] . $password ) )
        {
            
$this->cleanConvertDatamd5$password ) );
            
$this->return_code "SUCCESS";
            return 
true;
        }
        else
        {
            
$this->return_code "WRONG_AUTH";
            return 
false;
        }
    }
    
    
/**
     * phpBB 3
     *
     * @access    protected
     * @param    string        Username
     * @param    string        Password
     * @return    boolean        Successful
     */
    
protected function _authenticatePhpbb$username$password )
    {
        
$success            false;
        
$single_md5_pass    md5$password );
        
$hash                $this->_memberData$this->password_field ];

        
$itoa64 './0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz';
        
        if ( 
strlen($hash) == 34 )
        {
            
$success = ( $this->hashCryptPrivate($password$hash$itoa64 ) === $hash ) ? true false;
        }
        else
        {
            
$success = ( $single_md5_pass === $hash ) ? true false;
        }

        if( 
$success )
        {
            
$this->cleanConvertData$single_md5_pass );
            
$this->return_code "SUCCESS";
            return 
true;
        }

        
$this->return_code "WRONG_AUTH";
        return 
false;
    }
    
    
/**
     * MyBB
     *
     * @access    protected
     * @param    string        Username
     * @param    string        Password
     * @return    boolean        Successful
     */
    
protected function _authenticateMybb$username$password )
    {
        
$current_password    $this->_memberData$this->password_field ];
        
$single_md5_pass     md5$password );

        if ( 
$current_password == md5md5($this->_memberData['misc']) . $single_md5_pass ) )
        {
            
$this->cleanConvertData$single_md5_pass );
            
$this->return_code "SUCCESS";
            return 
true;
        }
        else
        {
            
$this->return_code "WRONG_AUTH";
            return 
false;
        }
    }
    
    
/**
     * GC Board 3.0 BETA
     *
     * @access    protected
     * @param    string        Username
     * @param    string        Password
     * @return    boolean        Successful
     */
    
protected function _authenticate_gcboards$username$password )
    {
        
$myhash                crypt$password'authenticate' );
        
$single_md5_pass    md5$password );
        
$success            false;

        if ( 
$myhash == $this->_memberData$this->password_field ] )
        {
            
$success true;
        }

        if( 
$success )
        {
            
$this->cleanConvertData$single_md5_pass );
            
$this->return_code "SUCCESS";
            return 
true;
        }

        
$this->return_code "WRONG_AUTH";
        return 
false;
    }
    
    
/**
     * DCForum+ authentication
     *
     * @access    protected
     * @param    string        Username
     * @param    string        Password
     * @return    boolean        Successful
     */
    
protected function _authenticateDcforum$username$password )
    {
        
$current_password    $this->_memberData$this->password_field ];
        
$crypted_password    crypt$passwordsubstr($current_password02) );
        
$single_md5_pass    md5$password );

        if (
$current_password == $crypted_password)
        {
            
$this->cleanConvertData$single_md5_pass );
            
$this->return_code "SUCCESS";
            return 
true;
        }
        else
        {
            
$this->return_code "WRONG_AUTH";
            return 
false;
        }
    }

    
/**
     * punBB authentication
     *
     * @access    protected
     * @param    string        Username
     * @param    string        Password
     * @return    boolean        Successful
     */
    
protected function _authenticatePunbb$username$password )
    {
        
$success            false;
        
$single_md5_pass    md5$password );

        if ( 
function_exists('sha1') )
        {
            if( 
sha1($password) == $this->_memberData$this->password_field ] )
            {
                
$success true;
            }
        }
        else if ( 
function_exists('mhash') )
        {
            if( 
bin2hex(mhash(MHASH_SHA1$str)) == $this->_memberData$this->password_field ] )
            {
                
$success true;
            }
        }
        else
        {
            if( 
md5($password) == $this->_memberData$this->password_field ] )
            {
                
$success true;
            }
        }

        if( 
$success )
        {
            
$this->cleanConvertData$single_md5_pass );
            
$this->return_code "SUCCESS";
            return 
true;
        }

        
$this->return_code "WRONG_AUTH";
        return 
false;
    }

    
/**
     * snitz authentication
     *
     * @access    protected
     * @param    string        Username
     * @param    string        Password
     * @return    boolean        Successful
     */
    
protected function _authenticateSnitz$username$password )
    {
        require_once( 
IPS_PATH_CUSTOM_LOGIN '/convert/auth_sha256.php' );/*noLibHook*/
        
$sha = new auth_sha256();

        if ( 
$this->_memberData$this->password_field ])
        {
            
$sha256_password    $sha->SHA256$password );
            
$single_md5_pass    md5$password );

            if ( 
$sha256_password == $this->_memberData$this->password_field ] )
            {
                
$this->cleanConvertData$single_md5_pass );

                
$this->return_code 'SUCCESS';
                return 
true;
            }
        }

        
$this->return_code 'WRONG_AUTH';
        return 
false;
    }

    
/**
     * vB 3 authentication
     *
     * @access    protected
     * @param    string        Username
     * @param    string        Password
     * @return    boolean        Successful
     */
    
protected function _authenticateVb3$username$password )
    {
        if ( 
$this->_memberData['misc'])
        {
            
$single_md5_pass    md5$password );
            
$decr                 md5html_entity_decode$password ) . $this->_memberData['misc'] );

            if ( 
$decr == $this->_memberData$this->password_field ] )
            {
                
$this->cleanConvertData$single_md5_pass );
                
$this->return_code 'SUCCESS';
                return 
true;
            }
            else
            {
                
$single_md5_pass    md5html_entity_decode$password ) );
                
$tryagain            md5$single_md5_pass $this->_memberData['misc'] );
                
                if ( 
$tryagain == $this->_memberData$this->password_field ] )
                {
                    
$this->cleanConvertData$single_md5_pass );
                    
$this->return_code 'SUCCESS';
                    return 
true;
                }
            }
        }
        
        
$this->return_code 'WRONG_AUTH';
        return 
false;
    }

    
/**
     * iB 3.1 authentication
     *
     * @access    protected
     * @param    string        Username
     * @param    string        Password
     * @return    boolean        Successful
     */
    
protected function _authenticateIb31$username$password )
    {
        
$decr                 md5$password $username );
        
$single_md5_pass    md5$password );

        if ( 
$decr == $this->_memberData$this->password_field ] )
        {
            
$this->cleanConvertData$single_md5_pass );
            
$this->return_code "SUCCESS";
            return 
true;
        }

        
$this->return_code "WRONG_AUTH";
        return 
false;
    }

    
/**
     * SMF 1.1 authentication
     *
     * @access    protected
     * @param    string        Username
     * @param    string        Password
     * @return    boolean        Successful
     */
    
protected function _authenticateSmf11$username$password )
    {
        
$single_md5_pass md5($password);

        if( 
$this->_memberData$this->password_field ] )
        {
            
$username_low    mb_strtolower($username);
            
$sha1_password    sha1($username_low $password);
            
$success         false;

            if( 
$sha1_password == $this->_memberData$this->password_field ] )
            {
                
$success true;
            }
            else
            {
                
$this->_authenticateSmf$username$password );

                if ( 
$this->return_code == "SUCCESS" )
                {
                    
$success true;
                }
            }
            
            if( 
$success )
            {
                
$this->cleanConvertData$single_md5_pass );
                
$this->return_code "SUCCESS";
                return 
true;
            }

            
$this->return_code "WRONG_AUTH";
            return 
false;
        }
    }

    
/**
     * SMF / YABB.SE authentication
     *
     * @access    protected
     * @param    string        Username
     * @param    string        Password
     * @return    boolean        Successful
     */
    
protected function _authenticateSmf$username$password )
    {
        if( 
$this->_memberData$this->password_field ] )
        {
            
$single_md5_pass    md5$password );
            
$success             false;

            if ( 
crypt$passwordsubstr$password,0,) ) == $this->_memberData$this->password_field ] )
            {
                
$success true;
            }
            else if ( 
strlen($this->_memberData$this->password_field ]) == 32  AND ( $this->md5Hmac$password$username ) == $this->_memberData$this->password_field ] ) )
            {
                
$success true;
            }
            else if ( 
strlen($this->_memberData$this->password_field ]) == 32  AND ( $single_md5_pass == $this->_memberData$this->password_field ] ) )
            {
                
$success true;
            }

            if( 
$success )
            {
                
$this->cleanConvertData$single_md5_pass );
                
$this->return_code "SUCCESS";
                return 
true;
            }

        }
        
        
$this->return_code "WRONG_AUTH";
        return 
false;
    }

    
/**
     * UBBThreads .5 authentication
     *
     * @access    protected
     * @param    string        Username
     * @param    string        Password
     * @return    boolean        Successful
     */
    
protected function _authenticateUbbthreads5$username$password )
    {
        
$single_md5_pass    md5$password );
        
$success             false;

        if( 
crypt($password$this->_memberData$this->password_field ]) == $this->_memberData$this->password_field ] )
        {
            
$success true;
        }
        else if( 
$single_md5_pass == $this->_memberData['legacy_password'] )
        {
            
$success true;
        }

        if( 
$success )
        {
            
$this->cleanConvertData$single_md5_pass );
            
$this->return_code "SUCCESS";
            return 
true;
        }

        
$this->return_code "WRONG_AUTH";
        return 
false;
    }

    
/**
     * WWWThreads authentication
     *
     * @access    protected
     * @param    string        Username
     * @param    string        Password
     * @return    boolean        Successful
     */
    
protected function _authenticateWwwthreads$username$password )
    {
        
$single_md5_pass md5$password );

        if ( 
$this->_memberData['misc'])
        {
            
$sha1_in_db     = (strlen($db_password_hash) == 40) ? true false;
            
$sha1_available = (function_exists('sha1') || function_exists('mhash')) ? true false;

            if ( 
function_exists('sha1') ) 
            {
                
$form_password_hash sha1($str);
            } 
            else if (
function_exists('mhash')) 
            {
                
$form_password_hash bin2hex(mhash(MHASH_SHA1$str));
            } 
            else 
            {
                
$form_password_hash md5($str);
            }

            if (
$sha1_in_db && $sha1_available && $db_password_hash == $form_password_hash
            {
                
$authorized true;
            } 
            else if (!
$sha1_in_db && $db_password_hash == md5($form_password)) 
            {
                
$authorized true;
            }

            if( 
$authorized )
            {
                
$this->cleanConvertData$single_md5_pass );
                
$this->return_code "SUCCESS";
                return 
true;
            }
        }

        
$this->return_code "WRONG_AUTH";
        return 
false;
    }

    
/**
     * YABB 2.0 authentication
     *
     * @access    protected
     * @param    string        Username
     * @param    string        Password
     * @return    boolean        Successful
     */
    
protected function _authenticateYabb20$username$password )
    {
        
$myhash                rtrimbase64_encodepack"H*"md5($password) ) ), "=" );
        
$single_md5_pass     md5$password );
        
$success             false;

        if ( 
$myhash == $this->_memberData$this->password_field ] )
        {
            
$success true;
        }

        if( 
$success )
        {
            
$this->cleanConvertData$single_md5_pass );
            
$this->return_code "SUCCESS";
            return 
true;
        }

        
$this->return_code "WRONG_AUTH";
        return 
false;
    }

    
/**
     * SimpleForum authentication
     *
     * @access    protected
     * @param    string        Username
     * @param    string        Password
     * @return    boolean        Successful
     */
    
protected function _authenticateSimpleforum$username$password )
    {
        
$myhash                crypt($password'SiMpLeFoRuM');
        
$single_md5_pass    md5$password );
        
$success             false;

        if ( 
$myhash == $this->_memberData$this->password_field ] )
        {
            
$success true;
        }

        if( 
$success )
        {
            
$this->cleanConvertData$single_md5_pass );
            
$this->return_code "SUCCESS";
            return 
true;
        }

        
$this->return_code "WRONG_AUTH";
        return 
false;
    }

    
/**
     * Load a member
     *
     * @access    public
     * @param    string        Username
     * @return    @e void
     */
    
public function loadMember$username )
    {
        
$member $this->DB->buildAndFetch( array( 'select' => 'member_id''from' => 'members''where' => "members_l_username='" $this->DB->addSlashesmb_strtolower($username) ) . "'" ) );
        
        if( 
$member['member_id'] )
        {
            
$this->_memberData IPSMember::load$member['member_id'], 'extendedProfile,groups' );
        }
    }

    
/**
     * Clean up the converted data
     *
     * @access    public
     * @param    string        new password
     * @return    @e void
     */
    
public function cleanConvertData$new_pass )
    {
        
IPSMember::save$this->_memberData['email'], array( 'core' => array( 'misc' => ''$this->password_field => '' ) ), 'email' );
        
IPSMember::updatePassword$this->_memberData['email'], $new_pass );
    }

    
/**
     * Hmac md5
     *
     * @access    public
     * @param    string        data
     * @param    string        key
     * @return    string        hmac md5
     */
    
public function md5Hmac($data$key)
    {
        if (
strlen($key) > 64)
            
$key pack('H*'md5($key));
        
$key  str_pad($key64chr(0x00));

        
$k_ipad $key str_repeat(chr(0x36), 64);
        
$k_opad $key str_repeat(chr(0x5c), 64);

        return 
md5($k_opad pack('H*'md5($k_ipad $data)));
    }
    
    
/**
     * Private crypt hashing for phpBB 3
     *
     * @access    public
     * @param    string        Password
     * @param    string         Settings
     * @param    string        Hash-lookup
     * @return    string        phpBB3 password hash
     */
    
public function hashCryptPrivate$password$setting, &$itoa64 )
    {
        
$output    '*';

        
// Check for correct hash
        
if ( substr$setting0) != '$H$' )
        {
            return 
$output;
        }

        
$count_log2 strpos$itoa64$setting[3] );

        if ( 
$count_log2 || $count_log2 30 )
        {
            return 
$output;
        }

        
$count    << $count_log2;
        
$salt    substr$setting4);

        if ( 
strlen($salt) != )
        {
            return 
$output;
        }

        
/**
         * We're kind of forced to use MD5 here since it's the only
         * cryptographic primitive available in all versions of PHP
         * currently in use.  To implement our own low-level crypto
         * in PHP would result in much worse performance and
         * consequently in lower iteration counts and hashes that are
         * quicker to crack (by non-PHP code).
         */
        
if ( PHP_VERSION >= )
        {
            
$hash md5$salt $passwordtrue );

            do
            {
                
$hash md5$hash $passwordtrue );
            }
            while ( --
$count );
        }
        else
        {
            
$hash pack'H*'md5$salt $password ) );

            do
            {
                
$hash pack'H*'md5$hash $password ) );
            }
            while ( --
$count );
        }

        
$output    substr$setting012 );
        
$output    .= $this->_hashEncode64$hash16$itoa64 );

        return 
$output;
    }

    
/**
     * Private function to encode phpBB3 hash
     *
     * @access    protected
     * @param    string        Input
     * @param    count         Iteration
     * @param    string        Hash-lookup
     * @return    string        phpbb3 password hash encoded bit
     */
    
protected function _hashEncode64($input$count, &$itoa64)
    {
        
$output    '';
        
$i        0;

        do
        {
            
$value    ord$input[$i++] );
            
$output    .= $itoa64[$value 0x3f];

            if ( 
$i $count )
            {
                
$value |= ord($input[$i]) << 8;
            }

            
$output .= $itoa64[($value >> 6) & 0x3f];

            if ( 
$i++ >= $count )
            {
                break;
            }

            if ( 
$i $count )
            {
                
$value |= ord($input[$i]) << 16;
            }

            
$output .= $itoa64[($value >> 12) & 0x3f];

            if (
$i++ >= $count)
            {
                break;
            }

            
$output .= $itoa64[($value >> 18) & 0x3f];
        }
        while ( 
$i $count );

        return 
$output;
    }

    
/**
     * Change a password
     *
     * @access    public
     * @param    string        Email Address
     * @param    string        New Password
     * @param    string        Plain Text Password
     * @param    string        Member Array
     * @return    boolean        Request was successful
     */
    
public function changePass$email$new_pass$plain_pass$member )
    {
        
$this->return_code 'METHOD_NOT_DEFINED';
        return 
true;
    }
}
Онлайн: 1
Реклама