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

VB.NET Discussion :

protèger application avec clé d'activation


Sujet :

VB.NET

  1. #1
    Membre à l'essai
    Inscrit en
    Avril 2010
    Messages
    37
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 37
    Points : 23
    Points
    23
    Par défaut protèger application avec clé d'activation
    bonjour, je cherche un moyen de protéger mon application.
    J'ai 2 applications ( A et B). L'app B est commercial. l'app A est le "serveur" je dirais. Du coup :
    je voudrais que mon app A crée un serial à partir d'un nom ou tous autres renseignements. Puis, quand l'app B est installé(1ere exécution ou lors de l'installation elle-même), on demande à l'utilisateur d'entrer son nom (ses renseignements) et la clé d'activation. L'app B essaye de vérifier l'authenticité de cette clé.
    Après quelques recherches, j'ai pu lire qu'il fallait utiliser un algorithme mathématique. Mais lequel ?? (je travail sous VB10)

    merci

  2. #2
    Membre averti
    Avatar de alex61
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Mai 2010
    Messages
    378
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : Canada

    Informations professionnelles :
    Activité : Consultant en Business Intelligence
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Mai 2010
    Messages : 378
    Points : 392
    Points
    392
    Par défaut
    ( je n'ai jamais fait mais je fait travailler mon imagination )

    tu pourrait avoir un fichier crypté ( genre en rsa ) dans ton projet qui contiendrait la clé et une variable booléenne "activer "

    aprés tu enregistre chaque clé d'activation généré et a chaque foit que ton appli client se connect au serveur tu vérifié si la clé n'es pas arriver a expiration et tu change la variable activer a False et donc l'application ne demare pas


    voila je tien a repréciser que c'est juste un truc que je n'ai jamais fait


    codialement

    si tu es perdu clique ici
    langage connus : xhtml/css , ASP.NET/VB.NET , JS, JQuery , PHP , SQL, PL/SQL, JAVA,
    BI : DataStage ,Essbase , BO , Microsoft BI , SAS, Talend, Cognos, Qliqview

  3. #3
    Membre à l'essai
    Inscrit en
    Avril 2010
    Messages
    37
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 37
    Points : 23
    Points
    23
    Par défaut
    je cherche justement un moyen de générer une clé d'activation

  4. #4
    Membre averti
    Avatar de alex61
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Mai 2010
    Messages
    378
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : Canada

    Informations professionnelles :
    Activité : Consultant en Business Intelligence
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Mai 2010
    Messages : 378
    Points : 392
    Points
    392
    Par défaut
    ba tu la génère aléatoirement ^^ mais si elle existe dans la base tu recommence et ainsi de suite

    pas très propre mais simple et efficace

    si tu es perdu clique ici
    langage connus : xhtml/css , ASP.NET/VB.NET , JS, JQuery , PHP , SQL, PL/SQL, JAVA,
    BI : DataStage ,Essbase , BO , Microsoft BI , SAS, Talend, Cognos, Qliqview

  5. #5
    Membre chevronné
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2009
    Messages
    1 048
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2009
    Messages : 1 048
    Points : 2 201
    Points
    2 201
    Par défaut
    En gros ton application A est un serveur de license. Ca peut t'aider pour tes recherches.

    Dans ce cas la génération de tes numéros de série peut s'effectuer avec n'importe quel algo aléatoire (genre un GUID) que tu enregistres dans une base de donnée lors de la vente d'une license.

    L'histoire de l'algo mathématique, c'est plutôt dans le cas de vérification de la clé par l'application elle-même car elle n'a pas une liste de clé online.

    Les histoires de licenses c'est quand même une vaste problèmatique avec beaucoup de solution...

  6. #6
    Membre à l'essai
    Inscrit en
    Avril 2010
    Messages
    37
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 37
    Points : 23
    Points
    23
    Par défaut
    oui j'avoue cette notion est complexe. Mais il faut savoir que je n'est pas de service web. Mon application serveur de licence est mon application commercial seront en faite sur un réseaux VPN en liaison avec une base de donnée SQL Server.
    dans ce cas, la génération aléatoire est-elle plus efficace que la génération par algo mathématique ?
    En plus, de ces manières-ci, une fois que l'utilisateur aura eut sa licence, il pourra la réutiliser le nombre de fois qu'il le veut ?
    je suis totalement perdu dans toutes cette histoire...

  7. #7
    Membre chevronné
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2009
    Messages
    1 048
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2009
    Messages : 1 048
    Points : 2 201
    Points
    2 201
    Par défaut
    Faut voir si tu fais le contrôle à l'installation (tu vérifies que le code existe dans la base de donnée seulement lors de la première execution), si oui combien d'installation différente tu acceptes.

    Ou alors si tu vérifies à chaque lancement de l'application, voir tu vérifies même pendant l'execution pour être sur que 2 license ne sont pas utilisé en même temps.

    Bref faut avoir une idée précise de comment tu veux que ça marche. Ou alors copier quelque chose qui existe déjà (j'ai jamais trop chercher dans ce sujet). Mais il existe probablement des systèmes payant, voir opensource?

  8. #8
    Membre à l'essai
    Inscrit en
    Avril 2010
    Messages
    37
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 37
    Points : 23
    Points
    23
    Par défaut
    alors au niveau de la sécurité est-il préférable de le faire lors de l'installation ou lors de la 1ere exécution ?
    La vérification lors de l'exécution du programme ne me parait pas adaptée.
    je veux simplement un code permettant de générer un code d'activation à partir d'un nom d'organisation.
    Comme ça, avec mon app A je génère une code d'activation à partir d'un nom d'organisation, puis j'enregistre ces infos dans ma base de donnée.
    Enfin, lors de la 1ere exécution ou lors de l'installation de mon app B, il envoie le code d'activation ainsi le nom d'organisation entré par l'utilisateur. Le serveur vérifie l'existence et la cohérence ( c'est à dire le couple licence/nom) de ces infos. Si c'est ok alors le logiciel s'exécute normalement, sinon il se ferme.
    que pensez-vous de ce mode opératoire ?
    Avez-vous un code permettant de générer une clé d'activation de cette manière ?
    Je sais que avec ce mode opératoire, il sera possible pour l'utilisateur de réutilisé la même licence plusieurs fois mais avec mon niveau d'étudiant je pense que je vais en rester là.

  9. #9
    Membre chevronné
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2009
    Messages
    1 048
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2009
    Messages : 1 048
    Points : 2 201
    Points
    2 201
    Par défaut
    Ben une table dans une base de donnée avec une colonne (unique) Code Activation et Nom Organisation.

    Lors de la création d'une license t'ajoute un enregistrement dans la table et ensuite lorsque tu veux vérifier la license il suffit de faire un select sur la table.

    Le code activation tu utilises ce que tu veux du moment qu'il y a pas 2 fois le même.

    Néanmoins c'est loin d'être le truc de l'année niveau sécurité et c'est propablement relativement facile à exploser (ne serrait-ce qu'en faisant du reverse engineering ce qui est assez simple à faire avec du .Net).

    Ca suffit probablement à épater un manager mais pas un expert en sécurité informatique (ou n'importe quelle personne qui combine les termes 'senior' et '.NET' dans son titre à vrai dire...).

  10. #10
    Membre à l'essai
    Inscrit en
    Avril 2010
    Messages
    37
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 37
    Points : 23
    Points
    23
    Par défaut
    Oui, je comprends que niveau sécurité c'est pas top. Mais n'aurais-tu pas un code pour générer ce code ? s'il te plaît ? je pensais à un hashage mais les caractères issus du hashage n'est pas approrié exemple avec la présence du "+" ou du "=". Un n° de série possède uniquement des chiffres et des lettres.

  11. #11
    Membre averti Avatar de Jerede
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mai 2010
    Messages
    271
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mai 2010
    Messages : 271
    Points : 422
    Points
    422
    Par défaut
    Je crois que tu peut faire comme ça :

    Génération de la license.
    *Tu récupère le cpuId, et d'autre infos propre à l'ordinateur, histoire d'obtenir une clé propre à l'ordinateur, en mixant le tout.

    *Envoi au serveur, qui crypte avec la Clé RSA privé.

    * Réception du "numéro de license ", stockage dans le registre.

    Vérification de la license.

    *Tu vérifie si une key existe bien dans le registre.
    * Tu la décrypte avec ta clé publique
    * Tu vérifie si les informations correspondent bien à l'ordinateur.

    J'crois que ça devrai marcher, sinon je crois que j'ai encore une librairie que j'avais réalisé y'a un bout de temps qui fait ça.

  12. #12
    Membre à l'essai
    Inscrit en
    Avril 2010
    Messages
    37
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 37
    Points : 23
    Points
    23
    Par défaut
    Mais comme j'ai expliqué, si je donne une licence propre à l'ordinateur, si ce dernier plante, plus de possibilité d'installer le logiciel sur un nouveau poste.
    peux-tu tout de même me montrer ta librairie ?

  13. #13
    Membre averti Avatar de Jerede
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mai 2010
    Messages
    271
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mai 2010
    Messages : 271
    Points : 422
    Points
    422
    Par défaut
    *Le client achete une license, tu lui fournis un serial ( qui vérifie un algorithme ), qui est enregistré dans la database, avec admettons 5 installations possibles.

    *Le client entre le serial dans l'application ( s'il vérifie bien l'algorithme, envoie au serveur )

    *Le serveur vérifie si le serial est présent dans la database, s'il reste des installations possibles.

    *Tu récupère le cpuId, et d'autre infos propre à l'ordinateur, histoire d'obtenir un truc propre à l'ordinateur.

    *Envoi au serveur, qui crypte le tout avec la Clé RSA privé.

    * Stockage dans le registre.
    Comme ça c'est mieux ?
    On peut pas tout avoir non plus

  14. #14
    Membre à l'essai
    Inscrit en
    Avril 2010
    Messages
    37
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 37
    Points : 23
    Points
    23
    Par défaut
    Une fois que le serial est ok, on peut récupéré le cpuid ou autre pour ensuite l'envoyer au serveur qui lui va créer une autre clé et la crypté avec le RSA. Enfin, on retourne sur l'ordinateur du client et on enregistre cette nouvelle clé dans son registre ?
    c'est bien sa ?
    Bon d'accord, je vais m'y mettre alors.
    Merci encore.

  15. #15
    Candidat au Club
    Homme Profil pro
    windev
    Inscrit en
    Avril 2016
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : Algérie

    Informations professionnelles :
    Activité : windev
    Secteur : Santé

    Informations forums :
    Inscription : Avril 2016
    Messages : 1
    Points : 3
    Points
    3
    Par défaut protection
    Citation Envoyé par dlgdev Voir le message
    bonjour, je cherche un moyen de protéger mon application.
    J'ai 2 applications ( A et B). L'app B est commercial. l'app A est le "serveur" je dirais. Du coup :
    je voudrais que mon app A crée un serial à partir d'un nom ou tous autres renseignements. Puis, quand l'app B est installé(1ere exécution ou lors de l'installation elle-même), on demande à l'utilisateur d'entrer son nom (ses renseignements) et la clé d'activation. L'app B essaye de vérifier l'authenticité de cette clé.
    Après quelques recherches, j'ai pu lire qu'il fallait utiliser un algorithme mathématique. Mais lequel ?? (je travail sous VB10)

    merci

  16. #16
    Inactif  

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2012
    Messages
    4 904
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2012
    Messages : 4 904
    Points : 10 168
    Points
    10 168
    Billets dans le blog
    36
    À ma connaissance, le seul personnage qui a été diagnostiqué comme étant allergique au mot effort. c'est Gaston Lagaffe.

    Ô Saint Excel, Grand Dieu de l'Inutile.

    Excel n'a jamais été, n'est pas et ne sera jamais un SGBD, c'est pour cela que Excel s'appelle Excel et ne s'appelle pas Access junior.

  17. #17
    Expert confirmé
    Avatar de wallace1
    Homme Profil pro
    Administrateur systèmes
    Inscrit en
    Octobre 2008
    Messages
    1 966
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Administrateur systèmes
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 966
    Points : 4 005
    Points
    4 005
    Billets dans le blog
    7
    Par défaut
    Citation Envoyé par alex61 Voir le message
    .......

    tu pourrait avoir un fichier crypté ( genre en rsa ) dans ton projet qui contiendrait la clé et une variable booléenne "activer "
    C'est une très très mauvaise idée cette historie de variable booléenne... il serait assez simple de reverse pour passer le flag en True !

    Il faut rester sur le principe de la génération et l'authentification client/serveur sinon l'appli serait trop facilement crackée.

    ++

  18. #18
    Invité
    Invité(e)
    Par défaut
    Bonsoir,
    Pour information le hacheur md5 est natifs dans Vb.net:https://msdn.microsoft.com/fr-fr/lib...v=vs.110).aspx

    Personnellement pour ma bases de données, moi j'autorise seulement un port sur le serveur.

    Vue que tu passes par Vpn, le fait de devoir utiliser un port plutôt qu'un autre réduit la fenêtre.

    Si tu envoi une requête en réduisant le nombres information et que le serveur soit capable de regénérer la clé d'activation!

    En d'autre terme j'en envois au serveur le nom de ma société, un username, un code de hachage, bien sur je n'envoie pas la clé de licence que mon application et ma base de données sont les seuls à connaitre.

    Le serveur est capable de recalculer le hachage et si celui envoyé dans la requête est le même que celui calculé par le serveur alors la requête retourne une valeur haché également que seule mon application est capable de recalculer!

    C'est ce genre de traitement qui est utilisé dans le traitement de payement en ligne entre les sites marchands et les boutique (PayPal)

    Ce que je faisais en vb6 mais je ne l'ai jamais fait en .Net c'est exécute côté client un code qui demande au server d'exécuter du code et de retourner au client le résultat!

    Édite: Un exemple concret!

    Tu peux utiliser le variables d'environnement pour gérer un clé d'environnement(adresse mac; numéro de série du disque dur; le user Name; le domaine,etc).
    C'est donnés ne sont pas enregistrer sur ton disk elle existe c'est tout.

    L'hors de la première utilisation une interface te demande de t'enregistrer. A la fin du processus elle te donne un numéro de licence quelle sauvegarde dans la base de registre

    La base de données connais la clé d'environnement et la licence.

    La validation d la licence est. Constitués de (la licence, le login, la date et l'heure , pourquoi pas un numéro auto incrément) et le md5 de tout ça sans oublier la clé d'environnement qui elle n'est pas transmise dans ma requête.

    La requête retourne le résultat sous la même forme et mon application recalcule le code de la réponse.

    Code Exemple : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    code1=md5(macAdress + disckSerie)
    Code2=md5(md5(macAdress) + md5(disckSerie))
    code3=md5(Code1+Code2)
    Ici les informations sont connus mais l'algorithme le rend impossible à gérer!
    Dernière modification par Invité ; 20/05/2016 à 08h38.

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

Discussions similaires

  1. Protéger une application avec un fichier Key
    Par DelphiCool dans le forum Codes sources à télécharger
    Réponses: 0
    Dernier message: 03/02/2013, 17h55
  2. Réponses: 2
    Dernier message: 07/10/2008, 08h02
  3. Protéger l'application avec fenetre d'authentification
    Par abbd dans le forum Windows Forms
    Réponses: 2
    Dernier message: 18/05/2008, 18h34
  4. Activation des macros sur application avec Runtime
    Par nicolas2603 dans le forum Runtime
    Réponses: 5
    Dernier message: 29/02/2008, 16h41

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