Jump to content

RCON na IP


Guest Mort

Recommended Posts

Ahoj ...

 

velmi se mi líbí jedna funkce.. když se někdo přihlásí do RCONu ať již hackem nebo uhádne heslo což je dost nepravděpodobné pokud nemáte nějaké extra jednoduché heslo jako např. "1234", tak si můžete udělat krásnou AntiRconOchranu pouze pro vaši IP :)

 

Odzkoušeno a funguje to na 100 procent :)

 

Upozornění: Pokud se Vám někdo hackne přes konzoli tak to nefunguje, sice nevím jak to dělají ale moc lidí neví jak to udělat

 

Dost keců, jdeme na to :)

 

Děláme si stock pro vaši IP adresu

 

Takže, nejdříve si uděláme nějaký stock, já to mám např takhle:

stock RconAdmins(playerid)
{

 

A teď doplníme funkce ...

Takže si uděláte vlastní proměnnou

Př.:

new IP[16];

 

A teď si uděláme funkci která zjistí IP hráče .. na to je funkce GetPlayerIp

Takže to teď bude vypadat nějak takto:

GetPlayerIp(playerid,IP,sizeof(IP));

 

Takže, máme funkci pro zjištění hráčovy IP, a teď si dosadíme hlavní funkci a tím je vaše IP adresa kterou se připojujete na server :)

 

if(!strcmp(IP, "Vaše IP adresa")) return true;

Místo "Vaše IP adresa" si dejte vaší IP adresu

Vaši IP adresu se kterou se připojujete na server zjistíte na webu http://www.mojeip.cz

 

1cdf2b6fb63b4033fcc5ebd41c76d76f5e45c3b2.png

 

Co to return true ? Tomu se říká tzv "návratové hodnoty" ..

 

A pak již jen ukončíme stock

return false;
}

 

Public který zjištuje kdo je admin

 

Takže, když máme stock hotový, zbývá nám už jen pravidelná kontrola...

Takže si uděláme libovolný forward

forward VasPublic();

 

 

 

Tak ... a teď tak část kde bude kontrolovat jestli je admin a nemá povolenou IP adresu ...

 

Takže, otevřeme si váš public

public VasPublic()
{
return true;
}

 

Tohle zatím nic nedělá, takže si doplníme funkce ..

začneme cyklusem

