Szerző Téma: Belépési hiba  (Megtekintve 618 alkalommal)

Impulsive

  • Vendég
Belépési hiba
« Dátum: 2012. június 08. - 20:58:26 »
0 Show voters
Üdv!
Ma írtam hogy nem volt jó a titkosítás a belépéshez.
Nos ma megcsináltam hogy a whirlpool titkosítást olvassa a webes felületem, viszont!
Az a bajom, hogy a szerveren ha regisztrálok, akkor ilyen formában adja meg a whirlpool jelszót:
Így kapom a jelszót a szervertõl sqlbe:
 
FD9D94340DBD72C11B37EBB0D2A19B4D05E00FD78E4E2CE8923B9EA3A54E900DF181CFB112A8A73228D1F3551680E2AD9701A4FCFB248FA7FA77B95180628BB2[/quote]
ÍGY generálom online a jelszót: ITT
 
fd9d94340dbd72c11b37ebb0d2a19b4d05e00fd78e4e2ce8923b9ea3a54e900df181cfb112a8a73228d1f3551680e2ad9701a4fcfb248fa7fa77b95180628bb2[/quote]
Nos és itt az a különbség , hogy a generált jelszóval betudok lépni, de a szervertõl kapott jelszóval nem!
A szervertõl kapott jelszóban a karakterek nagybetûsek, így csak a kisbetûs verzióját ismeri fel a login form!
Tehát valahogy azt kéne megoldani, hogy vagy:
- a szerver írja kisberûsen a whirlpool jelszót
- a login olvassa a nagybetûs kódot
Azt szeretném megkérdezni, hogy ebben az esetben mit csináljak?
GAMEMODE WP_HASH:
 
