[FilterScript] Anti ataques invalid connection
#1

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%

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;
}
Que les sea de utilidad.
Reply
#2

Gracias che! :P
Reply
#3

oye una pregunta, ese plugin utiliza el plugin sscanf2 necesariamente? es que ami no me gusta el sscanf D:
Reply
#4

No, solo con el fixes2 deberia bastar.
Reply
#5

pawn Код:
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')
їstrfind?
No, gracias.
Reply
#6

Quote:
Originally Posted by [DOG]irinel1996
Посмотреть сообщение
pawn Код:
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')
їstrfind?
No, gracias.
jajajja
xDD
Reply
#7

Quote:
Originally Posted by [DOG]irinel1996
Посмотреть сообщение
pawn Код:
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')
їstrfind?
No, gracias.
lo olvide, ja pero de igual forma no cambia mucho
Reply
#8

pawn Код:
if(string[n] == '.' || (string[n] >= '0' && string[n] <= '9'))
Ahн.

La forma que lo hizo Shiny es mas rбpido que usar strfind.
Reply
#9

Muy lindo pero no sirve para su proposito.
Reply
#10

... bueno.
Reply


Forum Jump:


Users browsing this thread: 4 Guest(s)