Protection logicielle – Cryptage et décryptage d’une chaîne de caractères

J’ai été amené a installer une protection logicielle sur un programme écrit en Visual Basic (VB express 2010) par un de mes collègues.
Le système fonctionne de la manière suivante:
Hubert est la personne qui commercialise le logiciel
Louis est l’acquéreur potentiel

Louis télécharge sur le site de Hubert  le pack logiciel. Il lance la procédure de Setup et sur son bureau 3 raccourcis pointant sur les applications suivantes sont installés.

Le  formulaire d’enregistrement du logiciel

Louis remplit les champs du formulaire puis clique sur Envoyer. Hubert reçoit un mail contenant toutes les informations saisies par Louis mais en sus Louis a à son insu lancé une routine permettant de récupérer le numéro de série de son disque dur, Hubert est maintenant en possession de cette information.
Hubert lance la moulinette Excel (Macro VBA) qui va générer la clef. Un XOR et des opérations complémentaires de cryptage vont être effectués avec une chaîne de caractères connue de Hubert uniquement et écrite en dur dans la routine VBA excel.

Dès le règlement effectué Hubert transmet à Louis la clef de déverrouillage
Louis ouvre le  formulaire qui lui permettra de déverrouiller le logiciel.

Quand il clique sur Valider on récupère le N° de série du disque dur de la machine puis on vérifie que la clef saisie est valide exécutant une routine VBA qui exécutera les opérations dans l’ordre inverse de ce qui a été fait dans la routine VBA excel lancée par Hubert.
On s’assure alors que le N° de série du dique dur sur lequel doit être installé l’application finale est bien identique à ce qui a été transmis par Mail à Hubert.
Dans l’affirmative on écrit une clef dans la base de registres qui permettra d’utiliser le logiciel.
A chaque lancement de l’application finale cette clef de registre est lue et autorise ou non son exécution .

VBA Excel

A noter que la partie “Décryptage sert uniquement utilisée pour décrypter la clef et vérifier que tout est OK. C’est ce code qu’il faudra très légèrement remanier pour l’intégrer dans le formulaire de déverrouillage du logiciel écrit lui avec VB express 2010.
Je m’en tiens la.pour l’instant et pour ce qui est du code VB Express 2010 je diffuserai le code ultérieurement