PDA

Просмотр полной версии : [Native] gpci



Daniel_Cortez
29.07.2015, 14:33
Описание:

Получает у игрока хеш от данных аккаунта пользователя Windows.

Параметры:

playerid - ID игрока.
buffer[] - переменная (массив), в которой будет записан хеш. Рекомендуемый размер: 40+1 (длина хеша + символ завершения строки),
size - размер массива buffer (необязательный параметр, если объявить функцию вручную с "size = sizeof(buffer)").


Возвращаемое значение:

Если указанный игрок подключен, функция возвращает длину хеша (сам хеш возвращается через массив buffer), иначе возвращает 0.

Примечания:

Функция существует, начиная с SA:MP 0.3b R1. Основным назначением функции в то время была блокировка читеров.
Тем не менее, не рекомендуется использовать функцию для идентификации игроков (например, при бане игрока).
Хеш вычисляется из данных аккаунта пользователя в Windows.
Эти данные могут совпадать у разных игроков, поэтому хеш не уникален для каждого игрока.
Есть вероятость, что если забанить игрока по gpci, то вместе с ним окажутся забанены ещё несколько игроков с таким же хешем (примерно 5-10%, со слов куя).
Допускается банить игроков по gpci только в самых крайних случаях (например, если читер терроризирует сервер, не давая никому спокойно играть, и обычный бан по IP не помогает, т.к. читер легко может сменить IP, всего лишь перезагрузив роутер), но ни в коем случае не для бана рядовых игроков.
Функция не объявлена в инклудах SA:MP, но присутствует в коде сервера, поэтому следует объявлять её вручную.


#if !defined gpci // не помешает сначала проверить, вдруг эта функция уже была где-то объявлена
native gpci(playerid, buffer[], size = sizeof(buffer));
#endif

Функция не задокументирована на SA:MP wiki, т.к. раскрытие принципа её работы может помочь читерам для обхода бана.
Но кого-нибудь это когда-то останавливало? Бан по gpci давно научились обходить: нужно сменить аккаунт пользователя в Windows, либо создать новый аккаунт, если он у вас только один. Соль лишь в том, что для читеров эти усилия того не стоят - уже не получится после каждого бана сволочно реконнектиться через пару секунд с новым IP. Правда, в теории есть возможность подделать данные для gpci, покопавшись в памяти клиента.
Также, если вам непривычно название функции в виде аббревиатуры строчными буквами, можно объявить функцию с другим названием в том же стиле, в котором названы все остальные функции SA:MP:


#if !defined GetPlayerClientID
native GetPlayerClientID(playerid, buffer[], size = sizeof(buffer)) = gpci;
#endif

Комментарий самого куя по поводу gpci: http://pastebin.com/VQSGpbSm

Пример использования:

#if !defined GetPlayerClientID
native GetPlayerClientID(playerid, buffer[], size = sizeof(buffer)) = gpci;
#endif

public OnPlayerConnect(playerid)
{
new buffer[40+1];
GetPlayerClientID(playerid, buffer);
printf("gpci: %s", buffer);
}

См. также:

