Skip to content
Все статьи
This article is available in English
Опубликовано8 мин чтения

Бан по HWID в RedM: что работает, что нет и как забанить игрока навсегда

Бан по HWID в RedM лишь повышает цену возвращения. Идентификаторы, баны txAdmin, обход бана и альт-аккаунты и то, что действительно работает на сервере.

RedManticheatэксплуатацияBaobabAC

Также доступно на языках:EnglishFrançaisEspañolRomână

В понедельник вы забанили читера. В среду на вашем сервере снова игрок с другим именем, теми же привычками и тем же чит-меню. Бан по HWID в RedM должен был предотвратить именно это. В статье объясняется, почему он часто не срабатывает, что на самом деле записывает каждый вид бана и что можно сделать, чтобы возвращение чего-то стоило игроку.

Мы пишем античит, поэтому скажем сразу: ни один бан не вечен против того, кто готов купить новый аккаунт и новое оборудование. Цель в том, чтобы эта покупка стоила меньше, чем ваш сервер для него значит.

Какие идентификаторы на самом деле видит сервер RedM

Когда игрок подключается, сервер получает список идентификаторов, каждый с префиксом своего типа. Их перечисляет документация Cfx.re по GetPlayerIdentifiers:

  • license и license2: хеш лицензии Rockstar. На RedM это тот, на который можно рассчитывать, потому что он есть всегда.

  • steam: есть только если игрок запускает через Steam. Необязательный, поэтому полагаться на него нельзя.

  • discord: идентификатор пользователя Discord. Его наличие не гарантировано, поэтому никогда не опирайтесь только на него.

  • fivem: идентификатор аккаунта Cfx.re.

  • ip: адрес, с которого идёт подключение.

Помимо идентификаторов, FXServer предоставляет аппаратные токены через GetNumPlayerTokens и GetPlayerToken. Справочник нативов описывает их одной строкой: токены можно использовать для усиления логики банов, однако они специфичны для сервера. Эта вторая половина важна, к ней мы вернёмся ниже.

