05.06.2013, 01:02
En respuesta a este tema, me vi comprometido a hacer este FS, no se si sea un ataque pero probablemente si puede serlo masivamente, con este FS te olvidas de ese problema ya que banea la ip para que no pueda tener mas relacion cliente-servidor.
- Es necesario el uso del plugin fixes2.
Este FS lo que hace es banear el rango del atacante asi no puede tener mas interaccion, supongo, si hay algun bug error o duda con gusto lo contestare.
fixes2 - ****** 100%
FS anti ataques - ShinyDavid 100%
Que les sea de utilidad.
- Es necesario el uso del plugin fixes2.
Este FS lo que hace es banear el rango del atacante asi no puede tener mas interaccion, supongo, si hay algun bug error o duda con gusto lo contestare.
fixes2 - ****** 100%
FS anti ataques - ShinyDavid 100%
pawn Код:
#include <a_samp>
#include <fixes2>
#define RANGE_BAN 0
#define NORMAL_BAN 1
#define BAN_TYPE RANGE_BAN
public OnServerMessage(const msg[])
{
new mens[128];
format(mens,128,msg);
if(strfind(mens,"Invalid client connecting from", true) != -1)
BanearIpMsg(mens);
}
stock BanearIpMsg(string[])
{
new len=strlen(string);
new ip_[16], sd=0;
new count=0;
for(new n=0;n<len;n++)
if(string[n]=='.'||string[n]=='0'||string[n]=='1'||string[n]=='2'||string[n]=='3'||
string[n]=='4'||string[n]=='5'||string[n]=='6'||string[n]=='7'||string[n]=='8'||string[n]=='9')
count++;
if(16 > count > 6)
{
for(new n=0;n<len;n++)
{
if(string[n]=='.'||string[n]=='0'||string[n]=='1'||string[n]=='2'||string[n]=='3'||
string[n]=='4'||string[n]=='5'||string[n]=='6'||string[n]=='7'||string[n]=='8'||string[n]=='9')
{
ip_[sd] = string[n];
sd++;
}
if(string[n]==':')
{
if(sd < 5)
sd=0;
if(sd > 7)
break;
}
}
#if BAN_TYPE == RANGE_BAN
printf("Se baneara el rango de esta ip: %s",ip_);
RangeBanIp(ip_);
#endif
#if BAN_TYPE == NORMAL_BAN
printf("Se baneara la ip: %s",ip_);
new str[24];
format(str, sizeof(str),"banip %s",ip_);
SendRconCommand(str);
#endif
}
}
stock RangeBanIp(ip[])
{
new pos, oldpos,tmp[30], ip2[16];
pos = strfind(ip, ".", true);
pos++;
for(new i = 0; i < pos; i++)
ip2[i] = ip[pos-pos+i];
pos--;
ip[pos] = ' ';
oldpos = pos;
oldpos++;
pos = strfind(ip, ".", true);
pos++;
for(new i = oldpos; i < pos; i++)
ip2[i] = ip[pos-pos+i];
format(ip2, sizeof(ip2), "%s*.*", ip2);
format(tmp, sizeof(tmp), "banip %s", ip2);
SendRconCommand(tmp);
return 1;
}