1. Вы находитесь в сообществе Rubukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на различные языки плагины наших коллег из других стран.
    Скрыть объявление
Скрыть объявление
В преддверии глобального обновления, мы проводим исследования, которые помогут нам сделать опыт пользования форумом ещё удобнее. Помогите нам, примите участие!

Помогите Проверка лицензии на пиратке

Тема в разделе "Разработка плагинов для новичков", создана пользователем Migel, 22 окт 2024.

Статус темы:
Закрыта.
  1. Автор темы
    Migel

    Migel Активный участник Пользователь

    Баллы:
    66
    Имя в Minecraft:
    Migel077
    Видел на разных серверах по команде можно активировать вход через лицензию, как это может быть реализовано? Декомпелировал один второсортный плагин, в нём была проверка через api mojang по nickname, но это не является нормальной проверкой, т.к. нужно проверять саму сессию. Чат гпт предлагал проверять наличие textures в PlayerProfile, а если у человека не переопределён скин, а обычный стив?
    Если есть мысли - рад буду услышать)
     
  2. alexandrage

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

    Баллы:
    173
    В bungeecord api можно включать онлайн мод игроку во время подключения к серверу. Хотя это уже никто не делает, ибо головы в таблисте только он один и будет видеть, Собственно это единственный смысл был юзать этот костыль.
     
  3. Автор темы
    Migel

    Migel Активный участник Пользователь

    Баллы:
    66
    Имя в Minecraft:
    Migel077
    Ну не соглашусь, пропуск ввода пароля и доп. безопасность аккаунта, почему нет?
    По поводу онлайн аутентификации через банжу (есть подобное в велосити?), как там с UUID, можно же насильно изменять изменять UUID игрокам..
     
  4. alexandrage

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

    Баллы:
    173
    2fa...
     
  5. Dymeth

    Dymeth Активный участник Пользователь

    Баллы:
    98
    Имя в Minecraft:
    Dymeth
    В апи велосити есть всё то, что есть в апи банжи, и даже больше. Это более современный и технологичный прокси-сервер.

    Поэтому нужно было смотреть исходники нормального плагина, например: https://github.com/Elytrium/LimboAuth

    Это не сработает, даже если на нике каждого входящего будет скин.
    Например, на оффлайн-моде профиль могут устанавливать плагины на скины.

    В таких щепетильных вопросах советую поменьше слушать нейронки и побольше погружаться в теоретическую суть вопроса. Можно, например, почитать, как работает online-mode авторизация в Майнкрафте:
    https://wiki.vg/Protocol#Login
    https://wiki.vg/Microsoft_Authentication_Scheme
    https://wiki.vg/Mojang_API

    Но если буквально в двух словах - если к тебе уже подключился игрок, то ты НЕ можешь достоверно выяснить, есть ли у него лицензия. Чтобы это выяснить - тебе необходимо попросить данного игрока перезайти на сервер и при перезаходе включить ему проверку лицензии со стороны сервера. Банжой или велосити перекинуть не получится, нужно именно полное переподключение.
    Либо же, возможно, для игроков с версии 1.20+ может сработать новый transfer пакет, но я не вникал, как именно он обрабатывается со стороны клиента. Это всё нужно хорошенько изучать и тестировать, чтобы не поставить сервер под угрозу.

    Однако учти, что если включить проверку лицензии игроку без этой самой лицензии, то такой игрок на сервер войти не сможет, поскольку ванильный клиент сам отключается от сервера, если у него запросили авторизацию, а у него этой авторизации в лаунчере не было. А если вдруг не отключится сам, то сервер его точно не пустит.
    Именно поэтому ни на одном полу-лицензионном сервере вход по лицензии НЕ пытаются включать всем подряд автоматически, а предлагают использовать менюшку/команду, а потом ещё 100 раз предупреждают, что без лицензии подключиться к серверу не получится.

    Ты тут максимум можешь подложить соломки и автоматически выключать запрос online-mode авторизации у ника, например, через 5 минут, если игрок не переподключился. Также же можно отслеживать неудачную попытку подключения и после нее автоматом выключать запрос авторизации.
    Но если же игрок спокойно вошёл со включённым персонально для него online-mode - значит он реально авторизован в лаунчере с лицензионным аккаунтом.
    Осталось лишь как-то убедиться, что его лицензия за 3 рубля, купленная на помойке, завтра не превратится в тыкву, когда реальный владелец аккаунта решит восстановить доступ. Но тут тебе плагин никак не поможет.
    Максимум можно написать что-то в духе "не включайте вход по лицензии, если покупали аккаунт где-то кроме официального сайта Minecraft".
    Поэтому я вообще допускаю, что в СНГ авторизация с двухфакторкой через соц. сети действительно может быть безопасней в конечном итоге, чем авторизация с online-mode. К тому же через соцсети доступ потерять сложнее, поскольку, скорее всего, игрок реально владеет своими социальными сетями, а не купил аккаунт условного ВК/ТГ.

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

    Таким образом, заведомым пиратам можно никогда не предлагать вводить команду включения лицензии.
    А если игрок её всё-таки ввёл, то сразу выдавать ошибку, что его аккаунт лицензионным не является
     
    Последнее редактирование: 23 окт 2024
  6. Автор темы
    Migel

    Migel Активный участник Пользователь

    Баллы:
    66
    Имя в Minecraft:
    Migel077
    Спасибо за такой полный и интересный ответ.
     
Статус темы:
Закрыта.

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