В Samp могут банить не только по ip адресу но и по данным аккаунта причем эти данные хранятся на сервере. Сначала нужно как то узнать по каким данным админ банит. Потом обойти это так чтобы работало.
Вроде можно писать скрипты которые обходят системы блокировок но если админы узнают об этом то попытаются пофиксить. Бан не легко снять на серверах Samp.
Кстати я на такую статью наткнулся может быть кому небуть полезно будет. Хотя статья вроде старая.
[Native] gpci
Просмотр полной версии : [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. Поскольку допустим у меня уникальны