Rappel : ces enquêtes doivent être résolues SANS lire une seule ligne de code.
Cette fonctionnalité permet de calculer le hash (SHA-256) d'un fichier uploadé par l'utilisateur.
Tout a l'air de bien marcher, non ?
Indice 1
Cette application est elle vraiment un long fleuve tranquille ?
Indice 2
Observer la mémoire utilisée par l'application
Cette fonctionnalité tente d'inverser le hash (SHA-256) en cherchant dans une table SQL préconstruite.
Pourquoi c'est si lent ?
Indice 1
Si on faisait une filature SQL ?
Indice 2
On approche de la fin de la garde à vue du suspect SQL. Coupable ou innocent ?
Indice 3
Et si le coupable était ailleurs ?
Cette fonction est une version simplifiée de l'élément central du minage de bitcoin : le calcul d'un bloc.
Il s'agit de trouver, en fonction de l'input x
de l'utilisateur, un entier n
tel que
sha256(x:n)
commence par (au moins) un certain nombre de 0
(ce nombre de 0
est appelé difficulté).
Par exemple, pour une difficulté de 5
(difficulté par défaut de cette application) et pour l'input toto
(x
=toto
), il faut trouver 1029337
car sha256(toto:1029337)
=00000deca0f949c4bd452fd1b2aa5f6ed2ebe526f7665003fdaef39199165d29
.
Ca a l'air de bien marcher, non ?
Indice 1
Est ce qu'il y aurait pas du travail non déclaré ?
Indice 2
J'ai l'impression de voir double, pas vous ?