Атака сервера
#41

Да. Читер отключается, но остаётся на сетевом уровне.
https://sampforum.blast.hk/showthread.php?tid=470156
Поковыряй.
Reply
#42

Если не желаете юзать ничего лишнего, то вот мой вариант фикса фейкового-дисконнекта.

pawn Code:
new AT_Timerid[MAX_PLAYERS];

public OnPlayerConnect(playerid)
{
    if(AT_Timerid[playerid]) //На практике это вряд ли произойдет, но для самоуспокоения добавил
    {
        KillTimer(AT_Timerid[playerid]);
        AT_Timerid[playerid] = 0;
    }
    //...
}

public OnPlayerDisconnect(playerid, reason)
{
    //...
    AT_Timerid[playerid] = SetTimerEx("AfterDisconnectTimer", 500, 0, "i", playerid);
}

forward AfterDisconnectTimer(const playerid);
public AfterDisconnectTimer(const playerid)
{
    FastKick(playerid); //Это у меня для вызова обычного моментального Kick. Оставил, т.к. советую обратить на это внимание, учитывая то, что почти у всех щас макрос на Kick()
    AT_Timerid[playerid] = 0;
}
Reply
#43

Code:
OnPlayerDisconnect(...)
{
 // ваш код
  Kick(playerid);
  return 1;
}
не?
Reply
#44

Quote:
Originally Posted by Jon_De
View Post
Code:
OnPlayerDisconnect(...)
{
 // ваш код
  Kick(playerid);
  return 1;
}
не?
https://sampforum.blast.hk/showthread.php?tid=400823&page=11
Reply
#45

краткий вариант так сказать.

new bool:connected[MAX_PLAYERS];

Code:
OnPlayerConnect(..)
{
   if(connected[playerid] == true)
   {
      BanEx(playerid, "Connect flood");
      return 1;
   }
   connected[playerid] = true;
   return 1;
}

OnPlayerDisconnect(...)
{
    if(connected[playerid] == false) return 1;
    connected[playerid] = false;
    // ваш код
    Kick(playerid);
    return 1;
}
правда есть чит который вызывает и Onplayerdisconnect И коннект и флудит этим, короче про защиту от хаков долго писать можно. то что выше - это капля в море
Reply
#46

Ну, попробуйте так сделать, и посмотрите на реакцию инклудов типа foreach. Все "OnPlayerDisconnect", которые выше, все равно выполняться будут.
Reply
#47

Quote:
Originally Posted by stabker
View Post
Ну, попробуйте так сделать, и посмотрите на реакцию инклудов типа foreach. Все "OnPlayerDisconnect" которые выше, все равно выполняться будут.
у меня так и сделано. всякие левые инклуды не использую
в конце концов, можно это в инклуд засунуть и поместить его выше остальных, не знаю точно как там всё делается, но коллбэки будут вызываться так как и было задумано
Reply
#48

В OnPlayerDisconnect нельзя выполнять Kick, т.к. ф-ия Kick вызовет множественное срабатывание OnPlayerDisconnect.
Reply
#49

Quote:
Originally Posted by DANGER1979
View Post
В OnPlayerDisconnect нельзя выполнять Kick, т.к. ф-ия Kick вызовет множественное срабатывание OnPlayerDisconnect.
Смотри последний мой код внимательно
Reply
#50

Когда то степашка кричал
Quote:

нафига вы ставите
if( !IsPlayerConnected(playerid) )

а счас мало того, что его надо ставить, так ещё надо добавлять
{ Kick(playerid); return 1; }
Reply
#51

Quote:
Originally Posted by DANGER1979
View Post
на 300 000 ставить?
Просто 300. И минусовать это значение в частовызываемых коллбэках
Reply
#52

Quote:
Originally Posted by DANGER1979
View Post
Когда то степашка кричал

а счас мало того, что его надо ставить, так ещё надо добавлять
{ Kick(playerid); return 1; }
О чем конкретно щас идет речь?
Reply
#53

Есть ещё какой то другой способ защитить сервер от флуда?
типа
[05/12/2013 23:19:14] Packet was modified, sent by id: 9, ip: 178.125.169.106:12113
[05/12/2013 23:19:14] Packet was modified, sent by id: 9, ip: 178.125.169.106:12113
[05/12/2013 23:19:14] Packet was modified, sent by id: 9, ip: 178.125.169.106:12113
Reply
#54

Quote:
Originally Posted by DANGER1979
View Post
Есть ещё какой то другой способ защитить сервер от флуда?
типа
[05/12/2013 23:19:14] Packet was modified, sent by id: 9, ip: 178.125.169.106:12113
[05/12/2013 23:19:14] Packet was modified, sent by id: 9, ip: 178.125.169.106:12113
[05/12/2013 23:19:14] Packet was modified, sent by id: 9, ip: 178.125.169.106:12113
Вышеописанные способы ловят это. Другое дело флуд "incoming connection" и "Blocking %s due to a 'server full' attack". Все равно лог читать нужно
Reply
#55

Quote:
Originally Posted by stabker
View Post
Вышеописанные способы ловят это. Другое дело флуд "incoming connection" и "Blocking
%s due to a 'server full' attack". Все равно лог читать нужно
нет не ловят. Т.е. не во всех случаях. Иногда ловят, а иногда нет.
а как лог читать?

fopen("../server_log.txt",io_read)
типа так?

И не сильно ли это накладно по нагрузке?
ведь лог читать придётся как минимум раз в 5 сек. А он большой, и придётся его чистить каждые сутки.

Или есть плагины отлавливающие сообщения в лог на уровне сервера?
Reply
#56

Quote:
Originally Posted by DANGER1979
View Post
а как лог читать?

fopen("../server_log.txt",io_read)
типа так?

И не сильно ли это накладно по нагрузке?
ведь лог читать придётся как минимум раз в 5 сек. А он большой, и придётся его чистить каждые сутки.

Или есть плагины отлавливающие сообщения в лог на уровне сервера?
Есть плагины для работы с файлами, в т.ч. через них можно открывать файлы в основной папке сервера. https://sampforum.blast.hk/showthread.php?tid=252918 или http://jatochnietdan.com/projects/sa-mp/filemanager еще можно путь к файлу лога изменить, но тут такое обсуждать запрещено, либо этот плагин юзать https://github.com/BJIADOKC/samp-plugin-antiattack, с ним нагрузки будет меньше всего, но я не разобрался

Нагрузка будет, но если грамотно все сделать, то она не такая уж большая и тормозить ничего не должна. Чистить не обязательно, для этого есть fseek (переход к позиции в файле). А если сделать специальную пометку в этих разных варнингах, то вообще все быстро будет, но опять же, здесь запрещено такое обсуждать
Reply
#57

Quote:
Originally Posted by DANGER1979
View Post
Есть ещё какой то другой способ защитить сервер от флуда?
типа
[05/12/2013 23:19:14] Packet was modified, sent by id: 9, ip: 178.125.169.106:12113
[05/12/2013 23:19:14] Packet was modified, sent by id: 9, ip: 178.125.169.106:12113
[05/12/2013 23:19:14] Packet was modified, sent by id: 9, ip: 178.125.169.106:12113
Acks sent = кол-во вызванных коллбэков и преданных сообщенией в т.ч. такого флуда
Я выше писал какое значение ставить
Reply
#58

От Invalid client connecting from удалось сделать кому то? в принципе все атаки которые идут от пдключеного клиента ловятся легко, а вот такие без понятия вообще
Reply
#59

Quote:
Originally Posted by Jon_De
View Post
От Invalid client connecting from удалось сделать кому то? в принципе все атаки которые идут от пдключеного клиента ловятся легко, а вот такие без понятия вообще
никто делиться не хочет как я понял ?
Reply
#60

Quote:
Originally Posted by Jon_De
View Post
никто делиться не хочет как я понял ?
Никто и не сделал. Средствами павн этого не сделать. Разве что банальное чтение лога.
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)