Protéger son programme

Messages postés
55
Date d'inscription
dimanche 14 août 2011
Statut
Membre
Dernière intervention
1 février 2013
- - Dernière réponse :  Utilisateur anonyme - 17 déc. 2012 à 12:31
Bonjour,
Suite à mes recherches qui n'ont rien donné je vous pose donc la question :
J'essaie de protéger mon application de sorte à ce que lorsqu'elle s'installe sur un PC et ne peut être installer que sur celui-ci, un peu à la manière d'un numéro de série mais le problème et que je ne connais pas de code ou quelque chose de ce genre pour la protéger.
J'ai fais des recherches et j'ai trouvé des sujets qui parlait de hash, de protection par lecture de l'adresse ip du processeur, de la carte mère un peu à la manière de Windows mais je ne sais pas comment l'implanter dans mon application .
Si quelqu'un pouvait me donner une solution ^^. Merci d'avance

Je code sous VB 2010 express.
Afficher la suite 

20/38 réponses

Messages postés
1211
Date d'inscription
dimanche 20 avril 2003
Statut
Membre
Dernière intervention
4 juin 2016
8
0
Merci
Bonjour,

Pas clair non plus.
D'après ce que je comprends, tu veux protéger ton application
de sorte à ce que lorsqu'elle s'installe sur un PC et ne peut être installer que sur celui-ci

tu sais donc d'avance quel est le SEUL heureux élu.

C'est pas un peu restrictif !!!

Calade
Commenter la réponse de Calade
Messages postés
55
Date d'inscription
dimanche 14 août 2011
Statut
Membre
Dernière intervention
1 février 2013
1
0
Merci
Eh bien oui c'est restrictif et j'en suis conscient et c'est le but parce que dans le milieu ou je suis c'est ce qu'il faut .
Mais il n'y a pas qu'UN SEUL élu mais il y en a 30 donc je voudrais pouvoir l'installer sur 30 postes différents et chaque poste aurait une clé d'avtivation
Commenter la réponse de foussouy
Messages postés
55
Date d'inscription
dimanche 14 août 2011
Statut
Membre
Dernière intervention
1 février 2013
1
0
Merci
PS : mais sans connaître précisément les PC sur lesquels il s'installera.
Commenter la réponse de foussouy
Messages postés
1211
Date d'inscription
dimanche 20 avril 2003
Statut
Membre
Dernière intervention
4 juin 2016
8
0
Merci
Au lancement de ton programme tu peux très bien vérifier l'existence d'une clé d'activation (que tu fournis aux seuls ayant-droits). Tu la stockes dans la base de registre (par exemple) de manière cryptée.

Si elle n'existe pas, tu la demandes et tu la vérifies et si pas OK, tu fermes ton appli.


Calade
Commenter la réponse de Calade
Messages postés
55
Date d'inscription
dimanche 14 août 2011
Statut
Membre
Dernière intervention
1 février 2013
1
0
Merci
J'y ai penser aussi mais je ne sais pas comment vérifier l'existence de la clé dans le registre Windows et comment la crypter aussi. Pour la créer c'est bon mais pour le cryptage, aïe..
Commenter la réponse de foussouy
Messages postés
1211
Date d'inscription
dimanche 20 avril 2003
Statut
Membre
Dernière intervention
4 juin 2016
8
0
Merci
Simple:
Bien que tu aies dit que tes recherches n'avaient rien donné:

En haut de cette page tu tapes "Base registre", tu choisis Tous les codes en .NET et tu envois (prévoir un parapluie sous l'avalanche de réponses.

Même chose avec "cryptage".

Et si ça ne suffit pas,utilises Google.


Calade
Commenter la réponse de Calade
Messages postés
55
Date d'inscription
dimanche 14 août 2011
Statut
Membre
Dernière intervention
1 février 2013
1
0
Merci
Ok je vais chercher et je te rends la réponse :) Merci de ton aide
Commenter la réponse de foussouy
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
215
0
Merci
Bonjour,
Moi, je veux savoir comment appeler Paul au téléphone pour lui demander de m'indiquer quel est son numéro de téléphone !
La solution que tu envisages, foussouy, implique deux étapes :
- étape 1 : exécution d'un programme sur la machine d'accueil === >> création de la clé correspondante
- étape 2 : livraison d'une appli avec vérification de ce que cette clé est la bonne

Toute autre "démarche" ne te protègerait nullement de l'utilisation de ton appli par un tiers qui l'installerait "à neuf".
Si tu veux éviter ces étapes : la seule solution raisonnable est celle de l'utilisation d'une clé USB DONGLE. Encore faut-il que ton appli soit chère et gourmandée à ce point qu'elle vaille ces frais.


________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ
Commenter la réponse de ucfoutu
Messages postés
55
Date d'inscription
dimanche 14 août 2011
Statut
Membre
Dernière intervention
1 février 2013
1
0
Merci
J'ai donc cherché pour la base registre et j'ai trouvé mais pour le cryptage je n'ai rien.
Et effectivement c'est exactement ce que je veux faire, il me faut donc un premier logiciel qui crée la clé que le client me renvoie puis que j'associe au logiciel dans le code source pour chaque compilation et chaque clé mais le client pourra recréer la clé sur une autre machine ?
Commenter la réponse de foussouy
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
215
0
Merci
mais le client pourra recréer la clé sur une autre machine

Non, si la clé que tu lui donnes en réponse est le résultat d'un programme dont la base est le numéro matériel de son disque dur.
Il te suffit ensuite, lors de l'installation, de procéder à la vérification de ce que son numéro de machine, auquel tu appliques le même code, conduit au même résultat (celui de la clé).


