Szerző Téma: udb_hash Pawnoban és PHP-ban  (Megtekintve 1926 alkalommal)

udb_hash Pawnoban és PHP-ban
« Dátum: 2014. augusztus 23. - 13:44:17 »
0 Show voters
Sziasztok!
Elkezdtem írni egy regisztrációs rendszert weben (karakter regisztrálás). Találtam a neten hozzá egy udb_hash-es function-t mégpedig ezt:
 
function udb_hash($pass)
{
$length = strlen($pass);
$s1 = 1;
$s2 = 0;
   
for($i=0; $i<$length; $i++)
{
  $s1 = ($s1 + $pass[$i]) % 65521;
  $s2 = ($s2 + $s1)       % 65521;
}
$wy= ($s2 << 16) + $s1;
return $wy;
}

 
Ezzel így elmentem eg yváltozóba amit késõbb majd betöltök mysql-be:
 
$jelszo = udb_hash($jelszo);

 
Az eredmény teljesen jó, mármint abból a szempontból nézve, hogy phpmyadminba a jelszónál egy számokból álló kombinációt kapok:
\"pQ0AFi2.png\"
Ez eddig mind szép és jó, viszont ha belépek a GTA-ba és beírom a HELYES jelszót akkor ez fogad:
\"3eAtLfU.png\"
Itt a pawnó kód:
 
