Войти или зарегистрироваться
  • Вы находитесь в сообществе Rubukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на различные языки плагины наших коллег из других стран.

Туториал [урок] привенчиваем проверку md5 к клиенту

@qwertyYy2, используй свой joinserver.php добавь то что нужно для проверки и все.
 
@alexandrage, скинь пожалуйста свою прогу для md5 просто к клиенту 1.4.5, и инструкции , благодарю... Лайков накидаю)
 
Мне Forge как бы не нужен))) а инструкцию можно , сейчас скачать не могу)
 
Мне Forge как бы не нужен))) а инструкцию можно , сейчас скачать не могу)
Там есть под чистый 1.4.5 даже без модлоадера.
И есть сорци чтоб переделать под любой майн. Все что нужно я выделил.
 
помогите, куда, как правильно добавить код alexandrage...
<?php
define('INCLUDE_CHECK',true);
include ("connect.php");

$sessionid = mysql_real_escape_string($_GET['sessionId']);
$user = mysql_real_escape_string($_GET['user']);
$serverid = mysql_real_escape_string($_GET['serverId']);
//**********************************************************************
$md5 = $_GET["s"]; //
$realmd5 = md5(file_get_contents("MinecraftDownload/minecraft.jar")); // Сверяем MD5
//**********************************************************************
$result = mysql_query("Select $db_columnUser From $db_table Where $db_columnSesId='$sessionid' And $db_columnUser='$user' And $db_columnServer='$serverid'") or die ("Запрос к базе завершился ошибкой.");
//**********************************************************
if($md5 == $realmd5 or die ("Нарушение безопасности.")) // Ответ клиенту при неверном MD5
//**********************************************************
if(mysql_num_rows($result) == 1)
{
echo "OK";
} else {

$result = mysql_query("Update $db_table SET $db_columnServer='$serverid' Where $db_columnSesId='$sessionid' And $db_columnUser='$user'") or die ("Запрос к базе завершился ощибкой.");

if(mysql_affected_rows() == 1){
echo "OK";
} else {
echo "Используйте Лаунчер";
}
}
?>
Родой от webCMR
<?php
require_once('../system.php');

if (!empty($_GET['sessionId']) and !empty($_GET['user']) and !empty($_GET['serverId'])) {

$sessionid = mysql_real_escape_string($_GET['sessionId']);
$login = mysql_real_escape_string($_GET['user']);
$serverid = mysql_real_escape_string($_GET['serverId']);

if (!preg_match("/^[a-zA-Z0-9_-]+$/", $login)) {

$str = "Join Server [Bad symbols Login] ";
echo "Bad login";

} elseif (!preg_match("/^[0-9]+$/", $sessionid)) {

$str = "Join Server [Bad symbols SessionId] ";
echo "Bad login";

} elseif (!preg_match("/^[a-z0-9_-]+$/", $serverid)) {

$str = "Join Server [Bad symbols ServerId] ";
echo "Bad login";
} else {

$str = "Join Server [Info] Session [$sessionid] | User [$login] | Server [$serverid]\r\n";

$result = BD("SELECT $bd_aUsername FROM $bd_table_accounts WHERE $bd_aSession='$sessionid' AND $bd_aUsername='$login' AND $bd_aServer='$serverid'");

if(mysql_num_rows($result) == 1){
$str .= "Join Server [Result] Relogin OK";
echo "OK";
} else {

$result = BD("UPDATE $bd_table_accounts SET $bd_aServer='$serverid' WHERE $bd_aSession='$sessionid' AND $bd_aUsername='$login'");

if(mysql_affected_rows() == 1){
$str .= "Join Server [Result] Login OK";
echo "OK";
} else {
$str .= "Join Server [Result] Bad Login NO";
echo "Bad login";
}
}

}


} else {

$str = "Join Server [Result] GET parameter empty ";
if (empty($_GET['user'])) $str .= "LOGIN parameter is empty | ";
if (empty($_GET['sessionId'])) $str .= "SESSIONID parameter is empty";
if (empty($_GET['serverId'])) $str .= "SERVERID parameter is empty";

echo "Bad login";

}

vtxtlog($str);
?>
 
Код:
<?php
require_once('../system.php');
 
