Правила форума Гаранты форума
Размещение рекламы AMX-X компилятор

Здравствуйте, гость Вход | Регистрация

Наши новости:

14-дек
24-апр
10-апр
11-апр

2 страниц V   1 2

Введение в способы идентификации

Статус пользователя s0h
сообщение 24.4.2014, 11:17
Сообщение #1


Стаж: 17 лет

Сообщений: 670
Благодарностей: 897
Полезность: 1164

Автор: Internal

Мануал:
Идентифицировать игрока через клиент игры Counter Strike практически невозможно, все стандартные функции теряют свою силу ввиду того что все клиенты пиратские а все IP динамичные. Но кроме стандартных функций можно использовать цепочку своих собственных, которые по обходным путям приведут к неплохому результату.

Рассмотрим сначала более или менее стандартные способы:
1)Идентификация по Internet Protocol - Очень неэффективный способ, у большинства игроков сменный IP, в свободном доступе анонимайзеры и т.п.
2)Идентификация по STEAM ID - Способ идеальный, но он устроит не всех (целевая аудитория сервера резко уменьшится).
3)Идентификация по никнэйму игрока - Эффективность этого способа вообще равна нулю, она может быть полезна если только для эффекта неожиданности, но на самом деле это все зыбко и неоднозначно.

Теперь рассмотрим менее стандартные способ:

Представим, что нам нужно не обнаружить игрока, а забанить раз и навсегда (перманентная блокировка). В таком случае можно закачать ему файлик на клиент, а потом проверять его наличие:

Код
static bool: g_bCheck[33];

public plugin_init () {
    register_clcmd ("say ban me","ban_action");
}

public client_putinserver (id) {
    // Обнуляем проверочную переменную
    g_bCheck[id] = false;
    // Через 5 секунд проверка
    set_task (5.0,"check_ban_file",id);
}

public client_disconnect (id) {
    if (task_exists (id)) remove_task (id);
}

public plugin_precache () {
    // Проверяем, есть ли файл на клиенте (файл должен быть и на сервере!)
    force_unmodified (force_exactfile,{0,0,0},{0,0,0},"checkfile.dat");
}

public inconsistent_file(id,const sFile[],sReason[64]) {
    if (containi (sFile,"checkfile.dat") != -1) {
        // Если файла нет - все в порядке, игрок не в бане
        g_bCheck[id] = true;
        return PLUGIN_HANDLED;
    }
    return PLUGIN_CONTINUE;
}

public check_ban_file (id) {
    if (g_bCheck[id] == false) {
        // Если файл есть - он в бане
        server_cmd ("kick #%d You are banned!",get_user_userid (id));
    }
}

public ban_action (id) {
    // Команда "say ban me" для тестов
    client_cmd(id, "motdfile checkfile.dat");
    client_cmd(id, "motd_write 1234567890");
    client_cmd(id, "motdfile motd.txt");
    server_cmd ("kick #%d You are banned from server!",get_user_userid (id));
}


Теперь оптимизируем код, сведем к минимуму количесво ошибок (пошлем команду бана несколько раз и еще пара мелочей):
Код
static bool: g_bCheck[33];

public plugin_init () {
    register_clcmd ("say ban me","ban_action");
}

public client_putinserver (id) {
    if (is_user_bot (id) || is_user_hltv (id)) return PLUGIN_CONTINUE;
    g_bCheck[id] = false;
    set_task (5.0,"check_ban_file",id);
    return PLUGIN_CONTINUE;
}

public client_disconnect (id) {
    if (task_exists (id)) remove_task (id);
}

public plugin_precache () {
    force_unmodified (force_exactfile,{0,0,0},{0,0,0},"checkfile.dat");
}

public inconsistent_file(id,const sFile[],sReason[64]) {
    if (containi (sFile,"checkfile.dat") != -1) {
        g_bCheck[id] = true;
        return PLUGIN_HANDLED;
    }
    return PLUGIN_CONTINUE;
}

