|
Постоянный
Регистрация: 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 ($url, 80, $errno, $errstr, 30);
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($dir, 1);
$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 > 20) sleep($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
а то пробелы форум лишние ставит=\
|