Актуально | Краш-спреи (путем подделки CRC32)

Sammit92

Участник
Сообщения
62
Реакции
17
А как защитить сервер от этого?

sv_allowdownload 0
sv_allowupload 0

и удалить папку download в корне сервера, и всё?
Или ещё что-то нужно сделать?
 

Madness aka null138

Участник
Сообщения
715
Реакции
767
А как защитить сервер от этого?

sv_allowdownload 0
sv_allowupload 0

и удалить папку download в корне сервера, и всё?
Или ещё что-то нужно сделать?
Спреи подгружаются клиенту на других серверах. Даже если отключить sv_allowdownload и sv_allowupload, игрок всё равно может принести спрей уже загруженный ранее - из своей локальной папки downloads.
 

Synd1qate

Участник
Сообщения
844
Реакции
309
Спреи подгружаются клиенту на других серверах. Даже если отключить sv_allowdownload и sv_allowupload, игрок всё равно может принести спрей уже загруженный ранее - из своей локальной папки downloads.
Но ведь ставить то он спрей не сможет, или я ошибаюсь?
 

Sammit92

Участник
Сообщения
62
Реакции
17
Так получается любой сервер теперь могут крашить?
 

Madness aka null138

Участник
Сообщения
715
Реакции
767
Но ведь ставить то он спрей не сможет, или я ошибаюсь?
sv_allowupload
sv_allowdownload


Эти переменные отвечают только за передачу пользовательских файлов (отправку и получение), но не контролируют их использование. (Команда impulse 202 для звуковых файлов, и impulse 201 для спреев)

Когда игрок ставит спрей, его клиент отправляет на сервер имя/ссылку vtf файла декали.
Сервер, в свою очередь, рассылает это имя всем клиентам, но не саму текстуру, если данные переменные отключены.

Если у других игроков уже есть локально соответствующий файл, их клиент отрисует спрей.
Если файла нет, то спрей не будет отображён.

Может, не совсем по теме, но стоит отметить: звуковыми файлами .wav тоже можно вызвать краш(impulse 202) - в коде проигрывателя в движке есть множество уязвимостей, поскольку он довольно старый.
К счастью, разработчики игры по умолчанию отключили воспроизведение пользовательских звуков. cl_customsounds = 0


Так получается любой сервер теперь могут крашить?
Где не отключена возможность наносить спрей - да, всё именно так.
Это легко можно сделать через плагин.
 
Последнее редактирование:

Sammit92

Участник
Сообщения
62
Реакции
17
Т.е. даже если на сервере указаны sv_allowupload 0 и sv_allowdownload 0 и нет папки download со спреями, серверу всё равно нужен специальный плагин для блокировки спреев?
Вот этот подходит?

 

ASTEROID

Участник
Сообщения
74
Реакции
93
Т.е. даже если на сервере указаны sv_allowupload 0 и sv_allowdownload 0 и нет папки download со спреями, серверу всё равно нужен специальный плагин для блокировки спреев?
Вот этот подходит?

Нет, не подойдёт
Нужен плагин который отключит возможность наносить спрей
Сообщения автоматически склеены:

Т.е. даже если на сервере указаны sv_allowupload 0 и sv_allowdownload 0 и нет папки download со спреями, серверу всё равно нужен специальный плагин для блокировки спреев?
Вот этот подходит?

Опробуй, сильно не думал пока накидал. На SM 1.13 проверялся, всё ок.

Звук спрея естественно будет, но заблокировал его нанесение и отправки на сервер impulse 201 (не сам сетевой пакет).
Сообщения автоматически склеены:

@Madness aka null138 К тебе тоже просьба, если есть возможность, проверить, достаточно-ли этого плага
 

Вложения

  • spray_block.smx
    3.2 КБ · Просмотры: 0
Последнее редактирование:

rocki

