PDA

Просмотр полной версии : Типо кривой сканер директорий(


Велемир
02.02.2009, 20:50
Снова превед.Вот с горем попалам убил сегодняшний день((( :


<?php

$path = array();

$fp = fopen("paths.txt","r");

while(!feof($fp)) {

$path[] = fgets($fp,4096);

}




set_time_limit(0);

$host = "www.hackzone.ru";
$port = "80";
$sock = fsockopen($host,$port,$errno);
$i = 0;

for($i = 0;$i <count($path);$i++) {

$req = "HEAD /$path[$i] HTTP/1.1\r\r\n\n";
$req .= "Host: $host\r\n";
$req .= "Connection: Close\r\n";



if(!$sock) {

echo $errno($errstr);

}

fputs($sock,$req);

while(!feof($sock)) {

$x .= fgets($sock,4096);


$x = explode(" ",$x);

if ($x[1] == 400 or 404) {

echo "<br>Нету папочки(</br>";

}

else if ($x[1] == 403) {

echo "<br><font color='yellow'>Доступ запрещён</font></br>";

}

else if ($x[1] == 200 or 301) {

echo "<br><font color = 'red'>Есть!!!</font></br>";

}

else {

echo "<br>Ouknown Code</br>";

}

}

}

fclose($sock);

?>

paths.txt содержит путь memb

Алгоритм кривой,но другого придумать не смог,ибо никогда не писал такие скрипты).

scrat: когда пишешь пост,сверху есть охуенная панелька - изучи её

Gifts
02.02.2009, 21:36
Нам падать в экстазе от кривого кода с опечатками или это завуалированная просьба исправить? Смысл создания темы?

Велемир
02.02.2009, 21:46
Завуалированная просьба исправить )))

oRb
02.02.2009, 23:09
Завуалированная просьба исправить )))
ты открываешь 1 коннект, и туда пишешь все запросы. Хотя в заголовках у тебя четко прописано:
Connection: Close
Выбрал такой заголовок, тогда открывай для каждого запроса новый коннект.

Не правильно:
$req = "HEAD /$path[$i] HTTP/1.1\r\r\n\n";
$req .= "Host: $host\r\n";
$req .= "Connection: Close\r\n";

Правильно:
$req = "HEAD /".$path[$i]." HTTP/1.1\r\n";
$req .= "Host: $host\r\n";
$req .= "Connection: Close\r\n\r\n";

Дальше скрипт не смотрел, этого хватило.

Велемир
02.02.2009, 23:31
Да уж )Если уж заголовки отделять,то Host не в теме?))

Велемир
02.02.2009, 23:47
Правильно:
$req = "HEAD /".$path[$i]." HTTP/1.1\r\n";
$req .= "Host: $host\r\n";
$req .= "Connection: Close\r\n\r\n";

Дальше скрипт не смотрел, этого хватило.


$req = "HEAD /index.html HTTP/1.1\r\n";

Без операторов конкатенации и так работает)

Велемир
03.02.2009, 00:08
Выбрал такой заголовок, тогда открывай для каждого запроса новый коннект.



Ага,знать бы ещё как ))

Gifts
03.02.2009, 00:23
Велемир Как то так. Не проверял<pre><?php
set_time_limit(0);

$path = array();
$fp = fopen("paths.txt","r");
while(!feof($fp))
{
$path[] = trim(fgets($fp,4096));
}

function head($host,$path,$port=80)
{
$sock = fsockopen($host,$port,$errno);
$req = "HEAD /$path HTTP/1.1\r\n";
$req .= "Host: $host\r\n";
$req .= "Connection: Close\r\n\r\n";
if(!$sock) return $errno.'-'.$errstr;
fputs($sock,$req);
$x='';
while(!feof($sock)) $x .= fgets($sock,4096);
fclose($sock);
return $x;
}

$host = "www.hackzone.ru";
$port = "80";

$c=count($path);

for($i = 0;$i < $c;$i++)
{
list(,$status)=explode(" ",head($host,$path[$i],$port));
switch ($status)
{
case 400:
case 404: echo "<br>Нету папочки(</br>";break;
case 403: echo "<br><font color='yellow'>Доступ запрещён</font></br>";break;
case 200:
case 301: echo "<br>Нету папочки(</br>";break;
default: echo "<br>Unknown Code</br>";
}
}

?>

Велемир
03.02.2009, 18:09
Надо же,работает!))Я как раз подумывал о той функции(функциональной реализации),но не допёр =_=.Потому и стал косячить:).Пасиппи.Единстве нная проблема в том,что он реагирует на все коды почти)

Pashkela
03.02.2009, 21:13
http://pashkela.narod.ru/progi/SiteScaner.rar

а вот это реагирует только на то, на что надо реагировать

Велемир
04.02.2009, 22:11
Чем декомпилить?)