[Function] PackHash (http://pro-pawn.ru/showthread.php?12507-PackHash)



Статью подготовил: Daniel_Cortez (http://pro-pawn.ru/member.php?100-Daniel_Cortez)

Специально для Pro-Pawn.ru (http://www.pro-pawn.ru)
Копирование данной статьи на других порталах без разрешения автора запрещено!

$continue$
31.07.2015, 14:35
А допустим если запустить GTA и зайти на сервере где чекается GPCI через Wine (Unix системы)

vovandolg
24.12.2015, 01:56
Было раза три или четыре что 3-4 юзера получили бан по gpci(в БД я пробил их последнее посещение и IP)
Заходят абсолютно другие IP(не факт может поменяли, но больно уж совсем другие) и у них висят такие же ID :crazy: ...
Я вот думаю каковы шансы что при установки клиента, могут быть заданы похожие ID's gpci?
Правда ли это была что эти новенькие были действительно новенькими или шанс совпадения gpci не очень малый..
Загадка осталась для меня загадкой...

Edwin
17.08.2016, 21:33
То есть, для бана её не используешь, для проверки на мультиакк тоже, к тому же, её при желании можно обойти... так что тогда с ней делать? :scratch_one-s_head:

_lizard
17.08.2016, 22:03
То есть, для бана её не используешь, для проверки на мультиакк тоже, к тому же, её при желании можно обойти... так что тогда с ней делать? :scratch_one-s_head:

Она просто есть :blum3: На то она и не объявлена в инклудах, ибо не имеет смысла в использовании

Daniel_Cortez
17.08.2016, 22:37
Она просто есть :blum3: На то она и не объявлена в инклудах, ибо не имеет смысла в использовании
Она не объявлена в инклудах, чтобы скрыть её от обычных смертных рядовых скриптеров. В своё время ей пользовались только владельцы крупных проектов в случаях, когда забанить пару невиновных игроков было меньшим злом, чем подвергнуть опасности весь сервер.

vovandolg
18.08.2016, 01:33
До сих пор её юзаю:dirol:
От DDoS'а подсеть, от назойливых читерюг с голодного края gpci)

Profyan
18.08.2016, 09:28
До сих пор её юзаю:dirol:
От DDoS'а подсеть, от назойливых читерюг с голодного края gpci)

тебе помогает gpci? А если "забанишь" читера,и другие игроки не смогут войти ??
Кст,с подсетью такие же траблы могут быть

_lizard
18.08.2016, 12:25
тебе помогает gpci? А если "забанишь" читера,и другие игроки не смогут войти ??
Кст,с подсетью такие же траблы могут быть

Ну по крайней мере, если банить по gcpi, то читерам лень будет менять винду (или как там сменить этот хэш аккаунта)

Daniel_Cortez
18.08.2016, 12:40
В идеале следовало бы собрать базу хешей клиентов с одного или нескольких проектов и по ним составить статистику по наиболее распространённым хешам.
Даже если публиковать хеши без согласия игроков, это будет вполне законно, т.к. они по сути являются анонимными данными - нельзя определить какого-то конкретного пользователя по хешу.
Такая база может пригодиться, чтобы перед баном по gpci проверить, является ли хеш игрока одним из самых распространённых, и в случае чего вывести администратору диалоговое окно для подтверждения.

TheMallard
18.08.2016, 14:37
Я не думаю что администраторы игровых проектов разгласят такую информацию, ибо с ними практически невозможно контактировать, да и мало кто собирает gpci-хэш, опять таки из-за непригодности метода.

vovandolg
18.08.2016, 14:50
тебе помогает gpci? А если "забанишь" читера,и другие игроки не смогут войти ??
Кст,с подсетью такие же траблы могут быть

Ну так есть специальная тема разбана игроков, я смотрю IP/gpci и сверяю их с нарушителем бывшим(вариант не очень, но единственный)
Нарушитель же покинул просторы и бан снимаю, придёт - снова даю, но опять же у меня сейчас идея всплыла сделать подсеть и gpci вместе,
типо если обе проверки совпали то только тогда бан, но это опять всё наблюдать да тестить...

- - - Добавлено - - -


Ну по крайней мере, если банить по gcpi, то читерам лень будет менять винду (или как там сменить этот хэш аккаунта)
А я вообще в 1 клик меняю на какой угодно)) плохо что подменить могут если не школяры, а такие умные как мы

Profyan
18.08.2016, 16:44
В идеале следовало бы собрать базу хешей клиентов с одного или нескольких проектов и по ним составить статистику по наиболее распространённым хешам.
Даже если публиковать хеши без согласия игроков, это будет вполне законно, т.к. они по сути являются анонимными данными - нельзя определить какого-то конкретного пользователя по хешу.
Такая база может пригодиться, чтобы перед баном по gpci проверить, является ли хеш игрока одним из самых распространённых, и в случае чего вывести администратору диалоговое окно для подтверждения.

Не думаю,что гиганты захотят такую работу проделать.

JohnConor
14.04.2017, 17:44
Надо printf, а не print. Так параметр %s не работает


#if !defined GetPlayerClientID
native GetPlayerClientID(playerid, buffer[], size = sizeof(buffer)) = gpci;
#endif
public OnPlayerConnect(playerid)
{
new buffer[40+1];
GetPlayerClientID(playerid, buffer);
printf("gpci: %s", buffer);
}

Daniel_Cortez
14.04.2017, 19:30
Надо printf, а не print. Так параметр %s не работает


#if !defined GetPlayerClientID
native GetPlayerClientID(playerid, buffer[], size = sizeof(buffer)) = gpci;
#endif
public OnPlayerConnect(playerid)
{
new buffer[40+1];
GetPlayerClientID(playerid, buffer);
printf("gpci: %s", buffer);
}
Спасибо, исправил.

Fleynaro
12.08.2018, 12:10
Geoip + gpci! И кто скажет, что это не идеальный вариант?

Daniel_Cortez
12.08.2018, 13:40
Geoip + gpci! И кто скажет, что это не идеальный вариант?
Оригинальнее вбрасывать нужно, оригинальнее! (хорошая попытка)

MassonNN
08.01.2020, 10:40
Прошу исправить, это не хеш windows аккаунта, а хеш samp/gta клиента (так написано в wiki)

Nexius_Tailer
08.01.2020, 20:55
Прошу исправить, это не хеш windows аккаунта, а хеш samp/gta клиента (так написано в wiki)
В дополнение к этому также замечу, что тут половина тем с описанием стандартных функций в разделе имеют какие-то неточности или просто отстают от инфы в нынешней вики. По-моему, было бы логичным уже давно перенести их в вики форума (учитывая, что она вроде как обновляется), а заодно и этот раздел бы перестал держать вперемешку обычные нативы и релизы кастомных функций.

DeimoS
08.01.2020, 21:17
Прошу исправить, это не хеш windows аккаунта, а хеш samp/gta клиента (так написано в wiki)

На заборе тоже много чего написано :) Информацию на официальной вики следует крайне тщательно перепроверять, ибо там полно и устаревшей инфы, и заведомо ложной (например, очень многие баги почему-то там просто не указаны). Выяснилось это когда начали писать статьи для wiki.pro-pawn.ru, перепроверяя предназначение функций (возвращаемые значения, принцип работы и т.п.) через проверку исходного кода, декомпиляцию и прочее. Собственно, это ещё сильнее подкрепило, по крайней мере, мои мысли о том, что wiki.pro-pawn.ru нужно довести до ума :)

