begin process at 2012 05 29 12:12:32
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C

 > 

Algorithme

 > 

Compression, Split & Cryptage

 > 

Générateur et vérification de numéro de série


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Générateur et vérification de numéro de série

jeudi 19 octobre 2006 à 14:43:03 | Générateur et vérification de numéro de série

fuliculi

Bonjour à tous,

je souhaite protéger un logiciel que je développe dans le cadre de mon taf et je souhaite le 'protéger' (tout est relatif) avec un numéro de série.

Je n'ai pas trouvé d'algo tout fait et personnalisable (en même temps j'ai pas cherché très loin) alors j'ai cherché un peu de mon côté et j'ai pensé à une méthode : utiliser la génération de clé MD5.

Bref résumé de ce qu'est une clé MD5 :
Une clé MD5 est une série de chiffre générée depuis un fichier et une table de nombres connue. La longueur de cette série reste constante (32) et indépendante de la taille de ce fichier (comme un numéro de série!). Cette méthode permet par exemple de télécharger un fichier volumineux et sa clé md5 et d'appliquer cette méthode au fichier et de comparer les 2 clé md5 (celle fournie et celle recalculée) pour vérifier qu'elles sont identiques et donc s'assurer que fichier téléchargé est complet et sans erreur (un simple bit inversé et la clé MD5 devient complètement différente)

Maintenant, comment appliquer cette méthode pour la génération de numéro de série? Exemple :
Remplacer dans l'algo de génération de clé MD5 (publique) la table initiale (donc inconnue du publique) et remplacer le fichier à coder par une série de chiffre de taille constante. Ensuite le numéro de série se compose ainsi :

XXXXXX YYYYYYYYYY

avec X : les chiffres qui vont servir à générer la clé MD5
avec Y : les n premiers chiffres de la clé MD5 (une clé de plus de 32 chiffres, ça va être lourd à saisir)


Le principe d'utilisation :
- Le programmeur saisie une série aléatoire de 5 chiffres, genre 12345 (complètement aléatoire :)
- Le programmeur applique l'algo modifié à cette série et obtient  35a47d68f435c48764f653e454b6876a
- Il décide que le numéro de série comprendra les 10 premiers chiffres de la clé, soit : 35a47d68f4
- Sa clé devient alors 12345 35a47d68f4, soit 1234535a47d68f4 pour avoir une série unique sans coupure (pour ne pas que la longueur de la première série soit connue)

Du côté de l'utilisateur final :
- L'acquéreur (légalement hein ;) du logiciel devra saisir au premier lancement du logiciel cette série : 1234535a47d68f4 (qu'il aura choppé sur la mule si le logiciel était trop cher ;)
- Le logiciel récupère la première série de chiffres de longueur connue (5) et obtient : 12345 (comme de par hasard!)
- Avec le même algo, il en déduit la clé MD5 (avec la même table personnalisée) et obtient 35a47d68f435c48764f653e454b6876a
- Il compare les chiffres restants de la série saisie par l'utilisateur (35a47d68f4) au 10 premiers caractères de la clé MD5 recalculé (35a47d68f435c48764f653e454b6876a)
- Le résultat étant identique, il accepte la clé et poursuit le chargement du logiciel et sauvant le numéro de série dans un fichier texte qu'il re-vérifiera à chaque lancement (donc pas moyen de caroter au second lancement)

La grande question de cette algo est : qu'en est-il de sa robustesse notamment face au reverse-engineering?
Si je l'applique, et si j'ai l'accord du boss, je diffuserai peut-être l'algo pondu (avec une table différente de la notre bien entendu ;)


