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

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

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

02-дек
17-апр
30-дек
29-дек

> Информационная доска

Данный раздел предназначен для возможности показать свой проект по продвижению игровых серверов.
Все новые темы премодерирует Администратор umprex.

Для того, что бы ваша тема прошла проверку, вам нужно иметь более чем одну тысячу уникальных пользователей вашего мастерсервера, а так же, нужно предоставить постоянный доступ администратору.
Постоянный доступ нужен для того, что бы мы могли подтвердить или опровергнуть достоверность ваших данных. Подобная проверка будет осуществляться каждое первое число нового месяца и если ваш мастерсервер будет иметь менее чем 1 тысячу уникальных пользователей, ваша тема будет закрыта.
33 страниц V   1 2 3 ... 31 32 »
Раскрутка Counter-Strike 1.6

Эффективность раскруток, хеши, тесты, раздачи

Статус пользователя DUPEKTOP
сообщение 18.9.2019, 17:57
Сообщение #21


Стаж: 3 года 4 месяца
Город: Санкт-Петербург

Сообщений: 289
Благодарностей: 72
Полезность: 62

Salpson,

Есть предложение:
Сделай несколько тестов - для чистоты эксперимента, за последующие - полагаю найдутся, кто накинет "на пиво".
Делом помочь - у многих времени и мотивации не хватит, а так - "с миру по нитке - трезвому баклаха" = )

В кое-то веки есть инициатива на форуме good.gif




HF&GL
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Salpson
сообщение 18.9.2019, 18:36
Сообщение #22


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

Стаж: 7 лет 2 месяца
Город: Ульяновск

Сообщений: 891
Благодарностей: 540
Полезность: 1065

DUPEKTOP, так и планирую сделать, сейчас думаю как грамотно реализовать еще экономию в базе данных, ибо вижу, что в resources.ini rev_MasterServers слишком много, зачем нам так безграмотно расходовать лимит речекера для тестирование мониторингов, поэтому можно зарегать лишь один rev_MasterServers и гнать циклом хеши и тупо сравнивать. Короче я через чур сильно загнался )
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя dimka198
сообщение 18.9.2019, 21:20
Сообщение #23
Стаж: 6 лет 4 месяца

Сообщений: 1016
Благодарностей: 163
Полезность: < 0

Salpson, это мне жаль Вас ;)


!
Запрет на ответ в темах до: 22.4.2020, 14:33
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Salpson
сообщение 18.9.2019, 21:30
Сообщение #24


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

Стаж: 7 лет 2 месяца
Город: Ульяновск

Сообщений: 891
Благодарностей: 540
Полезность: 1065

Цитата(dimka198 @ 18.9.2019, 23:20) *
Salpson, это мне жаль Вас ;)

в каждой теме найдется хейтер, который не знает сути происходящего )
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Salpson
сообщение 18.9.2019, 21:50
Сообщение #25


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

Стаж: 7 лет 2 месяца
Город: Ульяновск

Сообщений: 891
Благодарностей: 540
Полезность: 1065

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

Основное отличии, не нужно смешивать в resources.ini хеши раскруток и хеши читов, будет своя отдельная база( файл )
Экономим лимит ресурсов речекера, вместо 76 у меня получилось 10 файлов.
Умеет определять Стим, Реклиент, МС, а так же не найденные МС хеши.
Иными словами будет логировать абсолютно все подключения на сервере.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя dimka198
сообщение 19.9.2019, 6:46
Сообщение #26
Стаж: 6 лет 4 месяца

Сообщений: 1016
Благодарностей: 163
Полезность: < 0

Salpson, боже упаси.я очень рад , что кто то решил потратить свое время на все это , но просто его можно было существенно сэкономить.


!
Запрет на ответ в темах до: 22.4.2020, 14:33
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя dithol
сообщение 19.9.2019, 7:19
Сообщение #27
Стаж: 3 года