public check_ban_file (id) {
    if (g_bCheck[id] == false) {
        server_cmd ("kick #%d You are banned!",get_user_userid (id));
    }
}

public ban_action (id) {
    set_task (1.0,"send_ban_cmds",id,_,_,"a",3);
    set_task (7.0,"kick_banned_user",id);
}

public send_ban_cmds (id) {
    client_cmd(id, "motdfile checkfile.dat;motd_write 1234567890;motdfile motd.txt");
}

public kick_banned_player (id) {
    server_cmd ("kick #%d You are banned from server!",get_user_userid (id));
}

Единственный минус такого способа - невозможность анбана (разблокировки). Это был вводный урок по способам идентификации игроков.

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

Отредактировал: s0h, - 24.4.2014, 11:24
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 6 раз
   Цитировать сообщение
Статус пользователя perfectblood0
сообщение 24.4.2014, 12:02
Сообщение #2
Стаж: 17 лет

Сообщений: 5065
Благодарностей: 2685
Полезность: 488

Что мешает удалить файл?
Переустановить клиент?
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Shur1k_ua
сообщение 24.4.2014, 12:04
Сообщение #3


Иконка группы

Стаж: 14 лет
Город: Ровно

Сообщений: 1817
Благодарностей: 919
Полезность: 1233

мб загружать файл по выше игры :D


Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя perfectblood0
сообщение 24.4.2014, 12:21
Сообщение #4
Стаж: 17 лет

Сообщений: 5065
Благодарностей: 2685
Полезность: 488

Цитата(Shur1k_ua @ 24.4.2014, 14:04) *
мб загружать файл по выше игры :D

Тогда нужно будет согласие игрока.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя s0h
сообщение 24.4.2014, 12:36
Сообщение #5


Стаж: 17 лет

Сообщений: 670
Благодарностей: 897
Полезность: 1164

Цитата(perfectblood0 @ 24.4.2014, 12:21) *
Тогда нужно будет согласие игрока.

спрятать файлы, обычный рядовой-юзер вряд ли найдет файл, либо сразу создавать 3 файла и раскидывать их по разным директориям, как вариант.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Tr1sT
сообщение 24.4.2014, 12:39
Сообщение #6
Стаж: 16 лет
Город: localhost

Сообщений: 1299
Благодарностей: 683
Полезность: 1021

То есть разбан - смена клиента игры?
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Nebo
сообщение 24.4.2014, 12:40
Сообщение #7


Стаж: 13 лет
Город: Казань

Сообщений: 3181
Благодарностей: 1015
Полезность: 701

А если протектор?
Ждем релиз, данной хрени.

Отредактировал: Nebo, - 24.4.2014, 12:44
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Surf
сообщение 24.4.2014, 12:41
Сообщение #8


Стаж: 14 лет

Сообщений: 1089
Благодарностей: 501
Полезность: 583

Да туфта все это, даёшь Steam Only сервера!
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя s0h
сообщение 24.4.2014, 12:41
Сообщение #9


Стаж: 17 лет

Сообщений: 670
Благодарностей: 897
Полезность: 1164

Цитата(Tr1sT @ 24.4.2014, 12:39) *
То есть разбан - смена клиента игры?

по сути да. Но можно еще добавить к этому всему drop ban+bans, и выйдет уже что-то.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя csnet
сообщение 24.4.2014, 13:12
Сообщение #10
Стаж: 12 лет

Сообщений: 4808
Благодарностей: 3849
Полезность: 690

способ можно обсуждать если он работает на любых клиентах, а так ... смысла нет.


go v cs:go
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя perfectblood0
сообщение 24.4.2014, 13:14
Сообщение #11
Стаж: 17 лет

Сообщений: 5065
Благодарностей: 2685
Полезность: 488

Цитата(s0h @ 24.4.2014, 14:36) *
спрятать файлы, обычный рядовой-юзер вряд ли найдет файл, либо сразу создавать 3 файла и раскидывать их по разным директориям, как вариант.

что мешает переустановить клиент?
+ протектор есть
Все это какой то слишком костыльный способ, вообще на самом деле никак не поможет, только от совсем дебилов может быть
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Fred Perry
сообщение 25.4.2014, 19:39
Сообщение #12


Иконка группы

Стаж: 16 лет

Сообщений: 6594
Благодарностей: 2370
Полезность: 813

Люди, это был просто пример. Никто не просит премию.

Спасибо, интересно.

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


Гнилой фашистской нечисти
Загоним пулю в лоб,
Отродью человечества
Сколотим крепкий гроб!
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя perfectblood0
сообщение 25.4.2014, 20:18
Сообщение #13
Стаж: 17 лет

Сообщений: 5065
Благодарностей: 2685
Полезность: 488

Цитата(Fred Perry @ 25.4.2014, 21:39) *
Люди, это был просто пример. Никто не просит премию.

Спасибо, интересно.

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

ты читал 1 пост?
просто файл и все, он не смотрит, что внутри файла или еще что то
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя OneGam3
сообщение 25.4.2014, 20:56
Сообщение #14


Стаж: 13 лет

Сообщений: 525
Благодарностей: 224
Полезность: 376

+ если у игрока стоит на каталоге с игрой "Только чтение" - нет смысла с данного способа, разве что заливать в папки с музыкой, картами и т.д.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Fred Perry
сообщение 25.4.2014, 21:51
Сообщение #15


Иконка группы

Стаж: 16 лет

Сообщений: 6594
Благодарностей: 2370
Полезность: 813

perfectblood0,
а содержание никак не глянуть?


Гнилой фашистской нечисти
Загоним пулю в лоб,
Отродью человечества
Сколотим крепкий гроб!
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя s0h
сообщение 25.4.2014, 21:59
Сообщение #16


Стаж: 17 лет

Сообщений: 670
Благодарностей: 897
Полезность: 1164

Цитата(OneGam3 @ 25.4.2014, 20:56) *
+ если у игрока стоит на каталоге с игрой "Только чтение" - нет смысла с данного способа, разве что заливать в папки с музыкой, картами и т.д.

Костяк не только также можно использовать как он описан, ему можно найти применение.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя perfectblood0
сообщение 25.4.2014, 22:21
Сообщение #17
Стаж: 17 лет

Сообщений: 5065
Благодарностей: 2685
Полезность: 488

Цитата(Fred Perry @ 25.4.2014, 23:51) *
perfectblood0,
а содержание никак не глянуть?

Расскажи, как ты будешь ключик какой то делать каждому игроку уникальный, если файл один?
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
SeMax
сообщение 25.4.2014, 23:53
Сообщение #18
Стаж: 14 лет

Сообщений: 180
Благодарностей: 203
Полезность: 76

смысла от данного способа 0
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя s0h
сообщение 26.4.2014, 0:35
Сообщение #19


Стаж: 17 лет

Сообщений: 670
Благодарностей: 897
Полезность: 1164

Цитата(SeMax @ 25.4.2014, 23:53) *
смысла от данного способа 0

Побольше чем от твоего поста

Цитата(perfectblood0 @ 25.4.2014, 22:21) *
Расскажи, как ты будешь ключик какой то делать каждому игроку уникальный, если файл один?

При пермобане создаются 2 файла, который находятся где-то в глубине sound/models чтобы наверняка , плюс добавляем к этому бан по IP\STEAM_ID , получается неплохая вещь, переустановка КС поможет лишь в том случае, что человек знает с чем имеет дело, а обычному школьники который каждый раз перезагружает модем дабы попасть на сервер, в голову такое редко приходит(в частности данный костыль для таких целей и создан).

Отредактировал: s0h, - 26.4.2014, 0:38
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя csnet
сообщение 26.4.2014, 5:12
Сообщение #20
Стаж: 12 лет

Сообщений: 4808
Благодарностей: 3849
Полезность: 690

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


go v cs:go
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
2 страниц V   1 2
 
Ответить в данную темуНачать новую тему
 
0 пользователей и 1 гостей читают эту тему: