SA-MP Forums Archive
[Tool/Web/Other] Funciones y metodos utiles para evitar ataques (desde script) - Printable Version

+- SA-MP Forums Archive (https://sampforum.blast.hk)
+-- Forum: Non-English (https://sampforum.blast.hk/forumdisplay.php?fid=9)
+--- Forum: Languages (https://sampforum.blast.hk/forumdisplay.php?fid=33)
+---- Forum: Español/Spanish (https://sampforum.blast.hk/forumdisplay.php?fid=29)
+----- Forum: Lanzamientos/Releases (https://sampforum.blast.hk/forumdisplay.php?fid=59)
+----- Thread: [Tool/Web/Other] Funciones y metodos utiles para evitar ataques (desde script) (/showthread.php?tid=362608)



Funciones y metodos utiles para evitar ataques (desde script) - TheChaoz - 25.07.2012

Bueno recientemente se crearon varios temas solicitando ayuda en algunos de ellos para detener ataques hacia los servidores.
En este topic publicare algunos de los metodos que se utilizan para parar ataques desde el script (es decir que no son validos para ataques tipo DOS, DDOS, y agentes externos al servidor).

Evitar Bots desde una misma IP: por el equipo de SA-MP
Si bien existe un filterscript el cual viene por defecto con el servidor de SA-MP llamado maxip.pwn, mostrare el medoto, ya que no todos lo conocen.
pawn Код:
#define MAX_IPS    (3)

new IP[MAX_PLAYERS][16];

public OnPlayerConnect(playerid)
{
    new contador;
    GetPlayerIp(playerid, IP[playerid], 16);
    for(new user; user<GetMaxPlayers(); user++)
        if(IsPlayerConnected(user))
            if(!strcmp(IP[playerid], IP[user]))
                contador++;
    if(contador>=MAX_IPS)
        Kick(playerid);
    return 1;
}
Evitar Bots desde la misma IP que conectan y desconectan por JernejL
pawn Код:
#define MAX_BOTS    (50)

enum bInfo
{
    bIP,
    bTime
};

new Bots[MAX_BOTS][bInfo], bCount;

public OnPlayerConnect(playerid)
{
    new IP[16];
    GetPlayerIp(playerid, IP, 16);
    Bots[bCount][bIP] = IpToInt(IP);
    Bots[bCount][bTime] = GetTickCount();
    for(new i; i<MAX_BOTS; i++)
    {
        if(Bots[bCount][bIP] != Bots[i][bIP])
            continue;
        if(GetTimeDistance(Bots[bCount][bTime], Bots[i][bTime])<=1000)
            Bots[bCount][bTimes]++;
    }
    if(Bots[bCount][bTimes]>3)Ban(playerid);
    bCount++;
    if(bCount>=MAX_BOTS)
        bCount = 0;
    return 1;
}

IpToInt(const szIP[])//by RyDeR`, JernejL
{
    new aiBytes[4 char], iPos = 0;
    aiBytes{0} = strval(szIP[iPos]);
    while(szIP[iPos] != EOS && szIP[iPos++] != '.') {}
    aiBytes{1} = strval(szIP[iPos]);
    while(szIP[iPos] != EOS && szIP[iPos++] != '.') {}
    aiBytes{2} = strval(szIP[iPos]);
    while(szIP[iPos] != EOS && szIP[iPos++] != '.') {}
    aiBytes{3} = strval(szIP[iPos]);
    return aiBytes[0];
}

intabs(innumber)//by JernejL
{
    if(innumber < 0)return -innumber;
    return innumber;
}

Distance1Dint(fPos1, fPos2)//by JernejL
{
    if (fPos1 > fPos2)return intabs(fPos1 - fPos2);
    return intabs(fPos2 - fPos1);
}

GetTimeDistance(a, b)//by JernejL
{
    if((a < 0) && (b > 0)){
        new dist;
        dist = Distance1Dint(a, b);
        if(dist > 2147483647)return Distance1Dint(a - 2147483647, b - 2147483647);
        return dist;
    }
    return Distance1Dint(a, b);
}
Evitar Flood de muertes: por Cessil
pawn Код:
new DeathSpam[MAX_PLAYERS char], LastDeath[MAX_PLAYERS];
public OnPlayerDeath(playerid, killerid, reason)
{
    new time = gettime();
    switch(time - LastDeath[playerid])
    {
        case 0 .. 3:
        {
            DeathSpam{playerid}++;
            if(DeathSpam{playerid} >= 3)
                Kick(playerid);
        }
        default:
            DeathSpam{playerid} = 0;
    }
    LastDeath[playerid] = gettime();
    return 1;
}
Todos son bienvenidos a subir los metodos que utilizen para estos u otros ataques en este tema.


Respuesta: Funciones y metodos utiles para evitar ataques (desde script) - santi.arg - 25.07.2012

Muy ъtil, lo voy a tener en cuenta.

A quй llama Spawn masivo de vehнculos? A transportarse de vehнculo en vehнculo o hacer aparecer un vehнculo en tu posiciуn sin entrar?.

El flood de muertes que provocarнa?

Y el tema de los bots, no es mбs efectivo el segundo mйtodo?

Gracias por el aporte


Respuesta: Funciones y metodos utiles para evitar ataques (desde script) - TheChaoz - 25.07.2012

Quote:
Originally Posted by santi.arg
Посмотреть сообщение
Muy ъtil, lo voy a tener en cuenta.

A quй llama Spawn masivo de vehнculos? A transportarse de vehнculo en vehнculo o hacer aparecer un vehнculo en tu posiciуn sin entrar?.

El flood de muertes que provocarнa?

Y el tema de los bots, no es mбs efectivo el segundo mйtodo?

Gracias por el aporte
Aca te dejo un video para que veas a lo que se refiere el spawn masivo de autos: link.

El flood de muertes lo que genera es que no veas en la tabla de muertes (SendDeathMessage) a nadie, excepto al que esta realizando el flood, similar a un flood en el chat, pero sobre la tabla de muertes.

Y sobre los bots, son medotos diferentes, muchos conectan bots sin desconectar los viejos, forma muy basica de DOS (imposible tirar un sv con este metodo, pero suficientemente molesto para ser evitado). El segundo es para un DOS/DDOS de bots.


Respuesta: Funciones y metodos utiles para evitar ataques (desde script) - santi.arg - 25.07.2012

Probй el spawn de vehнculos con el ****** pero no, no funciona. Sinceramente estuve pensando de cуmo podrнa bloquear eso pero, por ahora, no se me ocurriу.


Re : Funciones y metodos utiles para evitar ataques (desde script) - ipsBruno - 25.07.2012

The Chaoz (unbanned ?) Otro dato interesante es que algunos tipos de bots SIEMPRE tiene un ping de 65535

Bueno Trabajo !! Gracias


Respuesta: Funciones y metodos utiles para evitar ataques (desde script) - EduGTA - 25.07.2012

Quote:
Originally Posted by the_chaoz
Посмотреть сообщение
Aca te dejo un video para que veas a lo que se refiere el spawn masivo de autos: link.
OFF-TOPIC: estaba escuchando la misma mъsica!

IN-TOPIC: Yo creн que con "spawn masivo de autos" te referнas a poner todos los carros en un solo lugar, muy tipico del S0B3IT...



Re : Respuesta: Funciones y metodos utiles para evitar ataques (desde script) - ipsBruno - 25.07.2012

Quote:
Originally Posted by Edugta.
Посмотреть сообщение
OFF-TOPIC: estaba escuchando la misma mъsica!

IN-TOPIC: Yo creн que con "spawn masivo de autos" te referнas a poner todos los carros en un solo lugar, muy tipico del S0B3IT...
No, "CAR MASS SPAWN" йs Cleo ..

Vea esto:
https://sampforum.blast.hk/showthread.php?tid=354537


Respuesta: Funciones y metodos utiles para evitar ataques (desde script) - CeKiT - 30.07.2012

Recomiendo que hagan un timer que cada 5 segundos ponga el servidor normal osea hostname, gravity, weburl, mapname, maxnpc 0 (si no tienen ninguno) y mejor que todo rcon 0 usen el sistema de admin para que no descubran su rcon con 0 la desactivamos.

En cuando a el timer que normalize si se fijan en mis post hice un sistema "CSeguridad" con un pequeсo anticheat y un normalizador.

Saludos


Respuesta: Funciones y metodos utiles para evitar ataques (desde script) - Bu11Sh0t - 07.08.2012

Pues bueno, este sistema es para evitar el flood de carros y que los hackers se teletransporten a los carros:

pawn Код:
new Carro[MAX_PLAYERS];
public OnPlayerEnterVehicle(playerid, vehicleid)
{
    Carro[playerid] = 1;
    return 1;
}

public OnPlayerExitVehicle(playerid, vehicleid)
{
    Carro[playerid] = 0;
    return 1;
}

public OnPlayerStateChange(playerid, newstate, oldstate)
{
    if(newstate == PLAYER_STATE_DRIVER || newstate == PLAYER_STATE_PASSENGER)
        if(Carro[playerid] == 0)
            Kick(playerid)
    return 1;
}
Y cada vez que se use el PutPlayerInVehicle actualizar la variable:
Код:
Carro[playerid] = 1;



Respuesta: Re : Funciones y metodos utiles para evitar ataques (desde script) - Mr_Kina - 06.09.2012

Quote:
Originally Posted by ipsBruno
Посмотреть сообщение
The Chaoz (unbanned ?) Otro dato interesante es que algunos tipos de bots SIEMPRE tiene un ping de 65535

Bueno Trabajo !! Gracias
No sabia eso... Buena info.