Szerző Téma: Anti RakSAMP script  (Megtekintve 8918 alkalommal)

Nem elérhető tonyo

  • 1335
  • Moderális Generátor
    • Profil megtekintése
Anti RakSAMP script
« Dátum: 2012. augusztus 07. - 15:22:04 »
+4 Show voters
Üdv.
Hétvégén rám írt Ystee, hogy tudok-e valami jó kis védelmet RakSAMP ellen, mert amiket eddig talált, egyik sem mûködött. Nos, engem érdekelt a téma, ezért hát beszereztem a RakSAMP-ot(forrással...), és elkezdtem tanulmányozni(a forrást). A program nagy részét már értem, mi mit is csinál, így hát nekiálltam elkészíteni egy \"anti-bot\" rendszert hozzá. Elõször gpci-vel próbálkoztam, de hamar kiderült, hogy minden indításnál egy random sztringet generál, amit átad a samp-nak, mint kliens azonosító, ebbõl az irányból tehát nem jártam sikerrel. Ezután elkezdtem nézni, mi alapján lehetne még detektálni, hogy most botról van-e szó. Sajnos arra jutottam, hogy csatlakozáskor még semmibõl, ugyan is ugyanúgy Raknet alapú a program mint a SA:MP, és nagyon jól van összerakva(baromi jól tudja szimulálni, egy rendes kliens csatlakozását), de...
Néztem Network Stat-ot, pozíciókat, ezt-azt.. majd miután ismét a forrásban nézelõdtem, találtam egy \"hibapontot\". Mikor ezt leellenõriztem, a sejtésem helyesnek bizonyult, kedves botunk spawnolásakor nem hívódik meg az OnPlayerSpawn callback. Így már nem is volt nehéz, egy \"anti-RakSAMP\" scriptet írni. Amit még menet közben találtam hozzá, azt még beleírtam, így többféle megoldás is van benne, ezek idõ közben születtek, de ameddig a spawnos dologra nem jöttem rá, addig sajnos ezek nem mûködtek.
A végeredmény ez a script lett
 