Après, pour ce rapprocher des standards avec un modèle du style :
CCCC LLLL CCCC LLLL CCCC
avec C un chiffre et L un lettre (oui, avant on avait des a, b, c, d, e et f car c'était en hexa), on peut simplement décider que les lettres se transformeront en chiffres et inversement pour homogénéiser la série. A partir du moment ou l'algo est appliqué dans les deux sens (création, vérification), ça devrait fonctionner.
vendredi 20 octobre 2006 à 13:00:04 | Re : Générateur et vérification de numéro de série

Kleidp

Salut,

Je m'était interressé il y a peut de temps sur la façon de protéger au mieux un logiciel.

Alors premier point, celui voulant passer outre le sérial ne va pas s'embéter à trouver le code exacte. Il va le désassembler ou le débugger et à un moment, fatalement, il va tomber sur ta comparaison et l'inversera tout simplement. Aucun système de protection n'est infaillible, le truc est de multiplier les protections différentes : AntiDebugger (rendu inefficace par les anti-antiDebugger :), compresser d'exécutable (rendu inefficace par les décompresseurs :), obfusquer le code (on passe outre avec un peut d'attention :), CheckSum, BMP, layeur de cryptage, hash ..... bref chacun à une parade. Les protections citées ne pauseront pas de problèmes aux crackeurs expérimentés (sécurisé une appli est un métier à part entière), le but est de décourager le vilain (plutôt débutant). Aura t'il envie de passer du temps à déplomber ton application ? ...

Au sujet du MD5:
Comme tu l'as compris cela ne sert à rien de mettre cette protection seule, autant écrire le bon pass directement dans le code (lol à ne surtout jamais faire:). Si tu voulais bien faire les choses, ta clef doit être vraiment aléatoire (pas de rand()) et non symétrique, des classes existe déjà.

Voila, j'espère ne pas t'avoir décourager, et bon code .

Ah oui des liens pour aider:
http://www.openrce.org
http://bigtick.pastnotecut.org/tutorials/cp.html
mais le mieux est de se renseigner directement sur les sites de crack.
samedi 17 février 2007 à 11:07:40 | Re : Générateur et vérification de numéro de série

icare3000

je cherche un generateur de numero de serie pour visual planing


Cette discussion est classée dans : chiffres, série, numéro, clé, md5


Répondre à ce message

Sujets en rapport avec ce message

trouver le numéro de port série bluetooth [ par hdaniel ] Bonjour, Lorsque l'on créé un port virtuel bluetooth, un numéro de port lui est attribué. Ce numéro change à chaque fois. Comment connaitre ce numér créer un numéro de série [ par progrima ] je veux créer un numéro de série à partir des informations suivants : société, application, modules accordées, nombre d'utilisateur. je cherche une fo sérialisation d'une application [ par progrima ] bonjour tout le monde! je cherche à sécuriser des applications qui existent déjà et pour cela j'ai pensé à génerer des numéros de série, j'explique: 1 Addition de deux chiffres sans prise en compte des retenues ? [ par Skysurfeur ] Je suis confronté à une difficulté, je dois réaliser une addition de deux chiffres ( int) et le résultat devra être la somme des deux sans prise en co fichier ligne de commande...TROU NOIR !! [ par sphaxslayer ] Salut tout le monde ! Bon alors pas d'cailloux s'il vous plait...j'ai plus fait de C++ depuis 2 ans et j'voudrais m'y remettre...sauf que j'ai un sou Fpart (chiffres après la virgule) [ par CsM Skate ] Bonjour, pour ceux qui connaissent les joies de la programmation de calculatrices (Ti pour ma part), vous connaissez surment la fonction fPart() qui p Détection et accès aux données d'une clé USB [ par doudou24 ] Bonjour, Je souhaite créer une application qui détecte la connexion d'une clé usb et accède aux données avec MFC sous VC++. J'ai vu qu'il fallait uti GetSize mais pour un dossier [ par shadow1779 ] Bonjour, on m'a appris a utiliser GetFileSize pour recevoir la taille d'un fichier, y a til une fonction de l'api ou dans les libc standard afin d'av Envoie et reception par liaison série d'un entier [ par birmingham ] Bonjour, Voilà j'ai besoin de transmettre un entier depuis un PC vers un microconotroleur (PIC16F84).Mais je débute totalement dans ce domaine. Quelqu Changer le numéro du port COM [ par mathieu_carter ] Slt,Voici mon problème:  J'utilise un logiciel X qui utilise le port COM 1 et 2 et j'ai installé une clé Bluetooth sur mon PC utilisant les ports COM


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,888 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales