Гости
Мой ПДА Плеер Радио
Логин:
Пароль:

Мы играем в...
Топ Сталкер

[Naucka]Минор
Репутация: 1073
Постов:265


[Наука]ДедПархоМ
Репутация: 1471
Постов:100


[X-Ray]БелоЧкА™
Репутация: 256
Постов:26

Категории раздела
Полезности для... [5]
Полезная инфо и обучалки
Кругозор [0]
Расширяем общие познания
Мини-чат
Зажигаем!
Get Adobe Flash player
Статистика


Всего зарегистрированных: 298
Новых за месяц: 0
Новых за неделю: 0
Новых сегодня: 0

Из них:
4 Администраторов

1 Модераторов
5+0 Научных сотрудников
42 Обитателей Зоны
57 Друзей сообщества
189 Пользователей сайта

Забегали погреться:
>
Логин:
Пароль:

Мы играем в...
Топ Сталкер

[Naucka]Минор
Репутация: 1073
Постов:265


[Наука]ДедПархоМ
Репутация: 1471
Постов:100


[X-Ray]БелоЧкА™
Репутация: 256
Постов:26

Категории раздела
Полезности для... [5]
Полезная инфо и обучалки
Кругозор [0]
Расширяем общие познания
Мини-чат
Зажигаем!
Статистика


Всего зарегистрированных: 298
Новых за месяц: 0
Новых за неделю: 0
Новых сегодня: 0

Из них:
4 Администраторов

1 Модераторов

5+0 Научных сотрудников
42 Обитателей Зоны
57 Друзей сообщества
189 Пользователей сайта

Забегали погреться:
>
Статьи сайта
Главная » Статьи » Полезности для...

Выявление читеров по дампам статистики сервера
В играх серии S.T.A.L.K.E.R. ситуация с читерством оставляет желать лучшего. Современного читера, использующего трейнеры, уже нельзя выявить стандартными средствми администрирования. Администраторам остается только визуально наблюдать за игроками и банить только на основании собственных мыслей, практически без доказательств.
Дампы расширенной статистики сервера позволяют выявить и собрать доказательства на читеров, использующих трейнеры которые не выявляются стандартными проверками и не блокируются программой S.T.A.L.K.E.R. - КОНТРОЛЕР.
Внимание!!! Тесирование читов производилось только и игре S.T.A.L.K.E.R. - Чистое небо. Предполагается что и в остальных играх  эти способы выявления читеров будут работать, но без гарантии.

Где брать дампы?

На сервере нужно выполнить три команды:
sv_dump_online_statistics_period 1
sv_statistic_collect 1
sv_statistic_save


Дампы будут появляться в папке app_data\logs\mp_stats\servername\games\dmp_date_time.ltx С каждым новым матчем формируется новый дамп и в течении всего матча периодически обновляется. Дампы с предыдущих матчей сохраняются навсегда и больше не обновляются. Голосования на рестарт и быстрый рестарт стирают в дампе всю информацию за матч в котором было произведено голосование.  В связи с этим могут возникнуть проблемы на серверах с бесконечными или слишком длинными матчами, в которых очень часто голосуют за рестарт.

Структура дампа

Дампы имеют формат ini-файла. В нем присутствует множество секций и параметров, рассмотрение которых не входит в рамки данной статьи. Рассмотрим необходимые для выявления читеров секции и параметры.

В секциях типа: [wpn_usage_player_1], [wpn_usage_player_2], [wpn_usage_player_3], [wpn_usage_player_№] записана различная статистическая информация, а так же имя и хеш игрока.

Пример:

[wpn_usage_player_1]
       NumWeapons                       = 3
       TotalShots                       = 151
       dwCurrentTeam                    = 0
       dwNumRespawned_0                 = 1
       dwNumRespawned_1                 = 0
       dwNumRespawned_2                 = 0
       dwTotalAliveTime_0_sec           = 534
       dwTotalAliveTime_1_sec           = 0
       dwTotalAliveTime_2_sec           = 0
       dwTotalMoneyRound_0              = 0
       dwTotalMoneyRound_1              = 0
       dwTotalMoneyRound_2              = 0
       m_dwArtefacts_0                  = 0
       m_dwArtefacts_1                  = 0
       m_dwArtefacts_2                  = 0
       name                             = Игрок
       player_unique_digest             = xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx


Секции типа: [wpn_usage_player_1_wpn_№] [wpn_usage_player_2_wpn_№][wpn_usage_player_3_wpn_№] содержат информацию о каждом выстреле игрока. Записываются только те выстрелы, которые попали по другим игрокам. Выстрелы, выпущенные мимо, в дамп не записываются

Пример:

[wpn_usage_player_1_wpn_0]
       NumHits                          = 51
       hit_0_BoneID                     = 8
       hit_0_BoneName                   = bip01_r_calf
       hit_0_Deadly                     = off
       hit_0_TargetName                 = Игрок1
       hit_0_pos_0                      = 185.560333, 1.429093, 394.317017
       hit_0_pos_1                      = 196.117340, 0.273462, 383.978210
       hit_10_BoneID                    = 2
       hit_10_BoneName                  = bip01_pelvis
       hit_10_Deadly                    = off
       hit_10_TargetName                = Игрок2
       hit_10_pos_0                     = 208.859207, 1.526525, 384.264618
       hit_10_pos_1                     = 215.355499, 0.859685, 384.848511
..............
     wpn_inv_name                     = st_wpn_ak74
     wpn_name                         = mp_wpn_ak74


Имя и хеш ищем в секции [wpn_usage_player_1] статистика его выстрелов будет в соответствующих секциях [wpn_usage_player_1_wpn_№].

Расшифровки параметров секции [wpn_usage_player_№_wpn_№]
NumHits - количество попаданий по другим игрокам.
hit_№* -  номер выстрела.

Обратите внимание, что в дампе выстрелы сортируются не по порядку! Первый выстрел может быть в начале секции, второй в конце, а пятый в середине. Для выявления читеров выстрелы рассматриваются по порядку номеров!

hit_№_BoneName - часть тела в которую попала пуля (английский язык). Расшифровок значений пока нет.
hit_№_Deadly = on - убит.
hit_№_Deadly = off - ранен.
hit_№_TargetName - имя игрока в которого попали.
hit_№_pos_0 - координаты стрелявшего
hit_№_pos_1 - координаты игрока в которого попали.
wpn_inv_name или wpn_name - оружие из которого стреляли.

Выявление читеров

1. Повышенная убойность

Данный вид читерства характеризуется тем что игрок очень быстро убивает всех с 1-2 выстрелов. При этом в дампе:
hit_1_Deadly                     = on

повторяется много раз подряд. У честного игрока значения on off чередуются неравномерно.