Участник
Сообщения
1
Реакции
1
Т.е. даже если на сервере указаны sv_allowupload 0 и sv_allowdownload 0 и нет папки download со спреями, серверу всё равно нужен специальный плагин для блокировки спреев?
Вот этот подходит?

Есть версия лучше чем скинули выше, с блокировкой звука, стояла на v34
Исходник прикрепляю
 

Вложения

  • spray_block_private.smx
    3.7 КБ · Просмотры: 3
  • spray_block_private.sp
    2 КБ · Просмотры: 38

Reg1oxeN

Участник
Сообщения
403
Реакции
322
для блокировки спреев нужно всего лишь...
C-подобный:
public Action OnPlayerRunCmd(int client, int &buttons, int &impulse, float vel[3], float angles[3])
{
    if (impulse == 201 || impulse == 202)
    {
        impulse = 0;
        return Plugin_Changed;
    }
    return Plugin_Continue;
}
 

Sammit92

Участник
Сообщения
62
Реакции
17
Ни один из предложенных не помогает от краша.
Игрок-хакер заходит и сервер моментально падает.
Его сразу же выкидывает с ошибкой Buffer Overflow in net message
ProcessCMDS от майарены пытается с ним что-то сделать но не может:

[processcmds.ext] Игрок: 'reys' (steamid: [U:1:35413425] | ip: 185.108.107.37:27005) был выброшен с сервера за спам ConVar.

Заходят и по 25 раз крашат сервер. Помогите кто-то справиться с ними, бесплатно, за деньги не важно
 

Madness aka null138

Участник
Сообщения
715
Реакции
767
Ни один из предложенных не помогает от краша.
Игрок-хакер заходит и сервер моментально падает.
Его сразу же выкидывает с ошибкой Buffer Overflow in net message
ProcessCMDS от майарены пытается с ним что-то сделать но не может:

[processcmds.ext] Игрок: 'reys' (steamid: [U:1:35413425] | ip: 185.108.107.37:27005) был выброшен с сервера за спам ConVar.

Заходят и по 25 раз крашат сервер. Помогите кто-то справиться с ними, бесплатно, за деньги не важно
Это не связано со спреями. Создайте тему в соответствующей ветке и подробно опишите проблему, чтобы люди могли вам помочь.
 

ASTEROID

Участник
Сообщения
74
Реакции
93
Это не связано со спреями. Создайте тему в соответствующей ветке и подробно опишите проблему, чтобы люди могли вам помочь.
Это недавно типок появился, который шастает с впном и крашит
Там от вестмана решения достаточно, по крайней мере у меня - Disconnect: Buffer overflow in net message
 

Synd1qate

Участник
Сообщения
844
Реакции
309
Интересный исходник, вс код ложится отдохнуть
?
1761779237075.png
 

DENZEL519

Работаю с AI !
Сообщения
462
Реакции
255

Описание плагина Anti-Crash Spray Protection​

Возможности плагина​

1. Защита от краш-спреев

  • Блокирует использование спреев для всех игроков кроме тех, кто добавлен в белый список
  • Защищает сервер и клиентов от специально созданных спреев, которые могут вызывать сбои

2. Система белого списка

  • Хранение разрешенных SteamID в базе данных (MySQL/SQLite)
  • Только игроки из белого списка могут использовать спреи
  • Автоматическое создание таблиц в базе данных

3. Блокировка спреев и звуков

  • Перехватывает команды impulse 201 (установка спрея) и impulse 202 (звук спрея)
  • Мгновенная блокировка для неавторизованных игроков
  • Сообщение игроку о запрете использования спреев

4. Защита файловой системы

  • Автоматическая проверка файлов в директории downloads/sprays
  • Удаление подозрительных файлов спреев
  • Контроль размера файлов (максимум 512KB)
  • Проверка расширений файлов (только .vmt и .vtf)

5. Управление для администраторов

Команды для админов​

