Клиент может и не отправить пакет с ID 252, а сразу же 205, сервер просто проигнорирует и продолжит без шифрования. Стоить заметить, что при этом не отсылается запрос на сервера Minecraft.net

Это же и не происходит при onlinemode=false

Классы для шифрования хранятся в пакете org.*. Когда я реализовывал свой флудер (и да, на гитхабе не самая рабочая версия, я ее выложил для демонстрации устройства сети), я поначалу тоже думал делать шифрование, но решил не реализовывать за ненадобностью.

Что же у нас происходит при авторизации? Для начала, сервер ждет от клиента Packet2Handshake, в котором передаются данные о сессии (логин и id). Далее сервер в любом случае присылает Packet253ServerAuthData с ключом сервера и кодом проверки, после чего клиент либо инициирует процесс активации шифрования, либо просто посылает пакет с ID 205 (Packet205ClientCommand), не реагируя на 253. Затем клиент получает пакет 1Login, в котором содержатся: ID его Entity, тип мира, текущее измерение, максимальное количество игроков, сложность и свой игровой режим (gamemode). Ладно, хватит занудного текста, перейдем к самим пакетам

Необходимо выполнить аутентификацию в службах Майкрософт #shorts #майнкрафт #minecraft

Как же происходит отправка пакетов? Легко — все данные сваливаются в одну общую кучу в стандартный DataOutputStream. Сначала передаем ID пакета, а затем сами данные. Вот как это было реализовано у меня:

public void writePacket(Packet packet) throws IOException <
try <
this.sout.write(packet.getId());
packet.write(this.sout);
log.info(«Write packet » + packet.getId());
> catch(Exception e) <
e.printStackTrace();
>
>

Хотелось бы рассказать о хитростях в плане отправки/чтения строк, массивов и всего прочего. Опять приведу свой код, так как я не стал реализовывать функции writeString и прочее.

Читайте также:  Как сломать паутину в Майнкрафте

public void write(DataOutputStream buf) throws IOException, NotSupportedOperationException <
buf.writeShort(message.length());
for(int i = 0; i ‹ message.length(); ++i) <
buf.writeChar(message.charAt(i));
>
>

передаем в функцию наш DataOutputStream и запихиваем данные.
Для передачи строки нам необходимо сначала передать ее длину, а затем каждый символ. При чтении делается тоже самое.

public static void writeString(String par0Str, DataOutputStream par1DataOutputStream) throws IOException
<
if (par0Str.length() › 32767)
<
throw new IOException(«String too big»);
>
else
<
par1DataOutputStream.writeShort(par0Str.length());
par1DataOutputStream.writeChars(par0Str);
>
>
public static void writeByteArray(DataOutputStream par0DataOutputStream, byte[] par1ArrayOfByte) throws IOException
<
par0DataOutputStream.writeShort(par1ArrayOfByte.length);
par0DataOutputStream.write(par1ArrayOfByte);
>

writeChars — стандартная функция, но цикл наглядней. Логика у них одна и та же.

СССР ВЗЛОМАЛ МАЙНКРАФТ☭

Ну, подытожим. Авторизоваться можно и без шифрования, а можно и с ним. При отсылки массива байтов и строки мы отсылаем размер, а затем само содержимое.
В следующем посте мы создадим свой пакет и попробуем что-нибудь отправить, а пока на сегодня все.

Источник: forum.minecraft-galaxy.ru

ChatEncryption [1.12.2] [1.11.2]

ChatEncryption [1.12.2] [1.11.2]

ChatEncryption — зашифрованные сообщения в чате!

Хотели когда-нибудь переписываться в чате пока гриферите с друзьями на публичном сервере майнкрафта, но чтобы никто не мог прочитать ваши сообщения? Я покажу вам мод, который решит эту проблему методом шифрования ваших сообщений.

Функционал мода ChatEncryption

— Возможность зашифровать любое сообщение таким образом, чтобы его могли прочесть лишь ваши друзья! (Для этого у них тоже должен быть установлен мод)
— Работает на ванилла серверах.
— Шифрование легко настраивается в настройках мода.
— Текущий ключ шифрования отображается во время игры.
— Горячая клавиша, чтобы обозначит сообщение, как зашифрованное. По-умолчанию это «>».

