Protéger son programme

foussouy Messages postés 55 Date d'inscription dimanche 14 août 2011 Statut Membre Dernière intervention 1 février 2013 - 25 nov. 2012 à 09:58
 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.

38 réponses

Calade Messages postés 1207 Date d'inscription dimanche 20 avril 2003 Statut Membre Dernière intervention 4 juin 2016 10
25 nov. 2012 à 10:16
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
0
foussouy Messages postés 55 Date d'inscription dimanche 14 août 2011 Statut Membre Dernière intervention 1 février 2013 1
25 nov. 2012 à 10:23
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
0
foussouy Messages postés 55 Date d'inscription dimanche 14 août 2011 Statut Membre Dernière intervention 1 février 2013 1
25 nov. 2012 à 10:24
PS : mais sans connaître précisément les PC sur lesquels il s'installera.
0
Calade Messages postés 1207 Date d'inscription dimanche 20 avril 2003 Statut Membre Dernière intervention 4 juin 2016 10
25 nov. 2012 à 10:37
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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
foussouy Messages postés 55 Date d'inscription dimanche 14 août 2011 Statut Membre Dernière intervention 1 février 2013 1
25 nov. 2012 à 10:44
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..
0
Calade Messages postés 1207 Date d'inscription dimanche 20 avril 2003 Statut Membre Dernière intervention 4 juin 2016 10
25 nov. 2012 à 10:48
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
0
foussouy Messages postés 55 Date d'inscription dimanche 14 août 2011 Statut Membre Dernière intervention 1 février 2013 1
25 nov. 2012 à 10:52
Ok je vais chercher et je te rends la réponse :) Merci de ton aide
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
25 nov. 2012 à 13:38
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
0
foussouy Messages postés 55 Date d'inscription dimanche 14 août 2011 Statut Membre Dernière intervention 1 février 2013 1
25 nov. 2012 à 16:51
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 ?
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
25 nov. 2012 à 16:57
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
0
Utilisateur anonyme
25 nov. 2012 à 17:28
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.
0
Utilisateur anonyme
25 nov. 2012 à 17:29
Bonjour,

Va voir là

ou là

Et puis jette un oeil sur les liens vers les sujets similaires (related articles), à droite des pages
0
foussouy Messages postés 55 Date d'inscription dimanche 14 août 2011 Statut Membre Dernière intervention 1 février 2013 1
25 nov. 2012 à 17:50
Merci beaucoup pour ce code et pour vos réponses qui vont beaucoup m'aider mais comment lire le numéro du disque dur ?
0
Utilisateur anonyme
25 nov. 2012 à 18:03
Il y a un snipet ici.
0
foussouy Messages postés 55 Date d'inscription dimanche 14 août 2011 Statut Membre Dernière intervention 1 février 2013 1
25 nov. 2012 à 18:05
Ok merci de l'aide je test ça dès que possible et je vous tiens au courant.
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
25 nov. 2012 à 21:01
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
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
25 nov. 2012 à 21:11
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
0
Calade Messages postés 1207 Date d'inscription dimanche 20 avril 2003 Statut Membre Dernière intervention 4 juin 2016 10
26 nov. 2012 à 07:37
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
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
26 nov. 2012 à 07:43
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
0
Calade Messages postés 1207 Date d'inscription dimanche 20 avril 2003 Statut Membre Dernière intervention 4 juin 2016 10
26 nov. 2012 à 07:52
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
0
Rejoignez-nous