Я бы сказал, что ни там, ни тут нет правды, ибо функция возвращает хэш пути установки GTA, а не является каким-то хэшем клиента (хотя может ты просто не так выразился. Я отталкиваюсь от твоих слов). Собственно, вот что сам Калкор на этот счёт говорил:

It is not an SHA1. The fact that you think it is makes me think you are connected to some cheater/bot websites, which is exactly why the function exists and why it's not (and will never be) documented.

Here is all anyone needs to know about gpci:
- It is a non-reversible (lossy) hash derived from information about your San Andreas installation path.
- It is not a unique ID.
- It was added to assist owners of large servers who deal with constant attacks from cheaters and botters.
- It has been in SA-MP for 2 years.
Ссылку на оригинальный пост не дам, ибо искать лень, а гугл первым выдал ссылку на тему, в которой так же приводили цитату поста без ссылки (вероятнее всего, оригинальную тему просто снесли уже)



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

Тебе (и любому другому) никто не мешает зарегистрироваться и помочь с переносом :) А пока этим занимаемся, в основном, мы со Стасом, в свободное время.

Nexius_Tailer
08.01.2020, 22:26
Тебе (и любому другому) никто не мешает зарегистрироваться и помочь с переносом :) А пока этим занимаемся, в основном, мы со Стасом, в свободное время.
Я вижу больше смысла обновлять официальную, хотя даже при желании у меня не особо есть на это время (разве что если только какие-то адресные жалобы на недостоверность данных править).