Сообщений: 1756
Благодарностей: 483
Полезность: 685

Salpson, Можно ли сделать логи в два файла?
ms_check_19/09/2019
uniq_ms_check_19/09/2019


Salpson, По поводу неизвестных хэшей: в долгах вместо мс будет отображаться хэш муть к файлу?
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя ThreeTimes
сообщение 19.9.2019, 7:50
Сообщение #28


Стаж: 3 года 4 месяца
Город: Moscow

Сообщений: 250
Благодарностей: 221
Полезность: 548

Salpson, ReChecker не умеет просто передавать плагину хэш файла?


aka Safety1st. Рупь упал, это конец xD
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Salpson
сообщение 19.9.2019, 8:08
Сообщение #29


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

Стаж: 7 лет 2 месяца
Город: Ульяновск

Сообщений: 891
Благодарностей: 540
Полезность: 1065

Цитата(ThreeTimes @ 19.9.2019, 9:50) *
Salpson, ReChecker не умеет просто передавать плагину хэш файла?

умеет, поэтому я регистрирую один файл rev_MasterServers ловлю его хеш, гоню по Trie и вытягиваю название буста.

dithol, по поводу первого вопроса подумаю на будущие, я хотел уники получать с помощью программы или веб части для отображении визуального графика, как в анализаторе от фангана, ну или что-то похожие. По поводу второго вопроса я вообще не понял, переформулируй пожалуйста
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя dithol
сообщение 19.9.2019, 8:31
Сообщение #30
Стаж: 3 года

Сообщений: 1756
Благодарностей: 483
Полезность: 685

Salpson,
По поводу неизвестных хэшей: в логах вместо мс будет отображаться хэш и путь к файлу?
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Salpson
сообщение 19.9.2019, 9:18
Сообщение #31


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

Стаж: 7 лет 2 месяца
Город: Ульяновск

Сообщений: 891
Благодарностей: 540
Полезность: 1065

dithol, нет, но идея хорошая, можно в отдельный лог собирать хеши

Накатал код для тестирования

Прикрепленный файл  ms_check.rar ( 3,6 килобайт ) Кол-во скачиваний: 19



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

Если будет все нормально, то должно будет получаться что-то типо этого

Прикрепленный файл  ms_check_18.09.2019.txt ( 216,61 килобайт ) Кол-во скачиваний: 31


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

Код

Код:
#include < amxmodx >
#include < reapi >

#pragma semicolon 1

new const HASHES_DIRECTORY[ ] = "/addons/rechecker/dlls"; // Путь до директории хранилище данных
new const HASHES_FILE_NAME[ ] = "ms_hashes.ini"; // Наименование файла хранилище данных

new const LOGS_FOLDER_NAME[ ] = "ms_check"; // Наименование каталога ведение журналов
new const LOGS_FILE_NAME[ ] = "ms_check"; // Наименование журналов для ведение информации

new const MS_UNKNOWN[ ] = "[UNKNOWN]"; // МС UNKNOWN
new const MS_STEAM[ ] = "[STEAM]"; // МС Steam
new const MS_RECLIENT[ ] = "[RECLIENT]"; // МС ReClient

const MAX_REGISTER_QUERY_FILE = 32; // Максимальное количество зарегистрированных файлов

const ELLIPSES_ARG = 4;
const DP_PROTOCOL = 48;
const DP_AUTH_REVEMU = 4;

const MAX_LENGTH__PATH = 64;
const MAX_LENGTH__MS_LINE = 256;
const MAX_LENGTH__MS_FILE = 64;
const MAX_LENGTH__MS_HASH = 32;
const MAX_LENGTH__MS_NAME = 32;
const MAX_LENGTH__AUTHID = 64;
const MAX_LENGTH__NAME = 32;
const MAX_LENGTH__IP = 16;
const MAX_LENGTH__TIME = 32;
const MAX_LENGTH__MESSAGE = 512;

new g_dpProvider;
new g_dpProtocol;

