[Ajuda] Confusгo com strcmp para ler Hash!
#1

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();
Reply
#2

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.
Reply
#3

Como que vou abrir um arquivo .inc?
Reply
#4

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.
Reply
#5

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+
Reply
#6

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.
Reply
#7

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
Reply


Forum Jump:


Users browsing this thread: 2 Guest(s)