if (!empty($_GET['sessionId']) and !empty($_GET['user']) and !empty($_GET['serverId'])) {
 
$sessionid = mysql_real_escape_string($_GET['sessionId']);
$login = mysql_real_escape_string($_GET['user']);
$serverid = mysql_real_escape_string($_GET['serverId']);
$md5 = $_GET["s"];
$realmd5 = md5(file_get_contents("MinecraftDownload/minecraft.jar"));
 
if (!preg_match("/^[a-zA-Z0-9_-]+$/", $login)) {
 
$str = "Join Server [Bad symbols Login] ";
echo "Bad login";
 
} elseif (!preg_match("/^[0-9]+$/", $sessionid)) {
 
$str = "Join Server [Bad symbols SessionId] ";
echo "Bad login";
 
} elseif (!preg_match("/^[a-z0-9_-]+$/", $serverid)) {
 
$str = "Join Server [Bad symbols ServerId] ";
echo "Bad login";
} else {
 
$str = "Join Server [Info] Session [$sessionid] | User [$login] | Server [$serverid]\r\n";
 
$result = BD("SELECT $bd_aUsername FROM $bd_table_accounts WHERE $bd_aSession='$sessionid' AND $bd_aUsername='$login' AND $bd_aServer='$serverid'");
if($md5 == $realmd5 or die ("Нарушение безопасности."));
if(mysql_num_rows($result) == 1){
$str .= "Join Server [Result] Relogin OK";
echo "OK";
} else {
 
$result = BD("UPDATE $bd_table_accounts SET $bd_aServer='$serverid' WHERE $bd_aSession='$sessionid' AND $bd_aUsername='$login'");
 
if(mysql_affected_rows() == 1){
$str .= "Join Server [Result] Login OK";
echo "OK";
} else {
$str .= "Join Server [Result] Bad Login NO";
echo "Bad login";
}
}
 
}
 
 
} else {
 
$str = "Join Server [Result] GET parameter empty ";
if (empty($_GET['user'])) $str .= "LOGIN parameter is empty | ";
if (empty($_GET['sessionId'])) $str .= "SESSIONID parameter is empty";
if (empty($_GET['serverId'])) $str .= "SERVERID parameter is empty";
 
echo "Bad login";
 
}
 
vtxtlog($str);
?>
К этой строчке присмотрись
$realmd5 = md5(file_get_contents("MinecraftDownload/minecraft.jar"));
Путь до minecraft.jar укажи
 
Хорошо, что я вовремя зашел сюда, я пролистывал код и нашел спасение от дыры в McShop
 
Вроде все правильно сделал, но почемуто нехочет блокировать кнопку сет.игра
в клиенте указал ссылку на joinserver.php
вроде должно блокировать кнопку, но нет, не блокируется:oops:
Код:
<?php
require_once('../system.php');
 