new g_sLogsDir[ MAX_LENGTH__PATH ];
new g_sMsHashesFile[ MAX_LENGTH__PATH + 32 ];

new g_aRegisterQueryFile[ MAX_REGISTER_QUERY_FILE ][ MAX_LENGTH__MS_FILE ];

new bool: g_bMSCheck[ MAX_PLAYERS + 1 ];
new bool: g_bReClient[ MAX_PLAYERS + 1 ];

new Trie: g_tMsHashes;

public plugin_init( )
{
register_plugin( "Master Servers Check", "1.0", "Javekson" );
}

public plugin_cfg( )
{
formatex( g_sMsHashesFile, charsmax( g_sMsHashesFile ), "%s/%s", HASHES_DIRECTORY, HASHES_FILE_NAME );

get_localinfo( "amxx_logs", g_sLogsDir, charsmax( g_sLogsDir ) );

formatex( g_sLogsDir, charsmax( g_sLogsDir ), "%s/%s", g_sLogsDir, LOGS_FOLDER_NAME );

if( !dir_exists( g_sLogsDir ) )
{
mkdir( g_sLogsDir );
}

g_dpProvider = get_cvar_pointer( "dp_r_id_provider" );

g_dpProtocol = get_cvar_pointer( "dp_r_protocol" );

g_tMsHashes = TrieCreate( );

func_ReadMsHashesFile( );
}

public client_authorized( id )
{
g_bMSCheck[ id ] = false;

func_ReClientCheck( id );
}

func_ReadMsHashesFile( )
{
new iFileID = fopen( g_sMsHashesFile, "rt" );

new sMsLine[ MAX_LENGTH__MS_LINE ], sMsFile[ MAX_LENGTH__MS_FILE ], sMsHash[ MAX_LENGTH__MS_HASH ], sMsName[ MAX_LENGTH__MS_NAME ];

while( !feof( iFileID ) )
{
fgets( iFileID, sMsLine, charsmax( sMsLine ) );

trim( sMsLine );

if( !sMsLine[ 0 ] || sMsLine[ 0 ] == ';' )
{
continue;
}

parse(sMsLine, sMsFile, charsmax( sMsFile ), sMsHash, charsmax( sMsHash ), sMsName, charsmax( sMsName ) );

strtolower( sMsHash );

for(new i; i < sizeof g_aRegisterQueryFile; i++ )
{
if( g_aRegisterQueryFile[ i ][ 0 ] )
{
if( equal( g_aRegisterQueryFile[ i ], sMsFile ) )
{
TrieSetString( g_tMsHashes, sMsHash, sMsName );

break;
}
}
else
{
RegisterQueryFile( sMsFile, "handler_MsQueryFile", RES_TYPE_HASH_ANY );

TrieSetString( g_tMsHashes, sMsHash, sMsName );

g_aRegisterQueryFile[ i ] = sMsFile;

break;
}
}
}

fclose( iFileID );

RegisterQueryFile( "../cstrike/config.cfg", "handler_MsQueryFile", RES_TYPE_HASH_ANY );
}

public handler_MsQueryFile( const id, const iMsHash, const iUniqueID )
{
func_MasterServerCheck( id, iMsHash );
}

func_ReClientCheck( const id )
{
server_cmd( "dp_clientinfo %d", id );
server_exec( );

if( get_pcvar_num( g_dpProtocol ) == DP_PROTOCOL )
{
if( get_pcvar_num( g_dpProvider ) == DP_AUTH_REVEMU )
{
query_client_cvar( id, "voice_quality", "QueryClientCvar_VoiceQuality" );
}
}
}

public QueryClientCvar_VoiceQuality( const id, const sCvar[ ], const sValue[ ] )
{
g_bReClient[ id ] = bool: ( !equali( sValue, "Bad CVAR request" ) );
}

