Jump to content
×
×
  • Create New...

Le Hash de mot de passe sous battle.net


Kronus
 Share

Recommended Posts

Bonjour, Bonsoir

 

Me revoilà avec un autre tutoriel, j'essaie de compléter la section world of warcraft du mieux que je peux, donc aujourd'hui on va apprendre ensemble comment hasher un mot de passe pour world of warcraft.

 

SHA256Hash email;
email.UpdateData(name);
email.Finalize();
 

 

1) Un premier hash de l'e-mail est fait, en sha256. Toutes les chaînes manipulées doivent forcément être mises en majuscules, ça donne pour le premier hash (en PHP) :

 

$hashMail = strtoupper(hash('sha256', strtoupper($email));
 

 

SHA256Hash sha;
sha.UpdateData(ByteArrayToHexStr(email.GetDigest(), email.GetLength()));
sha.UpdateData(":");
sha.UpdateData(password);
sha.Finalize();

return ByteArrayToHexStr(sha.GetDigest(), sha.GetLength(), true);
 

 

2) Ensuite, pour le hash complet, c'est en réalité un hash en sha256 renversé du hash de l'e-mail, concatené à ":", puis au mot de passe de l'utilisateur.

La concaténation donne donc :

 

$concat = $hashMail.":".$password;
 

 

 

3) Par défaut, la fonction "hash" de PHP renvoi une représentation hexadécimale du hash, alors qu'en C++, c'est un tableau de bytes qui est renvoyée, on est donc obligé d'utiliser "ByteArrayToHexStr" pour convertir ce tableau en chaîne lisible (CF "ByteArrayToHexStr(email.GetDigest(), email.GetLength())"). Pour le hash de l'e-mail, on utilisera donc la fonction hash comme on l'a fait, car elle renvoi directement cette chaîne lisible, par contre pour ce qui est du hash final, étant donné qu'on doit le renverser, on va devoir passer le paramètre "$raw_output" à true pour que la fonction "hash" ne nous renvoi non plus une représentation hexadécimale, mais une représentation binaire. Ensuite on renversera cette représentation binaire grâce à "strrev", puis on la convertira de nouveau en représentation hexadécimale, grâce à bin2hex, ce qui donne au final :

 

$hash = strtoupper(bin2hex(strrev(hash('sha256', $concat, true))));
 

 

4) Soit en mode plus direct:

 

$hash = 
strtoupper(bin2hex(strrev(hash('sha256', strtoupper(hash('sha256', strtoupper($email)).":".strtoupper($password)), true))));
 

 

Voilà, j'espère avoir été assez claire dans les explications et j'espère surtout que ça servira à plus d'un étant donné qu'il y a peu d'infos là dessus.

 

Source: wow-emu

 

Cordialement,

Vayne

Edited by iThorgrim
  • J'adore 1
Link to comment
Share on other sites

 Share



  • Flux d'Activité

    1. 0

      Serveur cheat 2.51

    2. 0

      Partage Atom Protocol Synchronizer 2.65

    3. 5

      Shiva.international serveur privé metin2 Oldschool Start 16.09.2022

    4. 1

      Antares2.to | modern Old-/Middleschool | START 07.10.22 | International Server

    5. 0

      Projet Genesis

    6. 5

      Shiva.international serveur privé metin2 Oldschool Start 16.09.2022

    7. 0

      Metin2 Champions - Accès anticipé

  • Recently Browsing

    • No registered users viewing this page.

Important Information

Terms of Use / Privacy Policy / Guidelines / We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.