Advertisement
Guest User

Untitled

a guest
Nov 17th, 2014
31
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 3.72 KB | None | 0 0
  1. <?php
  2. function strToHex($string)
  3. {
  4.     $hex='';
  5.     for ($i=0; $i < strlen($string); $i++)
  6.     {
  7.         $hex .= dechex(ord($string[$i]));
  8.     }
  9.     return $hex;
  10. }
  11. function hexToStr($hex)
  12. {
  13.     $string='';
  14.     for ($i=0; $i < strlen($hex)-1; $i+=2)
  15.     {
  16.         $string .= chr(hexdec($hex[$i].$hex[$i+1]));
  17.     }
  18.     return $string;
  19. }
  20. function computeUnsignedCRC32($str){
  21.    sscanf(crc32($str), "%u", $var);
  22.    $var = dechex($var + 0);
  23.    return $var;
  24. }
  25.  
  26. function dec_to_hex($dec)
  27. {
  28.     $sign = ""; // suppress errors
  29.     $h = null;
  30.     if( $dec < 0){ $sign = "-"; $dec = abs($dec); }
  31.     $hex = Array( 0 => 0, 1 => 1, 2 => 2, 3 => 3, 4 => 4, 5 => 5,
  32.                   6 => 6, 7 => 7, 8 => 8, 9 => 9, 10 => 'a',
  33.                   11 => 'b', 12 => 'c', 13 => 'd', 14 => 'e',  
  34.                   15 => 'f' );
  35.        
  36.     do
  37.     {
  38.         $h = $hex[($dec%16)] . $h;
  39.         $dec /= 16;
  40.     }
  41.     while( $dec >= 1 );
  42.    
  43.     return $sign . $h;
  44. }
  45. function get_checksum($cs)
  46. {
  47.     $var = computeUnsignedCRC32($cs);
  48.     //echo "crchex: ".$var."<br/>";
  49.     $x = ('0x');
  50.     $a = substr($var, 0, 2);
  51.     $a = $x.$a;
  52.     $b = substr($var, 2, 2);
  53.     $b = $x.$b;
  54.     $c = substr($var, 4, 2);
  55.     $c = $x.$c;
  56.     $d = substr($var, 6, 2);
  57.     $d = $x.$d;
  58.     return chr($d).chr($c).chr($b).chr($a);
  59. }
  60. function rcon($serverip,$serverport,$rconpassword,$cmd){
  61.     $passhead = chr(0xFF).chr(0x00);
  62.     $head = chr(0x42).chr(0x45);
  63.     $pass = $passhead.$rconpassword;
  64.     $answer = "";
  65.     $checksum = get_checksum($pass);
  66.     $loginmsg = $head.$checksum.$pass;
  67.     $rcon = fsockopen("udp://".$serverip, $serverport, $errno, $errstr, 1);
  68.     stream_set_timeout($rcon, 1);
  69.     if (!$rcon) {
  70.         echo "ERROR: $errno - $errstr<br />\n";
  71.     } else {
  72.         fwrite($rcon, $loginmsg);
  73.         $res = fread($rcon, 16);
  74.        
  75.         $cmdhead = chr(0xFF).chr(0x01).chr(0x00);
  76.         //$cmd = "Players";
  77.         $cmd = $cmdhead.$cmd;
  78.         $checksum = get_checksum($cmd);
  79.         $cmdmsg = $head.$checksum.$cmd;
  80.         $hlen = strlen($head.$checksum.chr(0xFF).chr(0x01));
  81.        
  82.         fwrite($rcon, $cmdmsg);
  83.         $answer = fread($rcon, 102400);
  84.         $answer = preg_replace ('/BE(.*)ÿ/' , '' , $answer);
  85.        
  86.         if ( strToHex(substr($answer, 9, 1)) == "0"){
  87.             $count = strToHex(substr($answer, 10, 1));
  88.             echo $count."<br/>";
  89.             for ($i = 0; $i < $count-1; $i++){
  90.                 $newtext = fread($rcon, 102400);
  91.                 $answer .= $newtext;
  92.             }
  93.         }
  94.         $cmd = "Exit";
  95.         $cmd = $cmdhead.$cmd;
  96.         $checksum = get_checksum($cmd);
  97.         $cmdmsg = $head.$checksum.$cmd;
  98.         fwrite($rcon, $cmdmsg);
  99.     }
  100.     return $answer;
  101. }
  102. $severanswer = rcon('xx',xx,'xx','xx');
  103.  
  104.         $players=explode("\n", $severanswer);
  105.        
  106.         $spieler = array();
  107.  
  108.         array_shift($players);
  109.         array_shift($players);
  110.         array_shift($players);
  111.  
  112.         $players  = preg_replace ('/ +/' , ' ' , $players);
  113.  
  114.         for ( $i = 0; $i < count ( $players ); $i++ )
  115.         {
  116.             $spieler[] = explode(" ", $players[$i]);
  117.         }
  118.         $spielername = "";
  119.         $first = "";
  120.         for ( $i = 0; $i <= count ( $spieler ); $i++ )
  121.         {
  122.             $count = count ( $spieler[$i] );
  123.             for ( $a = 0; $a <= $count; $a++ )
  124.             {
  125.                 if($a == 3) {
  126.                     $spieler[$i][3] = preg_replace ('#\(.*?\)#m' , '' , $spieler[$i][3]);
  127.                 }
  128.                 if($a > 3) {
  129.                         if($first == "") {
  130.                             $text = "";
  131.                         } else {
  132.                             $text = " ";
  133.                         }
  134.                     if($spieler[$i][$a] != "(Lobby)") {
  135.                         $spielername .= $text;
  136.                         $spielername .= utf8_decode($spieler[$i][$a]);
  137.                     }
  138.                         unset($spieler[$i][$a]);   
  139.                     $first = "bla";
  140.  
  141.                     if($a == $count) {
  142.                         if($spielername != "") {
  143.                             array_push($spieler[$i], $spielername);
  144.                         }
  145.                     }
  146.                 }
  147.             }
  148.             $first = "";
  149.             $spielername = "";
  150.         }
  151.         print_r($spieler);
  152.         print_r($severanswer)
  153.        
  154. ?>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement