IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Impossible de décrypter un hash (md5)


Sujet :

Langage PHP

  1. #1
    Membre à l'essai
    Femme Profil pro
    Webmaster
    Inscrit en
    Octobre 2015
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 28
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Octobre 2015
    Messages : 16
    Points : 11
    Points
    11
    Par défaut Impossible de décrypter un hash (md5)
    Bonjour,

    Je vais expliquer brièvement ce que j'essaie de faire, je suis entrain de développer un espace membre pour un jeu que je développe en C++ et je souhaite faire une page de connexion, et pour ce faire j'ai besoins de comparer le hash dans la BDD pour pouvoir se connecter au compte.
    Exemple, mon pseudo est admin et mon mot de passe 1234, je souhaite qu'ont puisse se connecter qu'avec le bon mot de passe et pseudo (un espace membre quoi)
    J'ai donc pris un script sur internet, puis je l'ai modifier à ma guise (en y rajoutant le MD5)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
     
    <?php
    /* Indique le bon format des entêtes (par défaut apache risque de les envoyer au standard ISO-8859-1) */
    header('Content-type: text/html; charset=UTF-8');
     
    /* Création d'une fonction - utilisée dans la récupération des variables - qui teste la configuration get_magic_quotes_gpc du serveur.
    Si oui, supprime avec la fonction stripslashes les antislashes "\" insérés dans les chaines de caractère des variables gpc (GET, POST, COOKIE) */
    function Verif_magicquotes ($chaine) 
    {
    if (get_magic_quotes_gpc()) $chaine = stripslashes($chaine);
     
    return $chaine;
    } 
     
    /* Initialisation du message de réponse */
    $message = null;
     
     
    /* Si le formulaire est envoyé */
    if (isset($_POST['pseudo'])) 
    {
     
        /* Récupération des variables issues du formulaire
        Teste l'existence les données post en vérifiant qu'elles existent, qu'elles sont non vides et non composées uniquement d'espaces.
        (Ce dernier point est facultatif et l'on pourrait se passer d'utiliser la fonction trim())
        En cas de succès, on applique notre fonction Verif_magicquotes pour (éventuellement) nettoyer la variable */
        $pseudo = (isset($_POST['pseudo']) && trim($_POST['pseudo']) != '')? Verif_magicquotes($_POST['pseudo']) : null;
        $pass = md5(isset($_POST['pass']) && trim($_POST['pass']) != '')? Verif_magicquotes($_POST['pass']) : null;
     
     
        /* Si $pseudo et $pass différents de null */
        if(isset($pseudo,$pass)) 
        {
             /* Connexion au serveur : dans cet exemple, en local sur le serveur d'évaluation
             A MODIFIER avec vos valeurs */
             $hostname = "localhost";
             $database = "jeu";
             $username = "root";
             $password = "140797";
     
             $connection = mysql_connect($hostname, $username, $password) or die(mysql_error());
     
             /* Connexion à la base */
             mysql_select_db($database, $connection);
     
             /* Indique à mySql de travailler en UTF-8 (par défaut mySql risque de travailler au standard ISO-8859-1) */
             mysql_query("SET NAMES 'utf8'");
     
             /* Préparation des données pour les requêtes à l'aide de la fonction mysql_real_escape_string */
             $nom = mysql_real_escape_string($pseudo);
             $password = mysql_real_escape_string(md5($pass));
     
     
             /* Requête pour récupérer les enregistrements répondant à la clause : 
             champ du pseudo et champ du mdp de la table = pseudo et mdp postés dans le formulaire*/
            $requete = "SELECT * FROM MyGameDB WHERE name = '".$nom."' AND password = '".$password."'";  
     
             /* Exécution de la requête */
             $req_exec = mysql_query($requete) or die(mysql_error());
     
             /* Création du tableau associatif du résultat */
             $resultat = mysql_fetch_assoc($req_exec); 
     
             /* Les valeurs (si elles existent) sont retournées dans le tableau $resultat;  */
             if (isset($resultat['pseudo'],$resultat['pass']))  
                   {
                     /* Démarre la session et enregistre le pseudo dans la variable de session $_SESSION['login']
                     qui donne au visiteur la possibilité de visiter les pages protégées.  */
                     session_start();
                     $_SESSION['login'] = $pseudo;
     
                     /* A MODIFIER Remplacer le '#' par l'adresse de votre page de destination, sinon ce lien indique la page actuelle. */
                     $message = 'Bonjour '.htmlspecialchars($_SESSION['login']).' <a href = "#">Cliquez ici pour vous connecter</a>';
                    }
                    else
                    {   /* Le pseudo ou le mot de passe sont incorrect */
                    $message = 'Le pseudo ou le mot de passe sont incorrect';
                    } 
     
        }
        else 
        {  /* au moins un des deux champs "pseudo" ou "mot de passe" n'a pas été rempli */
        $message = 'Les champs Pseudo et Mot de passe doivent être remplis.';
        }
    }
    ?>
    Sur la page d'inscription, sa fonctionne mais quand je me connecte j'ai ce message:

    Le pseudo ou le mot de passe sont incorrect
    Je m'en remet donc à vous..
    Merci, cordialement.

  2. #2
    Expert éminent sénior
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 440
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 440
    Points : 15 814
    Points
    15 814
    Par défaut
    les "md5(" à la ligne 51 à l'air d'être bien placé mais pas celui de la ligne 28

    pour savoir ce qu'il se passe, prend l'habitude d'afficher les contenus de tes variables pendant les tests pour vérifier qu'ils contiennent bien ce que donc tu as besoin.

  3. #3
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    plutôt :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    pass = isset($_POST['pass']) && trim($_POST['pass']) != '') ? md5(Verif_magicquotes($_POST['pass'])) : null;
    sinon ce code est vieux : magic_quotes, extension mysql et md5 sont obsolètes

  4. #4
    Membre à l'essai
    Femme Profil pro
    Webmaster
    Inscrit en
    Octobre 2015
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 28
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Octobre 2015
    Messages : 16
    Points : 11
    Points
    11
    Par défaut
    Effectivement, celui à la ligne 28 étais mal placer je viens de m'en rendre compte.
    Je viens de trouver mon erreur:

    Il suffisais de remplacer:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if (isset($resultat['pseudo'],$resultat['pass']))
    par:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if (isset($resultat['name'],$resultat['password']))
    Je suis bête..
    Merci à toi

  5. #5
    Expert confirmé
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 470
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 470
    Points : 5 831
    Points
    5 831
    Billets dans le blog
    1
    Par défaut
    D'abord, xnooztv1, pense à passer ta discussion en résolue, qu'on sache que plus la peine de chercher une solution.

    Citation Envoyé par sabotage Voir le message

    sinon ce code est vieux : magic_quotes, extension mysql et md5 sont obsolètes
    que l'extension MySQL soit obsolète, je le sais depuis un moment mais pour les 2 autres, que proposes-tu Sabotage ?

  6. #6
    Expert éminent sénior
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Points : 16 545
    Points
    16 545
    Billets dans le blog
    12
    Par défaut
    Salut,

    [mode=costume_de_sabotage_on]
    ben magic_quotes a carrément été supprimé à compter de PHP 5.4.0 et suivant
    Et pour le hash, ce n'est pas ce qui manque en PHP : un peu de lecture alogos de hachage et utilisation ici.

    Personnellement, j'ai le plus souvent utilisé "whirlpool"
    [mode=costume_de_sabotage_off]

  7. #7
    Membre émérite

    Profil pro
    Inscrit en
    Mai 2008
    Messages
    1 576
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 1 576
    Points : 2 440
    Points
    2 440
    Par défaut
    Citation Envoyé par laurentSc Voir le message
    D'abord, xnooztv1, pense à passer ta discussion en résolue, qu'on sache que plus la peine de chercher une solution.


    que l'extension MySQL soit obsolète, je le sais depuis un moment mais pour les 2 autres, que proposes-tu Sabotage ?
    Je suis pas Sabotage non plus, mais pour les mots de passe il ne faut pas utiliser un hash comme md5 ou shaXXX qui ne sont pas conçus pour être cryptographiquement sécurisés, sont trop rapides et vulnérables à un timing attack. Il y a une seule bonne solution, à moins que tu aies des connaissances poussées en cryptographie: password_hash()

Discussions similaires

  1. [Hash] MD5.. mouais ? [+ sondage]
    Par xxkirastarothxx dans le forum Algorithmes et structures de données
    Réponses: 7
    Dernier message: 11/08/2009, 22h52
  2. hash MD5 en C, pas facile !
    Par jack_x4 dans le forum C
    Réponses: 14
    Dernier message: 08/03/2009, 09h14
  3. reconnaitre hash md5
    Par killuaster dans le forum Modules
    Réponses: 2
    Dernier message: 15/10/2006, 19h54
  4. Retrouver texte clair à partir d'un hash MD5
    Par webrider dans le forum Administration
    Réponses: 4
    Dernier message: 06/09/2006, 18h45
  5. [phpBB] Récupération des hash MD5 et login (phpbb) pour transfert
    Par julian-brokendolls dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 8
    Dernier message: 29/03/2006, 18h29

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo