Peršokti į turinį
  • ŽAIDIMAI
  • , ŽAIDIMAI
  • ŽAIDIMAI

Negalima prašyti ar platinti betkokių žaidimą (multiplayer) palengvinančių programų ir scriptų! Kitaip bus taikoma 1.21. taisyklė

Dovanoju Anti-ddos skriptą.


Andrys_Derbi

Ši tema yra neaktyvi. Paskutinis pranešimas šioje temoje buvo prieš 3002 dienas (-ų). Patariame sukurti naują temą, o ne rašyti naują pranešimą.

Už neaktyvių temų prikėlimą galite sulaukti įspėjimo ir pranešimo pašalinimo!

Recommended Posts

Sveiki visi,taigi atsiranda daugiau žmonių kurie tiesiog kenkia kitiems serveriams,taigi norėčiau pasidalinti Anti-ddos skriptu,failas yra su .pwn ir .amx.

Tikiuosi kitiems padės.

 

Link'as - http://www81.zippyshare.com/v/IFcbqylU/file.html

 

Gero naudojimo!

Redaguota , nario Andrys_Derbi
Nuoroda į komentarą
Dalintis per kitą puslapį

#include <a_samp>
#include <FileFunctions>
 
#define ATTACK_TYPE_PLAYERID 1
#define ATTACK_TYPE_IP 2
 
new File:ServerLogFile;
new addostimer;
 
forward _Kick ( playerid );
public _Kick ( playerid )
{
    return Kick ( playerid );
}
#define Kick(%0) SetTimerEx ( "_Kick", 100, 0, "d", %0 )
 
public OnFilterScriptInit()
{
ServerLogFile = fileOpen("server_log.txt", io_Read);
addostimer = SetTimer("AntiDDoS", 100, true);
AntiDeAMX();
return 1;
}
 
public OnFilterScriptExit()
{
KillTimer(addostimer);
return 1;
}
 
forward AntiDDoS();
public AntiDDoS()
{
if(!ServerLogFile)
{
print("Protectas: Klaida atidarant logą!");
KillTimer(addostimer);
}
else
{
new string[128];
new strarr[2][20];
fileSeek(ServerLogFile, -128, seek_End);
while(fileRead(ServerLogFile, string)){}
 
new pos = strfind(string, "Invalid client connecting from ", true, 10);
if(pos == 11)
{
OnDDosAttackAttempt(ATTACK_TYPE_IP, INVALID_PLAYER_ID, string[pos+31]);
}
 
pos = strfind(string, "Warning: /rcon command exploit from: ", true, 10);
if(pos == 11){
split(string[pos+37], strarr, ':');
OnDDosAttackAttempt(ATTACK_TYPE_PLAYERID, strval(strarr[0]), strarr[1]);
}
 
pos = strfind(string, "Warning: PlayerDialogResponse PlayerId: ", true, 10);
if(pos == 11){
// Įūāąžņ ńėó÷ąč ėīęķīćī ńšąįąņūāąķč˙, šåąźöč˙ ķå ķą ļåšāīå ńšąįąņūāąķčå
new idx = 0;
new plid = strval(strtok(string[pos+39], idx));
SetPVarInt(plid, "dialogDDosAtt", GetPVarInt(plid, "dialogDDosAtt")+1);
print("");
if(GetPVarInt(plid, "dialogDDosAtt") > 2)OnDDosAttackAttempt(ATTACK_TYPE_PLAYERID, plid, " ");
}
 
pos = strfind(string, "Warning: PlayerDialogResponse crash exploit from PlayerId: ", true, 10);
if(pos == 11){
new idx = 0;
OnDDosAttackAttempt(ATTACK_TYPE_PLAYERID, strval(strtok(string[pos+59], idx)), " ");
}
 
pos = strfind(string, "Packet was modified, sent by id: ", true, 10);
if(pos == 11){
   split(string[pos+33], strarr, ',');
OnDDosAttackAttempt(ATTACK_TYPE_PLAYERID, strval(strarr[0]), " ");
}
 
pos = strfind(string, "Remote Port Refused for Player: ", true, 10);
if(pos == 11){
new idx = 0;
OnDDosAttackAttempt(ATTACK_TYPE_PLAYERID, strval(strtok(string[pos+32], idx)), " ");
}
 
if(strfind(string, " due to a 'server full' attack") != -1)
{
pos = strfind(string, "Blocking ", true, 10);
if(pos == 12)
{
new idx = 0;
OnDDosAttackAttempt(ATTACK_TYPE_IP, INVALID_PLAYER_ID, strtok(string[pos+9], idx));
}
}
}
}
 
