Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- function strToHex($string)
- {
- $hex='';
- for ($i=0; $i < strlen($string); $i++)
- {
- $hex .= dechex(ord($string[$i]));
- }
- return $hex;
- }
- function hexToStr($hex)
- {
- $string='';
- for ($i=0; $i < strlen($hex)-1; $i+=2)
- {
- $string .= chr(hexdec($hex[$i].$hex[$i+1]));
- }
- return $string;
- }
- function computeUnsignedCRC32($str){
- sscanf(crc32($str), "%u", $var);
- $var = dechex($var + 0);
- return $var;
- }
- function dec_to_hex($dec)
- {
- $sign = ""; // suppress errors
- $h = null;
- if( $dec < 0){ $sign = "-"; $dec = abs($dec); }
- $hex = Array( 0 => 0, 1 => 1, 2 => 2, 3 => 3, 4 => 4, 5 => 5,
- 6 => 6, 7 => 7, 8 => 8, 9 => 9, 10 => 'a',
- 11 => 'b', 12 => 'c', 13 => 'd', 14 => 'e',
- 15 => 'f' );
- do
- {
- $h = $hex[($dec%16)] . $h;
- $dec /= 16;
- }
- while( $dec >= 1 );
- return $sign . $h;
- }
- function get_checksum($cs)
- {
- $var = computeUnsignedCRC32($cs);
- //echo "crchex: ".$var."<br/>";
- $x = ('0x');
- $a = substr($var, 0, 2);
- $a = $x.$a;
- $b = substr($var, 2, 2);
- $b = $x.$b;
- $c = substr($var, 4, 2);
- $c = $x.$c;
- $d = substr($var, 6, 2);
- $d = $x.$d;
- return chr($d).chr($c).chr($b).chr($a);
- }
- function rcon($serverip,$serverport,$rconpassword,$cmd){
- $passhead = chr(0xFF).chr(0x00);
- $head = chr(0x42).chr(0x45);
- $pass = $passhead.$rconpassword;
- $answer = "";
- $checksum = get_checksum($pass);
- $loginmsg = $head.$checksum.$pass;
- $rcon = fsockopen("udp://".$serverip, $serverport, $errno, $errstr, 1);
- stream_set_timeout($rcon, 1);
- if (!$rcon) {
- echo "ERROR: $errno - $errstr<br />\n";
- } else {
- fwrite($rcon, $loginmsg);
- $res = fread($rcon, 16);
- $cmdhead = chr(0xFF).chr(0x01).chr(0x00);
- //$cmd = "Players";
- $cmd = $cmdhead.$cmd;
- $checksum = get_checksum($cmd);
- $cmdmsg = $head.$checksum.$cmd;
- $hlen = strlen($head.$checksum.chr(0xFF).chr(0x01));
- fwrite($rcon, $cmdmsg);
- $answer = fread($rcon, 102400);
- $answer = preg_replace ('/BE(.*)ÿ/' , '' , $answer);
- if ( strToHex(substr($answer, 9, 1)) == "0"){
- $count = strToHex(substr($answer, 10, 1));
- echo $count."<br/>";
- for ($i = 0; $i < $count-1; $i++){
- $newtext = fread($rcon, 102400);
- $answer .= $newtext;
- }
- }
- $cmd = "Exit";
- $cmd = $cmdhead.$cmd;
- $checksum = get_checksum($cmd);
- $cmdmsg = $head.$checksum.$cmd;
- fwrite($rcon, $cmdmsg);
- }
- return $answer;
- }
- $severanswer = rcon('xx',xx,'xx','xx');
- $players=explode("\n", $severanswer);
- $spieler = array();
- array_shift($players);
- array_shift($players);
- array_shift($players);
- $players = preg_replace ('/ +/' , ' ' , $players);
- for ( $i = 0; $i < count ( $players ); $i++ )
- {
- $spieler[] = explode(" ", $players[$i]);
- }
- $spielername = "";
- $first = "";
- for ( $i = 0; $i <= count ( $spieler ); $i++ )
- {
- $count = count ( $spieler[$i] );
- for ( $a = 0; $a <= $count; $a++ )
- {
- if($a == 3) {
- $spieler[$i][3] = preg_replace ('#\(.*?\)#m' , '' , $spieler[$i][3]);
- }
- if($a > 3) {
- if($first == "") {
- $text = "";
- } else {
- $text = " ";
- }
- if($spieler[$i][$a] != "(Lobby)") {
- $spielername .= $text;
- $spielername .= utf8_decode($spieler[$i][$a]);
- }
- unset($spieler[$i][$a]);
- $first = "bla";
- if($a == $count) {
- if($spielername != "") {
- array_push($spieler[$i], $spielername);
- }
- }
- }
- }
- $first = "";
- $spielername = "";
- }
- print_r($spieler);
- print_r($severanswer)
- ?>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement