Lire mdp Whirlpool xAuth !
alexx54
Messages postés
69
Date d'inscription
Statut
Membre
Dernière intervention
-
alexx54 Messages postés 69 Date d'inscription Statut Membre Dernière intervention -
alexx54 Messages postés 69 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Je vous demande votre aide pour lire un mot de passe codé en Whirlpool.
Pour mon serveur minecraft, j'utilise xAuth qui enregistre les mots de passes des joueurs en Whirlpool -->https://github.com/CypherX/xAuth/wiki/Password-Hashing
Mon problème est que je ne trouve pas comment faire dire au code php que le mot de passe est encodé en Whirlpool.
Ce code est prévu pour se connecter (connexion.php)
Actuellement j'ai ce code qui fonctionne mais que avec le codage md5, je souhaiterai donc qu'il lise le code en whirlpool (au sujet du playername, aucun problème) :
Code php qui va chercher et verifier les pseudo/mdp
<?php
// on teste si le visiteur a soumis le formulaire de connexion
if (isset($_POST['connexion']) && $_POST['connexion'] == 'Connexion') {
if ((isset($_POST['playername']) && !empty($_POST['playername'])) && (isset($_POST['password']) && !empty($_POST['password']))) {
$base = mysql_connect ('localhost', 'util', 'password');
mysql_select_db ('minecraft_server', $base);
// on teste si une entrée de la base contient ce couple pseudo / password
$sql = 'SELECT count(*) FROM accounts WHERE playername="'.mysql_escape_string($_POST['playername']).'" AND password="'.mysql_escape_string (md5($_POST['password'])).'"';
$req = mysql_query($sql) or die('Erreur SQL!<br/>'.$sql.'<br/>'.mysql_error());
$data = mysql_fetch_array($req);
mysql_free_result($req);
mysql_close();
// si on obtient une réponse, alors l'utilisateur est un membre
if ($data[0] == 1) {
session_start();
$_SESSION['playername'] = $_POST['playername'];
header('Location: membre.php');
exit();
}
// si on ne trouve aucune réponse, le visiteur s'est trompé soit dans son playername, soit dans son mot de passe
elseif ($data[0] == 0) {
$erreur = '<font color="red">Compte non reconnu.</font>';
}
// sinon, gros problème !!
else {
$erreur = '<font color="red">Probème dans la base de données : plusieurs membres ont les mêmes identifiants de connexion.</font>';
}
}
else {
$erreur = '<font color="red">Veuillez renseigner votre pseudo/mdp.</font>';
}
}
?></code>
Si vous avez besoin de détails... Merci!
Structure BDD : minecraft_server --> accounts
Je vous demande votre aide pour lire un mot de passe codé en Whirlpool.
Pour mon serveur minecraft, j'utilise xAuth qui enregistre les mots de passes des joueurs en Whirlpool -->https://github.com/CypherX/xAuth/wiki/Password-Hashing
Mon problème est que je ne trouve pas comment faire dire au code php que le mot de passe est encodé en Whirlpool.
Ce code est prévu pour se connecter (connexion.php)
Actuellement j'ai ce code qui fonctionne mais que avec le codage md5, je souhaiterai donc qu'il lise le code en whirlpool (au sujet du playername, aucun problème) :
Code php qui va chercher et verifier les pseudo/mdp
<?php
// on teste si le visiteur a soumis le formulaire de connexion
if (isset($_POST['connexion']) && $_POST['connexion'] == 'Connexion') {
if ((isset($_POST['playername']) && !empty($_POST['playername'])) && (isset($_POST['password']) && !empty($_POST['password']))) {
$base = mysql_connect ('localhost', 'util', 'password');
mysql_select_db ('minecraft_server', $base);
// on teste si une entrée de la base contient ce couple pseudo / password
$sql = 'SELECT count(*) FROM accounts WHERE playername="'.mysql_escape_string($_POST['playername']).'" AND password="'.mysql_escape_string (md5($_POST['password'])).'"';
$req = mysql_query($sql) or die('Erreur SQL!<br/>'.$sql.'<br/>'.mysql_error());
$data = mysql_fetch_array($req);
mysql_free_result($req);
mysql_close();
// si on obtient une réponse, alors l'utilisateur est un membre
if ($data[0] == 1) {
session_start();
$_SESSION['playername'] = $_POST['playername'];
header('Location: membre.php');
exit();
}
// si on ne trouve aucune réponse, le visiteur s'est trompé soit dans son playername, soit dans son mot de passe
elseif ($data[0] == 0) {
$erreur = '<font color="red">Compte non reconnu.</font>';
}
// sinon, gros problème !!
else {
$erreur = '<font color="red">Probème dans la base de données : plusieurs membres ont les mêmes identifiants de connexion.</font>';
}
}
else {
$erreur = '<font color="red">Veuillez renseigner votre pseudo/mdp.</font>';
}
}
?></code>
Si vous avez besoin de détails... Merci!
Structure BDD : minecraft_server --> accounts
A voir également:
- Lire mdp Whirlpool xAuth !
- Lire le coran en français pdf - Télécharger - Histoire & Religion
- Lire epub - Guide
- Lire fichier bin - Guide
- Generateur mdp - Télécharger - Sécurité
- Comment lire un message supprimé sur whatsapp - Guide
9 réponses
c'est ça (dans le principe) =)
après est-ce que c'est bien ce que tu veux, je sais pas, là ce code va compter le nombre d'occurence de l'utilisateur choisi (en filtrant sur nom d'utilisateur et le hash en même temps)
est-ce qu'un simple "SELECT playername FROM accounts WHERE playername = ' ".$_POST['playername']')."';" n'aurait pas suffit d'ailleurs ?
si la base est bien faite il ne devrait pas y avoir de redondance au niveau des noms
après est-ce que c'est bien ce que tu veux, je sais pas, là ce code va compter le nombre d'occurence de l'utilisateur choisi (en filtrant sur nom d'utilisateur et le hash en même temps)
est-ce qu'un simple "SELECT playername FROM accounts WHERE playername = ' ".$_POST['playername']')."';" n'aurait pas suffit d'ailleurs ?
si la base est bien faite il ne devrait pas y avoir de redondance au niveau des noms
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
j'ai testé : $sql = 'SELECT count(*) FROM accounts WHERE playername="'.mysql_escape_string($_POST['playername']).'"';
sa fonctionne en tapant les compte de la base et ceux inexistant sont reconnus comme inexistant, jusque là aucun problème.
Le problème c'est qu'on peut se connecter sur les compte même en tapant n'importe quoi en mot de passe.Par contre quand on ne renseigne pas le mdp, cela marque qu'il faut entrer le mdp,normal^^ d'ou viens le problème?
sa fonctionne en tapant les compte de la base et ceux inexistant sont reconnus comme inexistant, jusque là aucun problème.
Le problème c'est qu'on peut se connecter sur les compte même en tapant n'importe quoi en mot de passe.Par contre quand on ne renseigne pas le mdp, cela marque qu'il faut entrer le mdp,normal^^ d'ou viens le problème?
Je n'y arrive pas :( , j'obtient une page blanche en utilisant $sql = 'SELECT count(*) FROM accounts WHERE playername="'.mysql_escape_string($_POST['playername']).'" AND password="'hash('whirlpool', ($_POST['password']');
Pouvez vous juste me faire le bout de code pour lire le hash du mdp Whirlpool, je cherche depuis longtemps!
Merci!
Pouvez vous juste me faire le bout de code pour lire le hash du mdp Whirlpool, je cherche depuis longtemps!
Merci!
Peut etre utiliser function checkPassword($checkPass, $realPass, $algorithm) {
switch ($algorithm) {
case 1:
return $realPass == hash('whirlpool', $checkPass);
case 2:
return $realPass == hash('md5', $checkPass);
case 3:
return $realPass == hash('sha1', $checkPass);
case 4:
return $realPass == hash('sha256', $checkPass);
default:
// xAuth hashing
$saltPos = (strlen($checkPass) >= strlen($realPass) ? strlen($realPass) : strlen($checkPass));
$salt = substr($realPass, $saltPos, 12);
$hash = hash('whirlpool', $salt . $checkPass);
return $realPass == substr($hash, 0, $saltPos) . $salt . substr($hash, $saltPos);
}
}
et reprendre $checkPass pour le mettre dans SELECT COUNT (*) ... non?
switch ($algorithm) {
case 1:
return $realPass == hash('whirlpool', $checkPass);
case 2:
return $realPass == hash('md5', $checkPass);
case 3:
return $realPass == hash('sha1', $checkPass);
case 4:
return $realPass == hash('sha256', $checkPass);
default:
// xAuth hashing
$saltPos = (strlen($checkPass) >= strlen($realPass) ? strlen($realPass) : strlen($checkPass));
$salt = substr($realPass, $saltPos, 12);
$hash = hash('whirlpool', $salt . $checkPass);
return $realPass == substr($hash, 0, $saltPos) . $salt . substr($hash, $saltPos);
}
}
et reprendre $checkPass pour le mettre dans SELECT COUNT (*) ... non?
Bonjour,
J'ai toujours pas trouvé^^ pouvez vous me dire comment inclure la fonction check de xauth :
dans mon code de connexion (actuellement codé pour lire le mdp en md5 alors qu'il me faut le lire en Whirlpool :
Merci d'avance !
J'ai toujours pas trouvé^^ pouvez vous me dire comment inclure la fonction check de xauth :
function checkPassword($checkPass, $realPass, $algorithm) { switch ($algorithm) { case 1: return $realPass == hash('whirlpool', $checkPass); case 2: return $realPass == hash('md5', $checkPass); case 3: return $realPass == hash('sha1', $checkPass); case 4: return $realPass == hash('sha256', $checkPass); default: // xAuth hashing $saltPos = (strlen($checkPass) >= strlen($realPass) ? strlen($realPass) : strlen($checkPass)); $salt = substr($realPass, $saltPos, 12); $hash = hash('whirlpool', $salt . $checkPass); return $realPass == substr($hash, 0, $saltPos) . $salt . substr($hash, $saltPos); } }
dans mon code de connexion (actuellement codé pour lire le mdp en md5 alors qu'il me faut le lire en Whirlpool :
<?php // on teste si le visiteur a soumis le formulaire de connexion if (isset($_POST['connexion']) && $_POST['connexion'] == 'Connexion') { if ((isset($_POST['playername']) && !empty($_POST['playername'])) && (isset($_POST['password']) && !empty($_POST['password']))) { // on teste si une entrée de la base contient ce couple pseudo / password $sql = 'SELECT count(*) FROM accounts WHERE playername="'.mysql_escape_string($_POST['playername']).'" AND password="'.mysql_escape_string(md5,($_POST['password'])).'"'; $req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error()); $data = mysql_fetch_array($req); mysql_free_result($req); mysql_close(); // si on obtient une réponse, alors l'utilisateur est un membre if ($data[0] == 1) { session_start(); $_SESSION['playername'] = $_POST['playername']; header('Location: membre.php'); exit(); } // si on ne trouve aucune réponse, le visiteur s'est trompé soit dans son pseudo, soit dans son mot de passe elseif ($data[0] == 0) { $erreur = '<font color="red">Compte non reconnu.</font>'; } // sinon, alors la, il y a un gros problème :) else { $erreur = '<font color="red">Probème dans la base de données : plusieurs membres ont les mêmes identifiants de connexion.</font>'; } } else { $erreur = '<font color="red">Veuillez renseigner votre pseudo/mdp.</font>'; } } ?>
Merci d'avance !