________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ
Commenter la réponse de ucfoutu
0
Merci
Un petit exemple d'écriture et de lecture dans le registre :
Dim key As RegistryKey
key = Registry.CurrentUser.OpenSubKey("logiciel1")
If key Is Nothing Then
     Dim sGUID As String = System.Guid.NewGuid.ToString
     key = Registry.CurrentUser.CreateSubKey("logiciel1")
     key.SetValue("guid", sGUID)
     key.Close()
     MessageBox.Show("clé placée dans le registre : " & sGUID)
     'se débrouiller ici pour que l'utilisateur te communique ce numéro
     'ou un autre numéro découlant de celui-ci calculé avec un algorithme quelconque.
Else
     Dim valeur As Object = key.GetValue("guid")
     key.Close()
     MessageBox.Show("clé lue dans le registre : " & valeur.ToString)
     'faire une comparaison ici d'un numéro que tu auras renvoyé à l'utilisateur
     'à calculer avec un algorithme quelconque.
End If

ne pas oublier de rajouter l'import nécéssaire :
Imports Microsoft.Win32

Et d'activer les droits pour ton application pour l'écriture/lecture dans le registre.
Commenter la réponse de Utilisateur anonyme
0
Merci
Bonjour,

Va voir là

ou là

Et puis jette un oeil sur les liens vers les sujets similaires (related articles), à droite des pages
Commenter la réponse de Utilisateur anonyme
Messages postés
55
Date d'inscription
dimanche 14 août 2011
Statut
Membre
Dernière intervention
1 février 2013
1
0
Merci
Merci beaucoup pour ce code et pour vos réponses qui vont beaucoup m'aider mais comment lire le numéro du disque dur ?
Commenter la réponse de foussouy
0
Merci
Il y a un snipet ici.
Commenter la réponse de Utilisateur anonyme
Messages postés
55
Date d'inscription
dimanche 14 août 2011
Statut
Membre
Dernière intervention
1 février 2013
1
0
Merci
Ok merci de l'aide je test ça dès que possible et je vous tiens au courant.
Commenter la réponse de foussouy
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
215
0
Merci
Excusez-moi, mais je reste assez sceptique sur le succès, quelle que soit la machine, du code montré par ce snippet.
Une chose est certaine :
- 1) il n'aboutit pas sur ma machine (en dual-boot XP/Win7 64 bits)=== >> retourne une chaine vide si j'en garde les paramètres montrés
- 2) sur ma machine, je trouve ce numéro physique dans ma bvase de registre, à la clé :

HKEY_LOCAL_MACHINE\HARDWARE\DEVICEMAP\Scsi\Scsi Port 1\Scsi Bus 0\Target Id 1\Logical Unit Id 0
Valeur : Identifier

Cette clé est différente sur la machine de mon voisin !
Le code du snippet retourne par contre bien, chez mon voisin, le numéro physique de son disque dur.

Tirez vos conclusions ...

________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ
Commenter la réponse de ucfoutu
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
215
0
Merci
Et la voilà, la clé, chez mon voisin :
[HKEY_LOCAL_MACHINE\HARDWARE\DEVICEMAP\Scsi\Scsi Port 0\Scsi Bus 0\Target Id 0\Logical Unit Id 0
N° également à la valeur Identifier.

J'ai mis en rouge les différences

________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ
Commenter la réponse de ucfoutu
Messages postés
1211
Date d'inscription
dimanche 20 avril 2003
Statut
Membre
Dernière intervention
4 juin 2016
8
0
Merci
Bonjour,

Je ne sais pas si c'est une bonne idée de lier au numéro de disque dur. Si l’utilisateur change de HDD pour une raison X ou Y, que cela devient-il ?. Même chose à la limite pour la carte mère.

Sans compter que Windows est tout sauf stable au qu'en général tu le réinstalles from scratch (formatage complet) tous les 2 ans si tout va bien.

Si ton système est trop contraignant, l'utilisateur rique d'aller voir ailleurs.


Calade
Commenter la réponse de Calade
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
215
0
Merci
Sans compter que Windows est tout sauf stable au qu'en général tu le réinstalles from scratch (formatage complet) tous les 2 ans si tout va bien.

Euh ... un formatage ne modifie nullement le N° physique du disque dur !
Je ne sais pas si c'est une bonne idée de lier au numéro de disque dur

et
i ton système est trop contraignant, l'utilisateur rique d'aller voir ailleurs.

Tout-à-fait d'accord avec toi sur ces deux points.
________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ
Commenter la réponse de ucfoutu
Messages postés
1211
Date d'inscription
dimanche 20 avril 2003
Statut
Membre
Dernière intervention
4 juin 2016
8
0
Merci
Salut ucFoutu,

Euh ... un formatage ne modifie nullement le N° physique du disque dur !

Bien sur et heureusement, c'était pour faire remarquer qu'une trop grande complexité n'était pas bienvenue.

Je me souviens que dans le temps (peut-être encore maintenant) Windows tenait compte du numéro de la carte-mère, de celui du processeur (pas du HDD ou de la carte graphique) et si l'on changeait l'un de ces éléments il fallait reprouver sa bonne foi à Microsoft et cela avait fait couler beaucoup d'encre à l'époque. Il y a aussi un numéro de processeur mais celui-ci se cache (dans le BIOS je crois).

Mais je ne vois pourquoi lier ton N° de Série au matériel. Tu envois un N° de Série à qui le mérites (paies pour cela j'imagine) et au lancement de ton appli s'il n'existe pas et/ou n'est pas fourni tu fermes tout. La plupart des logiciels sont basés sur ce principe.


Calade
Commenter la réponse de Calade