LINUX.ORG.RU

Анти-чит для проекта

 


2

3

Создаю онлайн-игру, суть которой - набор текста на скорость с последующим построением списка самых быстрых пользователей. В связи с этим появилась потребность не позволять игрокам присылать «липовые» результаты набора.

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

Все бы хорошо, но данные (скорость и процент ошибок), присланные с клиента, могут быть не настоящими. Как быть?

Была идея рассчитывать эти данные на сервере, отправляя каждый введенный символ (или слово). Но как учитывать время ответа сервера? Спасибо.

★★

Что мне мешает парсить ваши падающие с неба буковки и отправлять нажание через xdotool?

sambist ★★
()

Не забудь дампить все процессы, память, весь ввод (насчёт вывода не знаю, наверное, имеет смысл) и делать скриншоты каждые 10 секунд. Вероятно, тебе понадобится модуль в кернелспейсе. Чтобы не устроить ddos серверу, можно применять только к самым подозрительным. Ну так все античиты делают, ты же это хочешь?

wakuwaku ★★★★
()
Последнее исправление: wakuwaku (всего исправлений: 1)

Передаваемые данные шифруй, дополнив контрольной суммой, а код обфусцируй.

amomymous ★★★
()

Спасибо за ответы. Жаль что любую защиту можно обойти. )=

Razip ★★
() автор топика

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

В это правда будет кто-то «играть»? Если да, то сделай лучше распознавание капчей, на скорость.

KillTheCat ★★★★★
()
Ответ на: комментарий от KillTheCat

Конечно же это не все возможности игры. Но для того, чтобы задать вопрос этого описания достаточно.

Razip ★★
() автор топика
Ответ на: комментарий от KillTheCat

Если да, то сделай лучше распознавание капчей, на скорость.

Это гениально.

anonymous_sama ★★★★★
()
Ответ на: комментарий от KillTheCat

сделай лучше распознавание капчей, на скорость.

kolotibablo.com

proud_anon ★★★★★
()

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

Кроме того, надо подумать, как именно можно ещё смошенничать. Например, пользователь может замедлить течение времени в браузере. Поэтому нужно в самом деле периодичкски сверять результат с временем от запроса текста до отправки результата на сервер.

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

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

proud_anon ★★★★★
()

Решил обфусцировать JS-код и требовать от топовых игроков видеоподтверждение.

Razip ★★
() автор топика
Ответ на: комментарий от b0c0813f

Если пришел пофлудить, то лесом. На таких сайтах как Клавогонки у каждого топового игрока есть видео набора.

Razip ★★
() автор топика
Ответ на: комментарий от Razip

Только они сами «подтверждают», а я буду требовать.

Razip ★★
() автор топика

Пользователь всегда может подделать данные, ибо код выполняется на его стороне.

Мой совет: не парься. Достаточно сделать простое XOR-шифрование отправляемых на сервер данных, запрятать далеко в коде и обфусцировать, как это сделано на шахиджаняновском Набираем.ру. Этого хватит, чтобы перебить желание заниматься обманом у большего количества хацкеров. В любом случае, 99,99% пользователей будут соревноваться честно.

anonymous
()

Попробуй вычислять читеров статистически.

crowbar
()

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

Если хитрее то: твоих секунд может быть не постоянно N, а некоторая достаточно длинная последовательность значений для задержек. И начинать каждый раз со случайной позиции этой последовательности. Но в этом случае задержку должен обеспечивать бекенд, на каком-нить nginx-push-module или realplexor или node или что там тебе по вкусу. Тогда как бекенд отпустило, то клиент сразу шлет статус.

deep-purple ★★★★★
()

Я бы весь текст сразу не показывал, а показывал только пару-тройку следующих слов. Данные пересылать через вебсокет. Если слишком быстро прет поток входных данных (т.е. скорость превышает рекордное значение — скажем, 600 символов в минуту), ставим галку "читер".

