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

Туториал Делаем md5 Проверку minecraft.jar

  • Автор темы Автор темы Dan-det
  • Дата начала Дата начала

Dan-det

Старожил
Пользователь
Баллы
103
Имя в Minecraft
Artarious
Итак, всем привет, дорогие форумчане. В этом туториале я научу тех кто не знает и покажу свою реализацию сие чуда. Итак начнем мы наверно с веб части.
Веб часть я взял из лаунчера "Империя"
Создаем файл hash.php в директории сайта рядом с Minecraft.jar и пишем это
PHP:
<?php
$clientHash = $_GET['hash'];
$serverHash = md5_file('minecraft.jar');
if ($clientHash != $serverHash)
echo '1';
else
echo '2';
?>
Строкой $clientHash=.. мы получаем хэш который отправил клиент
Строкой $serverHash=.. мы генерируем хэш на сервере, а дальше просто сравниваем.
Итак первая часть закончена.
Теперь в LauncherFrame.java (уже перешли в код лаунчера) пишем функ-ции для получения хэша. Писать надо в самом классе, после объявления переменных.
Java:
 public static String calculateHash(MessageDigest algorithm, String fileName)
    throws Exception
  {
  FileInputStream fis = new FileInputStream(fileName);
    BufferedInputStream bis = new BufferedInputStream(fis);
    DigestInputStream dis = new DigestInputStream(bis, algorithm);
    while (dis.read() != -1);
    byte[] hash = algorithm.digest();
    return byteArray2Hex(hash);
  private static String byteArray2Hex(byte[] hash) {
    Formatter formatter = new Formatter();
    for (byte b : hash) {
      formatter.format("%02x", new Object[] { Byte.valueOf(b) });
    }
    return formatter.toString();
  }
Всё вспомогательные функции написаны.
Теперь главная функция
Java:
  private void md5s() {
    String applicationData = System.getenv("APPDATA");
    String f = applicationData + "/.minecraft/bin/minecraft.jar";
    try
    {
      MessageDigest md5 = MessageDigest.getInstance("MD5");
      String p = calculateHash(md5, f);
      try
      {
        URL localURL = new URL("http://ваш_сайт/путь_к_hash.php?hash=" + p);
        BufferedReader localBufferedReader = new BufferedReader(new InputStreamReader(localURL.openStream()));
        String result = localBufferedReader.readLine();
        if (result.trim().equals("1")) {
          GameUpdater.forceUpdate = true;
          return;
               
        }
        if (result.trim().equals("2"))
          return;
      }
      catch (Exception e)
      {
      }
    }
    catch (Exception e) {
      GameUpdater.forceUpdate = true;
      return;
    }
  }
Всё главная функция готова.
Теперь тупо добавляем код md5s() после
this.loginForm.setNoNetwork();
return;
}
Всем спасибо за внимание!
 
Что?! ты уже здесь я тему секунду назад опубликовал
 
Это не доконца законченный туториал, потом выложу про проверки всех файлов
 
А я эту тему не читал, темболее это в самом клиенте а не в minecraft.jar
 
если есть проверка одного файла, что мешает поменять некоторые штучки и будет тебе проверка других файлов?
 
Надо составить список фалов для проверки
 
Я лично против ничего не имею, просто не люблю когда форум так сказать засирается захламляется одинаковыми темами.
 
Назад
Верх