Existe-t-il un moyen de savoir quel type de cryptage/encodage est utilisé ?
Par exemple, je teste une application web qui stocke le mot de passe dans la base de données dans un format crypté (WeJcFMQ/8+8QJ/w0hHh+0g==
). Comment puis-je déterminer le hachage ou le cryptage utilisé ?
Edit : Je viens de remarquer un script très cool nommé hashID. Le nom le décrit assez bien.
D'une manière générale, l'utilisation de l'expérience pour faire des suppositions éclairées est la façon dont ces choses sont faites.
Voici une liste avec un très grand nombre de sorties de hachage afin que vous sachiez à quoi ressemble chacune d'entre elles et que vous puissiez créer des signatures/patrons ou simplement vérifier optiquement.
- [Online Hash Crack Hashes Generator](https://www.onlinehashcrack.com/hash-generator.php)
- InsidePro Software Forum > Hash Types](https://web.archive.org/web/20160403135857/https://forum.insidepro.com/viewtopic.php?t=8225) (via Archive.org)
Il y a deux choses *principales* auxquelles vous devez d'abord faire attention :
- la longueur du hachage (chaque fonction de hachage a une longueur de sortie spécifique)
- l'alphabet utilisé (s'agit-il de lettres anglaises ? des chiffres de 0 à 9 et de A à F en hexadécimal ? quels sont les caractères spéciaux, le cas échéant ?)
Plusieurs programmes de craquage de mots de passe (John the ripper par exemple) appliquent une certaine correspondance de motifs sur l'entrée pour deviner l'algorithme utilisé, mais cela ne fonctionne que sur des hachages génériques. Par exemple, si vous prenez n'importe quelle sortie de hachage et que vous faites tourner chaque lettre par 1, la plupart des schémas de correspondance échoueront.
Le seul moyen est de deviner. Avec l'expérience, les suppositions seront plus correctes.
Par exemple : En se basant sur la longueur de la sortie : La sortie MD5 est de 128 bits, soit 16 octets, la sortie SHA1 est de 160 bits, soit 20 octets. Basé sur le jeu de caractères de la sortie : BASE64 produit une sortie avec des caractères imprimables.
En fin de compte, c’est l’approche par essais et erreurs qui vous apprend comment faire.
Le seul moyen est de disposer de métadonnées qui vous le disent. Par exemple, j'ai travaillé récemment avec des PDF, et le format inclut un dictionnaire contenant le filtre, l'algorithme, la taille de la clé, etc. Mais si tout ce que vous avez est le texte chiffré, alors tout ce que vous avez est un blob opaque de données.