- Баллы
- 103
- Имя в Minecraft
- Artarious
Итак, всем привет, дорогие форумчане. В этом туториале я научу тех кто не знает и покажу свою реализацию сие чуда. Итак начнем мы наверно с веб части.
Веб часть я взял из лаунчера "Империя"
Создаем файл hash.php в директории сайта рядом с Minecraft.jar и пишем это
Строкой $clientHash=.. мы получаем хэш который отправил клиент
Строкой $serverHash=.. мы генерируем хэш на сервере, а дальше просто сравниваем.
Итак первая часть закончена.
Теперь в LauncherFrame.java (уже перешли в код лаунчера) пишем функ-ции для получения хэша. Писать надо в самом классе, после объявления переменных.
Всё вспомогательные функции написаны.
Теперь главная функция
Всё главная функция готова.
Теперь тупо добавляем код md5s() после
this.loginForm.setNoNetwork();
return;
}
Всем спасибо за внимание!
Веб часть я взял из лаунчера "Империя"
Создаем файл hash.php в директории сайта рядом с Minecraft.jar и пишем это
PHP:
<?php
$clientHash = $_GET['hash'];
$serverHash = md5_file('minecraft.jar');
if ($clientHash != $serverHash)
echo '1';
else
echo '2';
?>
Строкой $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;
}
Всем спасибо за внимание!

