SA-MP Forums

Go Back   SA-MP Forums > Non-English > Languages > Русский/Russian

Reply
 
Thread Tools Display Modes
Old 02/12/2013, 07:53 AM   #121
DANGER1979
Gangsta
 
DANGER1979's Avatar
 
Join Date: Sep 2009
Location: Belarus
Posts: 793
Reputation: 21
Default Re: Атака сервера

Quote:
Originally Posted by exclide1 View Post
Нет. Я проверял, прежде чем скинуть.
вот данные просто игрока
Code:
Network Active: 1
Network State: 8
Messages in Send buffer: 0
Messages sent: 59687
Bytes sent: 2770820
Acks sent: 388
Acks in send buffer: 0
Messages waiting for ack: 0
Messages resent: 94
Bytes resent: 2051
Packetloss: 0.1%
Messages received: 51833
Bytes received: 1458804
Acks received: 0
Duplicate acks received: 90
Inst. KBits per second: 47.0
KBits per second sent: 167.9
KBits per second received: 168.9
как видишь может свободно быть выше 150
__________________
Virtual World Developer
DANGER1979 is offline   Reply With Quote
Old 02/12/2013, 08:41 AM   #122
DANGER1979
Gangsta
 
DANGER1979's Avatar
 
Join Date: Sep 2009
Location: Belarus
Posts: 793
Reputation: 21
Default Re: Атака сервера

Как вы смотрите на такую защиту
pawn Code:
new gTimer;
public OnFilterScriptInit()
{
    gTimer = SetTimer("GetNetworkStatsTimer", 1000, 1);
    print(" antipizdos v0.2 By: DANGER1979");
    print("_____________________________________________");
    print(" ");
    return true;
}
public OnFilterScriptExit()
{
    KillTimer(gTimer); gTimer = -1;
    return 1;
}
forward GetNetworkStatsTimer();
public GetNetworkStatsTimer()
{
    new stats[500]; new pip[16]; new playername[MAX_PLAYER_NAME];
    for(new i; i<MAX_PLAYERS; i++)
    {
        if(!IsPlayerConnected(i)) continue;
        if(IsPlayerNPC(i)) continue;
        //if(!IsPlayerConnected(i)) return Kick(i);
        //new stats[418+1];
        GetPlayerNetworkStats(i, stats, sizeof(stats));
       
        new MSB = strval(findParam(stats, "Messages in Send buffer: "));
        if(MSB > 10000) {
            GetPlayerName(i, playername, sizeof(playername));
            GetPlayerIp(i, pip, sizeof(pip));
            printf("antipizdos: kick %s[%d][ip:%s]. Messages in Send buffer: %d", playername, i, pip, MSB);
            Kick(i);
        }
       
        new AS = strval(findParam(stats, "Acks sent: "));
        if(AS > 3000) {
            GetPlayerName(i, playername, sizeof(playername));
            GetPlayerIp(i, pip, sizeof(pip));
            printf("antipizdos: kick %s[%d][ip:%s]. Acks sent: %d", playername, i, pip, AS);
            Kick(i);
        }
    }
    return 1;
}

проверил вроде работает
[02/12/2013 12:53:30] Packet was modified, sent by id: 15, ip: 188.116.54.12:51757
...
[02/12/2013 12:53:33] Packet was modified, sent by id: 15, ip: 188.116.54.12:51757
[02/12/2013 12:53:33] antipizdos: kick Vova_Betman[15][ip:188.116.54.12]. Acks sent: 4197

что не так? что исправить? как у вас?
__________________
Virtual World Developer
DANGER1979 is offline   Reply With Quote
Old 02/12/2013, 09:00 AM   #123
Slava[LSW]
Big Clucker
 
Join Date: Aug 2010
Location: Russia, Vladivostok
Posts: 99
Reputation: 4
Default Re: Атака сервера

По-моему, лучше отлавливать 'Messages received', и получать разность каждую секунду.
Acks sent постепенно достигнет значения в 3000, и тогда будет плохо.

А 'Messages received', на мой взгляд, самый надежный.

Мой вариант:
pawn Code:
public OnGameModeInit()
{
    SetTimer("AntiDOS", 950, true);
}

new m_per_sec[MAX_PLAYERS];

forward AntiDOS();
public AntiDOS()
{
    new str[268];
    new mes;
    new find;
   
    for(new i=0;i<MAX_PLAYERS;i++)
    {
        if(IsPlayerConnected(i))
        {
            GetPlayerNetworkStats(i, str, 268);
           
            find = strfind(str, "Messages received:", false, 205);
            if(find != -1)
            {
                mes = strval(str[find+18]);

                if((mes - m_per_sec[i]) >= 500)
                {
                    SetTimerEx("testDos", 200, false, "%d%d", i, (mes - m_per_sec[i]));//Во время выхода игрока с сервера, таймер может сработать, тогда значение подпрыгнет примерно до 115000, это не допустимо
                }

                m_per_sec[i] = mes;
            }
        }
    }
    return true;
}

forward testDos(playerid, messages);
public testDos(playerid, messages)
{
    if(IsPlayerConnected(playerid))
    {
        //Ban(playerid);
    }
    return false;
}

public OnPlayerConnect(playerid)
{
    m_per_sec[playerid] = 2147483647;
}
Slava[LSW] is offline   Reply With Quote
Old 02/12/2013, 09:09 AM   #124
DANGER1979
Gangsta
 
