Confusгo com strcmp para ler Hash! -
Mackdaddy - 27.01.2015
Olб, primeiramente eu queria dizer que ainda estou aprendendo a linguagem pawn e aн se o erro for muito уbvio eu quero que avisem, queria tambйm que se acharem a soluзгo me explicassem como funciona a mesma, Obrigado.
Estou desenvolvendo um GameMode do 0, atй agora deu tudo certo, mas eis que me deparo com o seguinte erro no sistema de Registro/Login (O Sistema й em DOF2)
O Sistema tem criptografia de senhas com Whirpool, atй a parte de criar o arquivo e aplicar o Hash tб tudo bem, mas na hora de logar, ele nгo consegue ler o Hash! eu jб tentei inъmeras opзхes, em uma loga com qualquer coisa, e em outra nгo loga de jeito nenhum. vou postar o cуdigo.
Parte de comparar a senha Digitada com a Senha do arquivo:
Код:
new passhash[129];
WP_Hash(passhash, sizeof(passhash), inputtext);
if(!strcmp((inputtext), (DOF2_GetString(file, "Senha")), true) == 0)
{
PInfo[playerid][Skin] = DOF2_GetInt(file, "Skin");
SetPlayerSkin(playerid, PInfo[playerid][Skin]);
PInfo[playerid][Dinheiro] = DOF2_GetInt(file, "Dinheiro");
GivePlayerMoney(playerid, PInfo[playerid][Dinheiro]);
return 1;
}
else
{
ShowPlayerDialog(playerid, LOGIN, DIALOG_STYLE_PASSWORD, "LOGIN", "Senha Incorreta, Tente Novamente!", "Logar", "Sair");
ErroSenha[playerid]++;
if(ErroSenha[playerid] == 5)
{
SendClientMessage(playerid, -1, "Vocк foi Kickado por errar sua senha mais de 4 vezes.");
Kick(playerid);
return 1;
Parte de Hash no arquivo na parte de Registro:
Код:
new passhash[129];
WP_Hash(passhash, sizeof(passhash), inputtext);
DOF2_CreateFile(file);
PInfo[playerid][Senha] = DOF2_SetString(file, "Senha", passhash);
PInfo[playerid][Skin] = DOF2_SetInt(file, "Skin", SKIN_NOVATO);
PInfo[playerid][Dinheiro] = DOF2_SetInt(file, "Dinheiro", DINHEIRO_INICIAL);
DOF2_SaveFile();
Re: Confusгo com strcmp para ler Hash! -
MultiKill - 27.01.2015
Jб tive este problema, e resolvi na include dof2.
Abra a include DOF2, e procure por isso:
pawn Код:
#if !defined MAX_LINE_SIZE
#define MAX_LINE_SIZE (128)
#endif
Altere o valor do MAX_LINE_SIZE para 150 mais ou menos.
Ficando:
pawn Код:
#if !defined MAX_LINE_SIZE
#define MAX_LINE_SIZE (150)
#endif
Isso deve resolver.
Re: Confusгo com strcmp para ler Hash! -
Mackdaddy - 27.01.2015
Como que vou abrir um arquivo .inc?
Re: Confusгo com strcmp para ler Hash! -
MultiKill - 27.01.2015
Abre com o bloco de notas, tambйm da para abril com o pawno, sу que na hora de compilar pode dar erros e se der й sу ignorar.
Re: Confusгo com strcmp para ler Hash! -
Mackdaddy - 27.01.2015
What? kkkkkkkkkkkkkk, cara! milagrosamente funcionou! Muito obrigado! se eu nгo tivesse criado esse tуpico nunca teria achado a soluзгo! Valeu! Vou te dar um REP+
Re: Confusгo com strcmp para ler Hash! -
PT - 27.01.2015
Na hora que voce tem a comparacao da password inserida com o hash ta errado seu codigo.
pawn Код:
new passhash[129];
WP_Hash(passhash, sizeof(passhash), inputtext);
if(strcmp(passhash, DOF2_GetString(file, "Senha")) == 0)
{
// caso correta
}
else
{
// Caso errado
}
Voce esta a comparar com o inputtext e nao com o hash do inputtext.
Re: Confusгo com strcmp para ler Hash! -
Mackdaddy - 27.01.2015
Meu problema jб foi resolvido cara, eu fiz isso aн que vocк me enviou depois de editar a .inc
Jб entendi porque aconteceu o problema vendo a resposta do MultiKill.
O Que foi o Problema:
A include DOF2 estava programada com um limite de caracteres de 128, como o Hash precisa de 129 Caracteres para funcionar e ler corretamente, nгo estava logando, pois este limite estava impedindo o script de ler a senha com Hash no arquivo. A strcmp tambйm estava errada mas jб consertei depois de editar a include.
Soluзгo que o MultiKill deu:
Abrir a include com o Notepad++ e procurar este limite de linhas que estб dito na resposta de MultiKill, e alterar o mesmo para 150, assim solucionando o problema e lendo a Senha do Player com Hash corretamente, pois agora o limite й 150, sendo muito maior do que o Hash precisa