// -------------------------------------------------------------------------- //
// File:   antiraksamp.pwn
// Desc:   A sscript célja a RakSAMP botok kirugása
// Author:   Anthony
// Lic:      GNU Public License (http://www.gnu.org)
// -------------------------------------------------------------------------- //
//SA:MP függvénykönyvtár beágyazása
#include <a_samp>
//Forward a timerünknek
forward BotCheck(playerid);
//Változó a timer id-nek
new timer;
// -------------------------------------------------------------------------- //
public OnFilterScriptInit()
{
//Timer elindítása, azonosítójának eltárolása a \'timer\' változóban
    timer = SetTimer(\"BotCheck\", 1000, true);
//Tájékozatjuk a szerver tulajt, hogy a script betöltõdött, elindult
printf(\"-------------------------------------\");
printf(\"| Anti-RakSAMP by Anthony - Loaded! |\");
    printf(\"-------------------------------------\");
return 1;
}
// -------------------------------------------------------------------------- //
public OnFilterScriptExit()
{
//Timer megsemmisítése
KillTimer(timer);
//Tájékoztatjuk a szerver tulajt, hogy a script leállt
printf(\"---------------------------------------\");
printf(\"| Anti-RakSAMP by Anthony - Unloaded! |\");
    printf(\"---------------------------------------\");
return 1;
}
// -------------------------------------------------------------------------- //
public OnPlayerConnect(playerid)
{
//Csatlakozáskor 0-ra állítjuk a PVar-t
SetPVarInt(playerid, \"Spawned\", 0);
return 1;
}
// -------------------------------------------------------------------------- //
public OnPlayerDisconnect(playerid)
{
//Lecsatlakozáskor töröljük a PVar-t
DeletePVar(playerid, \"Spawned\");
return 1;
}
// -------------------------------------------------------------------------- //
public OnPlayerSpawn(playerid)
{
//Beállítjuk a PVar-t
SetPVarInt(playerid, \"Spawned\", 1);
return 1;
}
// -------------------------------------------------------------------------- //
//Timerünk fõ része
public BotCheck()
{
new pname[MAX_PLAYER_NAME];
//For ciklussal végigmegyünk minden lehetséges játékos ID-n
for(new i=0; i < MAX_PLAYERS; i++)
{
    //Ellenõrizzük, hogy van-e ilyen játékos
if(IsPlayerConnected(i))
{
    //Lekérjük a játékos nevét
    GetPlayerName(i, pname, MAX_PLAYER_NAME);
    //A STATE csak akkor nem PLAYER_STATE_NONE, ha már lespawnolt a játékos,
    //tehát ellenõrizzük, hogy tényleg spawnolt-e
   if(GetPlayerState(i) != PLAYER_STATE_NONE && GetPVarInt(i, \"Spawned\") == 0)
   {
       //Ha ide jutottunk, akkor már 100% hogy bottal van dolgunk, mert
      //nem hívódott meg rá az OnPlayerSpawn callback, ezért hát kickeljük
       Kick(i);
       //Tájékoztatjuk a tulajt, hogy a játékos egy bot volt
       printf(\"%s egy BOT... volt.(State)\", pname);
       //A ciklust a következõ játékos id-re \"ugrasztjuk\"
       continue;
   }
    //A STATE csak akkor nem PLAYER_STATE_NONE, ha már lespawnolt a játékos,
    //ellenõrizzük a CameraMode-t
   if(GetPlayerState(i) != PLAYER_STATE_NONE && GetPlayerCameraMode(i) > 100)
   {
       //Ha ide jutottunk, 99,9% a valószínûsége, hogy bottal van dolgunk
       //ezért hát kickeljük
       Kick(i);
       //Tájékoztatjuk a tulajt, hogy a játékos egy bot volt
       printf(\"%s egy BOT... volt.(CameraMode)\", pname);
       //A ciklust a következõ játékos id-re \"ugrasztjuk\"
       continue;
   }
   //Létrehozunk 3 float változót
   new Float:x, Float:y, Float:z;
   //Lekérjük a kamera pozíciót
   GetPlayerCameraPos(i, x, y, z);
   //A STATE csak akkor nem PLAYER_STATE_NONE, ha már lespawnolt a játékos,
    //ellenõrizzük a kamera pozíciót
   if(GetPlayerState(i) != PLAYER_STATE_NONE && x == 0.0 && y == 0.0 && z == 0.0)
   {
       //Ha ide jutottunk, 100% a valószínûsége, hogy bottal van dolgunk,
       //mert egy játékosnak sosem lesz 0,0,0 a kamera pozícója (kivéve
      // ha mi magunk helyeztük oda), ezért hát kickeljük
       Kick(i);
       //Tájékoztatjuk a tulajt, hogy a játékos egy bot volt
       printf(\"%s egy BOT... volt.(CameraPos)\", pname);
       //A ciklust a következõ játékos id-re \"ugrasztjuk\"
       continue;
   }
   //Lekérjük a kamera vektorokat
   GetPlayerCameraFrontVector(i, x, y, z);
   if(GetPlayerState(i) != PLAYER_STATE_NONE && (x > 1000.0 || y > 1000.0 || z > 1000.0))
   {
       //Ha ide jutottunk, 100% a valószínûsége, hogy bottal van dolgunk,
       //mert egy játékosnak sosem kapunk 1000-nél nagyobb FrontVector
      //értéket, ezért hát kickeljük
       Kick(i);
       //Tájékoztatjuk a tulajt, hogy a játékos egy bot volt
       printf(\"%s egy BOT... volt.(CameraFrontVector)\", pname);
       //A ciklust a következõ játékos id-re \"ugrasztjuk\"
       continue;
   }
}
}
}
// -------------------------------------------------------------------------- //

 
Bizonyíték a mûködésre:
Spoiler for Log részlet:
[14:36:57]   Loading filterscript \'antiraksamp.amx\'...
[14:36:57] -------------------------------------
[14:36:57] | Anti-RakSAMP by Anthony - Loaded! |
[14:36:57] -------------------------------------
[14:36:57]   Loaded 2 filterscripts.
[14:36:57]
----------------------------------
[14:36:57]   Running LVDM ~MoneyGrub
[14:36:57]          Coded By
[14:36:57]             Jax
[14:36:57] ----------------------------------
[14:36:57] Number of vehicle models: 48
[14:37:04] Incoming connection: 127.0.0.1:64259
[14:37:04] [join] Bot1 has joined the server (0:127.0.0.1)
[14:37:07] [part] Bot1 has left the server (0:2)
[14:37:07] Bot1 egy BOT... volt.(State)
[14:37:09] Incoming connection: 127.0.0.1:64260
[14:37:09] [join] Bot1 has joined the server (0:127.0.0.1)
[14:37:10] [part] Bot1 has left the server (0:2)
[14:37:10] Bot1 egy BOT... volt.(State)
[14:37:25] Incoming connection: 127.0.0.1:64261
[14:37:25] [join] Bot1 has joined the server (0:127.0.0.1)
[14:37:26] [part] Bot1 has left the server (0:2)
[14:37:26] Bot1 egy BOT... volt.(State)
[14:37:40] Incoming connection: 127.0.0.1:64262
[14:37:40] [join] Bot1 has joined the server (0:127.0.0.1)
[14:37:40] [part] Bot1 has left the server (0:2)
[14:37:40] Bot1 egy BOT... volt.(State)
[14:37:41] Incoming connection: 127.0.0.1:64263
[14:37:42] [join] Mason_Lovell has joined the server (0:127.0.0.1)
[14:37:55] Incoming connection: 127.0.0.1:62477
[14:37:55] [join] Bot1 has joined the server (1:127.0.0.1)
[14:37:56] [part] Bot1 has left the server (1:2)
[14:37:56] Bot1 egy BOT... volt.(State)
[14:38:10] Incoming connection: 127.0.0.1:62478
[14:38:10] [join] Bot1 has joined the server (1:127.0.0.1)
[14:38:11] [part] Bot1 has left the server (1:2)
[14:38:11] Bot1 egy BOT... volt.(State)
[14:38:25] Incoming connection: 127.0.0.1:62479
[14:38:25] [join] Bot1 has joined the server (1:127.0.0.1)
[14:38:26] [part] Bot1 has left the server (1:2)
[14:38:26] Bot1 egy BOT... volt.(State)
[14:38:40] Incoming connection: 127.0.0.1:62480
[14:38:40] [join] Bot1 has joined the server (1:127.0.0.1)
[14:38:41] [part] Bot1 has left the server (1:2)
[14:38:41] Bot1 egy BOT... volt.(State)
[14:38:55] Incoming connection: 127.0.0.1:62481
[14:38:55] [join] Bot1 has joined the server (1:127.0.0.1)
[14:38:56] [part] Bot1 has left the server (1:2)
[14:38:56] Bot1 egy BOT... volt.(State)
[14:39:10] Incoming connection: 127.0.0.1:53072
[14:39:11] [join] Bot1 has joined the server (1:127.0.0.1)
[14:39:11] [part] Bot1 has left the server (1:2)
[14:39:11] Bot1 egy BOT... volt.(State)
[14:39:25] Incoming connection: 127.0.0.1:53073
[14:39:26] [join] Bot1 has joined the server (1:127.0.0.1)
[14:39:26] [part] Bot1 has left the server (1:2)
[14:39:26] Bot1 egy BOT... volt.(State)
[14:39:41] Incoming connection: 127.0.0.1:53074
[14:39:41] [join] Bot1 has joined the server (1:127.0.0.1)
[14:39:42] [part] Bot1 has left the server (1:2)
[14:39:42] Bot1 egy BOT... volt.(State)
[14:39:56] Incoming connection: 127.0.0.1:51681
[14:39:56] [join] Bot1 has joined the server (1:127.0.0.1)
[14:39:56] [part] Bot1 has left the server (1:2)
[14:39:56] Bot1 egy BOT... volt.(State)
[14:40:09] [part] Mason_Lovell has left the server (0:1)
[14:40:11] Incoming connection: 127.0.0.1:62120
Mason_Lovell az én vagyok, vígan szaladgáltam, miközben a botokat kickelgette a rendszer.
« Utoljára szerkesztve: 2012. október 18. - 06:26:23 írta ChuckNorris »

Nem elérhető Rupert

  • 2301
    • Profil megtekintése
Anti RakSAMP script
« Válasz #1 Dátum: 2012. augusztus 07. - 15:26:36 »
0 Show voters
Ez egy nagyon szép script. Minden gratulációm a tiéd.

Anti RakSAMP script
« Válasz #2 Dátum: 2012. augusztus 07. - 15:32:53 »
0 Show voters
Nagyon jó, hasznos. Köszi a megírást és megosztást!

Daniel Casas

Nem elérhető DrAkE

  • 2078
    • Profil megtekintése
Anti RakSAMP script
« Válasz #3 Dátum: 2012. augusztus 07. - 16:22:43 »
+1 Show voters
Szerintem ez egyszerûbb:
 

#define TILTOTT_SERIAL   \"DA0E5085558CCACC88ECCA40C4CEC49A9408EEE8\"
native gpci(playerid, const serial[ ], maxlen);
 
public OnPlayerConnect(playerid)
{
new
gpciserial[128];
gpci(playerid, gpciserial, sizeof(gpciserial));
if(!strcmp(gpciserial, TILTOTT_SERIAL))
{
SetSpawnInfo(playerid, 0, 1, 0.0, 0.0, 0.0, 0, 0, 0, 0, 0, 0, 0);
SpawnPlayer(playerid);
GameTextForPlayer(playerid, \"Jajj de kedves vagy, amiert botokat kuldesz fel! :3\", 1000, 3);
BanEx(playerid, \"BOT HASZNÁLAT\");
}
return true;
}

 
Magyarázat: mivel a bot, nem a hagyományos GTASA.exe-t használja, ezért a serialja más (tehát ha crackelt, ha eredeti, más a serialja).
« Utoljára szerkesztve: 2012. augusztus 07. - 16:25:21 írta DrAkE »

Nem elérhető Y2K

  • 488
    • Profil megtekintése
Anti RakSAMP script
« Válasz #4 Dátum: 2012. augusztus 07. - 16:25:20 »
0 Show voters
Egyébként Anthony verziója véleményem szerint nagyobb szervereken meglehetõsen nagy laggot okozhat a rengeteg pozíció lekéréssel, végigfutva az összes playeren minden másodpercben...

Nem elérhető tonyo

  • 1335
  • Moderális Generátor
    • Profil megtekintése
Anti RakSAMP script
« Válasz #5 Dátum: 2012. augusztus 07. - 16:28:59 »
0 Show voters
Idézetet írta: DrAkE date=1344349363\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"25691\" data-ipsquote-contentclass=\"forums_Topic
Szerintem ez egyszerûbb:
 

#define TILTOTT_SERIAL   \"DA0E5085558CCACC88ECCA40C4CEC49A9408EEE8\"
native gpci(playerid, const serial[ ], maxlen);
 
public OnPlayerConnect(playerid)
{
new
gpciserial[128];
gpci(playerid, gpciserial, sizeof(gpciserial));
if(!strcmp(gpciserial, TILTOTT_SERIAL))
{
SetSpawnInfo(playerid, 0, 1, 0.0, 0.0, 0.0, 0, 0, 0, 0, 0, 0, 0);
SpawnPlayer(playerid);
GameTextForPlayer(playerid, \"Jajj de kedves vagy, amiert botokat kuldesz fel! :3\", 1000, 3);
BanEx(playerid, \"BOT HASZNÁLAT\");
}
return true;
}

 
Magyarázat: mivel a bot, nem a hagyományos GTASA.exe-t használja, ezért a serialja más (tehát ha crackelt, ha eredeti, más a serialja).
 
Nem mûködik. 0.3e-s RakSAMP-ba folyton változik minden egyes csatlakozáskor a szervernek küldött gpci.



Egyébként Anthony verziója véleményem szerint nagyobb szervereken meglehetõsen nagy laggot okozhat a rengeteg pozíció lekéréssel, végigfutva az összes playeren minden másodpercben...
 
[/quote]
Lényegében azok csak példák. Külön-külön is mûködnek(kivéve a camera pos, ahhoz el kell telnie kb. 3 mp-nek, mert elsõre nem 0.00 az Y értéke, hanem valami lehetetlen karakter).
Am az én szerveremen pl. OnPlayerUpdate-nél van egy rakat pozíció lekérdezés, távolság lekérdezés, megtett táv lekérdezése, szal ennél sokkal durvább és semmi lagg :)
« Utoljára szerkesztve: 2012. augusztus 07. - 16:31:16 írta Anthony »

Nem elérhető DrAkE

  • 2078
    • Profil megtekintése
Anti RakSAMP script
« Válasz #6 Dátum: 2012. augusztus 07. - 16:30:40 »
0 Show voters
Érdekes, mivel én meg azzal teszteltem.

Anti RakSAMP script
« Válasz #7 Dátum: 2012. augusztus 07. - 16:33:31 »
+8 Show voters
Anti Zyzu :thumbsup: köszi Anthony

Nem elérhető tonyo

  • 1335
  • Moderális Generátor
    • Profil megtekintése
Anti RakSAMP script
« Válasz #8 Dátum: 2012. augusztus 07. - 16:36:27 »
0 Show voters
Drake, most hirtelen lefuttattam párszor:
 
[16:34:36] 
----------------------------------
[16:34:36]   Running LVDM ~MoneyGrub
[16:34:36]          Coded By
[16:34:36]             Jax
[16:34:36] ----------------------------------
[16:34:36] Number of vehicle models: 48
[16:34:54] Incoming connection: 127.0.0.1:62547
[16:34:54] [join] Bot1 has joined the server (0:127.0.0.1)
[16:34:54] GPCI: 88085CD058C59C9CDD8E9DE50C0CCF9EE49A8C4D
[16:34:57] [part] Bot1 has left the server (0:1)
[16:35:00] Incoming connection: 127.0.0.1:61194
[16:35:00] [join] Bot1 has joined the server (0:127.0.0.1)
[16:35:00] GPCI: FF9FE5CE0C5CC940D5FA0CE9A98FCE4489C95DD8
[16:35:03] [part] Bot1 has left the server (0:1)
[16:35:06] Incoming connection: 127.0.0.1:61195
[16:35:06] [join] Bot1 has joined the server (0:127.0.0.1)
[16:35:06] GPCI: FCCA55EDD995994C8D4454D0EFFE8CC804DFCDD9
[16:35:08] [part] Bot1 has left the server (0:1)
[16:35:10] Incoming connection: 127.0.0.1:61196
[16:35:10] [join] Bot1 has joined the server (0:127.0.0.1)
[16:35:10] GPCI: AEE9CC04D04848E4845E9DCEAC4E5EF94D4C8099
[16:35:13] [part] Bot1 has left the server (0:1)
[16:35:21] Incoming connection: 127.0.0.1:61197
[16:35:21] [join] Bot1 has joined the server (0:127.0.0.1)
[16:35:21] GPCI: AD9E4E9E5584E4C4E99C8DD9988E4C488CDAAC4
[16:35:25] [part] Bot1 has left the server (0:1)
[16:35:26] Incoming connection: 127.0.0.1:61198
[16:35:26] [join] Bot1 has joined the server (0:127.0.0.1)
[16:35:26] GPCI: C4CCE9D9094F5A4C8CA45949DF994EAFEFCCEC94
[16:35:30] [part] Bot1 has left the server (0:1)
[16:35:32] Incoming connection: 127.0.0.1:61199
[16:35:32] [join] Bot1 has joined the server (0:127.0.0.1)
[16:35:32] GPCI: ECA9DE994D485A0FD4FDF899C8EC48AC9AC44D5D
[16:35:35] [part] Bot1 has left the server (0:1)
[16:35:37] Incoming connection: 127.0.0.1:61200
[16:35:37] [join] Bot1 has joined the server (0:127.0.0.1)
[16:35:37] GPCI: A899EE5FECEE8A5F95C40CCC9458F0CEE50449CD
[16:35:40] [part] Bot1 has left the server (0:1)
[16:35:42] Incoming connection: 127.0.0.1:61201
[16:35:42] [join] Bot1 has joined the server (0:127.0.0.1)
[16:35:42] GPCI: D9A9C9CA04A94AEFA85E9FC08D5DA90EFEDFDE8D
[16:35:45] [part] Bot1 has left the server (0:1)

Nem elérhető DrAkE

  • 2078
    • Profil megtekintése
Anti RakSAMP script
« Válasz #9 Dátum: 2012. augusztus 07. - 16:39:58 »
0 Show voters
Nekem mindig ezt írja ki:
\"DA0E5085558CCACC88ECCA40C4CEC49A9408EEE8\"

Nem elérhető tonyo

  • 1335
  • Moderális Generátor
    • Profil megtekintése
Anti RakSAMP script
« Válasz #10 Dátum: 2012. augusztus 07. - 16:41:02 »
0 Show voters
2012.08.04-es verzió? (RakSamp03eR2)

Nem elérhető DrAkE

  • 2078
    • Profil megtekintése
Anti RakSAMP script
« Válasz #11 Dátum: 2012. augusztus 07. - 16:42:12 »
0 Show voters
19 órával ezelõtt rakták fel a 0.3e és a 0.3e R2-t és azzal próbálom O.o

Nem elérhető tonyo

  • 1335
  • Moderális Generátor
    • Profil megtekintése
Anti RakSAMP script
« Válasz #12 Dátum: 2012. augusztus 07. - 16:43:18 »
0 Show voters
Lol. Dobnál egy linket PM-be?

Kovacs_Bela

  • Vendég
Anti RakSAMP script
« Válasz #13 Dátum: 2012. augusztus 08. - 14:24:24 »
0 Show voters
and to me too? pmbe
anthony scriptje tényleg laggot okozhat :D
drake scriptje viszont tetszik  :smokin: :smokin:

Nem elérhető tonyo

  • 1335
  • Moderális Generátor
    • Profil megtekintése
Anti RakSAMP script
« Válasz #14 Dátum: 2012. augusztus 08. - 15:10:05 »
0 Show voters
Azért elég ciki lenne, ha 1 timertõl laggolna a szeró  :D
Fõleg összenézve, hogy egy-egy RP szerveren hány timer fut, és azokban hány pozíció lekérdezés, meg miegymás van... :)

 

SimplePortal 2.3.7 © 2008-2024, SimplePortal