mercredi 12 août 2009

KeygenMe - Solution

En dix jours, vous étiez très peu à avoir tenté de réaliser un keygen pour ce challenge : http://geo0w.blogspot.com/2009/08/challenge-keygenme.html. Et il n'y a eu qu'une personne pour avoir proposé une solution. Un grand bravo à Baboon. Quant à 0vercl0k, il n'était pas loin de la solution non plus.

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 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

3 commentaires:

  1. C'était vraiment tordu ton truc...

    RépondreSupprimer
  2. Disons qu'il faille y passer du temps. Tu aurais très bien pu y arriver.

    RépondreSupprimer
  3. J'en doute, j'ai pas compris l'explication...
    Enfin j'ai lu vite fait ^^

    RépondreSupprimer