CoD 5 server uitlezen (Opgelost)
Sander1993 - 30/12/2008 11:14
PHP interesse
he,
ik probeer een programma'tje te maken die de stats van een CoD5 server uitleest, nu ik het script uitvoer geeft hij Succes(0). Maar geeft niet de informatie die ik wil.
dit is mn script:
<?php
$fp = fsockopen("upd:193.253.226.181", 28960, $errno, $errstr, 30);
if (!$fp) {
echo "$errstr ($errno)<br />\n";
} else {
fwrite($fp, chr(255) . chr(255) . chr(255) . chr(255) . chr(0x02) . 'getstatus' . chr(0x00));
while (!feof($fp)) {
$sReturn = fread($fp, 128);
echo $sReturn;
}
fclose($fp);
}
?>
<?php
$fp = fsockopen ( "upd:193.253.226.181" , 28960 , $errno , $errstr , 30 ) ; if ( ! $fp ) {
echo "$errstr ($errno )<br />\n " ; } else {
$sReturn = fread ( $fp , 128 ) ; }
}
?>
24 antwoorden
Gesponsorde links
Giant - 30/12/2008 11:33
PHP beginner
$fp = fsockopen("upd:193.253.226.181", 28960, $errno, $errstr, 30);
$fp = fsockopen ( "upd:193.253.226.181" , 28960 , $errno , $errstr , 30 ) ;
Er is voor zover geen protocol met de naam "upd"...
probeer het eens met "udp" zo als hieronder dus ;)
$fp = fsockopen("udp:193.253.226.181", 28960, $errno, $errstr, 30);
$fp = fsockopen ( "udp:193.253.226.181" , 28960 , $errno , $errstr , 30 ) ;
Koen - 30/12/2008 12:05
PHP expert
$fp = fsockopen("udp://193.253.226.181", 28960, $errno, $errstr, 30);
$fp = fsockopen ( "udp://193.253.226.181" , 28960 , $errno , $errstr , 30 ) ;
Moet het zijn.
Sander1993 - 30/12/2008 12:07
PHP interesse
ik heb het nu met udp geprobeerd en ik krijg dan dit:
php_network_getaddresses: getaddrinfo failed: Name or service not known (0)
Koen - 30/12/2008 12:11
PHP expert
Sander1993 schreef:
ik heb het nu met udp geprobeerd en ik krijg dan dit:
php_network_getaddresses: getaddrinfo failed: Name or service not known (0)
Gebruik dan mijn oplossing..
ThAlmighty - 30/12/2008 12:46 (laatste wijziging 30/12/2008 12:47)
HTML beginner
dat komt omdat het een stream is en dus geen end-of-file heeft. Kan je hier geen voorbeelden van vinden op internet?
* ik heb lopen googlen maar kan wat jij wilt uberhaupt wel
Sander1993 - 30/12/2008 13:26 (laatste wijziging 30/12/2008 13:36)
PHP interesse
@ThAlmighty
ik denk wel dat het kan, er bestaan toch ook Call Of Duty moderators die alle stats van alle servers bijhouden.
er is idd geen end of file, dit is de response zonder eof:
ÿÿÿÿstatusResponse \_Admin\=ST=TINTIN45 =ST=latueuse\_Email\^2SERVERTINTIN45@live.fr\_Irc\=ST=\_Website\^3www.servertintin45.fr\
hier staan alleen data van de server en niet de deaths,kills,namen en ping in, hoe kan ik die vinden?
edit: de code:
<?php
$fp = fsockopen("udp://193.253.226.181", 28960, $errno, $errstr, 30);
if (!$fp) {
echo "$errstr ($errno)<br />\n";
} else {
fwrite($fp, chr(255) . chr(255) . chr(255) . chr(255) . chr(0x02) . 'getstatus' . chr(0x00));
$ServerData = fread($fp, 128);
list($response,$admin1,$admin2,$mail1,$mail2,$irc1,$irc2,$website1,$website2) = explode('\\',$ServerData);
echo "admin: ".$admin2;
echo "<br />";
echo "mail: ".$mail2;
echo "<br />";
echo "irc: ".$irc2;
echo "<br />";
echo "website: ".$website2;
fclose($fp);
}
?>
<?php
$fp = fsockopen ( "udp://193.253.226.181" , 28960 , $errno , $errstr , 30 ) ; if ( ! $fp ) {
echo "$errstr ($errno )<br />\n " ; } else {
$ServerData = fread ( $fp , 128 ) ; list ( $response , $admin1 , $admin2 , $mail1 , $mail2 , $irc1 , $irc2 , $website1 , $website2 ) = explode ( '\\' , $ServerData ) ; echo "website: " . $website2 ;
}
?>
Koen - 30/12/2008 13:38
PHP expert
Citaat:
To get more info from the server including player names, send a udp packet to the server containing:
{0xFF, 0xFF, 0xFF, 0XFF, 0x67, 0x65, 0x74, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73}
http://www.brai...7&t=57
Sander1993 - 30/12/2008 13:40
PHP interesse
dankje, dankje,
wat zou ik zonder jou moeten, ik ga het meteen uitproberen
Koen - 30/12/2008 13:42
PHP expert
Sander1993 schreef:
dankje, dankje,
wat zou ik zonder jou moeten , ik ga het meteen uitproberen
Geen server query tool maken?
Sander1993 - 30/12/2008 13:46 (laatste wijziging 30/12/2008 14:24)
PHP interesse
Citaat:
To get the basic server status, send a udp packet to the server's port containing
{0xFF, 0xFF, 0xFF, 0XFF, 0x67, 0x65, 0x74,0x69,0x6E,0x66,0x6F,0x20,0x78,0x78,0x78}
dus ik doe dit:
<?php
$fp = fsockopen("udp://193.253.226.181", 28960, $errno, $errstr, 30);
if (!$fp) {
echo "$errstr ($errno)<br />\n";
} else {
fwrite($fp, 0xFF, 0xFF, 0xFF, 0XFF, 0x67, 0x65, 0x74,0x69,0x6E,0x66,0x6F,0x20,0x78,0x78,0x78);
$ServerData = fread($fp, 128);
echo $ServerData;
fclose($fp);
}
?>
<?php
$fp = fsockopen ( "udp://193.253.226.181" , 28960 , $errno , $errstr , 30 ) ; if ( ! $fp ) {
echo "$errstr ($errno )<br />\n " ; } else {
fwrite ( $fp , 0xFF , 0xFF , 0xFF , 0XFF , 0x67 , 0x65 , 0x74 , 0x69 , 0x6E , 0x66 , 0x6F , 0x20 , 0x78 , 0x78 , 0x78 ) ;
$ServerData = fread ( $fp , 128 ) ;
}
?>
maar hij doet t niet.
het is wel het gene wat ik zocht, maar de toepassing van wat er staat begrijp ik niet helemaal.
edit: mooi voorbeeld van wat ik bedoel:
http://www.will...statusdemo
edit: ik kom weer een stapje dichterbij:
<?php
$fp = fsockopen("udp://193.253.226.181", 28960, $errno, $errstr, 30);
if (!$fp) {
echo "$errstr ($errno)<br />\n";
} else {
fwrite($fp, 'ÿÿÿÿ getstatus');
$alldata = stream_get_meta_data($fp);
$ServerData = fread($fp, 128);
echo $ServerData;
echo "<br />";
echo $alldata;
fclose($fp);
}
?>
<?php
$fp = fsockopen ( "udp://193.253.226.181" , 28960 , $errno , $errstr , 30 ) ; if ( ! $fp ) {
echo "$errstr ($errno )<br />\n " ; } else {
fwrite ( $fp , '˙˙˙˙ getstatus' ) ; $ServerData = fread ( $fp , 128 ) ;
}
?>
maar in $alldata staan niet de spelers,score etc...
hoe kom daar achter?
Wim - 30/12/2008 14:21
Crew algemeen
1) je geeft op lijn 6 te veel argumenten mee; het is 1 grote string!
2) het is hexadecimaal, ik weet niet zeker of je dit zo wel mag verzenden...
Sander1993 - 30/12/2008 14:49
PHP interesse
1) jij zegt het is in grote string in mijn code; maar dat is ook de bedoeling, citaat uit php.net
Citaat:
int fwrite ( resource $handle , string $string [, int $length ] )
en het werkt wel, ik krijg ook informatie, maar niet alle informatie die ik wil, maar een deel ervan, want ik wil de spelersnamen,score,deaths,assists,ping ook krijgen, en dat is ook de vraag, hoe kom ik daar achter?
Koen - 30/12/2008 15:29
PHP expert
Sander1993 schreef:
1) jij zegt het is in grote string in mijn code; maar dat is ook de bedoeling, citaat uit php.net
[..quote..]
en het werkt wel, ik krijg ook informatie, maar niet alle informatie die ik wil, maar een deel ervan, want ik wil de spelersnamen,score,deaths,assists,ping ook krijgen, en dat is ook de vraag, hoe kom ik daar achter?
Hij bedoelde
fwrite($fp, 0xFF, 0xFF, 0xFF, 0XFF, 0x67, 0x65, 0x74,0x69,0x6E,0x66,0x6F,0x20,0x78,0x78,0x78);
fwrite ( $fp , 0xFF , 0xFF , 0xFF , 0XFF , 0x67 , 0x65 , 0x74 , 0x69 , 0x6E , 0x66 , 0x6F , 0x20 , 0x78 , 0x78 , 0x78 ) ;
Sander1993 - 30/12/2008 15:33 (laatste wijziging 30/12/2008 15:35)
PHP interesse
dat zijn idd een beetje veel parameters, ik zit weer niet op te letten.
edit: nu heb ik het veranderd:
fwrite($fp, '0xFF, 0xFF, 0xFF, 0XFF, 0x67, 0x65, 0x74,0x69,0x6E,0x66,0x6F,0x20,0x78,0x78,0x78');
fwrite ( $fp , '0xFF, 0xFF, 0xFF, 0XFF, 0x67, 0x65, 0x74,0x69,0x6E,0x66,0x6F,0x20,0x78,0x78,0x78' ) ;
en hij geeft nu deze error: ÿÿÿÿdisconnect
wat nu?
Koen - 30/12/2008 15:39 (laatste wijziging 30/12/2008 15:40)
PHP expert
fwrite($fp, chr(0xFF) . chr(0xFF) . chr(0xFF) . chr(0xFF) . chr(0x67) . chr(0x65) . chr(0x74) . chr(0x69) . chr(0x6E) . chr(0x66) . chr(0x6F) . chr(0x20) . chr(0x78) . chr(0x78) . chr(0x78));
Al geprobeerd?
dan krijg je: ÿÿÿÿgetinfo xxx, dat zal wel de query zijn die je nodig hebt om met de server te communiceren
Sander1993 - 30/12/2008 15:43 (laatste wijziging 30/12/2008 15:50)
PHP interesse
ja, nu wel, en ik kom heel dichtbij:
de output:
ÿÿÿÿinfoResponse
\challenge\xxx\protocol\94\hostname\^5*SERVER*TINTIN45*\mapname\mp_downfall\clients\19\sv_maxclients\22\gametyp
Array
(
[stream_type] => socket
[unread_bytes] => 0
[timed_out] =>
[blocked] => 1
[eof] =>
)
en het script:
<?php
$fp = fsockopen("udp://193.253.226.181", 28960, $errno, $errstr, 30);
if (!$fp) {
echo "$errstr ($errno)<br />\n";
} else {
fwrite($fp, chr(0xFF) . chr(0xFF) . chr(0xFF) . chr(0xFF) . chr(0x67) . chr(0x65) . chr(0x74) . chr(0x69) . chr(0x6E) . chr(0x66) . chr(0x6F) . chr(0x20) . chr(0x78) . chr(0x78) . chr(0x78)); //ÿÿÿÿ getstatus
$alldata = stream_get_meta_data($fp);
$ServerData = fread($fp, 128);
echo nl2br($ServerData);
echo "<br /><pre>";
print_r($alldata);
echo "</pre>";
}
?>
<?php
$fp = fsockopen ( "udp://193.253.226.181" , 28960 , $errno , $errstr , 30 ) ; if ( ! $fp ) {
echo "$errstr ($errno )<br />\n " ; } else {
$ServerData = fread ( $fp , 128 ) ;
}
?>
nu nog welke spelers, hun kills, hun deaths, hun assists en ping, maar dat lukt misschien wel via die handige link die je me gegeven hebt.
edit: er stond op die site een code waarmee ook de namen van de spelers in de server kunt krijgen(
fwrite($fp, chr(0xFF) . chr(0xFF) . chr(0xFF) . chr(0XFF) . chr(0x67) . chr(0x65) . chr(0x74) . chr(0x73) . chr(0x74) . chr(0x61) . chr(0x74) . chr(0x75) . chr(0x73));fwrite($fp, chr(0xFF) . chr(0xFF) . chr(0xFF) . chr(0XFF) . chr(0x67) . chr(0x65) . chr(0x74) . chr(0x73) . chr(0x74) . chr(0x61) . chr(0x74) . chr(0x75) . chr(0x73));
)
maar die geeft alleen de instellingen van de server. dus wat is de manier om achter de spelers te komen (en hun stats)
Sander1993 - 30/12/2008 15:55
PHP interesse
nu dan krijg ik de gewone stats (website etc..)
maar ik wil die van de spelers hebben en met dit:
fwrite($fp, chr(0xFF) . chr(0xFF) . chr(0xFF) . chr(0xFF) . chr(0x67) . chr(0x65) . chr(0x74) . chr(0x69) . chr(0x6E) . chr(0x66) . chr(0x6F) . chr(0x20) . chr(0x78) . chr(0x78) . chr(0x78)); //ÿÿÿÿ getstatus
kwam ik al dicht in de buurt
Koen - 30/12/2008 16:29
PHP expert
Gebruik hetzelfde, maar dan dit:
fwrite($fp, chr(0xFF) . chr(0xFF) . chr(0xFF) . chr(0XFF) . chr(0x67) . chr(0x65) . chr(0x74) . chr(0x73) . chr(0x74) . chr(0x61) . chr(0x74) . chr(0x75) . chr(0x73));
Sander1993 - 30/12/2008 16:33
PHP interesse
dan krijg ik weer alleen de gewone info over de server
Koen - 30/12/2008 16:36 (laatste wijziging 30/12/2008 16:37)
PHP expert
<?php
$fp = fsockopen("udp://193.253.226.181", 28960, $errno, $errstr, 30);
if (!$fp) {
echo "$errstr ($errno)<br />\n";
} else {
fwrite($fp, chr(0xFF) . chr(0xFF) . chr(0xFF) . chr(0XFF) . chr(0x67) . chr(0x65) . chr(0x74) . chr(0x73) . chr(0x74) . chr(0x61) . chr(0x74) . chr(0x75) . chr(0x73));
$ServerData = fread($fp, 4096);
echo $ServerData;
}
?>
<?php
$fp = fsockopen ( "udp://193.253.226.181" , 28960 , $errno , $errstr , 30 ) ; if ( ! $fp ) {
echo "$errstr ($errno )<br />\n " ; } else {
$ServerData = fread ( $fp , 4096 ) ; }
?>
De lengte moet wel lang genoeg zijn natuurlijk
Edit:
ÿÿÿÿstatusResponse
\_Admin\=ST=TINTIN45 =ST=latueuse\_Email\^2SERVERTINTIN45@live.fr\_Irc\=ST=\_Website\^3www.servertintin45.fr\fxfrustumCutoff\1000\g_compassShowEnemies\0\g_gametype\tdm\gamename\Call of Duty: World at War\mapname\mp_seelow\penetrationCount\5\protocol\94\r_watersim_enabled\1\shortversion\1\sv_allowAnonymous\0\sv_disableClientConsole\0\sv_floodprotect\4\sv_hostname\^5*SERVER*TINTIN45*\sv_maxclients\22\sv_maxPing\350\sv_maxRate\5000\sv_minPing\0\sv_privateClients\0\sv_punkbuster\0\sv_pure\1\sv_voice\0\ui_maxclients\32\pswrd\0\mod\0
0 103 "[=ST=]Flo92Will"
0 90 "[=ST=]arnaud"
0 186 "[=ST=]TYLER1012"
0 93 "PRZmop"
600 98 "Boczo_PL"
0 999 "seppey"
0 138 "Master_pt"
0 999 "HG_Dicht_80"
0 131 "[RfF]KarOo"
6 138 "Kondzi1993pl"
600 118 "[RfF]YourFather"
0 126 "Wanted31"
0 80 "Federlun"
0 92 "[=ST=]juliendu18"
0 194 "tompson_hero"
0 128 "dogto-28"
0 133 "razorbackman"
0 131 "Kris7_PL"
0 135 "EvilMonkeyN"
300 102 "PieceOfCake"
0 160 "Aqq_PL"
0 165 "Pflanz35"
˙˙˙˙statusResponse
\_Admin\= ST= TINTIN45 = ST= latueuse\_Email\^2SERVERTINTIN45@ live. fr\_Irc\= ST= \_Website\^3www. servertintin45. fr\fxfrustumCutoff\1000 \g_compassShowEnemies\0 \g_gametype\tdm\gamename\Call of Duty: World at War\mapname\mp_seelow\penetrationCount\5 \protocol\94 \r_watersim_enabled\1 \shortversion\1 \sv_allowAnonymous\0 \sv_disableClientConsole\0 \sv_floodprotect\4 \sv_hostname\^5 * SERVER* TINTIN45* \sv_maxclients\22 \sv_maxPing\350 \sv_maxRate\5000 \sv_minPing\0 \sv_privateClients\0 \sv_punkbuster\0 \sv_pure\1 \sv_voice\0 \ui_maxclients\32 \pswrd\0 \mod\0
0 103 "[=ST=]Flo92Will"
0 90 "[=ST=]arnaud"
0 186 "[=ST=]TYLER1012"
0 93 "PRZmop"
600 98 "Boczo_PL"
0 999 "seppey"
0 138 "Master_pt"
0 999 "HG_Dicht_80"
0 131 "[RfF]KarOo"
6 138 "Kondzi1993pl"
600 118 "[RfF]YourFather"
0 126 "Wanted31"
0 80 "Federlun"
0 92 "[=ST=]juliendu18"
0 194 "tompson_hero"
0 128 "dogto-28"
0 133 "razorbackman"
0 131 "Kris7_PL"
0 135 "EvilMonkeyN"
300 102 "PieceOfCake"
0 160 "Aqq_PL"
0 165 "Pflanz35"
Sander1993 - 30/12/2008 16:38
PHP interesse
ja dat is het!!
woohoo, nu kan ik verder. thnx man
Gesponsorde links
Dit onderwerp is gesloten .