zyrusthc
25-01-2006, 02:17
Hallo Leute war schon lange nicht mehr hier , aber ich hab mal nen Problem .
Und zwar folgendes : Ich möchte gerne in mein Webinterface eine BF1942 remoteconsole integrieren. Mit BF2 "md5" hab ich es bereits geschafft :), Zunächst möchte ich erst mal nur mich auf dem Server anmelden und einen Befehl ausführen , im Falle meines PHPScripts "admin.runNextLevel" , soll also den Server die nächste Map starten und mir Antwort geben! BF1942 nutzt aber soweit ich verstanden habe xor Verschlüsslung zum login!
Nun habe ich das hier (http://www.dontcamp.com/code/?file=bf1942_rcon_class.php) gefunden . Und habe mir damit mal folgendes PHPScript zusammengebaut :
<?php
//IP & Remote Port
$bf1942server = "192.168.10.1";
$bf1942serverport3 = "4712";
// Remote Logindaten
$bf1942rconuser = "admin";
$bf1942rconpass = "****";
// Commando ausführen
$command ="admin.runNextLevel";
// ///////////////////////////////////////////////////
function _xorcrypt($string, $key) {
for($i=0; $i<strlen($string); $i++) {
$string[$i] = $string[$i]^$key[$i];
}
return $string;
}
if (isset($bf1942server) && isset($bf1942serverport3) && isset($bf1942rconpass) && isset($bf1942rconuser) && isset($command)) {
if(!$fp = fsockopen($bf1942server, $bf1942serverport3, $errno, $errstr, 5))
{
echo "Kann nicht zum Server verbinden! (" . $errstr . ")";
}
else
{
echo "Mit Serversocket verbunden...<br>";
// Benutzername & Password xor verschlüsseln
$key = fread($fp, 10);
$username = _xorcrypt($bf1942rconuser, $key) . "\x00";
$password = _xorcrypt($bf1942rconpass, $key) . "\x00";
// schreibe Benutzername verschlüsellt in den socket
fwrite($fp, pack("L",strlen($username)));
fwrite($fp, $username);
// schreibe Password verschlüsselt in den socket
fwrite($fp, pack("L",strlen($password)));
fwrite($fp, $password);
// Antwort auf login in $return_data schreiben
$return_data = fread($fp,1);
// Sende REMOTE-Commando an den socket
$cmd = "admin.execremotecommand \"$command\"\n";
fwrite($fp, $cmd . chr(0));
// Antwort auf login in $return_data_command schreiben
$return_data_command = fread($fp,128);
// Verbindung schliessen
if(fclose ($fp)) {
echo "Verbindung wieder geschlossen!";
}
// Ausgaben anzeigen
echo "<br><br>$return_data_command<br><br>";
echo "<br>$return_data";
}
}
?>
Aber leider wird nicht wie erwüscht die nächste Map gestartet sodern der Server geht down ohne Meldung. In der Console erscheint dann "> Aborted"
und der Browser gibt mir :
Mit Serversocket verbunden...
Verbindung wieder geschlossen!
Er scheint ja schon mal eingeloggt zu sein... , den wenn ich das mit einem falschen pw versuche bleibt er online.
Hat jemand ne Ahnung was falsch ist ?!
gruss Oli
Und zwar folgendes : Ich möchte gerne in mein Webinterface eine BF1942 remoteconsole integrieren. Mit BF2 "md5" hab ich es bereits geschafft :), Zunächst möchte ich erst mal nur mich auf dem Server anmelden und einen Befehl ausführen , im Falle meines PHPScripts "admin.runNextLevel" , soll also den Server die nächste Map starten und mir Antwort geben! BF1942 nutzt aber soweit ich verstanden habe xor Verschlüsslung zum login!
Nun habe ich das hier (http://www.dontcamp.com/code/?file=bf1942_rcon_class.php) gefunden . Und habe mir damit mal folgendes PHPScript zusammengebaut :
<?php
//IP & Remote Port
$bf1942server = "192.168.10.1";
$bf1942serverport3 = "4712";
// Remote Logindaten
$bf1942rconuser = "admin";
$bf1942rconpass = "****";
// Commando ausführen
$command ="admin.runNextLevel";
// ///////////////////////////////////////////////////
function _xorcrypt($string, $key) {
for($i=0; $i<strlen($string); $i++) {
$string[$i] = $string[$i]^$key[$i];
}
return $string;
}
if (isset($bf1942server) && isset($bf1942serverport3) && isset($bf1942rconpass) && isset($bf1942rconuser) && isset($command)) {
if(!$fp = fsockopen($bf1942server, $bf1942serverport3, $errno, $errstr, 5))
{
echo "Kann nicht zum Server verbinden! (" . $errstr . ")";
}
else
{
echo "Mit Serversocket verbunden...<br>";
// Benutzername & Password xor verschlüsseln
$key = fread($fp, 10);
$username = _xorcrypt($bf1942rconuser, $key) . "\x00";
$password = _xorcrypt($bf1942rconpass, $key) . "\x00";
// schreibe Benutzername verschlüsellt in den socket
fwrite($fp, pack("L",strlen($username)));
fwrite($fp, $username);
// schreibe Password verschlüsselt in den socket
fwrite($fp, pack("L",strlen($password)));
fwrite($fp, $password);
// Antwort auf login in $return_data schreiben
$return_data = fread($fp,1);
// Sende REMOTE-Commando an den socket
$cmd = "admin.execremotecommand \"$command\"\n";
fwrite($fp, $cmd . chr(0));
// Antwort auf login in $return_data_command schreiben
$return_data_command = fread($fp,128);
// Verbindung schliessen
if(fclose ($fp)) {
echo "Verbindung wieder geschlossen!";
}
// Ausgaben anzeigen
echo "<br><br>$return_data_command<br><br>";
echo "<br>$return_data";
}
}
?>
Aber leider wird nicht wie erwüscht die nächste Map gestartet sodern der Server geht down ohne Meldung. In der Console erscheint dann "> Aborted"
und der Browser gibt mir :
Mit Serversocket verbunden...
Verbindung wieder geschlossen!
Er scheint ja schon mal eingeloggt zu sein... , den wenn ich das mit einem falschen pw versuche bleibt er online.
Hat jemand ne Ahnung was falsch ist ?!
gruss Oli