forward OnDDosAttackAttempt(type, playerid, ip[]);
public OnDDosAttackAttempt(type, playerid, ip[])
{
    new string[128];
if(type == ATTACK_TYPE_PLAYERID)
{//block a playerid
BanEx(playerid, "AntiHack by Rimas");
printf("Protectas: Užblokuota ataka nuo žaidėjo %d", playerid);
 
}else if(type == ATTACK_TYPE_IP)
{//block an ip address
        format(string, sizeof(string), "banip %s", ip);
SendRconCommand(string);
printf("Protectas: Užblokuota ataka nuo: %s", ip);
}
// printf ėó÷ųå ķå óäąė˙ņü, ÷ņīįū ķå āūēāąņü ļīāņīšķīćī ńšąįąņūāąķč˙
}
 
stock strtok(const string[], &index)
{
new length = strlen(string);
while ((index < length) && (string[index] <= ' '))
{
index++;
}
 
new offset = index;
new result[20];
while ((index < length) && (string[index] > ' ') && ((index - offset) < (sizeof(result) - 1)))
{
result[index - offset] = string[index];
index++;
}
result[index - offset] = EOS;
return result;
}
 
stock split(const strsrc[], strdest[][], delimiter)
{
new i, li;
new aNum;
new len;
while(i <= strlen(strsrc)){
if(strsrc[i]==delimiter || i==strlen(strsrc)){
len = strmid(strdest[aNum], strsrc, li, i, 128);
strdest[aNum][len] = 0;
li = i+1;
aNum++;
}
i++;
}
return 1;
}
AntiDeAMX( )
{
new a [ ] [ ] =
{
"Unarmed ( Fist ) " ,
" BrassK "
} ;
#pragma unused a
}

dėk taip ir labiau žmonės supras ir geriau atrodys . Bet tai yra nieko gero , paprastastas skriptas , geriau jau galva pasukus ir pakurus savaip .

Nuoroda į komentarą
Dalintis per kitą puslapį

  • Parašė po 5 savaičių...

Ši tema yra neaktyvi. Paskutinis pranešimas šioje temoje buvo prieš 3002 dienas (-ų). Patariame sukurti naują temą, o ne rašyti naują pranešimą.

Už neaktyvių temų prikėlimą galite sulaukti įspėjimo ir pranešimo pašalinimo!

Prisijungti prie diskusijos

Palikti atsakymą galite iš karto, o užsiregistruoti vėliau. Jeigu jau turite paskyrą mūsų forume, Prisijunkite.

Svečias
Atsakyti šioje temoje...

×   Įklijuotas tekstas turi teksto formatavimą.   Pašalinti teksto formatavimą

  Galimi tik 75 veidukai.

×   Nuoroda buvo automatiškai įterpta.   Įterpti nuorodą paprastai

×   Jūsų ankstesnis pranešimas buvo atkurtas.   Išvalyti redaktorių

×   Jūs negalite įkelti nuotraukas tiesiogiai.Įkelkite arba įdėkite nuotraukas iš URL.

  • Šiame puslapyje naršo:   0 nariai

    • Nėra registruotų narių peržiūrinčių šį forumą.

Skelbimai


×
×
  • Sukurti naują...