Как пользоваться модом ChatEncryption

ChatEncryption [1.12.2] [1.11.2]

Вам необходимо окружить сообщение, которое вы хотите зашифровать, таким образом, чтобы получилось нечто подобное: enc:ваше сообщение;
Это сообщение смогут увидеть только ваши друзья. Оно будет помечено, как расшифрованное.

Читайте также:  Все команды клана в Майнкрафт

На всякий случай скажу, что использовать этот тег можно как угодно. К примеру, если на сервере стоит плагин на личные сообщения, то вы можете использовать шифрование в них: /msg НикДруга enc:привет;
В таком случае, даже администратор не сможет проследить за тем, о чём вы общаетесь! Главное не получить бан за флуд в чате!

Как установить мод ChatEncryption

Установите Minecraft Forge для вашей версии майнкрафт.
Скачайте мод и поместите файл по адресу: C:Usersваш пользователь пкAppDataRoaming.minecraftmods
Откройте лаунчер майнкрафт и выберите в профиле версию майнкрафт с форджем.
Как найти папку AppData?

Источник: ru-minecraft.ru

Whirlpool шифрование

Фотография

  • Пользователь
  • PipPipPipPipPip
  • 1 051 сообщений
  • Отправлено 14 Март 2013 — 11:08

    Проблема такая:
    я около года пользовался плагином xAuth для регистрации/авторизации игроков.
    Теперь я перешел на AuthMe. Сделал конвертацию из старой базы в новую, все работает.
    Сейчас занимаюсь разработкой личного кабинета на сайте.

    Судя по инфе, предоставленной разрабами плагина, используется шифрование whirlpool.

    хеш пароля password — 01252ff3e623e6f52adf9723e42f4442b14c976de00d77bfb2065765283614d47db8d92c7dfb81ae6dba1a9cf2533411e3b905b6f39cd331347b83d98cf6cbd33e3e88109b1e

    Нашел даже готовую функцию для проверки пароля:

    function encryptPassword($password) < $salt = substr(hash(‘whirlpool’, uniqid(rand(), true)), 0, 12); $hash = hash(‘whirlpool’, $salt . $password); $saltPos = (strlen($password) >= strlen($hash) ? strlen($hash) : strlen($password)); return substr($hash, 0, $saltPos) . $salt . substr($hash, $saltPos); >

    Но после проверки оказалось, что в этой функции хэш того же пароля password всегда разный (видимо из-за рандома).

    Онотоле сейчас занят, поэтому если кто-то из вас может мне помочь, помогите, оплата достойная.

    #2 deadanykey

    deadanykey

  • Пользователь
  • PipPipPipPipPip
  • 3 415 сообщений
  • Отправлено 14 Март 2013 — 11:28

    Шифрование SHA256 (по умолчанию, если вы не изменили)

    #3 MEDVED

  • Пользователь
  • PipPipPipPipPip
  • 1 051 сообщений
  • Отправлено 14 Март 2013 — 11:50

    Шифрование SHA256 (по умолчанию, если вы не изменили)

    это в authme по умолчанию. а у меня там выбрано xauth

    Читайте также:  Кнопки Майнкрафт на клавиатуре

    #4 BaHeK

  • Модератор
  • 324 сообщений
  • Отправлено 14 Март 2013 — 15:38

    Вроде эта функция проверяет пароль

    function checkPassword($checkPass, $realPass, $algorithm) < switch ($algorithm) < case 1: return $realPass == hash(‘whirlpool’, $checkPass); case 2: return $realPass == hash(‘md5’, $checkPass); case 3: return $realPass == hash(‘sha1’, $checkPass); case 4: return $realPass == hash(‘sha256’, $checkPass); default: // xAuth hashing $saltPos = (strlen($checkPass) >= strlen($realPass) ? strlen($realPass) : strlen($checkPass)); $salt = substr($realPass, $saltPos, 12); $hash = hash(‘whirlpool’, $salt . $checkPass); return $realPass == substr($hash, 0, $saltPos) . $salt . substr($hash, $saltPos); > >

    Как я понял использовать ее надо так: checkPassword(«пароль», «хеш пароля», «1»); или так checkPassword(«пароль», «хеш пароля»); работать должны оба варианта.

    Источник: forum.myarena.ru