Войти или зарегистрироваться
  • Вы находитесь в сообществе Rubukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на различные языки плагины наших коллег из других стран.

Утилита [1.7.10 - 26.1.2] Authlib SkinFix - Авторизация и работающие скины своими руками

Метки:
Теги Теги
authlib skin yggdrasil
Хранить на своем гитхабе классы библиотеки с вырезанной защитой, код которой принадлежит mojang считаю слегка "серой" зоной.
Да можно спокойно держать код, репы не блокают
upload_2022-1-11_20-36-40.png
 
Ядро Purpur 1.16.5 всё работает, но требуется доп. фикс файлов.
1. В cache mojang 1.16.5.jar и patched_1.16.5.jar заменить authlib на свой
2. В самом ядре в patch.properties поставить хеши от изменённых
mojang_1.16.5.jar и patched_1.16.5.jar
patch=paperMC.patch
sourceUrl=https\://launcher.mojang.com/v1/objects/1b557e7b033b583cd9f66746b7a9ab1ec1673ced/server.jar
originalHash=хеш от mojang 1.16.5.jar
patchedHash=хеш patched_1.16.5.jar
version=1.16.5
3. Всё успех!
 
Ядро Forge 1.7.10

Потребовалось просто заменить authlib со своими ссылками
tLpjf4Q.png


Выражаем огромную благодарность TaoGunner от всей команды MPC 33 за проделанную работу
 
Не думал, что вновь займусь модами спустя столько лет, но благодаря данному ТСу 1.16.5 работает только так, без лишних модов на скины вдобавок.
 
Спасибо огромное! Помог, человек сделал крутую работу и при этом помог мне настроить этот патч. Заслуживает уважения
 
Немного о наболевшем: с выходом 1.19 к каждому сообщению чата прикрепляется цифровая подпись, она нужна для системы репортов.
Я поверхностно проверил authlib-3.11.49.jar : после того, как были убраны все обычные проверки, меня не пустило на сервер с сообщением:
Код:
Invalid signature for profile public key.

Логично предположить, что мой пиратский профиль не получил ключи с официального api /player/certificates
Проблема решается изменением параметра в enforce-secure-profile в server.properties:
Код:
enforce-secure-profile=false

Тогда всё работает.
upload_2022-8-6_23-40-49.png

Новые версии патченных библиотек выложу позже, как проверю работу всех версий библиотек с 1.16.5 до 1.19.2 .
Если у кого есть информация про уже готовую реализацию api социального взаимодействия и системы репортов - буду рад помощи.
 
Обновление до Minecraft v1.19.2

Изменения:
  • Добавлены пропатченные библиотеки для Minecraft 1.17.1, 1.18.2, 1.19.2;
  • Добавил под спойлер раздел [FAQ] Часто-задаваемые вопросы.
Менять пути InClassTranslator'ом не пробовал, менял с помощью онлайн-редактора. Работоспособность проверял на локальном ванильном сервере. Система социального взаимодействия (по простому - система мутов игроков) работает. Система банов и репортов из 1.19 - отключена (когда мелкомягкие её доделают, попробую оживить).
 
Сурсы патчей увидеть можно ?
 
Если у кого есть информация про уже готовую реализацию api социального взаимодействия и системы репортов - буду рад помощи.

