[CS:GO][ANY] Отлов строки из консоли сервера.

l.st

Участник
Сообщения
198
Реакции
68
Можно ли как-то отловить строку консоли сервера?
Например в консоли строка BURATINO ULETAET V GAGRY.
Она логируется только в condebug, а нужно только её поймать как-то из консоли...
 

gibs

Фитиль народного волненья
Сообщения
722
Реакции
407
Мошенник
Ну как вариант скачай Cleaner и посмотри исходник. Станет понятно как тебе действовать.
 
  • Мне нравится
Реакции: l.st

l.st

Участник
Сообщения
198
Реакции
68
Ну как вариант скачай Cleaner и посмотри исходник. Станет понятно как тебе действовать.
Точно! Спасибо! У самого он на кз глобале и забыл про него!)))

ps
Идея простая: ловить IP rate limiting и в лог его писать, а f2b уже отлавливать и в iptables правилом DROP отправлять.
 

l.st

Участник
Сообщения
198
Реакции
68
А чем плох стандартный квар sv_max_queries_sec ?
Давайте смотреть на вещи реально: это не запрос юзера об игре, идёт спланированная масштабная атака и уменьшение окна это лишь её смягчение и вдобавок ухудшение видимости в сети, а не отделение мух от котлет. Вопрос как это случилось, что сервера различных мастей (голдсурс и сурс) способны рефлекторно обращаться к моим серверам, это уже второе дело, хоть и интересное, главное сейчас составить список "редисок" и дропать их на фаерволе.
 

b6aCKJfx

Участник
Сообщения
12
Реакции
15
Надёжно перехватить консоль можно только хукнув SPEW_ функцию библиотеки tier0, заменив на свою. Как это сделать, написано почти полностью в исходнике Cleaner-а, только автор почему-то искал функцию по паттерну, хотя можно было сделать проще и лучше. Прототипы SPEW_ функций можно найти в SDK 2013, файл dbg.h.

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

SpewOutputFunc_t DefaultSpewFunction;

В CServerGameDLL::DLLInit:

DefaultSpewFunction = GetSpewOutputFunc();
SpewOutputFunc(CleanerSpewFunc);

В CServerGameDLL::DLLShutdown:

SpewOutputFunc(DefaultSpewFunction);

Ну, а в самой CleanerSpewFunc уже делать сравнение строки, приходящей в функцию (можно позволить себе регулярки), если найдено искомое - отправляем в лог на диск сервера. Cleaner действует по тому же принципу, только он не пропускает указанные сообщения, возвращая SPEW_CONTINUE (см. функцию DETOUR_DECL_STATIC2 в модуле плагина). Тебе надо заменить либо дописать туда свою логику, скидывающую в лог то, что тебя интересует.
 
Сверху Снизу