for(new i;i{

 

Takhle je klasický cyklus, ale rádím vám si udělat cyklus podle TOHOTO NÁVODU

 

Teď si přidáme podmínku jestli je hráč připojený ... IsPlayerConnected

 

if(IsPlayerConnected(i))

 

Tak, a předposlední funkce, tady zjistíme jestli NENÍ na seznamu povolených IP adres a je hráč admin ... Takže to bude vypadat takhle:

if(!RconAdmins(i) && IsPlayerAdmin(i))

 

Tak, a teď už jen si doděláme funkci pokud tahle podmínka je pravda tak udělá to a to ...

		        new string[80]; // uděláme si string
	        format(string,80,"[ ANTI - RCON - HACK] Hráč %s se dostal do RCON systému !! Byl zabanován !",PlayerName(i)); // naformátujeme si zprávu
	        SCMTA(COLOR_RED,string); // odešleme všem
	        BanEx(i,"Hacknutí do RCONu"); // v administraci se vám objeví jako důvod: Hacknutí do RCONu

 

Tak, tohle je všechno, na tohle jsem přišel když jsem neměl co dělat :d

Je to jednoduché a i přesto efektivní :)

 

A pak si najdeme ve vašem scriptu OnRconLoginAttemp, a do něj vložíme:

VasPublic();

Vždy když se někdo přihlásí do RCON systému tak mu to vyvolá tento public

 

 

Řešíme errory a warningy

 

Undefined symbol "PlayerName":

stock PlayerName(playerid)
{
   new name[MAX_PLAYER_NAME];
if(IsPlayerConnected(playerid)) GetPlayerName(playerid, name, MAX_PLAYER_NAME);
return name;
}

 

========================================

 

Undefined symbol "COLOR_RED":

#define COLOR_RED           0xE10000AA

 

========================================

 

Undefined symbol "SCMTA":

#define SCMTA SendClientMessageToAll

 

========================================

 

Warning: Loose identitation

 

Naserte si, odtabujte si to :p

 

 

========================================

 

Jednoduché, efektivní, funkční :p

 

S pozdravem, Mort

Link to comment
Share on other sites

Není lepší to rovnou hodit do RconLoginAttempt? nebo jak se ten public nazývá.

http://wiki.sa-mp.com/wiki/OnRconLoginAttempt

 

Na wiki to dokonce máš :d

 

public OnRconLoginAttempt(ip[], password[], success)
{
   if(!success) //If the password was incorrect
   {
       printf("FAILED RCON LOGIN BY IP %s USING PASSWORD %s",ip, password);
       new pip[16];
       for(new i=0; i        {
           GetPlayerIp(i, pip, sizeof(pip));
           if(!strcmp(ip, pip, true)) //If a player's IP is the IP that failed the login
           {
               SendClientMessage(i, 0xFFFFFFFF, "Wrong Password. Bye!"); //Send a message
               Ban(i); //They are now banned.
           }
       }
   }
   return 1;
}

Link to comment
Share on other sites

Roox":wdiosdll]
if(!RconAdmins && IsPlayerAdmin(i))

Chybí ti tam parametr u RconAdmins..

 

 

Opraveno, dobrej postřeh ;)

 

Není lepší to rovnou hodit do RconLoginAttempt? nebo jak se ten public nazývá.

http://wiki.sa-mp.com/wiki/OnRconLoginAttempt

 

Je to taky možný, ale já jsem pro tuto variantu, s OnRconLoginAttemp moc zkušenosti nemám ale díky za tip ... kdyžtak doplním až se naučím :oboci:

Link to comment
Share on other sites

fuj skurvene dementnný spôsob !

 

btw

OnRconLoginAttempt

má parameter "ip" takže netreba getplayerip...

+ žiadny timer, public sa vyvolá iba keď sa hráč logne za rcon...

 

TUT do KOŠA...

-999/10

Link to comment
Share on other sites

A teď mě napadlo, stačí smazat timer a publuc:

VášPublic();

 

dát do OnRconLoginAttemp

Dyť jsem to psal na začátku :?

 

Není lepší to rovnou hodit do RconLoginAttempt? nebo jak se ten public nazývá.

Na wiki je dokonce v příloze návod podobnej tomu tvýmu návodu.

Link to comment
Share on other sites

Žádnej dnešní hacker ( if(IQ[hacker] > 10) ) by se nesral s hackováním hráčům samp kteří mu nic neudělaly.

 

Ale je to poměřně velice jednoduché ale určitě se to některým bude hodit, a chvlálím!

 

7/10

 

- 1 jednoduché (MINI TUT)

- 2 nepotřebuji to :lol:

Link to comment
Share on other sites

":2c1tmwqs]Pořád tam máš tu podmínku IsPlayerConnected 2x (public + PlayerName) + zoptimalizuj timer » tut :p

 

Timer už není, teďka jsem to upravil, není timer ale napsal jsem že se má dát ten public co mají dát do OnRconLoginAttemp :p

 

IsPlayerConnected upravím

Link to comment
Share on other sites

  • 2 weeks later...
public OnRconLoginAttempt(ip[], password[], success)

{

if(success){

new playerid = GetPlayerIDFromIP(ip);

if(!strcmp(tvujnick2,PlayerName(playerid),true) || !strcmp(tvujnick1,PlayerName(playerid),true) ){

SendClientMessage(playerid,COLOR_SYSTEM,"Vítej Hlavní Administrátore v Rconu!");

}else{

Kick(playerid);

}

 

}

return 1;

}

to bolo hardcore ! a nezaťažuje to tak ako tvoj "script"...

Link to comment
Share on other sites

  • 1 month later...

jo jen do toho stocku přidej IP

 

stock RconAdmins(playerid)
{
new ip[16];
GetPlayerIp(playerid,ip,sizeof(ip));
if(strcmp(ip,"IP_DOMA_VE_MESTE",true)==0) return true;
if(strcmp(ip,"IP_U_TATKY",true)==0) return true;
return false;
}

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...