Хостинг серверов Minecraft playvds.com
  1. Вы находитесь в русском сообществе Bukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на русский язык плагины наших собратьев из других стран.
    Скрыть объявление

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

Тема в разделе "Руководства, инструкции, утилиты", создана пользователем ilia770, 19 дек 2011.

  1. cubespace

    cubespace Старожил Пользователь

    Баллы:
    103
    И каждый раз при подключении выдает окно на пару секунд: "Извлечение пакетов" и типа что то качает
     
  2. Хостинг MineCraft
    <
  3. Автор темы
    ilia770

    ilia770 Активный участник

    Баллы:
    63
    я тебе написал что нужно сделать
     
  4. cubespace

    cubespace Старожил Пользователь

    Баллы:
    103
    Я так и сделал, клиент теперь если его нет то скачивает!
    Но каждый раз выскакивает "Извлечение пакетов"

    2323.jpg

    Загрузка идет 1-2 сек) так как по локалке
    и такое каждый раз при запуске лаунчера
     
  5. Автор темы
    ilia770

    ilia770 Активный участник

    Баллы:
    63
    А ты скрипт сделал, может он у тебя всегда NO шлёт ты не думал об этом?
     
  6. Автор темы
    ilia770

    ilia770 Активный участник

    Баллы:
    63
    Нет так точно не заработает, как я писал так работает, если у него постоянно обновляется, пусть смотрит правильный ли хэш у него в базе
     
  7. mukumause

    mukumause Старожил

    Баллы:
    103
    Стоп, такой вопрос, а что ему нужно проверить? То что у него тот или не тот файл? дак я посмотрел код там же проверка... У тебя такой же файл? нет... = Скачай ; да... = Иди дальше...
     
  8. Автор темы
    ilia770

    ilia770 Активный участник

    Баллы:
    63
    Равен ли хэш с которым он сравнивает, хэшу который он сравнивает то есть
    если он всё првильно сделал то, например лаунчер посчитал md5 файла minecraft.jar и он равен 165 предположим, после этого лаунчер отдаёт это значение крипту, т.е перейдя на скрипт таким оброзом http://skrip.com/hash.php?hash=165, и тогда скрипт ответит да и игра запустится, а если число будет другим то он обновится, я просто в пхп вообще не понимаю, поэтому принцип объяснить не могу, мне сказали что надо дать хеш и забрать ответ._
     
  9. Автор темы
    ilia770

    ilia770 Активный участник

    Баллы:
    63
    И ещё, это защита это второе что я делаю на джаве после хеллоу ворлда, поэтому, недочёты, имеются, и если вы мне будете о них говорить, или даже сразу говорить как их исправить я буду очень благодарен)
     
  10. mukumause

    mukumause Старожил

    Баллы:
    103
    А чем тебе не нравится скрипт, который дали в теме?) Вроде-бы легкий скрипт, даже очень :)
    <?php// Файл со скриптом положить на сервер рядом с файлом "minecraft.jar", хеш которого будет расчитываться для сверки c хешем передаваемым лаунчером.
    $clientHash = $_GET['hash']; //хеш передаваемый лаунчером по ссылке(Получаем запрос с хешом)
    $serverHash = md5_file('minecraft.jar'); //хеш расчитываемый сервером (md5 сумма файла...)

    if ($clientHash == $serverHash) // Проверка если клиент хэш = сервер хеш
    {
    echo 'YES';
    //Передаем если равен
    }
    else
    {
    echo 'NO';
    //Передаем если не равен
    }?>
     
    Сникерсни, stew и gjom нравится это.
  11. Автор темы
    ilia770

    ilia770 Активный участник

    Баллы:
    63
    ты написал глупость, зачем серверу то рассчитывать а если надо несколько сборок?
    По этому лучше сделать базу к которой будет подключаться скрипт и с ней сверять)
     
    zuma2 и Сникерсни нравится это.
  12. cubespace

    cubespace Старожил Пользователь

    Баллы:
    103
    Если проверять в ручную, то вот:

    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]
    }
    
     
  13. Lazy

    Lazy Старожил Пользователь

    Баллы:
    103
    А как будет выглядеть версия с TRUE FALSE?
     
  14. cubespace

    cubespace Старожил Пользователь

    Баллы:
    103
    Как я понял, нужно заменить:
    Ето
    Код:
            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';
    //Передаем если не равен
    }?>
     
    GJEvolution нравится это.
  15. Lazy

    Lazy Старожил Пользователь

    Баллы:
    103
    Не будет восприниматься как текст TRUE FALSE ?
     
  16. Kitsune

    Kitsune Активный участник

    Баллы:
    63
    Имя в Minecraft:
    Kitsune
    Чувствую себя валенком но обьясните куда это втыкать)в частности в launcher.java когда я вставляю туда эти методы он мне выдает ошибки.я так понимаю чего то не хватает ему
     
  17. Автор темы
    ilia770

    ilia770 Активный участник

    Баллы:
    63
    какая среда разработки?
     
  18. Kitsune

    Kitsune Активный участник

    Баллы:
    63
    Имя в Minecraft:
    Kitsune
    netbeans
     
  19. Kitsune

    Kitsune Активный участник

    Баллы:
    63
    Имя в Minecraft:
    Kitsune
    Даже netbeans ide 7.0.1
     
  20. Navarh

    Navarh Активный участник

    Баллы:
    68
    Кто может,объясните по-подробней,пожалуйста.А то на туториал не очень смахивает,для незнающего человека.
    Единственное,что я понял,что первый код из первого поста похож на код файла HashFunctionTest.java из другой темы,а второй код нужно прописывать в LauncherFrame.java.Но когда прописываешь в LauncherFrame.java,то выдает ошибку.
     
  21. nikes64

    nikes64 Активный участник

    Баллы:
    68
    эти ошибки надо импортировать и все.
     
    Navarh нравится это.

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