2 votes

Générer une clé d'activation à partir d'un grand nombre de numéros de série et de clés d'activation

J'ai un tas de numéros de série et leurs clés d'activation correspondantes pour un vieux logiciel. Depuis que je les ai installés, j'ai perdu un certain nombre de clés d'activation (mais j'ai toujours le numéro de série). J'ai encore un ensemble de données d'environ 20 clés et même en y jetant un coup d'œil, je peux dire qu'il y a une méthode pour déterminer les clés d'activation. Etant donné le grand nombre de données dont je dispose, existe-t-il un moyen de résoudre à rebours les clés d'activation pour les informations que j'ai perdues ?

exemple de numéro de série : 14051 Clé d'activation : E9E9F-9993432-45543

1voto

atomicinf Points 2291

Ce que vous essayez de faire, c'est de créer une fonction qui associe les numéros de série aux clés d'activation. Sans en savoir plus sur la nature de la fonction, cela peut aller de très facile (un polynôme avec seulement quelques termes) à très difficile (une fonction à plusieurs niveaux impliquant de nombreux blocs XOR, des tables de substitution, des programmes de clés compliqués, ...).

Si vous avez accès à la routine du vérificateur de clé (par exemple par désassemblage - qui est presque toujours contre les CLUF des logiciels commerciaux), vous disposez alors d'une routine qui vous indique si une clé d'activation donnée est correcte ou non pour un numéro de série donné. Si cela a été fait en calculant une clé d'activation pour un numéro de série, alors vous avez pratiquement terminé. Si cela a été fait en calculant la fonction inverse sur la clé, votre tâche est un peu plus difficile : vous devez inverser cette fonction pour récupérer l'algorithme de dérivation de la clé, ce qui n'est peut-être pas si facile. Si vous devez résoudre des problèmes mathématiques difficiles (par exemple, le problème du logarithme discret) parce que le système dépend de la cryptographie à clé publique, vous espérez que les valeurs auxquelles vous avez affaire sont suffisamment petites pour que vous puissiez procéder par force brute ou utiliser un algorithme connu (par exemple, l'algorithme rho de Pollard) dans un temps de calcul réalisable.

Dans tous les cas, vous devrez vous familiariser avec le désassemblage et le débogage, et espérer qu'il n'existe pas de mesures anti-débogage.

Dans le cas contraire, le problème est beaucoup plus difficile : il faut faire des suppositions éclairées et les essayer (par exemple en essayant de faire un ajustement polynomial), en espérant que tout ira bien. En raison de la très grande variété de fonctions différentes qui peuvent s'adapter à n'importe quel ensemble d'entrées et de sorties (mathématiquement indénombrables, mais en pratique limitées par la taille du code source), il est impossible d'essayer d'effectuer une attaque en connaissance de cause sur le système l'algorithme lui-même est généralement irréalisable.

0voto

ddyer Points 1546

Tout dépend du degré de stupidité du projet, mais je pense que c'est peu probable. Il n'y a pas de méthodologie fixe, mais le domaine général est le même que celui du décryptage.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X