Касаемо заведомо ложной инфы, она там скорее добавлена случайно по шаблону, как в случае с возвращаемыми значениями. Да и к данному моменту много где уже в русском и английском варианте поправлена. Инфы о многих багах конечно не хватает, но их отсутствие не ложная инфа.

MassonNN
09.01.2020, 00:08
На заборе тоже много чего написано :) Информацию на официальной вики следует крайне тщательно перепроверять, ибо там полно и устаревшей инфы, и заведомо ложной (например, очень многие баги почему-то там просто не указаны). Выяснилось это когда начали писать статьи для wiki.pro-pawn.ru, перепроверяя предназначение функций (возвращаемые значения, принцип работы и т.п.) через проверку исходного кода, декомпиляцию и прочее. Собственно, это ещё сильнее подкрепило, по крайней мере, мои мысли о том, что wiki.pro-pawn.ru нужно довести до ума :)

Я бы сказал, что ни там, ни тут нет правды, ибо функция возвращает хэш пути установки GTA, а не является каким-то хэшем клиента (хотя может ты просто не так выразился. Я отталкиваюсь от твоих слов). Собственно, вот что сам Калкор на этот счёт говорил:

Ссылку на оригинальный пост не дам, ибо искать лень, а гугл первым выдал ссылку на тему, в которой так же приводили цитату поста без ссылки (вероятнее всего, оригинальную тему просто снесли уже)




Тебе (и любому другому) никто не мешает зарегистрироваться и помочь с переносом :) А пока этим занимаемся, в основном, мы со Стасом, в свободное время.

Я не до конца понимаю каким может быть хеш гта/самп клиента. Если это хеш пути установки, то крайне бредово делать такую функцию вообще (не так ли?). Проще тогда уж реально мак адрес передавать. А по поводу Вики, я давно глаз положил на некоторые ошибки (особенно в переводе)

Daniel_Cortez
09.01.2020, 01:44
Я бы сказал, что ни там, ни тут нет правды, ибо функция возвращает хэш пути установки GTA, а не является каким-то хэшем клиента (хотя может ты просто не так выразился. Я отталкиваюсь от твоих слов). Собственно, вот что сам Калкор на этот счёт говорил:


It is not an SHA1. The fact that you think it is makes me think you are connected to some cheater/bot websites, which is exactly why the function exists and why it's not (and will never be) documented.

Here is all anyone needs to know about gpci:
- It is a non-reversible (lossy) hash derived from information about your San Andreas installation path.
- It is not a unique ID.
- It was added to assist owners of large servers who deal with constant attacks from cheaters and botters.
- It has been in SA-MP for 2 years.


Т.е. ты сравниваешь SA-MP wiki с "заборной живописью", но при этом безоговорочно веришь словам Калкора?
Как бы то ни было, факт в том, что хеш меняется при смене аккаунта Windows, т.е. данные аккаунта так или иначе используются для вычисления хеша. Если у вас есть более логичное объяснение - буду рад вас выслушать.

Вообще, после того, как последние годы Kalcor всеми правдами и неправдами пытается держать SA-MP в стагнации (при этом продолжая пользоваться пассивным заработком), затыкать неугодных на подконтрольном ему форуме и препятствовать созданию альтернатив своему мультиплееру (см. попытки угрожать разработчикам open.mp судом за "нарушение авторских прав на API"), удивительно, что ещё остаются люди, которые всерьёз во всём верят ему.

MassonNN
09.01.2020, 02:06
Т.е. ты сравниваешь SA-MP wiki с "заборной живописью", но при этом безоговорочно веришь словам Калкора?
Как бы то ни было, факт в том, что хеш меняется при смене аккаунта Windows, т.е. данные аккаунта так или иначе используются для вычисления хеша. Если у вас есть более логичное объяснение - буду рад вас выслушать.