strmid(tmppass, inputtext, 0, strlen(inputtext));
      new pass;
      new buf[145];
      if(egyezik(md5(tmppass), PlayerInfo[playerid][pKey]))
      {
         WP_Hash(buf, sizeof (buf), tmppass);
         PlayerUpdate(playerid, \"Pass=\'%s\'\", buf);
         pass = 1;
      }
      else
      {
         pass = 0;
      }
      //else if(egyezik(tmppass, PlayerInfo[playerid][pKey]) || strlen(tmppass) == 32) pass = 2;
 
      if(pass == 0)
      {
         WP_Hash(buf, sizeof (buf), tmppass);
         if(egyezik(buf, PlayerInfo[playerid][pKey])) pass = 1;
      }
      else
      {
         WP_Hash(buf, sizeof (buf), tmppass);
      }
      /*printf(\"hash\");
      printf(buf);
      printf(\"dbhash\");
      printf(PlayerInfo[playerid][pKey]);*/
      if(pass != 0)
      {

 
ÉS
 
//strmid(PlayerInfo[playerid][pKey], md5(pass), 0, strlen(md5(pass)), 50);
      PlayerInfo[playerid][pConnectTime] = 0;
      AdatMentesSQL(playerid);
      new buf[145];
      WP_Hash(buf, sizeof (buf), pass);
      PlayerUpdate(playerid,\"Pass=\'%s\'\", buf);

 

if(strlen(param[1]) > 31) return Msg(playerid,\"Maximum 31 karakter!!\");
new buf[145];
WP_Hash(buf, sizeof (buf), param[1]);
//strmid(PlayerInfo[playerid][pKey], md5(param[1]), 0, strlen(md5(param[1])));
strmid(PlayerInfo[playerid][pKey], buf, 0, strlen(buf));
SendFormatMessage(playerid, COLOR_LIGHTBLUE, \"Új Jelszavad a Szerveren: %s\", param[1]);
//PlayerUpdate(playerid, \"Pass=\'%s\'\", md5(param[1]));
PlayerUpdate(playerid, \"Pass=\'%s\'\", buf);
new uzenet[100];

 
Whirlpool rész loginban:
 
$password = hash( \'whirlpool\', htmlentities(mysql_escape_string($_POST[\'Pass\'])));
« Utoljára szerkesztve: 2012. június 08. - 21:06:50 írta Impulsive »

Belépési hiba
« Válasz #1 Dátum: 2012. június 08. - 22:18:52 »
+1 Show voters
if(egyezik(md5(tmppass), PlayerInfo[playerid][pKey]))
 
if(strcmp(md5(tmppass), PlayerInfo[playerid][pKey], true)) // true a kis és nagybetûket nem különbözteti meg

 
Vagy pawnban alakítsd át a nagybetûket kisbetûre.
 
stock
UpperToLower2(str[])
{
new
i = 0;
while(str)
{
if((str > 0x40 && str <= 0x5A))
{
   str |= 0x20;   // str[Ch] += 32;
}
++i;
}
}
new hash[] = \"FD9D94340DBD72C11B37EBB0D2A19B4D05E00FD78E4E2CE8923B9EA3A54E900DF181CFB112A8A73228D1F3551680E2AD9701A4FCFB248FA7FA77B95180628BB2\";
UpperToLower2(hash);
printf(\"\\\"%s\\\"\", hash);

 
Vagy php-ban:
http://php.net/manual/en/function.strtolower.php
http://www.php.net/manual/en/function.strtoupper.php

Impulsive

  • Vendég
Belépési hiba
« Válasz #2 Dátum: 2012. június 08. - 22:30:34 »
0 Show voters
Átírtam erre:
 
if(strcmp(md5(tmppass), PlayerInfo[playerid][pKey], true)) // true a kis és nagybetûket nem különbözteti meg

 
De ugyan úgy nagybetûsen regisztrálja a whirlpool jelszót.
Viszont ez a rész nincs benne a módomban!
 
stock
UpperToLower2(str[])
{
new
i = 0;
while(str)
{
if((str > 0x40 && str <= 0x5A))
{
   str |= 0x20;   // str[Ch] += 32;
}
++i;
}
}
new hash[] = \"FD9D94340DBD72C11B37EBB0D2A19B4D05E00FD78E4E2CE8923B9EA3A54E900DF181CFB112A8A73228D1F3551680E2AD9701A4FCFB248FA7FA77B95180628BB2\";
UpperToLower2(hash);
printf(\"\\\"%s\\\"\", hash);

 
PHP-részt nézem, de nemtudom hogyan oldjam meg :(

Dupla hozzászólás automatikusan összefûzve. ( 2012. június 08. - 22:55:09 )

SQL lekérdezést is próbáltam kiicsire alakítani, de így sem jártam sikerrel:
 
$query = mysql_query(\"SELECT Nev, Pass FROM playerek WHERE Nev = \'$username\' AND Pass = \'\".strtolower($password).\"\'\");
« Utoljára szerkesztve: 2012. június 08. - 22:55:10 írta Impulsive »

Belépési hiba
« Válasz #3 Dátum: 2012. június 09. - 20:05:38 »
0 Show voters


Ez egy rövidített válasz mivel az elõbbi regényemet elvitte az áramszünet.
 
Egyszerû a probléma, nem tudni minek használsz md5-öt Whirlpool titkosítást egyszerre, azt se tudni minek külön weblapon titkosítod a jelszavakat.
Mentsd a plugin WP_hash-el a jelszavakat adatbázisba, és loginnál is azt használd és nem lesz probléma.
Ha meg valami weblappal akarod összekötni akkor adatbázisba mentés elõtt használd a módodban az UpperTolower2-t regisztrációnál meg loginnál is.
Az strcmp-s példa meg loginnál lenne hasznos mivel nem tenne kis és nagybetû közt különbséget.
Találd ki hogy neked hogy lenne megfelelõ és állj neki úgy.
Sokféleképpen meg lehet oldani a dolgot.

Impulsive

  • Vendég
Belépési hiba
« Válasz #4 Dátum: 2012. június 09. - 20:22:53 »
0 Show voters
A legjobb lenne az, hogyha az ucp loginomban ne tenne különbséget a kis-és nagy betûk között.
strcmp függvényt nem ismerem.
Tudnál segíteni megcsinálni a login részt?
 

$username = sanitize($_POST[\'Nev\']);
$password = hash( \'whirlpool\', htmlentities(mysql_escape_string($_POST[\'Pass\'])));

 

if($submit)  
{     
    if($username && $password)
    {
        $query = mysql_query(\"SELECT Nev, Pass FROM playerek WHERE Nev = \'$username\'\");
        if(mysql_num_rows($query) == 1)
        {
            while($row = mysql_fetch_assoc($query))
            {
                $dbusername = $row[\'Nev\'];
                $dbpassword = $row[\'Pass\'];   
            }
            if($username == $dbusername && $password == $dbpassword)
            {
                $_SESSION[\'Nev\'] = $dbusername;
                echo header(\'location: profile.php\'); 
            }
            else echo \"Rossz jelszó!\";
        }
        else echo \"Nincs ilyen jatekosnév!\";
    }
    else echo \"Írd be a nevet és a jelszót!\";
}

 
FORM:
 
<form action=\'login.php\' method=\'POST\'> 
<font color=lime>IG nev:   </font><input type=\"text\" name=\"Nev\" value=\'<?php echo $username?>\'/> <br>
<font color=lime>IG jelszo:</font><input type=\"Pass\" name=\"Pass\"/> <br>
<input type=\'submit\' name=\"submit\" value=\'Belepes\' />
</form>
« Utoljára szerkesztve: 2012. június 09. - 20:27:31 írta Impulsive »

Belépési hiba
« Válasz #5 Dátum: 2012. június 09. - 21:24:34 »
+1 Show voters
Nem vagyok php zseni, és fogalmam sincs most melyik a kisbetûs titkosítás melyik a nagy, de valamelyiknek jónak kellene lenni:
 
$password = strtoupper(hash( \'whirlpool\', htmlentities(mysql_escape_string($_POST[\'Pass\']))));

 
vagy
 
$password = strtolower(hash( \'whirlpool\', htmlentities(mysql_escape_string($_POST[\'Pass\']))));

 
De mivel ezt írtad:
 
Így kapom a jelszót a szervertõl sqlbe:

    FD9D94340DBD72C11B37EBB0D2A19B4D05E00FD78E4E2CE8923B9EA3A54E900DF181CFB112A8A73228D1F3551680E2AD9701A4FCFB248FA7FA77B95180628BB2[/quote]
[/quote]
Az strtolower változatra gondolok.

Impulsive

  • Vendég
Belépési hiba
« Válasz #6 Dátum: 2012. június 09. - 21:43:04 »
0 Show voters
Köszönöm szépen!
+
Amivel ment az a :
 
$password = strtoupper(hash( \'whirlpool\', htmlentities(mysql_escape_string($_POST[\'Pass\']))));

 

SimplePortal 2.3.7 © 2008-2024, SimplePortal