[POMOC]oko HASSa


Započeo Neobavezni lik, Mart 21, 2016, 07:40:43 PRE PODNE

prethodna tema - sledeća tema

0 članova i 1 gost pregledaju ovu temu.

Skripta koju koristim:moja
Detaljan opis problema:Dakle ako je pass u hassu
260965141

Kako da napravim cmd npr.hass i onda sifra u hasu i da on odhassa u posalje mi messange? Neznam ovo u cmd napraviti
Dio skripte:
stock udb_hash(buf[]) //HASH PASS
{
    new length=strlen(buf);
    new s1 = 1;
    new s2 = 0;
    new n;
    for (n=0; n<length; n++)
    {
       s1 = (s1 + buf[n]) % 65521;
       s2 = (s2 + s1)     % 65521;
    }
    return (s2 << 16) + s1;
}

Neke slike/video za lakse dobivanje pomoci(neobavezno)://

Hash je napravljen da se ne moze decrypt, procitaj na netu, a ako hoces da ti upisuje kao string onda ga radi kao string, npr.
new string[128];
format(string, 128, "Igrac %d novac %d", GetPlayerMoney(playerid));
print(string);

A hash ti se bazira na int-u
new string;
string = udb_hash("Bla bla");
print(string);


Pa ako hoces string pw ides lijepo definisati varijablu u kojoj spremas igracev PW
enum Player{
playerPW[20] //20 je duzina maksimalna koju mozes upisati u string...
}
new PI[MAX_PLAYERS][Player];

//komanda
CMD:changepw(playerid,params[])
{
new newpw[20];
if(sscanf(params,"s[20]",newpw)) return SendClientMessage(playerid,-1,"/changepw [pw]");
if(strlen(newpw) > 20 || strlen(newpw) < 5) return SendClientMessage(playerid,-1,"*  {ff0000}Duzina od 5 do 20 karaktera");
format(PI[playerid][playerPW], 20, "%s", newpw);
new string[128];
format(string,128,"Novi pw je %s", newpw);
SendClientMessage(playerid,-1,string);

//sacuvas npr MySQL
new sacuvaj[200],igracevoime[MAX_PLAYER_NAME];
GetPlayerName(playerid,igracevoime,sizeof igracevoime);
mysql_format(Handle, sacuvaj, sizeof sacuvaj, "UPDATE `players` SET `pw` = '%s' WHERE `name` = '%s'", newpw, igracevoime);
mysql_query(Handle, sacuvaj);
return 1;
}

//provjera u login
if(!strcmp(PI[playerid][playerPW], inputtext)) { 
//uspijesan login
}
else {
//neuspijesan
}

strlen nije potreban, dovoljno je ovako:

if(newpw > 20 || newpw < 5) return SendClientMessage(playerid,-1,"*  {ff0000}Duzina od 5 do 20 karaktera");


I kod format koristi sizeof a ne da rucno upises vrijednost, jer kad mjenjas vrijednos stringa onda moras i rucno promjeniti vrijednost u drugom parametru, iz ovoga primjera:

kako si ti napisao:
new string[128];
format(string, 128,"Novi pw je %s", newpw);


Kako je lakse za koristiti:
new string[128];
format(string, sizeof(string),"Novi pw je %s", newpw);


PS. u ovom slucaju je previse da stavis 128 polja za string, smanji ih.


LP. :)
Poslednja Izmena: Mart 21, 2016, 12:29:47 POSLE PODNE od Lenon

Ne ja imam sistem koji radi imam sve ali hocu da pomocu neceg mogu videti pass igracev

Citat: GamingNiksy poslato Mart 21, 2016, 12:32:44 POSLE PODNE
Ne ja imam sistem koji radi imam sve ali hocu da pomocu neceg mogu videti pass igracev

Ne mozes "de-hashovati" igracev pw, jedino sto mozes je da ne koristis hash.


Dakle nemos to desifrirat samo tekst mozes sifrirat i usporedit je li isti?

Kako znam, kad hash password, poslije toga ga više ne možeš pročitati...

Citat: GamingNiksy poslato Mart 21, 2016, 13:23:05 POSLE PODNE
Dakle nemos to desifrirat samo tekst mozes sifrirat i usporedit je li isti?

Tako je.

Citat: Lenon poslato Mart 21, 2016, 12:28:41 POSLE PODNE
strlen nije potreban, dovoljno je ovako:

if(newpw > 20 || newpw < 5) return SendClientMessage(playerid,-1,"*  {ff0000}Duzina od 5 do 20 karaktera");


I kod format koristi sizeof a ne da rucno upises vrijednost, jer kad mjenjas vrijednos stringa onda moras i rucno promjeniti vrijednost u drugom parametru, iz ovoga primjera:

kako si ti napisao:
new string[128];
format(string, 128,"Novi pw je %s", newpw);


Kako je lakse za koristiti:
new string[128];
format(string, sizeof(string),"Novi pw je %s", newpw);


PS. u ovom slucaju je previse da stavis 128 polja za string, smanji ih.


LP. :)

Ako bude znao ovo uraditi znace i smanjiti string, a strlen uopste ne smeta i stvar je navike. Sifeof nisam pisao zato sto sam ovo na brzinu objasnio ... xD