if (!empty($_GET['sessionId']) and !empty($_GET['user']) and !empty($_GET['serverId'])) {
 
    $sessionid = mysql_real_escape_string($_GET['sessionId']);
    $login = mysql_real_escape_string($_GET['user']);
    $serverid = mysql_real_escape_string($_GET['serverId']);
 
$md5 = $_GET["s"];
$realmd5 = md5(file_get_contents("MinecraftDownload/minecraft.jar"));
$result = mysql_query("Select $db_columnUser From $db_table Where $db_columnSesId='$sessionid' And $db_columnUser='$login' And $db_columnServer='$serverid'") or die ("Запрос к базе завершился ошибкой.");
if($md5 == $realmd5 or die ("Нарушение безопасности."))
if(mysql_num_rows($result) == 1)
{
    echo "OK";
} else {
 
$result = mysql_query("Update $db_table SET $db_columnServer='$serverid' Where $db_columnSesId='$sessionid' And $db_columnUser='$login'") or die ("Запрос к базе завершился ощибкой.");
 
    if(mysql_affected_rows() == 1){
        echo "OK";
    } else {
        echo "Используйте Лаунчер";
    }
}
 
    if (!preg_match("/^[a-zA-Z0-9_-]+$/", $login)) {
       
                $str = "Join Server [Bad symbols Login] ";
                echo "Bad login";
       
    } elseif (!preg_match("/^[0-9]+$/", $sessionid)) {
       
                $str = "Join Server [Bad symbols SessionId] ";
                echo "Bad login";
 
    } elseif (!preg_match("/^[a-z0-9_-]+$/", $serverid)) {
       
                $str = "Join Server [Bad symbols ServerId] ";
                echo "Bad login";
    } else {   
 
        $str = "Join Server [Info] Session [$sessionid] | User [$login] | Server [$serverid]\r\n";
 
        $result = BD("SELECT $bd_aUsername FROM $bd_table_accounts WHERE $bd_aSession='$sessionid' AND $bd_aUsername='$login' AND $bd_aServer='$serverid'");
 
        if(mysql_num_rows($result) == 1){
            $str .= "Join Server [Result] Relogin OK";
            echo "OK";
        } else {
 
        $result = BD("UPDATE $bd_table_accounts SET $bd_aServer='$serverid' WHERE $bd_aSession='$sessionid' AND $bd_aUsername='$login'");
 
            if(mysql_affected_rows() == 1){
                $str .= "Join Server [Result] Login OK";
                echo "OK";
            } else {
                $str .= "Join Server [Result] Bad Login NO";
                echo "Bad login";
            }
        }
       
    }
 
 
} else {
   
    $str = "Join Server [Result] GET parameter empty ";
    if (empty($_GET['user'])) $str .= "LOGIN parameter is empty | ";
    if (empty($_GET['sessionId'])) $str .= "SESSIONID parameter is empty";
    if (empty($_GET['serverId'])) $str .= "SERVERID parameter is empty";
   
    echo "Bad login";
 
}
 
vtxtlog($str);
?>
 
Вроде все правильно сделал, но почемуто нехочет блокировать кнопку сет.игра
в клиенте указал ссылку на joinserver.php
вроде должно блокировать кнопку, но нет, не блокируется:oops:
Код:
<?php
require_once('../system.php');
 
if (!empty($_GET['sessionId']) and !empty($_GET['user']) and !empty($_GET['serverId'])) {
 
    $sessionid = mysql_real_escape_string($_GET['sessionId']);
    $login = mysql_real_escape_string($_GET['user']);
    $serverid = mysql_real_escape_string($_GET['serverId']);
 
$md5 = $_GET["s"];
$realmd5 = md5(file_get_contents("MinecraftDownload/minecraft.jar"));
$result = mysql_query("Select $db_columnUser From $db_table Where $db_columnSesId='$sessionid' And $db_columnUser='$login' And $db_columnServer='$serverid'") or die ("Запрос к базе завершился ошибкой.");
if($md5 == $realmd5 or die ("Нарушение безопасности."))
if(mysql_num_rows($result) == 1)
{
    echo "OK";
} else {
 
$result = mysql_query("Update $db_table SET $db_columnServer='$serverid' Where $db_columnSesId='$sessionid' And $db_columnUser='$login'") or die ("Запрос к базе завершился ощибкой.");
 
    if(mysql_affected_rows() == 1){
        echo "OK";
    } else {
        echo "Используйте Лаунчер";
    }
}
 
    if (!preg_match("/^[a-zA-Z0-9_-]+$/", $login)) {
     
                $str = "Join Server [Bad symbols Login] ";
                echo "Bad login";
     
    } elseif (!preg_match("/^[0-9]+$/", $sessionid)) {
     
                $str = "Join Server [Bad symbols SessionId] ";
                echo "Bad login";
 
    } elseif (!preg_match("/^[a-z0-9_-]+$/", $serverid)) {
     
                $str = "Join Server [Bad symbols ServerId] ";
                echo "Bad login";
    } else { 
 
        $str = "Join Server [Info] Session [$sessionid] | User [$login] | Server [$serverid]\r\n";
 
        $result = BD("SELECT $bd_aUsername FROM $bd_table_accounts WHERE $bd_aSession='$sessionid' AND $bd_aUsername='$login' AND $bd_aServer='$serverid'");
 
        if(mysql_num_rows($result) == 1){
            $str .= "Join Server [Result] Relogin OK";
            echo "OK";
        } else {
 
        $result = BD("UPDATE $bd_table_accounts SET $bd_aServer='$serverid' WHERE $bd_aSession='$sessionid' AND $bd_aUsername='$login'");
 
            if(mysql_affected_rows() == 1){
                $str .= "Join Server [Result] Login OK";
                echo "OK";
            } else {
                $str .= "Join Server [Result] Bad Login NO";
                echo "Bad login";
            }
        }
     
    }
 
 
} else {
 
    $str = "Join Server [Result] GET parameter empty ";
    if (empty($_GET['user'])) $str .= "LOGIN parameter is empty | ";
    if (empty($_GET['sessionId'])) $str .= "SESSIONID parameter is empty";
    if (empty($_GET['serverId'])) $str .= "SERVERID parameter is empty";
 
    echo "Bad login";
 
}
 