У меня только есть частичная эмуляшка моджанговского апи, да и то я её забросил где-то на версии 1.17, если нужно могу доработать. Там есть тема с привилегиями (блок чата, доступа на сервера, вроде в 1.17 и появились). (https://github.com/AuroraTeam/MojangAPI-Simulation)

По поводу системы репортов, прошерстил сейчас шустренько wiki.vg, инфы по этому пока не увидел. Либо пока ещё никто не делал это, либо я невнимательно смотрел.
 
Сурсы патчей увидеть можно ?
Попробую объяснить, почему нет исходников патчей: в основе исправленной версии библиотеки лежит код официальной библиотеки. Я ничего нового в неё не добавлял, наоборот, удалял лишнее:
  • Класс YggdrasilMinecraftSessionService.java, функция getTextures - удалил условие на прохождение проверки цифровой подписи текстуры (удалил 4 строчки);
  • Класс YggdrasilMinecraftSessionService.java, функция isWhitelistedDomain - удалил всю логику, принуждая код всегда возвращать true (просто закомментил внутренность функции);
  • Класс YggdrasilMinecraftSessionService.java, конструктор - добавил строку в логгер (чисто для удобства)
    Код:
    LOGGER.info("SkinFix by TaoGunner");
Вот и все патчи, по сути. :lol:

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

Начал свои исследования на Fabric версии 1.19.2. Для затупков: на сервере проверяется хеш всех либ, если он не совпадает, то файл копируется по новой. Проверку убрать можно разными способами. В моем случае, я ее вырезал в файле 1.19.2-server.jar. Могут еще быть проблемы с этим:
Код:
private static final String[] ALLOWED_DOMAINS
Если ваша утилита не видит ее, найдите другую. Если вы хотите видить отладочные логи, в либе по пути libraries\com\mojang\logging\1.0.0\ в xml-файле поменяйте значение info на debug. Возможно это поможет вам понять, какие запросы сервер отправляет, и что получает в ответ.

По поводу сурсов, вопрос действительно глупый. Сейчас есть с десяток различных утилит, не связанных даже с игрой, которые помогут вам.
Онлайн редактор строк в jar-файле из данной статьи помог найти виновника в откате либ, при несовпадении хеша, да и в целом довольно полезный. За исходники PHP отдельное спасибо, это ускорит процесс ковыряния. На проде их использовать не рекомендую. Прости, автор, если как-то этим задеваю тебя.

Хотелось бы от себя добавить в статью еще кое-что. В процессе исследования документаций и апишек разных, пару раз натыкался на элитру в списке типов текстур. То есть: SKIN, CAPE, ELYTRA. На сервере в типах текстур тоже она фигурирует. Новая фича?
 
Последнее редактирование:
На проде их использовать не рекомендую.
Эти примеры скриптов нужны для того, чтобы понять на практике, как работает система авторизации. А там уже человек напишет свою реализацию на том, на чём умеет. Для "прода" у меня есть свои варианты на Python и Golang.

Хотелось бы от себя добавить в статью еще кое-что. В процессе исследования документаций и апишек разных, пару раз натыкался на элитру в списке типов текстур. То есть: SKIN, CAPE, ELYTRA. На сервере в типах текстур тоже ее она фигурирует. Новая фича?
Вполне может быть, надо поискать в последних версиях authlib. Если обнаружу - добавлю в скрипты загрузку элитр.
 
В процессе исследования документаций и апишек разных, пару раз натыкался на элитру в списке типов текстур. То есть: SKIN, CAPE, ELYTRA. На сервере в типах текстур тоже она фигурирует. Новая фича?

Вполне может быть, надо поискать в последних версиях authlib. Если обнаружу - добавлю в скрипты загрузку элитр.

Насколько я помню оно там есть, но вроде как на данный момент не используется. Скины элитр берутся с плаща вроде как.

Например:
 

Вложения:

  • 1fe0898798baf00e6d2c5216941698bdfc706b08.png
    1fe0898798baf00e6d2c5216941698bdfc706b08.png
    Размер файла
    1,1 КБ
    Просмотров
    13
Ребят,на 1.16.5 я так понимаю патчить надо server-1.16.5-20210115.111550-extra.jar и minecraft_server.1.16.5.jar в папке библиотек?

Было бы не плохо,если в гайд б добавили по версиям где,куда и что править)
 
Ребят,на 1.16.5 я так понимаю патчить надо server-1.16.5-20210115.111550-extra.jar и minecraft_server.1.16.5.jar в папке библиотек?

Было бы не плохо,если в гайд б добавили по версиям где,куда и что править)

Было бы неплохо,если в вопрос б добавили хотя бы какой сервер используется, потому как в ванильном сервере никакого server-1.16.5-20210115.111550-extra.jar нет.

Алгоритм практически всегда один и тот же: найти, где лежит authlib и заменить. Он либо в отдельной библиотеке, либо внутри самого jar-файла сервера.
 
Было бы неплохо,если в вопрос б добавили хотя бы какой сервер используется, потому как в ванильном сервере никакого server-1.16.5-20210115.111550-extra.jar нет.

Алгоритм практически всегда один и тот же: найти, где лежит authlib и заменить. Он либо в отдельной библиотеке, либо внутри самого jar-файла сервера.
А,прошу прощения,forge-1.16.5-36.2.33:nerd:
Отдельно увы не нашел authlib,лишь в указанных файлах,заменил.
Но при входе на сервер игрока консоль сервера выдает:
Код:
com.mojang.authlib.GameProfile@644b4000[id=<null>,name=USide,properties={},legacy=false]
Еще раз извиняюсь за кривой вопрос)Давно не занимался этим делом,сидел долго на 1.12.2,решили обновится,пошел изучать)
 
Про Forge есть пометка в 5м пункте, что он не использует файл ванильного сервера, значит надо заменять в файлах форжа (и да, скорее всего это extra).

Теперь чтобы проверить, что библиотека работает запусти сервер и глянь в логах текст SkinFix by TaoGunner. Если появился - значит библиотека подгрузилась.

Это сообщение должно быть и в логах сервера и в логах клиента.

А дальше уже дело за скриптами. Если используешь мои тестовые скрипты, то там есть debug-log, который подскажет, идут ли обращения к php-скриптам.
 
Про Forge есть пометка в 5м пункте, что он не использует файл ванильного сервера, значит надо заменять в файлах форжа (и да, скорее всего это extra).

Теперь чтобы проверить, что библиотека работает запусти сервер и глянь в логах текст SkinFix by TaoGunner. Если появился - значит библиотека подгрузилась.

Это сообщение должно быть и в логах сервера и в логах клиента.

А дальше уже дело за скриптами. Если используешь мои тестовые скрипты, то там есть debug-log, который подскажет, идут ли обращения к php-скриптам.
Да все отлично,спасибо)А еще вопрос,HD скины тянет или нет?Или для них что-то еще нужно?
 

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

Назад
Верх