Вообще, после того, как последние годы Kalcor всеми правдами и неправдами пытается держать SA-MP в стагнации (при этом продолжая пользоваться пассивным заработком), затыкать неугодных на подконтрольном ему форуме и препятствовать созданию альтернатив своему мультиплееру (см. попытки угрожать разработчикам open.mp судом за "нарушение авторских прав на API"), удивительно, что ещё остаются люди, которые всерьёз во всём верят ему.

Согласен с тобой(по поводу отсутствия доверия к калкору), но все таки. Что же даёт нам gpci? Мак адрес, хеш пути до игры или все одновременно, или вообще у каждого samp клиента есть свой id?)

Kovshevoy
09.01.2020, 02:26
На форуме не хватает Заводина и Наруто, я думаю они бы знатно нам помогли в этих вопросах.

DeimoS
09.01.2020, 10:54
...

Просто скажу лишь то, что официальная wiki существует, как минимум, с 2010-го года и она до сих пор не приведена в порядок :)


Т.е. ты сравниваешь SA-MP wiki с "заборной живописью", но при этом безоговорочно веришь словам Калкора?

Не, цитата была приведена в пример того, что wiki и словам Калкора противоречит.
Основной посыл в том, что официальная wiki - это не источник безоговорочно верной информации. Хотя соглашусь, что выразил эту мысль я несколько неправильно.


Согласен с тобой(по поводу отсутствия доверия к калкору), но все таки. Что же даёт нам gpci? Мак адрес, хеш пути до игры или все одновременно, или вообще у каждого samp клиента есть свой id?)

А зачем вообще в этом разбираться подробно, если ясно одно: возвращаемый этой функцией хэш далеко не уникален?

MassonNN
09.01.2020, 11:16
Просто скажу лишь то, что официальная wiki существует, как минимум, с 2010-го года и она до сих пор не приведена в порядок :)



Не, цитата была приведена в пример того, что wiki и словам Калкора противоречит.
Основной посыл в том, что официальная wiki - это не источник безоговорочно верной информации. Хотя соглашусь, что выразил эту мысль я несколько неправильно.



А зачем вообще в этом разбираться подробно, если ясно одно: возвращаемый этой функцией хэш далеко не уникален?

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

DeimoS
09.01.2020, 11:43
Чтобы понимать где это можно использовать. Тем более калкор говорит о том, что эта функция была создана для крупных проектов. Неужели и здесь наврал... Тем более я видел систему которая через этот хеш определяет наличие софта у игрока (собейта). Остаётся вопрос, это вообще работает или нет.

Это можно использовать в момент, когда какой-то читер начал постоянно обходить бан.
Забанил по gpci (унеся вместе с читером в бан ещё пару-тройку игроков) и забыл о читере. Только не забудь через некоторое время разбанить, чтоб минимизировать шанс ложных банов других игроков. Больше применений этому нет (хотя и банить таким образом - сомнительное решение)

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

=GoD=
31.01.2020, 20:14
Единственный толковый пост что я видел по данной теме.:clapping: Немного дополню. Клиент генерирует gpsi из имени учетной записи или в целом привязан к имени. Я с gpci навозился от души когда смена оного была добавлена в собейты(у меня был конкретный собейт) и была задача отделить поддельный софтом gpci от сгенерированного клиентом. Это отдельная история но в это время я проводил различные тесты с gpci и конкретно наткнулся именно на имя учетной записи винды. Это легко проверить. Создайте две новые учетные записи на разных ПК даже на разных концах планеты))) Назовите их одинаково и получите один и тот же gpci. У меня к примеру зарегистрированная учетка в микрософт. Есть ноут на вин 8.1 и ПК на вин10. Если на одном из них меня забанили со второго то же не зайду. И у меня gpci уникален, не с кем не совпадает потому как имя учетки содержит в себе имя и фамилию. Пробовали создать автономные учетки на разных пк, ип, и вин... Результат - gpci одинаковые))). Как бан крайне не рекомендую! Если я создам учетку под именем "User" и напрошусь на бан по gpci то на этом сервере в бан могут залететь более 50% игроков т.к. много кто использует учетку по дефолту а именно с именем "User" :thank_you:
P.S. Поскольку допустим у меня уникальный gpci не с кем не совпадает(Мониторю несколько лет) я могу привязать его допустим на своем сервере в качестве индикатора себя, не зависимо под каким я ником или ip зашел на сервер... Это как вариант где и как его использовать. Но второй момент его могут получить при входе на другой сервер...Тут как говорится на вкус и цвет все фломастеры разные)))