DANGER1979's Avatar
 
Join Date: Sep 2009
Location: Belarus
Posts: 793
Reputation: 21
Default Re: Атака сервера

Если Messages received:
то какую разность надо отслеживать?

У Messages received: по-моему вообще нету зависимости, просмотрев статы нескольких игроков.
__________________
Virtual World Developer
DANGER1979 is offline   Reply With Quote
Old 02/12/2013, 09:15 AM   #125
Slava[LSW]
Big Clucker
 
Join Date: Aug 2010
Location: Russia, Vladivostok
Posts: 99
Reputation: 4
Default Re: Атака сервера

Попробуй подосить и увидишь.

Отредактировал верхний пост.
Slava[LSW] is offline   Reply With Quote
Old 02/12/2013, 01:10 PM   #126
White_116
High-roller
 
Join Date: Sep 2010
Location: Russia/116
Posts: 1,495
Reputation: 69
Default Re: Атака сервера

Quote:
Originally Posted by Slava[LSW] View Post
По-моему, лучше отлавливать 'Messages received', и получать разность каждую секунду.
Acks sent постепенно достигнет значения в 3000, и тогда будет плохо.
А 'Messages received', на мой взгляд, самый надежный.
По мне так "Bytes received". Включает запросы и сообщения.

PHP Code:
#include <a_samp>
new NET_Bytes[MAX_PLAYERS];
new 
NET_Warning[MAX_PLAYERS char];
new 
NET_Timer=-1;

public 
OnFilterScriptInit()
{
    
NET_Timer=SetTimer("NET"9551);
    return 
1;
}

public 
OnFilterScriptExit()
{
    
KillTimer(NET_Timer);
    
NET_Timer=-1;
    return 
1;
}

public 
OnPlayerConnect(playerid)
{
    
NET_Warning{playerid}=0;
    
NET_Bytes[playerid]=0;
    return 
1;
}

forward NET();//В секундный таймер
public NET()
{
    new 
pack[1024],pa[12];
    for(new 
playerid=MAX_PLAYERS;playerid--;)if(IsPlayerConnected(playerid))
    {
        
GetPlayerNetworkStats(playerid,pack,sizeof(pack));
        new 
packet=strfind(pack,"Bytes received:")+16;
        
strmid(pa,pack,packet,packet+12);
        
packet=strval(pa);
        if((
packet-NET_Bytes[playerid]) > 3000)//3000 изменить на ваше желаемое.
        
{
            ++
NET_Warning{playerid};
            if(
NET_Warning{playerid} == 2)
            {
                
Kick(playerid);
                print(
"Paket");
            }
        }
        else 
NET_Warning{playerid}=0;
        
NET_Bytes[playerid]=packet;
    }

__________________
White_116 is offline   Reply With Quote
Old 02/12/2013, 01:45 PM   #127
DANGER1979
Gangsta
 
DANGER1979's Avatar
 
Join Date: Sep 2009
Location: Belarus
Posts: 793
Reputation: 21
Default Re: Атака сервера

Quote:
for(new playerid=MAX_PLAYERS;playerid--;)if(IsPlayerConnected(playerid))
Quote:
++NET_Warning{playerid};
что это за стиль писания?
__________________
Virtual World Developer
DANGER1979 is offline   Reply With Quote
Old 02/12/2013, 01:56 PM   #128
White_116
High-roller
 
Join Date: Sep 2010
Location: Russia/116
Posts: 1,495
Reputation: 69
Default Re: Атака сервера

Quote:
Originally Posted by DANGER1979 View Post
что это за стиль писания?
Кручу, верчу, запутать хочу.
Изначально так было,
Quote:
if(++NET_Warning{playerid} == 2)
вынес, чтобы было понятнее. Ну а цикл от Степашки подхватил.
__________________
White_116 is offline   Reply With Quote
Old 02/12/2013, 01:56 PM   #129
Slava[LSW]
Big Clucker
 
Join Date: Aug 2010
Location: Russia, Vladivostok
Posts: 99
Reputation: 4
Default Re: Атака сервера

У меня значения Bytes received слишком сильно прыгают, поэтому использую Messages received, это стабильнее
Slava[LSW] is offline   Reply With Quote
Old 02/12/2013, 02:01 PM   #130
White_116
High-roller
 
Join Date: Sep 2010
Location: Russia/116
Posts: 1,495
Reputation: 69
Default Re: Атака сервера

Quote:
Originally Posted by Slava[LSW] View Post
У меня значения Bytes received слишком сильно прыгают, поэтому использую Messages received, это стабильнее
Когда досить начинают, там значения от 60.000 и выше. Счётчик Предупреждений как раз таки от прыжков спасёт.
Каждый выбирает то, что для него удобнее
__________________
White_116 is offline   Reply With Quote
Reply

Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
Взлом сервера! Ghost~Ride Русский/Russian 7 11/12/2012 04:31 PM
SA-MP 0.3e R2 обновление сервера Stepashka Русский/Russian 20 17/11/2012 01:37 PM
Атака сервера stabker Русский/Russian 22 08/09/2012 01:59 PM
Зависание сервера RoAChik Русский/Russian 7 30/07/2012 03:03 PM
Вылетаение сервера serpip Русский/Russian 43 11/05/2012 06:10 PM


All times are GMT. The time now is 01:30 AM.


Powered by vBulletin® Version 3.8.6
Copyright ©2000 - 2020, Jelsoft Enterprises Ltd.