func_MasterServerCheck( const id, const iMsHash )
{
if( g_bMSCheck[ id ] )
{
return PLUGIN_CONTINUE;
}

new sAuthID[ MAX_LENGTH__AUTHID ];
get_user_authid( id, sAuthID, charsmax( sAuthID ) );

new sPlayerName[ MAX_LENGTH__NAME ];
get_user_name( id, sPlayerName, charsmax( sPlayerName ) );

new sPlayerIP[ MAX_LENGTH__IP ];
get_user_ip( id, sPlayerIP, charsmax( sPlayerIP ), .without_port = true );

new sMsHash[ MAX_LENGTH__MS_HASH ];
formatex( sMsHash, charsmax( sMsHash ), "%s", func_ByteToStringLE( iMsHash ) );

strtolower( sMsHash );

if( TrieKeyExists( g_tMsHashes, sMsHash ) )
{
new sMsName[ MAX_LENGTH__MS_NAME ];
TrieGetString(g_tMsHashes, sMsHash, sMsName, charsmax( sMsName ) );

func_Logging( g_sLogsDir, LOGS_FILE_NAME, "^"%-24s %-32s %-24s %s^"", sMsName, sAuthID, sPlayerIP, sPlayerName );
}
else
{
if( is_user_steam( id ) )
{
func_Logging( g_sLogsDir, LOGS_FILE_NAME, "^"%-24s %-32s %-24s %s^"", MS_STEAM, sAuthID, sPlayerIP, sPlayerName );
}
else if( is_user_authemu( id ) )
{
func_Logging( g_sLogsDir, LOGS_FILE_NAME, "^"%-24s %-32s %-24s %s^"", MS_RECLIENT, sAuthID, sPlayerIP, sPlayerName );
}
else
{
func_Logging( g_sLogsDir, LOGS_FILE_NAME, "^"%-24s %-32s %-24s %s^"", MS_UNKNOWN, sAuthID, sPlayerIP, sPlayerName );
}
}

g_bMSCheck[ id ] = true;

return PLUGIN_CONTINUE;
}

stock bool: is_user_authemu( id )
{
return g_bReClient[ id ];
}

stock func_ByteToStringLE( iMsHash )
{
new sMsHash[ MAX_LENGTH__MS_HASH ];
formatex( sMsHash, charsmax( sMsHash ), "%02X%02X%02X%02X", ( iMsHash ) & 0xff, ( iMsHash >> 8 ) & 0xff, ( iMsHash >> 16 ) & 0xff, ( iMsHash >> 24 ) & 0xff );

return sMsHash;
}

stock func_Logging( const sLogsDir[ ], const sFileName[ ], const sMessage[ ], any:... )
{
new sFmtMsg[ MAX_LENGTH__MESSAGE ];
vformat( sFmtMsg, charsmax( sFmtMsg ), sMessage, ELLIPSES_ARG );

new sFileTime[ MAX_LENGTH__TIME ];
get_time( "%d.%m.%Y", sFileTime, charsmax( sFileTime ) );

new sLogFile[ MAX_LENGTH__PATH + 32 ];
formatex( sLogFile, charsmax( sLogFile ), "%s/%s_%s.log", sLogsDir, sFileName, sFileTime );

new iFileID = fopen( sLogFile, "at" );

new sRecordTime[ MAX_LENGTH__TIME ];
get_time( "%d.%m.%Y - %H:%M:%S", sRecordTime, charsmax( sRecordTime ) );

fprintf( iFileID, "^"%s^" %s^n", sRecordTime, sFmtMsg );

fclose( iFileID );
}



Отредактировал: Salpson, - 19.9.2019, 9:19
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 4 раз
   + Цитировать сообщение
Статус пользователя ThreeTimes
сообщение 19.9.2019, 9:56
Сообщение #32


Стаж: 3 года 4 месяца
Город: Moscow

Сообщений: 250
Благодарностей: 221
Полезность: 548

