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;
}