SA-MP Forums Archive
Hash problem what wrong here ? - Printable Version

+- SA-MP Forums Archive (https://sampforum.blast.hk)
+-- Forum: SA-MP Scripting and Plugins (https://sampforum.blast.hk/forumdisplay.php?fid=8)
+--- Forum: Scripting Help (https://sampforum.blast.hk/forumdisplay.php?fid=12)
+--- Thread: Hash problem what wrong here ? (/showthread.php?tid=286386)



Hash problem what wrong here ? - Venice - 28.09.2011

Register
pawn Код:
if(dialogid == 5000)
    {
        if(!response) return SendClientMessage(playerid, 0xFFFFFFFF, "You canceled!");
   
        SpawnPlayer( playerid );
        SendClientMessage(playerid, 0xFFFFFFFF, "You Have been Spawned !");
        return 1;
    }
   
   
   
        switch(dialogid)
    {
        case Regdialog:
        {
            new string[220];
            if(strlen(inputtext) == 0)
            {
                ShowPlayerDialog(playerid,Regdialog,DIALOG_STYLE_INPUT,""cblue"Register - "cyellow"Enter your password",""cblue"You are about to register a "cyellow"new account"cblue"! \nPlease choose the "corange"password"cblue" for it! \n","Register!","");
                SendClientMessage(playerid,red,"Please input a password!");
            }
            else
            {
                new EscapedText[64],buffer[129];
                mysql_real_escape_string(inputtext, EscapedText);
                WP_Hash(buffer,sizeof(buffer),EscapedText);
                format(Query,sizeof(Query),"INSERT INTO `Accounts` (Username,Password,IP,Money,Score,Kills,Deaths,Admin,Donator,Plantedbombs,Defusedbombs,Banned) VALUES('%s','%s','%s','0','0','0','0','0','0','0','0','0')",GetPName(playerid),buffer,GetIP(playerid));
                mysql_query(Query);
                mysql_store_result();
                SendClientMessage(playerid,green2,"You have been successfully registered!");
                format(string,sizeof(string),""cgreen"You have been successfully registered! \n"cwhite"» Your username: "cblue"%s \n"cwhite"» Your password: "cblue"%s \n"cwhite"» Your account ID: "cblue"%i ",GetPName(playerid),inputtext,mysql_insert_id());
                ShowPlayerDialog(playerid,Reginfo,0,"Registered!",string,"Ok","");
                mysql_free_result();
                LoadStats(playerid);
                pData[playerid][Logged] = 1;
                GivePlayerMoney(playerid,5000);
                SetPlayerScore(playerid,1);
                PlaySound(playerid,1083);
            }
        }
        case Logindialog:
        {
            if(!response) return Kick(playerid);
            if(strlen(inputtext) == 0)
            {
                new string[220];
                format(string,sizeof(string),""cblue"Hey, "cred"%s"cblue"! \nYour account is "cgreen"registered"cblue".\nPlease enter the "cred"password"cblue" to log in!",GetPName(playerid));
                ShowPlayerDialog(playerid,Logindialog,DIALOG_STYLE_INPUT,""cgreen2"Log in",string,"Login","");
                SendClientMessage(playerid,red,"Please input a password!");
            }
            else
            {
                LoginPlayer(playerid,inputtext);
            }
        }
    }
    return 1;
}
Login
pawn Код:
stock LoginPlayer(playerid,const password[])
{
    new string[165], buffer[129];
    WP_Hash(buffer,sizeof(buffer),password);
    format(Query,sizeof(Query),"SELECT Password FROM `Accounts` WHERE `Username` = '%s' AND `Password` = '%s'",GetPName(playerid),buffer);
    mysql_query(Query);
    mysql_store_result();
    if(mysql_num_rows() != 0)
    {
        format(string,sizeof(string),"You have been logged in! Welcome back, "cred"%s"cgreen"!",GetPName(playerid));
        SendClientMessage(playerid,green,string);
        LoadStats(playerid);
        pData[playerid][Logged] = 1;
        PlaySound(playerid,1057);
    }
    else
    {
        pData[playerid][FailedLogins]++;
        format(string,sizeof(string),""cred"Attempts left: "corange"%i \n"cblue"Hey, "cred"%s"cblue"! \nYour account is "cgreen"registered"cblue".\nPlease enter the "cred"password"cblue" to log in!",3-pData[playerid][FailedLogins],GetPName(playerid));
        ShowPlayerDialog(playerid,Logindialog,DIALOG_STYLE_INPUT,""cgreen2"Log in",string,"Login","");
        PlaySound(playerid,1055);
        if(pData[playerid][FailedLogins] == 3)
        {
            format(string,sizeof(string),"%s has been automatically kicked as he entered the wrong login password 3 times in a row",GetPName(playerid));
            SendClientMessageToAll(red,string);
            SendClientMessage(playerid,red,"*** You have been kicked as you have entered the wrong login password 3 times!");
            PlaySound(playerid,1141);
            Kick(playerid);
        }
    }
    mysql_free_result();
    return 1;
}
It say password was wrong script problem or whirlpool hash problem ?


Re: Hash problem what wrong here ? - Pharrel - 28.09.2011

i think you must replace the stock for a public... and i dont look all the code


Re: Hash problem what wrong here ? - sleepysnowflake - 28.09.2011

Did not look at the whole script but ... Are you hashing the password and then comparing it ?


Re: Hash problem what wrong here ? - Babul - 28.09.2011

i dont use SQL, but did you try to print out the string before and after hashing?
it must be the script, coz i never had trouble using whirlpool...
anyways, heres my (working) version - using natives only:
Код:
		case DIALOG_REGISTER:
		{
			new PassWordStringInput[24];
			new buffer[129];
			new filename[32];
			new Name[MAX_PLAYER_NAME];
			GetPlayerName(playerid,Name,sizeof(Name));
			if(response)
			{
				if(!sscanf(inputtext,"s[24]",PassWordStringInput))
				{
				//	SendClientMessage(playerid,MSGCMDS_COLOR,PassWordStringInput);
					WP_Hash(buffer,sizeof(buffer),PassWordStringInput);
				//	SendClientMessage(playerid,MSGCMDS_COLOR,buffer);
					format(filename, sizeof(filename),"cpw/%s.txt",Name);
					new File:PWFile=fopen(filename,io_readwrite);
					fwrite(PWFile,buffer);
					fclose(PWFile);
					WelcomeMessage(playerid);
				}
				else
				{
					Kick(playerid);
				}
			}
			else
			{
				Kick(playerid);
			}
			return 1;
		}
		case DIALOG_LOGIN:
		{
			new PassWordStringInput[24];
			new buffer[129];
			new readbuffer[129];
			new filename[32];
			new Name[MAX_PLAYER_NAME];
			GetPlayerName(playerid,Name,sizeof(Name));
			if(response)
			{
				if(!sscanf(inputtext,"s[24]",PassWordStringInput))
				{
				//	SendClientMessage(playerid,MSGCMDS_COLOR,PassWordStringInput);
					WP_Hash(buffer,sizeof(buffer),PassWordStringInput);
				//	SendClientMessage(playerid,MSGCMDS_COLOR,buffer);
					format(filename, sizeof(filename),"cpw/%s.txt",Name);
					new File:PWFile=fopen(filename,io_read);
					fread(PWFile,readbuffer);
					fclose(PWFile);
					if(strfind(readbuffer,buffer,false,0)==0)
					{
						WelcomeMessage(playerid);
//						SendClientMessage(playerid,MSGSUCC_COLOR,"match");
					}
					else
					{
						Kick(playerid);
					}
				}
				else
				{
					Kick(playerid);
				}
			}
			else
			{
				Kick(playerid);
			}
			return 1;
		}