Этот пример показывает что игрок сделал 9 выстрелов подряд из АК-74 по ногам! и все насмерть и ни одного ранения. Все hit_№_Deadly = on.

       hit_0_BoneID                     = 7
       hit_0_BoneName                   = bip01_r_thigh
       hit_0_Deadly                     = on
       hit_0_TargetName                 = Игрок1
       hit_0_pos_0                      = 197.926224, 1.428149, 387.359863
       hit_0_pos_1                      = 231.442490, 1.587824, 358.763458
       hit_1_BoneID                     = 4
       hit_1_BoneName                   = bip01_l_calf
       hit_1_Deadly                     = on
       hit_1_TargetName                 = Игрок2
       hit_1_pos_0                      = 253.418869, 1.428569, 331.178314
       hit_1_pos_1                      = 267.846100, 0.470899, 318.418121
       hit_2_BoneID                     = 8
       hit_2_BoneName                   = bip01_r_calf
       hit_2_Deadly                     = on
       hit_2_TargetName                 = Игрок3
       hit_2_pos_0                      = 282.204437, 1.528498, 308.319916
       hit_2_pos_1                      = 286.616302, 0.536856, 306.086060
       hit_3_BoneID                     = 2
       hit_3_BoneName                   = bip01_pelvis
       hit_3_Deadly                     = on
       hit_3_TargetName                 = Игрок4
       hit_3_pos_0                      = 284.420593, 1.528576, 308.264923
       hit_3_pos_1                      = 330.873566, 0.850453, 310.277802
       hit_4_BoneID                     = 7
       hit_4_BoneName                   = bip01_r_thigh
      hit_4_Deadly                     = on
       hit_4_TargetName                 = Игрок5
       hit_4_pos_0                      = 274.682098, 1.528496, 304.402405
       hit_4_pos_1                      = 322.492310, 0.871055, 306.561432
       hit_5_BoneID                     = 4
       hit_5_BoneName                   = bip01_l_calf
       hit_5_Deadly                     = on
       hit_5_TargetName                 = Игрок6
       hit_5_pos_0                      = 272.349213, 1.529605, 303.760254
       hit_5_pos_1                      = 281.832092, 0.329878, 306.473877
       hit_6_BoneID                     = 2
       hit_6_BoneName                   = bip01_pelvis
      hit_6_Deadly                     = on
       hit_6_TargetName                 = Игрок7
       hit_6_pos_0                      = 279.346954, 1.527995, 304.792450
       hit_6_pos_1                      = 324.089142, 0.986841, 307.733704
       hit_7_BoneID                     = 3
       hit_7_BoneName                   = bip01_l_thigh
      hit_7_Deadly                     = on
       hit_7_TargetName                 = Игрок8
       hit_7_pos_0                      = 284.231995, 1.528740, 311.496063
       hit_7_pos_1                      = 288.546173, 0.868448, 278.322876
       hit_8_BoneID                     = 2
       hit_8_BoneName                   = bip01_pelvis
      hit_8_Deadly                     = on
       hit_8_TargetName                 = Игрок9
       hit_8_pos_0                      = 270.904449, 1.527727, 305.348328
       hit_8_pos_1                      = 337.397400, 0.928955, 304.220093
       wpn_dwBleedKills                 = 0
       wpn_dwBulletsFired               = 14
       wpn_dwExplosionKills             = 0
       wpn_dwHitsScored                 = 9
       wpn_dwKillsScored                = 9
       wpn_dwNumBought                  = 1
       wpn_dwRoundsFired                = 14
       wpn_inv_name                     = st_wpn_ak74
       wpn_name                         = mp_wpn_ak74


Соответственно если читер убивает с 2 выстрелов, то значения hit_№_Deadly будут равномерно чередоваться.
Например:
hit_0_Deadly = on
hit_1_Deadly = off
hit_2_Deadly = on
hit_3_Deadly = off
hit_4_Deadly = on


Доказать три выстрела уже сложнее.

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

Читер - это если слишком много hit_№_Deadly = on подряд с попаданиями (hit_№_BoneName) ниже шеи.

2. Повышенная скорость пули

Данная опция трейнера вызывает в дампе небольшую аномалию. При тестировании игрок был убит 13 раз, но среди статистики выстрелов hit_№_Deadly = on встречается всего 2 раза. Но не эта аномалия характеризует читера. Главной особенностью является, то что у читера несколько выстрелов подряд имеют одинаковые координаты, и при этом у всех выстрелов одинаковые BoneName и TargetName. То есть игрок стреляет в одну точку. Даже при тестировании макросов с пониженной отдачей, без читов, дробные части координат (числа после запятой)  в  hit_№_pos_1 получаются у всех выстрелов разные. А без макросов даже целые части чисел-координат различаются на несколько единиц.

Если  координаты одинаковые только в hit_№_pos_0 - это НЕ читер!

Пример участка дампа с одинаковыми координатами.

        hit_13_BoneID                    = 4
       hit_13_BoneName                  = bip01_l_calf
       hit_13_Deadly                    = off
       hit_13_TargetName                = игрок
       hit_13_pos_0                     = 262.166809, 1.526330, 301.075836
       hit_13_pos_1                     = 266.344360, 0.182356, 293.195221
       hit_14_BoneID                    = 4
       hit_14_BoneName                  = bip01_l_calf
       hit_14_Deadly                    = off
       hit_14_TargetName                = игрок
       hit_14_pos_0                     = 262.166809, 1.526330, 301.075836
       hit_14_pos_1                     = 266.344360, 0.182356, 293.195221
       hit_15_BoneID                    = 4
       hit_15_BoneName                  = bip01_l_calf
       hit_15_Deadly                    = off
       hit_15_TargetName                = игрок
       hit_15_pos_0                     = 262.166809, 1.526330, 301.075836
       hit_15_pos_1                     = 266.344360, 0.182356, 293.195221
       hit_16_BoneID                    = 4
       hit_16_BoneName                  = bip01_l_calf
       hit_16_Deadly                    = off
       hit_16_TargetName                = игрок
       hit_16_pos_0                     = 262.166809, 1.526330, 301.075836
       hit_16_pos_1                     = 266.344360, 0.182356, 293.195221
       hit_17_BoneID                    = 4
       hit_17_BoneName                  = bip01_l_calf
       hit_17_Deadly                    = off
       hit_17_TargetName                = игрок
       hit_17_pos_0                     = 262.166809, 1.526330, 301.075836
       hit_17_pos_1                     = 266.344360, 0.182356, 293.195221

Здесь показана только часть дампа. Во всем дампе каждые 5 выстрелов были с одинаковыми координатами. Соответственно у каждой пятерки выстрелов координаты были разные.
Внимание!
Совпадения координат могут быть и у честных игроков, но не так часто как у читеров.


3. Несколько пуль в одном выстреле

Способ выявления ничем не отличается от способа с повышенной скоростью пули. Точно так же почти у всех выстрелов hit_№_Deadly=off, не смотря на то что читером было убито на много больше игроков. Так же совпадение координат у нескольких выстрелов подряд и одинаковые BoneName и TargetName. Единственная разница может возникнуть в количестве одинаковых выстрелов. У данной опции трейнера устанавливается определенное количество пуль на выстрел, то есть сколько у читера выставлено столько и будет совпадающих групп выстрелов. Если например читер выставил 2 пули, то одинаковые выстрелы будут парами, если 3 то тройками.

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

4. Красный экран

hit_4_BoneName = bip01_r_thigh
hit_4_Deadly = on
hit_4_TargetName = ИГРОК
hit_4_pos_0 = 28.843910, 0.544642, -30.403458
hit_4_pos_1 = 27.075558, 0.599800, -23.347607
hit_5_BoneID = 7
hit_5_BoneName = bip01_r_thigh
hit_5_Deadly = on
hit_5_TargetName = ИГРОК
hit_5_pos_0 = 28.843910, 0.544642, -30.403458
hit_5_pos_1 = 27.075558, 0.599800, -23.347607

Тоже задачка из разряда: найди 10 отличий. Характеризуется тем, что во всех вытрелах hit_4_Deadly = on, равны координаты и TargetName и BoneName. Выявляется стандартными средствами администрирования, поэтому в ЧН и ЗП не стоит обращать внимания.  А вот в ТЧ нет никаких стандартных средств выявления читеров.

5. Метатели ножей
Данный вид читерства характеризуется тем, что читеры могут убивать ножом на любых расстояниях. Выявляется по координатам hit_№_pos_0 hit_№_pos_1.
Расстояние между двумя координатами вычисляется по формуле:


Δ - это разность между координатой первой точки pos_0 и второй точки pos_1.

Пример:
       hit_0_pos_0                      = 217.435822, 1.896979, 368.338959
       hit_0_pos_1                      = 203.328033, 0.532356, 381.702026



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

Данные математические вычисления можно автоматизировать в программах: Microsoft Office Excel и MathCAD



Автор: Максим Максимов (Бармен)
Принимали участие в тестировании: Ститч, Geka, а так же случайно залетевший читер с ником Эдемка-Бурятия.
Техподдержка и обсуждение статьи на форуме mpnetworks.ru .

При копировании статьи прямая активная ссылка на www.mpnetworks.ru с указанием автора обязательна.




Категория: Полезности для... | Добавил: [Наука]ДедПархоМ (20.01.2012)
Просмотров: 940 | Рейтинг: 0.0/0
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Наш состав
Наш баннер


Член совета
Сертификат
Сертификат на никнейм [Naucka] и тэг сообщества [Наука], зарегистрирован на //nauka.clan.su/
Кланы Зоны
Календарь
Читерам НЕТ!
Опрос
Оцените мой сайт
Всего ответов: 119
method=