Показать сообщение отдельно

чекер дир на курле .. комунада.
  #679  
Старый 10.03.2009, 03:14
159932
Постоянный
Регистрация: 28.09.2007
Сообщений: 820
Провел на форуме:
6722038

Репутация: 1385


По умолчанию чекер дир на курле .. комунада.

PHP код:
<html>
<head>
<title>Снифер-абфускатор-ёжикомер!</title>
<style type="text/css"> 
.clearfloat {
clear : both;
height : 0;
font-size : 1px;
line-height : 0;

</style>
</head>
<body><br><br><br>
Введите адрес исследуемого хоста.<br>
<form method="post">
<input name="url" type="text" style="width:205px; border: 1px #89B4CC solid; text-align:center" value="хост"  onblur="if(this.value=='') this.value='хост';" onfocus="if(this.value=='хост') this.value='';"> / 
<input name="path" type="text" style="width:110px; border: 1px #89B4CC solid; text-align:center" value="дира/ы"  onblur="if(this.value=='') this.value='дира/ы';" onfocus="if(this.value=='дира/ы') this.value='';"> / 
<input name="threads" type="text" style="width:58px; border: 1px #89B4CC solid; text-align:center" value="потоки"  onblur="if(this.value=='') this.value='потоки';" onfocus="if(this.value=='потоки') this.value='';"> 
<input type="submit" value="бегин" style="border:1px #89B4CC solid;">
</form>
<br>
<pre>
<?
set_time_limit
(0);
error_reporting(0);
ignore_user_abort();

$patt '';                            #    путь до дир

if (isset($_POST['url'])) {

        if (
$_POST['url'] == 'хост') die('хост не введён');
        if (
$_POST['path'] != 'дира/ы'$path $_POST['path'];
            else 
$path false;
        if (
$_POST['threads'] > 0$cont $_POST['threads'];
            else 
$cont 50;                #    кол-во потоков, если не введено - ставится пятдесят
        
$url trim($_POST['url']);
    
    
$sta1 microtime(true);
    
$fo array_chunk(file($patt), $cont);
    
$fp = @fsockopen ($url80$errno$errstr30);
    if (!
$fp) echo 'Невозможно установить соединение с сервером.';
        else {
            
$sea fopen($url.'.htm','w');
            
fwrite($sea,'<html><title>'.$url.'</title><head><style>body {padding: 0px; margin:15px; color: #33FF33; background: #000000;}</style></head><body>');
            
            echo 
'<hr><font color=\'DarkOrange\'>Host:'.$url.'</font><hr>';
                
$temp = array();
            foreach (
$fo as $dirs) {
                
$dirs array_merge($dirs,$temp);
                
$temp $ssh $res = array();
                
$mh curl_multi_init();
                    foreach (
$dirs as $dir) {
                        
$dir trim($dir);
                        if (
$dir[0] == '/'$dir substr($dir1);
                            
$ssh[$dir] = curl_init($url.'/'.($path = ($path) ? $path.'/' '').$dir);
                            
curl_setopt($ssh[$dir], CURLOPT_RETURNTRANSFER,     1);
                            
curl_setopt($ssh[$dir], CURLOPT_HEADER,             1);
                            
curl_setopt($ssh[$dir], CURLOPT_NOBODY,             1); 
                            
curl_setopt($ssh[$dir], CURLOPT_TIMEOUT,             240); 
                            
curl_multi_add_handle ($mh,$ssh[$dir]);
                    }
                    if (!
sizeof($ssh)) continue;

                    do {
                        
$mrc curl_multi_exec($mh$active);
                    } while (
$mrc == CURLM_CALL_MULTI_PERFORM);

                    while (
$active and $mrc == CURLM_OK) {
                        if (
curl_multi_select($mh) != -1) {
                            do {
                                
$mrc curl_multi_exec($mh$active);
                            } while (
$mrc == CURLM_CALL_MULTI_PERFORM);
                        }
                    }

                    foreach (
$ssh as $i => $dir) {
                        
$res[$i]=curl_multi_getcontent($ssh[$i]);
                        
curl_multi_remove_handle($mh,$ssh[$i]);
                        
curl_close($ssh[$i]);
                    }
                    
                    
curl_multi_close($mh);
                    
                        foreach (
$res as $dir=>$data) {
                                if (!
strlen(trim($data))) {
                                    ++
$arrors;
                                    
array_push($temp,$dir);
                                    continue;
                                }
                                
$data explode("\n",$data);
                                
$data $data[0];
                            if (
strpos($data,"200") or strpos($data,"201") or strpos($data,"202") or strpos($data,"203") or strpos($data,"204") or strpos($data,"205") or strpos($data,"206") or strpos($data,"207") or strpos($data,"226")) {
                                echo 
'<a href="http://'.$url.'/'.$dir.'">'.$dir.'</a>   <font color="Yellow">'.$data.'</font>';
                                
fwrite($sea'<a href="http://'.$url.'/'.$dir.'">'.$dir.'</a>   <font color="Yellow">'.$data."</font><br>\r\n");
                            }
                            if (
strpos($data,"400") or strpos($data,"401") or strpos($data,"402") or strpos($data,"403") or strpos($data,"405") or strpos($data,"406") or strpos($data,"407") or strpos($data,"408") or strpos($data,"409") or strpos($data,"410") or strpos($data,"411") or strpos($data,"412") or strpos($data,"413") or strpos($data,"414") or strpos($data,"415") or strpos($data,"416") or strpos($data,"417") or strpos($data,"422") or strpos($data,"423") or strpos($data,"424") or strpos($data,"426")) {
                                echo 
'<a href="http://'.$url.'/'.$dir.'">'.$dir.'</a>   <font color="Red">'.$data.'</font>';
                                
fwrite($sea'<a href="http://'.$url.'/'.$dir.'">'.$dir.'</a>   <font color="Red">'.$data."</font><br>\r\n");
                            }
                            if (
strpos($data,"300") or strpos($data,"301") or strpos($data,"302") or strpos($data,"303") or strpos($data,"304") or strpos($data,"305") or strpos($data,"306") or strpos($data,"307")) {
                                echo 
'<a href="http://'.$url.'/'.$dir.'">'.$dir.'</a>   <font color="Navy">'.$data.'</font>';
                                
fwrite($sea'<a href="http://'.$url.'/'.$dir.'">'.$dir.'</a>   <font color="Navy">'.$data."</font><br>\r\n");
                            }
                            if (
strpos($data,"500") or strpos($data,"501") or strpos($data,"502") or strpos($data,"503") or strpos($data,"504") or strpos($data,"505") or strpos($data,"506") or strpos($data,"507") or strpos($data,"510")) {
                                echo 
'<a href="http://'.$url.'/'.$dir.'">'.$dir.'</a>   <font color="DarkOrange">'.$data.'</font>';
                                
fwrite($sea'<a href="http://'.$url.'/'.$dir.'">'.$dir.'</a>   <font color="DarkOrange">'.$data."</font><br>\r\n");
                            }
                        }
                    
flush();
            }
            if (
$cont 20sleep($cont/20);        #    если кол-во потоков более 20ти штук, идёт слип каждые [потоки/20] секунд (просто мне так захотелось)
        
$end microtime(true) - $sta1;
        
fwrite($sea$end);
        
fclose($sea);
        
fclose($fp);
    }
}
?>
</pre>
</body>
</html>
http://rapidshare.com/files/207340257/index.php.html
а то пробелы форум лишние ставит=\
 
Ответить с цитированием