Войти или зарегистрироваться

Туториал Связываем клиент, лаунчер и сайт (проверка md5)

  • Автор темы Автор темы ilia770
  • Дата начала Дата начала
И каждый раз при подключении выдает окно на пару секунд: "Извлечение пакетов" и типа что то качает
 
Я так и сделал, клиент теперь если его нет то скачивает!
Но каждый раз выскакивает "Извлечение пакетов"

2323.jpg

Загрузка идет 1-2 сек) так как по локалке
и такое каждый раз при запуске лаунчера
 
А ты скрипт сделал, может он у тебя всегда NO шлёт ты не думал об этом?
 
Нет так точно не заработает, как я писал так работает, если у него постоянно обновляется, пусть смотрит правильный ли хэш у него в базе
 
Стоп, такой вопрос, а что ему нужно проверить? То что у него тот или не тот файл? дак я посмотрел код там же проверка... У тебя такой же файл? нет... = Скачай ; да... = Иди дальше...
 
Равен ли хэш с которым он сравнивает, хэшу который он сравнивает то есть
если он всё првильно сделал то, например лаунчер посчитал md5 файла minecraft.jar и он равен 165 предположим, после этого лаунчер отдаёт это значение крипту, т.е перейдя на скрипт таким оброзом http://skrip.com/hash.php?hash=165, и тогда скрипт ответит да и игра запустится, а если число будет другим то он обновится, я просто в пхп вообще не понимаю, поэтому принцип объяснить не могу, мне сказали что надо дать хеш и забрать ответ._
 
И ещё, это защита это второе что я делаю на джаве после хеллоу ворлда, поэтому, недочёты, имеются, и если вы мне будете о них говорить, или даже сразу говорить как их исправить я буду очень благодарен)
 
А чем тебе не нравится скрипт, который дали в теме?) Вроде-бы легкий скрипт, даже очень :)
<?php// Файл со скриптом положить на сервер рядом с файлом "minecraft.jar", хеш которого будет расчитываться для сверки c хешем передаваемым лаунчером.
$clientHash = $_GET['hash']; //хеш передаваемый лаунчером по ссылке(Получаем запрос с хешом)
$serverHash = md5_file('minecraft.jar'); //хеш расчитываемый сервером (md5 сумма файла...)

if ($clientHash == $serverHash) // Проверка если клиент хэш = сервер хеш
{
echo 'YES';
//Передаем если равен
}
else
{
echo 'NO';
//Передаем если не равен
}?>
 
ты написал глупость, зачем серверу то рассчитывать а если надо несколько сборок?
По этому лучше сделать базу к которой будет подключаться скрипт и с ней сверять)
 
Если проверять в ручную, то вот:

md5 файла minecraft.jar - 73139bfefe5aeeb0c7fb63ef4c831495

Если сделать вот так:

Код:
http://sait.ru/up/sk.php?hash=73139bfefe5aeeb0c7fb63ef4c831495

Ответ:
YES

а если:
Код:
http://sait.ru/up/sk.php?hash=165

Ответ:
NO

Как и должно быть!

И вот как в лаунчере поставил:

Код:
public void login(String userName, String password) {
    try {
 
        String parameters = "user=" + URLEncoder.encode(userName, "UTF-8") + "&password=" + URLEncoder.encode(password, "UTF-8") + "&version=" + 13;
      String result = Util.excutePost("http://авторизация/auth/auth.php", parameters);
//      String result = getFakeResult(userName);
      if (result == null) {
        showError("Зарегестрируйтесь на сайте !");
   
        return;
      }
String applicationData = System.getenv("APPDATA");
      String  f = applicationData + "/.minecraft/bin/minecraft.jar";
 
      try
{
 
  MessageDigest md5  = MessageDigest.getInstance("MD5");
String p = calculateHash(md5, f);
 
 
                URL localURL = new URL("http://sait.ru/up/sk.php?hash=" + p);
        BufferedReader localBufferedReader = new BufferedReader(new InputStreamReader(localURL.openStream()));
        String str2 = localBufferedReader.readLine();
        if (str2.equalsIgnoreCase("NO")){
            {
                GameUpdater.forceUpdate = true;
            }
       
      }
        else if (str2.equalsIgnoreCase("YES"))
        {
        }
 
  }
 
catch(FileNotFoundException fnfn)
{
[FONT=Consolas]GameUpdater.forceUpdate = true; [/FONT]
}
 
А как будет выглядеть версия с TRUE FALSE?
 
Как я понял, нужно заменить:
Ето
Код:
        if (str2.equalsIgnoreCase("NO")){
            {
                GameUpdater.forceUpdate = true;
            }
     
      }
        else if (str2.equalsIgnoreCase("YES"))

НА

Код:
        if (str2.equalsIgnoreCase("FALSE")){
            {
                GameUpdater.forceUpdate = true;
            }
     
      }
        else if (str2.equalsIgnoreCase("TRUE"))

И
ЕТО
Код:
<?php// Файл со скриптом положить на сервер рядом с файлом "minecraft.jar", хеш которого будет расчитываться для сверки c хешем передаваемым лаунчером.
$clientHash = $_GET['hash']; //хеш передаваемый лаунчером по ссылке(Получаем запрос с хешом)
$serverHash = md5_file('minecraft.jar'); //хеш расчитываемый сервером (md5 сумма файла...)
 
if ($clientHash == $serverHash) // Проверка если клиент хэш = сервер хеш
{
echo 'YES';
//Передаем если равен
}
else
{
echo 'NO';
//Передаем если не равен
}?>

На
Код:
<?php// Файл со скриптом положить на сервер рядом с файлом "minecraft.jar", хеш которого будет расчитываться для сверки c хешем передаваемым лаунчером.
$clientHash = $_GET['hash']; //хеш передаваемый лаунчером по ссылке(Получаем запрос с хешом)
$serverHash = md5_file('minecraft.jar'); //хеш расчитываемый сервером (md5 сумма файла...)
 
if ($clientHash == $serverHash) // Проверка если клиент хэш = сервер хеш
{
echo 'TRUE';
//Передаем если равен
}
else
{
echo 'FALSE';
//Передаем если не равен
}?>
 
Чувствую себя валенком но обьясните куда это втыкать)в частности в launcher.java когда я вставляю туда эти методы он мне выдает ошибки.я так понимаю чего то не хватает ему
 
Кто может,объясните по-подробней,пожалуйста.А то на туториал не очень смахивает,для незнающего человека.
Единственное,что я понял,что первый код из первого поста похож на код файла HashFunctionTest.java из другой темы,а второй код нужно прописывать в LauncherFrame.java.Но когда прописываешь в LauncherFrame.java,то выдает ошибку.
 
Назад
Верх