Типо кривой сканер директорий(

Discussion in 'PHP' started by Велемир, 2 Feb 2009.

  1. Велемир

    Joined:
    19 Jun 2006
    Messages:
    1,123
    Likes Received:
    96
    Reputations:
    -25
    Снова превед.Вот с горем попалам убил сегодняшний день((( :
    PHP:

    <?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: когда пишешь пост,сверху есть охуенная панелька - изучи её
     
    #1 Велемир, 2 Feb 2009
    Last edited by a moderator: 2 Feb 2009
  2. Gifts

    Gifts Green member

    Joined:
    25 Apr 2008
    Messages:
    2,494
    Likes Received:
    807
    Reputations:
    614
    Нам падать в экстазе от кривого кода с опечатками или это завуалированная просьба исправить? Смысл создания темы?
     
    _________________________
  3. Велемир

    Joined:
    19 Jun 2006
    Messages:
    1,123
    Likes Received:
    96
    Reputations:
    -25
    Завуалированная просьба исправить )))
     
  4. oRb

    oRb Elder - Старейшина

    Joined:
    9 May 2008
    Messages:
    294
    Likes Received:
    581
    Reputations:
    256
    ты открываешь 1 коннект, и туда пишешь все запросы. Хотя в заголовках у тебя четко прописано:
    Выбрал такой заголовок, тогда открывай для каждого запроса новый коннект.

    Не правильно:
    PHP:
    $req "HEAD /$path[$i] HTTP/1.1\r\r\n\n";
    $req .= "Host: $host\r\n";
    $req .= "Connection: Close\r\n";
    Правильно:
    PHP:
    $req "HEAD /".$path[$i]." HTTP/1.1\r\n";
    $req .= "Host: $host\r\n";
    $req .= "Connection: Close\r\n\r\n";
    Дальше скрипт не смотрел, этого хватило.
     
  5. Велемир

    Joined:
    19 Jun 2006
    Messages:
    1,123
    Likes Received:
    96
    Reputations:
    -25
    Да уж )Если уж заголовки отделять,то Host не в теме?))
     
  6. Велемир

    Joined:
    19 Jun 2006
    Messages:
    1,123
    Likes Received:
    96
    Reputations:
    -25

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

    Без операторов конкатенации и так работает)
     
  7. Велемир

    Joined:
    19 Jun 2006
    Messages:
    1,123
    Likes Received:
    96
    Reputations:
    -25
    Ага,знать бы ещё как ))
     
  8. Gifts

    Gifts Green member

    Joined:
    25 Apr 2008
    Messages:
    2,494
    Likes Received:
    807
    Reputations:
    614
    Велемир Как то так. Не проверял
    PHP:
    <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>";
        }    
    }

    ?>
     
    _________________________
  9. Велемир

    Joined:
    19 Jun 2006
    Messages:
    1,123
    Likes Received:
    96
    Reputations:
    -25
    Надо же,работает!))Я как раз подумывал о той функции(функциональной реализации),но не допёр =_=.Потому и стал косячить:).Пасиппи.Единственная проблема в том,что он реагирует на все коды почти)
     
    #9 Велемир, 3 Feb 2009
    Last edited: 3 Feb 2009
  10. Pashkela

    Pashkela Динозавр

    Joined:
    10 Jan 2008
    Messages:
    2,750
    Likes Received:
    1,044
    Reputations:
    339
    http://pashkela.narod.ru/progi/SiteScaner.rar

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

    Joined:
    19 Jun 2006
    Messages:
    1,123
    Likes Received:
    96
    Reputations:
    -25
    Чем декомпилить?)