Основные команды:​

  • sm_spray_whitelist_add <steamid>- добавить игрока в белый список
    • Пример: sm_spray_whitelist_add STEAM_0:1:12345678
  • sm_spray_whitelist_remove <steamid>- удалить игрока из белого списка
    • Пример: sm_spray_whitelist_remove STEAM_0:1:12345678
  • sm_spray_whitelist_list - показать список всех игроков в белом списке
  • sm_spray_reload - перезагрузить права для всех онлайн-игроков
  • sm_spray_menu - открыть графическое меню управления

Графическое меню:​

  • "Добавить игрока по SteamID"
  • "Удалить игрока по SteamID"
  • "Показать список"
  • "Перезагрузить список"
Настройка базы данных:

"spray_whitelist"
{
"driver" "mysql"
"host" "localhost"
"database" "sourcemod"
"user" "username"
"pass" "password"
}

Процесс работы​

  1. Игрок подключается → проверка SteamID в базе данных
  2. Игрок пытается поставить спрей → проверка прав доступа
  3. Если в белом списке → спрей разрешен
  4. Если не в белом списке → команда блокируется
  5. Админ добавляет SteamID → мгновенное обновление прав
PS не тестил) Может тут будет идея для других скриптеров.
 

Вложения

  • antispray_protection.sp
    18.1 КБ · Просмотры: 7
  • antispray_protection.smx
    11.2 КБ · Просмотры: 0

Madness aka null138

Участник
Сообщения
715
Реакции
767

Описание плагина Anti-Crash Spray Protection​

Возможности плагина​

1. Защита от краш-спреев

  • Блокирует использование спреев для всех игроков кроме тех, кто добавлен в белый список
  • Защищает сервер и клиентов от специально созданных спреев, которые могут вызывать сбои

2. Система белого списка

  • Хранение разрешенных SteamID в базе данных (MySQL/SQLite)
  • Только игроки из белого списка могут использовать спреи
  • Автоматическое создание таблиц в базе данных

3. Блокировка спреев и звуков

  • Перехватывает команды impulse 201 (установка спрея) и impulse 202 (звук спрея)
  • Мгновенная блокировка для неавторизованных игроков
  • Сообщение игроку о запрете использования спреев

4. Защита файловой системы

  • Автоматическая проверка файлов в директории downloads/sprays
  • Удаление подозрительных файлов спреев
  • Контроль размера файлов (максимум 512KB)
  • Проверка расширений файлов (только .vmt и .vtf)

5. Управление для администраторов

Команды для админов​

Основные команды:​

  • sm_spray_whitelist_add <steamid>- добавить игрока в белый список
    • Пример: sm_spray_whitelist_add STEAM_0:1:12345678
  • sm_spray_whitelist_remove <steamid>- удалить игрока из белого списка
    • Пример: sm_spray_whitelist_remove STEAM_0:1:12345678
  • sm_spray_whitelist_list - показать список всех игроков в белом списке
  • sm_spray_reload - перезагрузить права для всех онлайн-игроков
  • sm_spray_menu - открыть графическое меню управления

Графическое меню:​

  • "Добавить игрока по SteamID"
  • "Удалить игрока по SteamID"
  • "Показать список"
  • "Перезагрузить список"
Настройка базы данных:

"spray_whitelist"
{
"driver" "mysql"
"host" "localhost"
"database" "sourcemod"
"user" "username"
"pass" "password"
}

Процесс работы​

  1. Игрок подключается → проверка SteamID в базе данных
  2. Игрок пытается поставить спрей → проверка прав доступа
  3. Если в белом списке → спрей разрешен
  4. Если не в белом списке → команда блокируется
  5. Админ добавляет SteamID → мгновенное обновление прав
PS не тестил) Может тут будет идея для других скриптеров.

Примечания
impulse 202 - это воспроизведение пользовательского звукового файла. Оно никак не связано с самим спреем.
Размер файла не влияет на краш. Оно может быть любым.

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

DENZEL519

Работаю с AI !
Сообщения
462
Реакции
255
Сверху Снизу