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.