Ибо таковые лжеапостолы, лукавые делатели, принимают вид Апостолов Христовых. И неудивительно: потому что сам сатана принимает вид Ангела света, а потому не великое дело, если и служители его принимают вид служителей правды; но конец их будет по делам их. (2Кор 11:13-15).
Столкнулся тоже с этой фишкой. На оффициальном форуме: http://forum.sa-mp.com/showthread.php?t=330254 Ничего собсна толкового нет, есть варианты поставить фаирволл у кого его нет, и т.п.
По логам заметил, что человек заходит на сервер...ID человека и IP видно как при обычном входе. И начинается флуд. Во флуде Warning: PlayerDialogResponse crash exploit from PlayerId: 114 виден ID игрока, а собственно и можно найти IP злоумышленника, как я и сделал, забанил как положено.
А есть еще когда флуд выглядит так: Warning: PlayerDialogResponse crash exploit from PlayerId: 65535 т.е. ID игрока не соответствует реальности. Причем логи сервера, как уже сказали вырастают до неймоверных размеров. За минут 15-20 = 1700 мб.
Судя по варнингу акатуется паблик диалогов. Соответственно на сервер отсылаются пакеты модифицированные в большом количетсве. Автор темы указал паблик OnPlayerCommandText, но мне кажется собака зарыта не тут, хотя хрен его знает, я не такой уж спец.
Попробовать что-ли поставить счетчик запросов на диалоги, будем думать.
А вы пацаны засрали тему ненужным флудом "повешать, повешать", "говнокод"..."лимит соединений" - какой нафиг лимит... не понял ты о чем речь даже идет...
Сообщение отредактировал FiLE - Понедельник, 07.05.2012, 23:12
Решение найдено, решение защищает как от данной DOS атаки, как и от многих других. Делаем таймер на 10 секунд с повтарением и вставляем туда P.S. защита от невидимости.
for (new i = 0; i < MAX_PLAYERS; i++) { if(IsPlayerConnected(i)) {
} else { Kick(i); } }
Работает 100%
Если ресурсы сервера позволяют, можно вместо MAX_PLAYERS вставить 70000
Сообщение отредактировал RMEN - Вторник, 08.05.2012, 00:15
RMEN, когда атакующий будет кикнут, то не пройдет и секунды как этот бот будет снова слать пакеты, пока таймер 10 секунд будет думать, атака будет продолжатся. Если это бот конечно атакует.
FiLE кикнутый бот, не сможет сного слать пакеты пока не переподключится, это у него займёт 3 сек если сделать автоматом (пока автомат режима нет), вручную 6 секунд, бот начинает слать пакеты через 10 секунд после подключения. Проверено на windows сервере, работает.
Сообщение отредактировал RMEN - Вторник, 08.05.2012, 01:37
Хм.. а как он вобще кикнет игрока который не подключен фактически? Это же бомбят серв пакетами с инфой. Если только просто очистить слот, якобы занимаемый этим игроком.
RMEN, противоречишь себе. Kick не работает на игроке, не подключенным к серверу. Обломайся.
Я же уже сказал, при этом досе не вызывается никакой коллбек. Если вам так хочется сделать против этого защиту, во все коллбеки засуньте print(). А запустить эту атаку могу я вам на сервер (Только для того, что бы найти против этого код), просите в ЛС.
65535 - это ID неверного игрока, используется в скрипте и в самом сервере. Оно просто задано define'ом в самом сервере (.exe). Делать цикл на 70000 - бред. Тем более никакие команды не работают вообще на ID, больше 500/800.