Слова откидывать картинками, да. Иначе засаленная обезьяна сделает что угодно.

// а насчет клавогонок ты хорошую идею читбота подсказал! Там ведь тупой незащищенный текст!!!

Eddy_Em ☆☆☆☆☆
()
Ответ на: комментарий от deep-purple

Можно подделать довольно просто.

anonymous
()
Ответ на: комментарий от Eddy_Em

А этот поток входных данных разве нельзя подделать?

Картинки - это хорошо, но только в том случае, если можно как-то рассчитать скорость на клиенте и чтобы она не подверглась изменению. Иначе нет смысла - можно набрать медленно но верно и отправить в параметрах скорость равную 100050000 зн./мин.

Razip ★★
() автор топика
Ответ на: комментарий от Razip

В общем, я решил сделать так:

1. С сервера присылать текст, в котором некоторые символы заменяются на похожие или прислать картинку с шумом.

«волшебный текст» защищают от тупого копирования и отправки на сервер (роботом), а текст-картинка с шумом от распознавания.

2. Рассчитывать скорость на клиенте, но отправлять в параметрах дополнительно хэш-сумму, которая складывается особым образом (рассказывать не буду :) и обфусцировать код ее алгоритма.

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

Razip ★★
() автор топика
Ответ на: комментарий от Eddy_Em

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

Razip ★★
() автор топика
Ответ на: комментарий от Eddy_Em

Никак. Я о том, что если передавать через WS допустим количество набранных символов или что-то другое, то это можно подделать. Если ты хочешь передавать текст/отдельные слова то это действительно безопасно (если робот не может распознать картинку), но ты не упомянул что ты хочешь передавать, ты просто сказал «Данные пересылать через вебсокет».

Но как будет с производительностью если обрабатывать каждый символ/каждое слово?

Razip ★★
() автор топика
Ответ на: комментарий от Razip

Все это будет только в квалификации, т.к. никому не понравится когда ошибки не будут подсвечиваться и не будут происходить прочие динамические вещи вроде подсчета скорости (ибо для этого нужно загружать текст в браузере, а этого допустить нельзя).

Razip ★★
() автор топика
Ответ на: комментарий от Razip

Передавать каждый свеженабранный символ. С производительностью шикарно.

Eddy_Em ☆☆☆☆☆
()
Ответ на: комментарий от Ceiling_QB

Приведи примеры античит-систем, которые не называли зондом.

anonymous
()
Ответ на: комментарий от edigaryev

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

Ceiling_QB ★★★★
()
Ответ на: комментарий от Ceiling_QB

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

Открою тайну - маленького зонда достаточно, чтобы всё было дырявым-предырявым.

peregrine ★★★★★
()
Ответ на: комментарий от anonymous

а потом эти люди критикуют trusted computing. что за двоемыслие

А что в этом странного?

Это как сказать: «она переспала с двумя знакомыми парнями одновременно, а когда её десять незнакомых мужиков захотели оттрахать, почему-то стала сопротивляться, что за двоемыслие»

proud_anon ★★★★★
()
Ответ на: комментарий от Eddy_Em

Я тебя люблю. Мы с тобой всегда буде вместе. Никто не сможет заменить твой язычок и твою попку. Эти ночи с тобой были просто божественны.Надеюсь, ты не изменяешь мне с другими парнями? Всегда любимый тобой wyldrodney.

anonymous
()
Ответ на: комментарий от Ceiling_QB

Тем, что мало того, что может повысить свои права в системе вплоть до рутовых, если авторы этого творения нашли соответствующую уязвимость, но даже если такого нет, кто ему помешает слить твои файлы с ПК куда надо? Мало кто настолько обеспокоен безопасностью, чтоб для всякой проприетарщины даже прав на чтение /home не дать.

peregrine ★★★★★
()
Ответ на: комментарий от Eddy_Em

засаленная обезьяна

Куда не плюнь --- везде хохлосрач.

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.