new name[MAX_PLAYER_NAME];
   GetPlayerName(playerid, name, sizeof(name));
   mysql_format(kapcs, query, 2048, \"SELECT * FROM jatekosok WHERE nev=\'%e\' LIMIT1\", name);
   mysql_query(kapcs, query);
   new tmp;
   tmp = cache_get_field_content_int(0, \"jelszo\");
   if(udb_hash(inputtext) != tmp)
   {
      SendClientMessage(playerid, COLOR_RED, \"(( Sikertelen bejeletnkezési kísérlet! ))\");
      TogglePlayerSpectating(playerid, 1);
      ShowPlayerDialog(playerid, 2, DIALOG_STYLE_PASSWORD, \"Bejelentkezés\", \"{FFFFFF}Üdv a {00BFFF}LaserRPG {FFFFFF}szerverén!\\n\\nÍrd be a jelszavad és lépj be!\", \"Login\", \"Exit\");
   }

 
A többi része gondolom nem kell nektek.
(Ha képen jobban látszik a kód:
\"yYYX8pg.png\"
)
Elõre is nagyon szépen köszönöm a segítségeteket!
« Utoljára szerkesztve: 2014. augusztus 23. - 14:28:25 írta Flash »

Nem elérhető ►ѕтa

  • 2016
  • Newbie
    • Profil megtekintése
udb_hash Pawnoban és PHP-ban
« Válasz #1 Dátum: 2014. augusztus 23. - 13:56:54 »
0 Show voters
Másold be az udb_hash funkciód SA:MP-ban.

udb_hash Pawnoban és PHP-ban
« Válasz #2 Dátum: 2014. augusztus 23. - 13:59:53 »
0 Show voters
Ott nincsen rá funkcióm, viszont van 2 .inc-m amit dininél erre használtam, szóval valamelyikbe benne kell legyen:
 
#include <dudb>
#include <dutils>

 
vagy az egyikbe vagy a másikba.
« Utoljára szerkesztve: 2014. augusztus 23. - 15:27:30 írta Dfoglalo »

Nem elérhető ►ѕтa

  • 2016
  • Newbie
    • Profil megtekintése
udb_hash Pawnoban és PHP-ban
« Válasz #3 Dátum: 2014. augusztus 23. - 14:08:24 »
0 Show voters
Ha printfbe vagy SendClientMessage-be kiíratod ugyanazt adja ki mint ami az adatbázisban van?

udb_hash Pawnoban és PHP-ban
« Válasz #4 Dátum: 2014. augusztus 23. - 14:16:51 »
0 Show voters
Ha így akarom kiírtani:
printf(tmp);

 
Akkor ezt kapom:
error 035: argument type mismatch (argument 1)

Nem elérhető rayle

  • 174
    • Profil megtekintése
udb_hash Pawnoban és PHP-ban
« Válasz #5 Dátum: 2014. augusztus 23. - 14:19:27 »
0 Show voters
printf(\"%d\", tmp);

udb_hash Pawnoban és PHP-ban
« Válasz #6 Dátum: 2014. augusztus 23. - 14:23:01 »
0 Show voters
Használj mást jelszó titkosításra pl:. MD5-t, amit alapból mysql is kezel.
Adatbázisodban mi a mezõ típusa? Úgyse számként állítottad be?
« Utoljára szerkesztve: 2014. augusztus 23. - 14:27:19 írta bbTamas »

udb_hash Pawnoban és PHP-ban
« Válasz #7 Dátum: 2014. augusztus 23. - 14:24:40 »
0 Show voters
Consoleba mindig \"0\"-át ír ki.

Nem elérhető rayle

  • 174
    • Profil megtekintése
udb_hash Pawnoban és PHP-ban
« Válasz #8 Dátum: 2014. augusztus 23. - 14:36:48 »
0 Show voters
Valószínûleg ezért:
mysql_format(kapcs, query, 2048, \"SELECT * FROM jatekosok WHERE nev=\'%e\' LIMIT1\", name);

 
%e helyett %s kéne oda. Javított kód:
 
new name[MAX_PLAYER_NAME];
                        GetPlayerName(playerid, name, sizeof(name));
                        mysql_format(kapcs, query, 2048, \"SELECT * FROM jatekosok WHERE `nev` = \'%s\' LIMIT 1\", name);
                        mysql_query(kapcs, query);
                        new tmp;
                        tmp = cache_get_field_content_int(0, \"jelszo\");
                        if(udb_hash(inputtext) != tmp)
                        {
                                SendClientMessage(playerid, COLOR_RED, \"(( Sikertelen bejeletnkezési kísérlet! ))\");
                                TogglePlayerSpectating(playerid, 1);
                                ShowPlayerDialog(playerid, 2, DIALOG_STYLE_PASSWORD, \"Bejelentkezés\", \"{FFFFFF}Üdv a {00BFFF}LaserRPG {FFFFFF}szerverén!\\n\\nÍrd be a jelszavad és lépj be!\", \"Login\", \"Exit\");
                        }

udb_hash Pawnoban és PHP-ban
« Válasz #9 Dátum: 2014. augusztus 23. - 14:37:49 »
0 Show voters
Amúgy én szívesen csinálnám MD5-ben mert az biztonságosabb, csak ott a pawno ír errort hiába szedek le inc-eket :D
Szóval ha valaki megmondja, hogy kell pawnoban használni nekem az is jó :)

Dupla hozzászólás automatikusan összefûzve. ( 2014. augusztus 23. - 14:46:02 )

Idézetet írta: rayle date=1408797408\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"50293\" data-ipsquote-contentclass=\"forums_Topic
Valószínûleg ezért:
mysql_format(kapcs, query, 2048, \"SELECT * FROM jatekosok WHERE nev=\'%e\' LIMIT1\", name);

 
%e helyett %s kéne oda. Javított kód:
 
new name[MAX_PLAYER_NAME];
                        GetPlayerName(playerid, name, sizeof(name));
                        mysql_format(kapcs, query, 2048, \"SELECT * FROM jatekosok WHERE `nev` = \'%s\' LIMIT 1\", name);
                        mysql_query(kapcs, query);
                        new tmp;
                        tmp = cache_get_field_content_int(0, \"jelszo\");
                        if(udb_hash(inputtext) != tmp)
                        {
                                SendClientMessage(playerid, COLOR_RED, \"(( Sikertelen bejeletnkezési kísérlet! ))\");
                                TogglePlayerSpectating(playerid, 1);
                                ShowPlayerDialog(playerid, 2, DIALOG_STYLE_PASSWORD, \"Bejelentkezés\", \"{FFFFFF}Üdv a {00BFFF}LaserRPG {FFFFFF}szerverén!\\n\\nÍrd be a jelszavad és lépj be!\", \"Login\", \"Exit\");
                        }

 

Így sem jó :// ugyanazt csinálja
« Utoljára szerkesztve: 2014. augusztus 23. - 14:46:02 írta ProPeti »

Nem elérhető BackUP

  • 908
    • Profil megtekintése
udb_hash Pawnoban és PHP-ban
« Válasz #10 Dátum: 2014. augusztus 23. - 15:23:58 »
0 Show voters
Ehhez a kódoláshoz nem értek igazán, fõleg nem olyan nyelvben ami nem PAWN.
Rayle amit mondott az egyértelmûen nem válik be, mivel a \'%e\' is string, csak escapelt string ami megakadályozza az SQL Injectiont.
A \'dudb\' incben van az udb_hash függvény, töröld ki és csinálj egy olyat ami ugyanaz mint phpban, vagy alakítsd át valamelyiket. Mint írtam, nem értek hozzá, de azért ide bemásolom, hátha neked, vagy valakinek segíteni fog.
 

stock udb_hash(buf[]) {
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;
}

 
Nem tudom phpban van e, de a SAMPban a mysql ismeri a \'SHA1\' kódolást, melyet így tudsz használni:
\'\"SELECT * FROM jatekosok WHERE `nev` = \'%s AND jelszo=SHA1(\'%e\') LIMIT 1\"
« Utoljára szerkesztve: 2014. augusztus 23. - 15:28:16 írta BackUP »

udb_hash Pawnoban és PHP-ban
« Válasz #11 Dátum: 2014. augusztus 23. - 15:45:09 »
0 Show voters
Köszönöm a segítséget de nem ment szóval inkább SHA1-el csinálom!

 

SimplePortal 2.3.7 © 2008-2024, SimplePortal