Kovshevoy
01.02.2020, 03:26
Единственный толковый пост что я видел по данной теме.:clapping: Немного дополню. Клиент генерирует gpsi из имени учетной записи или в целом привязан к имени. Я с gpci навозился от души когда смена оного была добавлена в собейты(у меня был конкретный собейт) и была задача отделить поддельный софтом gpci от сгенерированного клиентом. Это отдельная история но в это время я проводил различные тесты с gpci и конкретно наткнулся именно на имя учетной записи винды. Это легко проверить. Создайте две новые учетные записи на разных ПК даже на разных концах планеты))) Назовите их одинаково и получите один и тот же gpci. У меня к примеру зарегистрированная учетка в микрософт. Есть ноут на вин 8.1 и ПК на вин10. Если на одном из них меня забанили со второго то же не зайду. И у меня gpci уникален, не с кем не совпадает потому как имя учетки содержит в себе имя и фамилию. Пробовали создать автономные учетки на разных пк, ип, и вин... Результат - gpci одинаковые))). Как бан крайне не рекомендую! Если я создам учетку под именем "User" и напрошусь на бан по gpci то на этом сервере в бан могут залететь более 50% игроков т.к. много кто использует учетку по дефолту а именно с именем "User" :thank_you:
P.S. Поскольку допустим у меня уникальный gpci не с кем не совпадает(Мониторю несколько лет) я могу привязать его допустим на своем сервере в качестве индикатора себя, не зависимо под каким я ником или ip зашел на сервер... Это как вариант где и как его использовать. Но второй момент его могут получить при входе на другой сервер...Тут как говорится на вкус и цвет все фломастеры разные)))
Попробуй использовать SendClientCheck на проверку собейта или подмены версии сампа. На лайткоде, Evgen1337 описывал принцип работы данной функции, только там на инглише. Если бы Стас или Влад перевели статью и добавили примеров, было бы очень кстати, ибо годная вещь.

=GoD=
01.02.2020, 14:27
Попробуй использовать SendClientCheck на проверку собейта или подмены версии сампа. На лайткоде, Evgen1337 описывал принцип работы данной функции, только там на инглише. Если бы Стас или Влад перевели статью и добавили примеров, было бы очень кстати, ибо годная вещь.

:thank_you: Я из деревянных и прожил до последних событий на 03е. Не то что я не хотел переводится и более того делал попытки но мой состав администрации да и включая игроков на отказ не принимали переход... Подмену клиента у меня ловил плагин antiattack. Я его с 15-16 -го года как поставил так и не отключал не разу. На читы я свою проверку писал и она по сей день стоит но на читы мы проверяли крайне редко поскольку у меня на сервере читы были разрешены если не мешать игровому процессу ... И я все таки отделил поддельный софтом gpci от сгенерированного клиентом. Мне деваться некуда было. Мой сервер выкрашивали в хлам Дрифтюлексом 7.9 и мне пришлось за день понять принцип генерации последним gpci и написать от него защиту. К моему удивлению(как мне сообщили) эта защита отлавливает и поддельный gpci сгенерированный другими софтами... По мне это или случайность или принцип генерации gpci в этих софтах одинаковая... У меня не крупный проект был и онлик редко за 50 переваливал но когда несколько крупных чит- ддос кланов занялись мной меня в целом спас антипрокси. Но сегодня сайт проверки возвращает ошибки и более не актуален. Я читал про SendClientCheck и что в 2013 EvgeN 1137 сделал для адванса на ней защиту а 2014 Y_Less спалил её предназначение... В связи с выше изложенным у меня не было надобности вникать в эту функцию... Но огромное спасибо что напомнили, сейчас ознакомлюсь с ней более подробно.:thank_you:
P.S нашел статью и описание функции... В конце цитата: К сожалению, сейчас она почти бесполезна. В 0.3x был ещё один тип - 0x5, он позволял читать указанный участок памяти сампа и тем самым проверять, установлены ли там патчи собейта и других читов, но его выпилили в 0.3z.