server.lua: reading identifiers and tokens at connect time
AddEventHandler('playerConnecting', function(name)
  local src = source
  local ids = GetPlayerIdentifiers(src)

  local tokens = {}
  for i = 0, GetNumPlayerTokens(src) - 1 do
    tokens[#tokens + 1] = GetPlayerToken(src, i)
  end

  print(('%s: %d identifiers, %d tokens'):format(name, #ids, #tokens))
end)

Почему бан по одному идентификатору не работает

У каждого идентификатора для игрока своя цена:

  • IP менять бесплатно: перезапуск роутера на некоторых подключениях, VPN на любых. Его же нередко используют ни в чём не повинные люди, поэтому бан по IP чаще всего бьёт не того игрока.

  • Discord менять бесплатно: создайте другой аккаунт.

  • Steam стоит немного: другой аккаунт.

  • Лицензия стоит аккаунта Rockstar и копии игры.

  • Аппаратные токены стоят другого компьютера или инструмента, который лжёт о том, что есть.

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

Что записывает бан txAdmin на RedM

Бан txAdmin уже лучше скрипта, банящего одну лицензию. В исходниках txAdmin бан хранится со списком идентификаторов игрока и отдельным списком аппаратных токенов. Когда кто-то подключается, txAdmin ищет совпадение по идентификаторам, а также по токенам, если этого требуют настройки банов. Документация событий txAdmin показывает оба списка в событии бана (targetIds и targetHwids).

Три вещи, которые нужно знать:

  • Для совпадения токенов нужно минимальное число совпавших токенов, и этот минимум задаётся настройкой. Слишком строгий, и сменённый диск или сетевая карта пропустят игрока. Слишком мягкий, и вы забаните постороннего, у которого с нарушителем один общий компонент.

  • Бан держит только то, что игрок имел при бане. Игрок, забаненный при закрытом Steam, не имеет Steam id в бане, а бан, поставленный только по идентификаторам (например, старый унаследованный бан), токенов не содержит вовсе.

  • Данные живут в txAdmin этого одного сервера. Второй сервер вашего сообщества о нём не знает, если вы не скопируете его.

Всё это не критика. txAdmin делает то, что должен делать список банов. И это всё, что может список банов: он сопоставляет, но не связывает.

Границы, которые нельзя обойти инженерией

Бан по HWID в RedM опирается на то, что токены принадлежат игроку. Три ситуации это ломают, и стоит подготовиться ко всем.

  1. 1

    Новый аккаунт Rockstar. Новая лицензия на той же машине для игры новый игрок. Если токены не совпали, ничто не связывает их.

  2. 2

    VPN. Он убирает IP из уравнения. Лицензию он не затрагивает, но делает IP, самый часто разделяемый сигнал, бесполезным как доказательство.

  3. 3

    Подменённое оборудование. Существуют инструменты, меняющие то, что машина сообщает игре, а токен хорош лишь настолько, насколько хороши данные машины. Как именно, мы описывать не будем.

Обход бана в RedM и проблема альт-аккаунтов

Обход бана редко бывает хитрой атакой. Это забаненный игрок, создающий альт-аккаунт RedM, забывающий одну деталь (то же домашнее подключение, тот же Discord, та же машина) и играющий так же. Ваша задача заметить эту деталь.

А значит, хранить нужны связи, а не только баны: какие аккаунты делили адрес, какие делили аппаратный токен, какие делили идентичность Discord. Когда новый аккаунт совпадает с забаненным по любому из этих признаков, вам нужно уведомление, а не сюрприз три дня спустя. По той же причине общие сигналы требуют суждения. Семья за одним роутером или мобильный оператор, ставящий тысячи абонентов за один адрес, будут выглядеть как обход бана, хотя это не он. Любому инструменту нужен способ сказать «этот в порядке».

Хорошая практика для бана, который держится

  • Баньте по всему, что у вас есть. Лицензия, Steam, Discord, токены и IP вместе, а не по одному из них.

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

  • Дайте путь для апелляции. Достаточно публичной формы или канала в Discord. Это спасёт вас от одного неверного бана, который вы обязательно совершите. См. нашу заметку о ложных срабатываниях.

  • Используйте сроки осознанно. Бессрочный бан для читера, временный за нарушение правил и отзыв при ошибке, всё это записано.

Что Baobab AC добавляет к бану по HWID в RedM

Baobab AC работает на вашем сервере, рядом с фреймворком, и хранит граф связей, которого нет у простого списка банов. Вот что это значит для описанных выше проблем. Это также описано, с указанием тарифа, на странице возможностей.

Сеть альт-аккаунтов, построенная автоматически

Сеть альт-аккаунтов связывает аккаунты через общий IP, аппаратные токены и идентичность Discord и распознаёт вернувшегося нарушителя по любому из них. Профиль игрока показывает связи, а whois даёт идентификаторы, токены, псевдонимы и историю подключений любого игрока в одном окне. Вернувшийся нарушитель ловится при подключении, а санкция применяется повторно при первом совпадении.

Детекция Anti Multi-Account опирается на тот же граф: она ищет переводы денег и предметов между связанными альт-аккаунтами и повторный вход после бана. Общий адрес можно исключить вручную, для описанного выше случая семьи.

Бан за читерство, идущий по связям

Когда вы баните игрока и помечаете бан как читерство, бан распространяется на связанные с ним аккаунты, и вам не нужно искать альты по одному. Метка это выбор, который вы делаете при выдаче бана, поэтому обычный бан остаётся обычным. Если вы пометили не того игрока, один отзыв отменяет весь каскад сразу.

Список наблюдения для тех, в ком вы не уверены

Иногда оснований для бана недостаточно. Список наблюдения отмечает игрока и сообщает вашему персоналу в момент его подключения. Настроенный на кик, он применяет санкцию при входе. Так вы работаете с аккаунтом, похожим на забаненного на прошлой неделе игрока, но пока ничего не сделавшим.

Ваши баны txAdmin переносятся

Вы можете импортировать баны из базы игроков txAdmin (файл playersDB.json) в панели. Файл читается в вашем браузере, а отправляются только записи о банах. Бан, привязанный к известному игроку, становится санкцией. Бан, выданный, когда у игрока не было Steam id, остаётся на своих идентификаторах, проверяется при подключении по лицензии, Discord и аппаратным id и становится санкцией при первом появлении этого игрока. Истёкшие и снятые баны пропускаются, повторный запуск того же файла ничего не меняет, а импорт отменяется одним щелчком. Подробности на странице списка банов.

Санкции, которые можно объяснить

У санкции есть срок или она бессрочна, её можно отозвать, не стирая историю, и к ней прилагается папка доказательств, собранная при выдаче. В тарифах Pro и Network чёрный ящик добавляет повтор того, что измерил сервер, а ссылкой с ограниченным сроком действия можно поделиться с игроком, чтобы он увидел те же числа, что и вы. Это сильнейший ответ на апелляцию в любую сторону. Пример можно посмотреть на демо-дашборде, а тарифы на странице цен.

Чего это не делает

Бан по оборудованию повышает цену возвращения, но не закрывает дверь. Новый аккаунт с новой лицензией для игры новый игрок. Baobab AC хранит граф связей, чтобы возвращение выявлялось как совпадение, а не как незнакомец. Если игрок меняет лицензию, машину, Discord, подключение и привычки одновременно, совпадения нет, и ни один инструмент его не придумает.

Он также не заменяет суждение. Общие адреса существуют, а связь это зацепка для человека, а не вердикт. Как устроена сторона детекции, смотрите в как работает античит RedM, а почему всё это должно жить на сервере, в серверный и клиентский античит.

Чек-лист по бану по HWID в RedM

  1. 1

    Содержит ли каждый ваш бан лицензию, Steam при наличии, Discord, токены и IP, а не только один из них?

  2. 2

    Храните ли вы связь между аккаунтами, а не только список забаненных?

  3. 3

    Может ли ваш персонал исключить общий адрес, не снимая бан?

  4. 4

    Приложены ли к каждому бану доказательства, читаемые администратором, которого там не было?

  5. 5

    Может ли игрок обжаловать и можете ли вы чисто отозвать ошибку?

  6. 6

    Видят ли бан ваши остальные серверы?

Если на два или больше вопросов вы ответили «нет», следующий нарушитель пройдёт. Если вы хотите получить связывание, доказательства и импорт из txAdmin в одном месте, страница возможностей перечисляет, что входит.

Читать дальше

Судите по фактам, а не по обещаниям

Демо-панель открыта только для чтения на реальных данных, без регистрации.

Everything on one page: RedM anticheat, detections, evidence and panel.