IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Sécurité Discussion :

Inclure une licence dans un développement


Sujet :

Sécurité

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    105
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Septembre 2005
    Messages : 105
    Points : 68
    Points
    68
    Par défaut Inclure une licence dans un développement
    Bonjour,

    Après avoir développé un petit programme de gestion avec BD Access et et Applicatif client Access (mde), je souhaiterais limiter l'acces aux personnes qui commandent une licence.

    J'ai 2 questions à ce sujet:

    1. Question générale: Quelle est la meilleures manière de précéder pour réaliser cela, sachant que je souhaiterais avoir une licence par utilisateur ?

    2. Est-ce qu'il faut inclure cela dans le mde ou dans le logiciel de déploiement ?

    Je n'ai pas vraiment trouvé d'informations à ce sujet alors je compte sur vos expériences et vos conseils.

    Merci beaucoup
    skeut

  2. #2
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 365
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 365
    Points : 23 835
    Points
    23 835
    Par défaut
    Le sujet a déjà été abordé il y a longtemps.

    Le problème c'est qu'il n'y a pas de solution réellement efficace avec Access seulement. Et si on en juge par le nombre de logiciels craqués disponibles sur le net, ailleurs non plus.

    Quel degrés de résistance au piratage veux-tu ?

    A+

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    105
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Septembre 2005
    Messages : 105
    Points : 68
    Points
    68
    Par défaut
    Bonjour marot_r

    Merci pour la réponse.

    Quel degrés de résistance au piratage veux-tu ?
    Le meilleur, naturellement !

    Plus précisément, mon but est de connaître les utilisateurs de l'application (combien? / qui?). L'idéal serait d'offrir l'application p.ex. 45 jours en démo et si l'utilisateur souhaite continuer, il doit commander une licence.

    En définitive, je n'ai pas besoin d'un degrés de sécurité digne du FBI mais juste qqch pour obliger l'utilisateur moyen à s'annoncer et ainsi avoir un contrôle. Si des experts s'attaquent à l'application, ça ne me dérange pas (si ça peut les occuper )

    j'ai bien cherché de la doc sur le sujet mais je n'ai rien trouvé de concluant c'est pourquoi je me suis adressé ici.

    a+ et merci
    skeut

  4. #4
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 365
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 365
    Points : 23 835
    Points
    23 835
    Par défaut
    Le problème vient des possibilités de copies. Une fois le numéro de licence connu. Dès qu'un de tes utilisateurs à la licence, il peut utiliser ton appli où il veut et en autant d'exemplaires qu'il le souhaite.

    Pour la période de test, une méthode ultra simple consiste à mettre en place un fichier quelque part sur le disque. Dans ce fichier tu enregistre la date et l'heure de la première utilisation.

    Tu peux utiliser un fichier texte en appliquant un ou exclusif (xor) avec une clef que tu mets dans ta base. quand on fait (a xor b xor b) on obtient a de nouveau.

    Pour ce qui est du numéro de licence, tu pourrais faire un petit formulaire qui fait un hachage sur le numéro fourni (ex : tu prends le code ascii de tous les caractères et tu les additionnes. Note : c'est assez faible comme protection.) Si cela donne un nombre connu de la base tu laisse passé (sinon tu refuses) et tu stockes le numéro entré hors de la base et encodé (xor de nouveau).

    Tu pourrais aussi utiliser une clef dans les registres pour rendre la copie plus délicate.

    Pendant la période d'essais tu pourrais mettre 0 ou ne pas exiger de numéro de licence.

    Tu peux enfin mettre une notice légal disant que ton produit est protégé par les lois sur les droits d'auteur ... mais cela n'est pas très disuasif.

    A+

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    105
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Septembre 2005
    Messages : 105
    Points : 68
    Points
    68
    Par défaut
    oui effectivement, dès que la licence est connue, rien n'empêche l'utilisateur de divulguer la clé.

    Pour le reste, merci pour les conseils, je vais essayer de mettre cela en place.

    Je suis un peu plus au clair maintenant concernant cette problématique.

    à bientôt.
    skeut

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 239
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 239
    Points : 555
    Points
    555
    Par défaut
    Salut,

    Je viens de parcourir ton post, il date un peu mais voici une solution.

    Tu peux utiliser une clé USB comme dongle, les petite 128MB ne coûte plus très cher.

    Tu entre le N° de la cléf dans le programme et il contôle si elle est présente, si oui le prog continue sinon il s'arrête.

    Evidemment, si tu as plusieurs PC il te faudra autant de clé USB, mais tu peux mettre tous les N° dans une condition.

    A+

  7. #7
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 365
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 365
    Points : 23 835
    Points
    23 835
    Par défaut
    Bonne idée mais comment empèches-tu la copie de la clef ?

    Lis-tu le numéro de série de la clef ?

    A+

  8. #8
    Rédacteur/Modérateur
    Avatar de loufab
    Homme Profil pro
    Entrepreneur en solutions informatiques viables et fonctionnelles.
    Inscrit en
    Avril 2005
    Messages
    12 034
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Entrepreneur en solutions informatiques viables et fonctionnelles.
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 12 034
    Points : 24 600
    Points
    24 600
    Par défaut
    Vous pouvez également utiliser les N° ID unique des éléments de la machine

    Ici le code pour le CPU :
    http://vb.developpez.com/faq/?page=Systeme#cpuid

    Dans la même veine il y a celui du disque C.

    Ce sont des pistes.

    Cordialement,

  9. #9
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    105
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Septembre 2005
    Messages : 105
    Points : 68
    Points
    68
    Par défaut
    Merci à tous pour les pistes; je vais très bientôt me pencher sur la question et tester l'une ou l'autre des propositions.

    Je ne manquerai pas de vous faire part de la solution choisie avec les inconvénients et avantages.

    à bientôt.
    skeut

  10. #10
    Membre averti
    Directeur technique
    Inscrit en
    Novembre 2006
    Messages
    584
    Détails du profil
    Informations personnelles :
    Âge : 61

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 584
    Points : 403
    Points
    403
    Par défaut
    Une solution que j'utilise:

    1-au démarrage de l'appli le code compare un id machine (ex le ns processeur) codé avec un algo (présent sur le forum) avec une clé présente dans une table de la frontale.

    2-au premier démarrage (suite à l'installation) la comparaison n'est pas bonne (cf point 11), un formulaire apparait demandant de saisir une clé.

    3-si la cé saisie n'est pas la bonne on ferme l'appli.

    4-Le formulaire présente l'id machine et demande de le communiquer à l'éditeur (toi...)

    5-le client te communique son id machine.

    6-tu saisi l'id dans une base "keygen" qui code l'id avec le même algo que celui sur la machine du client. Cette même base stocke tout dans des tables pour te permettre de gérer et mémoriser les cés que tu as fournies.

    7-tu communiques la clé au client, la comparaison est bonne. La clé étant mémorisée dans une table la comparaison sera bonne lors de toutes les ouvertures futures de la base.

    8- La clé est propre à la machine. Tu peux combiner plusieurs identifiants pour corser l'affaire.id processeur + id disque.

    9- Le codage est dans le code, donc protégé si mde (dites moi si je me fourvoie)

    10- Si tu combines les id machine tu peux vérifier si le client te racontes des bobards genre "j'en eu un crash disque" alors qu'en fait il s'agit d'une autre machine.

    11-Ce codage est valable même dans ta base de développement (c'est à dire que même toi tu as une clé), c'est même cette clé qui part avec le package et qui sera reconnue comme mauvaise lors de la première exécution chez le client.
    Rien de spécial à faire quand tu génères ton pack.

    12-Tu peux gérer des options avec ce système (ex: option 1 je code avec 12 itérations, option 2 avec 13 itérations etc), le formulaie demandant la clé demande aussi un numéro d'option. (pas testé)

    12- Si t'es piraté c'est que t'es bon

  11. #11
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2005
    Messages : 7
    Points : 8
    Points
    8
    Par défaut
    Citation Envoyé par electrosat03 Voir le message
    Salut,

    Je viens de parcourir ton post, il date un peu mais voici une solution.

    Tu peux utiliser une clé USB comme dongle, les petite 128MB ne coûte plus très cher.

    Tu entre le N° de la cléf dans le programme et il contôle si elle est présente, si oui le prog continue sinon il s'arrête.

    Evidemment, si tu as plusieurs PC il te faudra autant de clé USB, mais tu peux mettre tous les N° dans une condition.

    A+
    Bonjour, ce genre de solution m'intéresse.
    J'ai déjà trouvé sur le net des sociétés qui offrent des solutions tout en un (il fournisse la clé et le programme qui crée une DLL lié à la clé.. à l'ouverture d'Access une macro fait appel à la DLL qui vérifie la présence de la clé)
    J'aimerais bien essayer de le faire par moi même mais mes connaissance en programmation en VB sous access ne me le permette pas pas encore de créer un code qui testerait les numéros de séries des clés présents dans le PC.

    Pouvez-vous m'aider ou m'orienter pour mes recherches. merci d'avance

  12. #12
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 239
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 239
    Points : 555
    Points
    555
    Par défaut
    Salut,

    Pour ceux que cela intéresse.

    Voici le code

    A mettre dans ton form de démarrage

    Avant les procédures
    Code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Public fso As FileSystemObject
    Public Drive As Drive
    Public NumSerieUSB As Long
    Public DongleOK As Boolean
    Ensuite

    Code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    '************ Tester si la clé est presente au démarrage ************
    'Private Sub Form_Load()
        NumSerieUSB = 476925666    ' Numéro de série de la clé USB client
        DongleOK = False' Met le Dongle absent
        Scan_Dongle ' Va à la procédure Scan du dongle
        If DongleOK = False Then
            DoCmd.Quit
            Exit Sub
        End If
    Et enfin la procédure de scan

    Code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    '************ Tester si la clé USB est présente
    Sub Scan_Dongle()
        If DongleOK = True Then
            Exit Sub    ' si Dongle déja présent pas de scan
        End If
        ' Retrouver le dongle et son numéro de serie
        Set fso = New FileSystemObject
        For Each Drive In fso.Drives
            If Drive.IsReady = True Then
                If NumSerieUSB = fso.Drives(Drive + "\").SerialNumber Then
                    DongleOK = True                     ' dongle present
                    DongleLettre = Asc(Left$(Drive, 1))   ' memorise la lettre du dongle
                    Set fso = Nothing
                     Exit Sub
                End If
            End If
        Next
    End Sub
    Evidemment, tu ne connait pas le numéro de ta clé USB, donc pour cela, regarde avec l'explorer la lettre de ta clé USB.

    Ensuite place un point d'arrêt au niveau de la ligne en vert.

    Ensuite le code va s'arrêter et tu positionne la souris sur Drive, tu verra en principe "c:" continue le code avec F8 au prochain passage tu verra une autre lettre de lecteur etc etc....

    Quand tu tombe sur la lettre de ta clé USB, tu continue avec F8 et sur la ligne en bleu tu regardes le N° de ta clé en te positionnant sur SerialNumber.

    Tu copie le N° à la place du N° qui est en rouge.

    Tu sauve et en principe si ta clé est présente, le prog démarre sinon il quitte.

    Bien sur, c'est pour une appli sur un PC
    Mais tu peux mettre un N° de clé différent et faire un if or then

    ou tu place un N° différent dans les appli avec la clé qui va avec.
    Fait une copie de ta base avant modif, on est jamais assez prudent.

    A+

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. inclure une image dans un bloc de texte
    Par allowen dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 25/08/2005, 14h11
  2. Inclure une DLL dans le .exe final?? possible?
    Par xavmax dans le forum C++Builder
    Réponses: 9
    Dernier message: 22/08/2005, 17h00
  3. [JAR] Inclure une librairie dans un point jar
    Par Orionmel dans le forum Général Java
    Réponses: 5
    Dernier message: 08/11/2004, 22h25
  4. [BCB6]Inclure une police dans un exécutable
    Par Bodom-Child dans le forum C++Builder
    Réponses: 8
    Dernier message: 20/08/2004, 11h18
  5. Inclure une dll dans une ressource
    Par bgcode dans le forum C++Builder
    Réponses: 4
    Dernier message: 21/08/2003, 11h12

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo