Voici le lien du keygen de Baboon (avec beaucoup d'humour) : http://venom630.free.fr/geo/blog/keygenme/keygen_baboon.rar.
De plus, l'explication de Baboon est tellement claire que je préfère vous la diffuser :
Je suis content que mon keygen t'ai plu ;)
pour la génération de la clef je me base sur la clef intermédiaire qui permet le calcul du "hash" de fin mais aussi les caractères du serial en effet on a :
(pour simplifier quand j'écrit serial, ca correspond en fait à l'indice de correspondance de la lettre du serial dans le tableau "246789BCDEFGHJKMNPRTVWXZ")
nibbles[i] = (serial[i] * 24 + serial[i+1]) >> 4
et
nibbles[i+1] = (serial[i] * 24 + serial[i+1]) & 0xFF
de plus le bit n° i/2 de la var globale 00404010 est set si on a serial[i] * 24 + serial[i+1] > 0xFF
donc pour générer un serial il suffit de :
génèrer 16 nibbles (int <= 0xF) de faire le hash de ces nibbles & 0xFF => on obtient le résultat que doit valoir la var globale en 0x404010
ensuite pour générer les chars du sérial il suffit de faire :
a = nibbles[i] << 4 | nibbles[i+1]
serial[i] = a / 24 si le bit i/2 n'est pas set dans le hash sinon a + 0x100 / 24
et
serial[i+1] = a % 24 si le bit i/2 n'est pas set dans le hash sinon a + 0x100 % 24
comme ca on a bien l'égalité
nibbles[i] = serial[i] * 24 + serial[i+1] >> 4
et
nibbles[i+1] = serial[i] * 24 + serial[i+1] & 0xFF
et le bit est bien set quand il faut
voila voila, je ne sais pas si c'est clair ;)
pour la génération de la clef je me base sur la clef intermédiaire qui permet le calcul du "hash" de fin mais aussi les caractères du serial en effet on a :
(pour simplifier quand j'écrit serial, ca correspond en fait à l'indice de correspondance de la lettre du serial dans le tableau "246789BCDEFGHJKMNPRTVWXZ")
nibbles[i] = (serial[i] * 24 + serial[i+1]) >> 4
et
nibbles[i+1] = (serial[i] * 24 + serial[i+1]) & 0xFF
de plus le bit n° i/2 de la var globale 00404010 est set si on a serial[i] * 24 + serial[i+1] > 0xFF
donc pour générer un serial il suffit de :
génèrer 16 nibbles (int <= 0xF) de faire le hash de ces nibbles & 0xFF => on obtient le résultat que doit valoir la var globale en 0x404010
ensuite pour générer les chars du sérial il suffit de faire :
a = nibbles[i] << 4 | nibbles[i+1]
serial[i] = a / 24 si le bit i/2 n'est pas set dans le hash sinon a + 0x100 / 24
et
serial[i+1] = a % 24 si le bit i/2 n'est pas set dans le hash sinon a + 0x100 % 24
comme ca on a bien l'égalité
nibbles[i] = serial[i] * 24 + serial[i+1] >> 4
et
nibbles[i+1] = serial[i] * 24 + serial[i+1] & 0xFF
et le bit est bien set quand il faut
voila voila, je ne sais pas si c'est clair ;)
Pour ma part, je me contentais de faire un brute-forcing sur les 4 derniers digits du keygen jusqu'à générer une clef valide - les premiers étant générés aléatoirement. Baboon nous a donc tous mis au tapis.
Désolé pour ceux qui n'ont pas eu le temps de résoudre l'épreuve. Elle est toujours disponible ici : http://venom630.free.fr/geo/blog/keygenme/keygenme.exe.
A+
Geo
C'était vraiment tordu ton truc...
RépondreSupprimerDisons qu'il faille y passer du temps. Tu aurais très bien pu y arriver.
RépondreSupprimerJ'en doute, j'ai pas compris l'explication...
RépondreSupprimerEnfin j'ai lu vite fait ^^