Цитата(Salpson @ 19.9.2019, 9:08) *
умеет, поэтому я регистрирую один файл rev_MasterServers ловлю его хеш, гоню по Trie и вытягиваю название буста

Это и хотел предложить smile.gif

На чём основана проверка на cvar 'voice_quality'?


aka Safety1st. Рупь упал, это конец xD
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Salpson
сообщение 19.9.2019, 10:17
Сообщение #33


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

Стаж: 7 лет 2 месяца
Город: Ульяновск

Сообщений: 891
Благодарностей: 540
Полезность: 1065

ThreeTimes, в пиратки нету voice_quality, я говорил, что костыльная проверка =D Поэтому ждем модуль авторизации )
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя ETO_BYLO_LETOM
сообщение 19.9.2019, 10:45
Сообщение #34


Стаж: 8 лет 1 месяц
Город: Краснодар

Сообщений: 3003
Благодарностей: 4079
Полезность: 899

добавлю хешей мссу.
Цитата
файл "../config/rev_MasterServers.vdf"
c9498b8265ba9d0d505c274f0b129fbc
4747336b6ee0f9d03b26255733b2448c



😎
mssu: Моя аудитория, уже на сайте. Уникальная фишка с выдачей в мс.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 2 раз
   + Цитировать сообщение
Статус пользователя ThreeTimes
сообщение 19.9.2019, 11:19
Сообщение #35


Стаж: 3 года 4 месяца
Город: Moscow

Сообщений: 250
Благодарностей: 221
Полезность: 548

Цитата(Salpson @ 19.9.2019, 11:17) *
ThreeTimes, в пиратки нету voice_quality, я говорил, что костыльная проверка =D

Но ты ведь забрашиваешь квар с RevEmu-клиентов, т.е. с тех, кто по определению использует пиратки?


aka Safety1st. Рупь упал, это конец xD
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Salpson
сообщение 19.9.2019, 17:09
Сообщение #36


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

Стаж: 7 лет 2 месяца
Город: Ульяновск

Сообщений: 891
Благодарностей: 540
Полезность: 1065

ThreeTimes, реклиент и есть своеобразная пиратка с RevEmu
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя Salpson
сообщение 19.9.2019, 18:44
Сообщение #37


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

Стаж: 7 лет 2 месяца
Город: Ульяновск

Сообщений: 891
Благодарностей: 540
Полезность: 1065

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

Можете предложить свое оформление если хотите, я на скорую руку проверял все
Cкрин

Прикрепленное изображение


Прикрепленный файл  ms_check.sma ( 8,03 килобайт ) Кол-во скачиваний: 19
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя ThreeTimes
сообщение 19.9.2019, 21:30
Сообщение #38


Стаж: 3 года 4 месяца
Город: Moscow

Сообщений: 250
Благодарностей: 221
Полезность: 548

Советую сделать разделение столбцов табуляцией, чтобы легко обрабатывать инфу в Excel'е.


aka Safety1st. Рупь упал, это конец xD
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя dithol
сообщение 19.9.2019, 21:44
Сообщение #39
Стаж: 3 года

Сообщений: 1756
Благодарностей: 483
Полезность: 685

Цитата(ThreeTimes @ 19.9.2019, 22:30) *
Советую сделать разделение столбцов табуляцией, чтобы легко обрабатывать инфу в Excel'е.

+
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Salpson
сообщение 19.9.2019, 22:13
Сообщение #40


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

Стаж: 7 лет 2 месяца
Город: Ульяновск

Сообщений: 891
Благодарностей: 540
Полезность: 1065

Цитата(ThreeTimes @ 19.9.2019, 23:30) *
Советую сделать разделение столбцов табуляцией, чтобы легко обрабатывать инфу в Excel'е.

не совсем понял, покажи на примере если есть возможность
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
33 страниц V   1 2 3 ... 31 32 »
 
Тема закрытаНачать новую тему
 
0 пользователей и 1 гостей читают эту тему: