Помогите Скрыть игроков в ванише

ermaksochi

Активный участник
Пользователь
Баллы
66
Имя в Minecraft
Serega007
Здравствуйте! Наткнулся на одну проблему проблему с ванишем. Есть плагин SuperVanish который способен скрывать игроков из списка игроков в списке серверов (см скриншот ниже)
upload_2019-9-11_18-7-33.png
Но тут обнаружился чит (ehacks) который спокойно это всё обходит, вот кусок кода который это делает:
И SuperVanish от этого никак не спасает (тестил на 1.14.*)
Это ещё не всё, дальше я нашёл "прекрасный" сайт https://minecraft-statistic.net который не просто палил кол-во онлайна, дак ещё показывал никнеймы игроков в том числе тех кто сидел в ванише

Предпринимались попытки скрыть игроков с помощью перехвата пакетов (ProtocolLib) PacketType.Status.Server.OUT_SERVER_INFO, OUT_PING; PacketType.Status.Client.IN_PING, IN_START. Но когда я использовал код с ehacks эти event'ы даже не думали срабатывать
Также я рылся в bukkit'е, применял ServerListPingEvent но тут такая же шляпа как и с ProtocolLib, евент тупо не срабатывал (но прекрасно работал когда я пинговался с сервером из менюшки майнкрафта где список серверов)

Вообщем подскажите куда дальше копать, как с этим бороться

Всё это нужно сделать желательно на 1.7.10 (да да, ещё тот динозавр, мне чихать что лучше делать на 1.14.4, можете и дальше продолжать оффтопить этим)
 
Последнее редактирование:
Здравствуйте! Наткнулся на одну проблему проблему с ванишем. Есть плагин SuperVanish который способен скрывать игроков из списка игроков в списке серверов (см скриншот ниже)
Посмотреть вложение 54835
Но тут обнаружился чит (ehacks) который спокойно это всё обходит, вот кусок кода который это делает:
Код:
        try {
            String[] data;
            try (Socket clientSocket = new Socket()) {
                clientSocket.connect(new InetSocketAddress("192.168.1.2", 25565), 7000);
                clientSocket.setSoTimeout(7000);
                DataOutputStream dos = new DataOutputStream(clientSocket.getOutputStream());
                BufferedReader br = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
                dos.write(payload, 0, payload.length);
                data = br.readLine().split("\u0000\u0000\u0000");
            }
            if (data.length < 2) {
                lastLpResult = -2;
                return;
            }
            lastLpResult = Integer.valueOf(data[data.length - 2].replace("\u0000", ""));
        } catch (Exception e) {
            System.err.println("Ошибка! " + e.getLocalizedMessage());
            return;
        }
      
        System.out.println("Онлайн: " + lastLpResult);
И SuperVanish от этого никак не спасает (тестил на 1.14.*)
Это ещё не всё, дальше я нашёл "прекрасный" сайт https://minecraft-statistic.net который не просто палил кол-во онлайна, дак ещё показывал никнеймы игроков в том числе тех кто сидел в ванише

Предпринимались попытки скрыть игроков с помощью перехвата пакетов (ProtocolLib) PacketType.Status.Server.OUT_SERVER_INFO, OUT_PING; PacketType.Status.Client.IN_PING, IN_START. Но когда я использовал код с ehacks эти event'ы даже не думали срабатывать
Также я рылся в bukkit'е, применял ServerListPingEvent но тут такая же шляпа как и с ProtocolLib, евент тупо не срабатывал (но прекрасно работал когда я пинговался с сервером из менюшки майнкрафта где список серверов)

Вообщем подскажите куда дальше копать, как с этим бороться
Дак ты query выключи
 
Который в server.properties? Он отключён, enable-query=false стоит
 
Нет конечно, на Thermos'e это желатально что б работало
Я вкурсе что у банжи есть там методы которые могут это скрывать но с ehack'ом это может не сработать (я не проверял)
 
Проще всего будет полностью очищать список игроков в ответе на пинг. Не думаю, что большая потеря
 
Мне этот Server List Ping ничо не даёт, погуглив насчёт этого в ProtocolLib ничего не нашёл связанного с этим SLP
Как это сделать? Можно конкретный пример кода?
 
Эвент не отрабатывает потому что это legacy ( < 1.7 ) ping. Тут сервер прям сразу данные шлёт, почти ничего не проверяя, такие дела.
 
Эвент не отрабатывает потому что это legacy ( < 1.7 ) ping. Тут сервер прям сразу данные шлёт, почти ничего не проверяя, такие дела.
А разве legacy ping передаёт список игроков?
1. Protocol version (e.g. 74)
2. Minecraft server version (e.g. 1.8.7)
3. Message of the day (e.g. A Minecraft Server)
4. Current player count
5. Max players
 
Legacy-ping позволяет максимум определить, подменяет ли сервер текущий онлайн.
Но конкретных скрытых игроков определить нереально.
А в теме речь идёт как раз об этом
 
Legacy-ping позволяет максимум определить, подменяет ли сервер текущий онлайн.
Но конкретных скрытых игроков определить нереально.
А в теме речь идёт как раз об этом
Не передаёт, но число игроков будет настоящим. Так что да, ник игрока не узнать конечно, но по сторонним факторам можно определить что кто-то спрятан. Просто в сниппете приложенном в тред используется именно легаси пинг.
 
Старые версии не дают список игроков. Тем не менее читерам этого достаточно: проверить присутствие администрации на сервере.
И как же можно проверить присутствие администарции на сервере?
Если онлайн legacy и json не совпадает - есть администрация что ли?
В ванише могут быть различные модераторы, например.
Вообще, не совсем понимаю, какая от этого может быть польза
 
И как же можно проверить присутствие администарции на сервере?
Если онлайн legacy и json не совпадает - есть администрация что ли?
В ванише могут быть различные модераторы, например.
Вообще, не совсем понимаю, какая от этого может быть польза
Именно в этом и суть. Если никого в ванише нет, то можно читерить.
 
заполнять Tab-list фейками
Это надо заполнять фейками не только Tab-List, а Essentials и другие плагины которые показывают список игроков, да и это костыльно уже

Если невозможно изменить кол-во игроков то есть хоть возможность полностью сделать это неработоспособным?
 
Это надо заполнять фейками не только Tab-List, а Essentials и другие плагины которые показывают список игроков, да и это костыльно уже

Если невозможно изменить кол-во игроков то есть хоть возможность полностью сделать это неработоспособным?
Добавлять в пинг рандомно 0-2 игроков всегда, если на сервере больше 0 игроков? Не самый элегантный метод, но уже что-то.
 
Если дальше мы не можем продвинуться в этом, то давайте будет добавлять рандом игроков или что-то другое что может помешать читеру, как это сделать с PacketQuery и Legacy (не хочу трогать Tab-list что б у игроков не возникало лишних вопросом), можно пример кода?
 
Последнее редактирование:
Модераторы тоже плохо. Количество игроков, возвращённое ping сравнивается с числом игроков в внутриигровом Tab-list. Читпак обратит внимание пользователя, если есть расхождение.
Как другой вариант: заполнять Tab-list фейками, чтобы не было расхождения.

Косяк всех плагинов ваниша: они скрывают игрока в Tab-list, но не уменьшают счётчик онлайна сервера на число скрытых игроков.
Потому что стандартное api это не делает.
 
Назад
Верх