20th century
17.07.2020, 20:57
Если кто-то надумает пользоваться данной функцией, в открытом доступе больше года лежит софт (https://www.blast.hk/threads/29306/), который при каждом реконнекте меняет хеш. Таким образом вычислить определенного игрока становится невозможным. Наиболее эффективным методом на данный момент является анти-впн, думаю.

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

DeimoS
18.07.2020, 10:56
Если кто-то надумает пользоваться данной функцией, в открытом доступе больше года лежит софт (https://www.blast.hk/threads/29306/), который при каждом реконнекте меняет хеш. Таким образом вычислить определенного игрока становится невозможным. Наиболее эффективным методом на данный момент является анти-впн, думаю.

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

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

20th century
18.07.2020, 22:12
Наиболее эффективной будет привязка телефона к аккаунту. Или даже хотя бы привязка почты, с запретом использования всяких почтовых сервисов с временными ящиками (благо на том же github валяются актуальные сборники адресов всех таких сервисов). Всё остальное будет иметь кучу дыр для обхода и большой процент ложных срабатываний.

Вообще речь шла об ограничении доступа к серверу насовсем. Сейчас сделать это невозможно практически, тем более если игрок обладатель динамического IP.
Что относительно привязок к номеру телефона: сервисов с выдачей сим-карты на 15 минут сейчас куча, да и в некоторых странах СНГ эти сим-карты покупаются в любом ларьке, если не подходит онлайн аренда сим-карт. Думаю, в способе привязки по номеру телефона тоже можно найти пару обходов. С электронной почтой ещё легче. Если не ошибаюсь, на некоторых сайтах можно регистрировать почту без подтверждения номера телефона, а значит и письмо на почту можно получить. И как после таких условий писать систему, которая будет разрешать одному игроку иметь только один игровой аккаунт — загадка.

DeimoS
19.07.2020, 01:44
Вообще речь шла об ограничении доступа к серверу насовсем. Сейчас сделать это невозможно практически, тем более если игрок обладатель динамического IP.
Что относительно привязок к номеру телефона: сервисов с выдачей сим-карты на 15 минут сейчас куча, да и в некоторых странах СНГ эти сим-карты покупаются в любом ларьке, если не подходит онлайн аренда сим-карт. Думаю, в способе привязки по номеру телефона тоже можно найти пару обходов. С электронной почтой ещё легче. Если не ошибаюсь, на некоторых сайтах можно регистрировать почту без подтверждения номера телефона, а значит и письмо на почту можно получить. И как после таких условий писать систему, которая будет разрешать одному игроку иметь только один игровой аккаунт — загадка.

Открою тебе секрет, что даже если бы в SAMP была возможность получить какой-нибудь ID материнской платы - это всё равно не гарантировало бы 100% бан. Любая информация, которую ты получаешь с ПК игрока, может быть подделана игроком.
Конкретно в случае с данными о железе - все они прописываются в биосе. Делаешь дамп биоса, редактируешь нужные данные, заливаешь отредактированную версию биоса на замену текущей и всё. Вполне возможно, что уже даже есть готовый софт для этого, который всё сделает автоматически (не интересовался никогда этим). Хотя ещё проще будет перехватывать запрос от сервера на проверку этих данных и просто подсовывать ему фейковую инфу.

Касаемо почты и телефона - основная цель всего этого в том, чтоб затруднить для читера создание новых аккаунтов. Если на создание нового аккаунта будет уходить хотя бы по 3-5 минут, то большинство читеров уже будут отсеяны, ибо им проще забить и пойти на другой сервер. Не говоря уже о ситуациях, когда за регистрацию (покупку симки) нужно будет платить.
Да и, опять же, почта и телефон - это лишь пример. Можно, например, заставить игроков указывать аккаунт в ВК, чтоб твой бот отправлял этим игрокам сообщение с кодом. Или взять любой другой сервис, который усложнит игроку создание фейка.

А касаемо всех сервисов, о которых ты говоришь - я не просто так указал на то, что нужно отслеживать какую почту указывает игрок и запрещать все сомнительные. Вбиваешь в гугл "temp mail list github" и получаешь готовые списки с кучей одноразовых почт. То же самое и с номерами - "disposable numbers github". Хотя, повторюсь, что основная цель во всём этом - сделать регистрацию времязатратной, чтоб читеру было выгоднее пойти на другой сервер, чем тратить по 3-5 минут на регистрацию.

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

Nexius_Tailer
19.07.2020, 06:26
Если кто-то надумает пользоваться данной функцией, в открытом доступе больше года лежит софт (https://www.blast.hk/threads/29306/), который при каждом реконнекте меняет хеш. Таким образом вычислить определенного игрока становится невозможным. Наиболее эффективным методом на данный момент является анти-впн, думаю.
Это вроде ещё несколько лет назад в обычном собейте автоматически при входе реализовано, если не ошибаюсь. Насчёт использования этой функции в целях бана уже тоже несколько лет как на официальной вики висит соответствующее предупреждение.

tnc
19.07.2020, 23:04
На самом деле слишком костыльный метод, чтобы обойти игрушку. Есть хуки, все информацию предоставляет API OS, соответственно можно использовать хуки с подменой инфой. Почти все нужные хуки (там даже HW Break hook есть) - предоставляет PolyHook (https://github.com/stevemk14ebr/PolyHook_2_0). Подменить вызов функции можно через VTable (таблица виртуальных методов)


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

20th century
21.07.2020, 21:53
Открою тебе секрет, что даже если бы в SAMP была возможность получить какой-нибудь ID материнской платы - это всё равно не гарантировало бы 100% бан. Любая информация, которую ты получаешь с ПК игрока, может быть подделана игроком.


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

DeimoS
22.07.2020, 03:51
Да, безусловно, но большая часть вредителей уже была бы отсеяна. Заниматься подобным могут только самые заядлые люди, которым ну уж совсем нечем заняться помимо этого.

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

И тут выше уже писали, что даже собейты уже выходили с вшитым скриптом, который автоматически рандомил gpci. Точно так же было бы и со всеми функциями, которые бы узнавали ID железа или чего-либо ещё. Чем более популярный у тебя сервер или чем более популярна сами функции подобного бана, тем быстрее читеры напишут лёгкий обход, который станет общеиспользуемым.

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

oukibt
23.07.2020, 02:41
Приветствую. В основном gpci используется в статическом виде в мобильных самп-клиентах, что помогает серверу определить с ПК ли игрок или нет.

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

Nexius_Tailer
23.07.2020, 06:11
Приветствую. В основном gpci используется в статическом виде в мобильных самп-клиентах, что помогает серверу определить с ПК ли игрок или нет.

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

20th century
24.07.2020, 01:47
Значит один плюс от функции всё-же есть: можно детектить игроков, которые играют с samp mobile. Спасибо за то что натолкнули на мысль.

DeimoS
24.07.2020, 03:31
Значит один плюс от функции всё-же есть: можно детектить игроков, которые играют с samp mobile. Спасибо за то что натолкнули на мысль.

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

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

Эта функция бесполезна, как ни крути. Что бы ты с ней не пытался сделать - её данные сможет подделать любой школьник, который умеет пользоваться гуглом. Как итог - ты лишь время потратишь лишнее на то, чтоб написать систему на её основе. Ну и сервер заставишь выполнять бесполезные действия.