vtxtlog($str);
?>
Во первых: MinecraftDownload/minecraft.jar - путь до minecraft.jar
Во вторых - это не блокирует кнопку сетевая игра, а запрещает вход на сервер при измененном клиенте.
 
Ясно, спасибо большое, проверьте пожалуйста, все ли я правильно скопипастил, через сайт в Joinserver захожу, вроде ошибок нету, bad login, все вроде правильно.
 
Код:
<?php
require_once('../system.php');
 
if (!empty($_GET['sessionId']) and !empty($_GET['user']) and !empty($_GET['serverId'])) {
 
$sessionid = mysql_real_escape_string($_GET['sessionId']);
$login = mysql_real_escape_string($_GET['user']);
$serverid = mysql_real_escape_string($_GET['serverId']);
$md5 = $_GET["s"];
$realmd5 = md5(file_get_contents("MinecraftDownload/minecraft.jar"));
 
if (!preg_match("/^[a-zA-Z0-9_-]+$/", $login)) {
 
$str = "Join Server [Bad symbols Login] ";
echo "Bad login";
 
} elseif (!preg_match("/^[0-9]+$/", $sessionid)) {
 
$str = "Join Server [Bad symbols SessionId] ";
echo "Bad login";
 
} elseif (!preg_match("/^[a-z0-9_-]+$/", $serverid)) {
 
$str = "Join Server [Bad symbols ServerId] ";
echo "Bad login";
} else {
 
$str = "Join Server [Info] Session [$sessionid] | User [$login] | Server [$serverid]\r\n";
 
$result = BD("SELECT $bd_aUsername FROM $bd_table_accounts WHERE $bd_aSession='$sessionid' AND $bd_aUsername='$login' AND $bd_aServer='$serverid'");
if($md5 == $realmd5 or die ("Нарушение безопасности."));
if(mysql_num_rows($result) == 1){
$str .= "Join Server [Result] Relogin OK";
echo "OK";
} else {
 
$result = BD("UPDATE $bd_table_accounts SET $bd_aServer='$serverid' WHERE $bd_aSession='$sessionid' AND $bd_aUsername='$login'");
 
if(mysql_affected_rows() == 1){
$str .= "Join Server [Result] Login OK";
echo "OK";
} else {
$str .= "Join Server [Result] Bad Login NO";
echo "Bad login";
}
}
 
}
 
 
} else {
 
$str = "Join Server [Result] GET parameter empty ";
if (empty($_GET['user'])) $str .= "LOGIN parameter is empty | ";
if (empty($_GET['sessionId'])) $str .= "SESSIONID parameter is empty";
if (empty($_GET['serverId'])) $str .= "SERVERID parameter is empty";
 
echo "Bad login";
 
}
 
vtxtlog($str);
?>
К этой строчке присмотрись
$realmd5 = md5(file_get_contents("MinecraftDownload/minecraft.jar"));
Путь до minecraft.jar укажи
Ура! все работает. если подменить клиент пишет User Not Premium, если своим клиентом все нормально!
 
Ура! все работает. если подменить клиент пишет User Not Premium, если своим клиентом все нормально!
Вообще-то нужно, чтобы было "Нарушение безопасности", конечно хэш можно подменить до захода на сервер.
 
Поставил мод worldedit CUI, требует мод лоадер, в мод лоадере присутствует axz.class, если заменить на axz.class от axexandrage, то Worldedit CUI не работает, что делать.
 

Поделиться этой страницей

Назад
Верх