Üdv mindenkinek.
Sajnos én is áldozatául estem az ujonnan feltünt hacknek, amivel sok sok botot küldenek fel a szerverünkre. Ennek hatására rákerestem sampforumona dologra találtam is egy scriptet amit a fiuk áthoztak hiv fórumról.
http://sampforum.hu/index.php?topic=24256.0Be raktam, de ezzel a scripttel az a gond, hogy sajnos lehet olyat is csinálni a hackkel, hogy felcsatlakozik és egybõl le is csatlakozik, így elég nehezen veszi észre az a script, ha ilyen támadás van. Ennek kiküszöbölésének érdekében megírtam ezt a scriptet.
Mûködéséhez szükséges a Gvar plugin (
http://sampforum.hu/index.php?topic=9769.0). és dudb include (
http://forum.sa-mp.com/showthread.php?t=31)
A script mûködése elég egyszerû. Csatlakozáskor lekérdezzük a játékos IP címét, átalakítjuk udbhas függvénnyel az IP címet egyetlen számadattá. (nem erre szokták használni de itt most tökéletes) Egyel növeljük azt a GV ar változót, amelynek az azonosítója a számmá alakított IP cím. megnézzük, hogy a növelt érték meghaladja e a maximum csatlakoztatható emberek számát azonos IP rõl adott idõn belül. ha meghaladja banolja. Ezután indítunk egy timert ami az adott idõre van beállítja és egyel csökkentjük az adott idõ elteltével a változót. (valamiért nálam filterscriptként nem csinált semmit a script, de ha beleírtam a gamemodeba a scriptet tökéletesen mûködött)
Letöltés (pastebin):
http://pastebin.com/YMj6Mxhka script konkrétan:
#define FILTERSCRIPT
#include <a_samp>
#include <gvar>
#include <dudb>
#define MAX_CONNECTIONS_FROM_IP 2 //azért 2 mert ha esetleg véletlen testvérek csatlakoznak és pont ugyanakkor akkor õket ne banolja
#define TIME_BETWEEN_CONNECTIONS 500
#pragma unused ret_memcpy
//IP cím számként tárolva
public OnFilterScriptInit()
{
print(\"BOT VÉDELEM AKTIVÁLVA\");
return 1;
}
public OnFilterScriptExit()
{
print(\"BOT VÉDELEM DEAKTIVÁLVA\");
return 1;
}
public OnPlayerConnect(playerid)
{
new hashIP,IP[32];
GetPlayerIp(playerid,IP,sizeof(IP));
hashIP = udbhash(IP);
SetGVarInt(\"IPconnections\",GetGVarInt(\"IPconnections\",hashIP)+1,hashIP);
if(GetGVarInt(\"IPconnections\",hashIP) > MAX_CONNECTIONS_FROM_IP)
{
printf(\"BOT: connections from %s. IP has been banned.\",IP);
BanEx(playerid, \"BOT attack! version Devil\");
SetTimerEx(\"ConnectionBack\",TIME_BETWEEN_CONNECTIONS,0,\"d\",hashIP);
return 1;
}
else
{
SetTimerEx(\"ConnectionBack\",TIME_BETWEEN_CONNECTIONS,0,\"d\",hashIP);
}
return 0;
}
forward ConnectionBack(hashid);
public ConnectionBack(hashid)
{
SetGVarInt(\"IPconnections\",GetGVarInt(\"IPconnections\",hashid)-1,hashid);
if(!GetGVarInt(\"IPconnections\",hashid)) DeleteGVar(\"IPconnections\",hashid);
}
Ez a script és a fentebb említett script kombinálva szinte tökéletes védelmet nyújt a nemkívánatos BOT támadások ellen