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

WinDev Discussion :

Sécuriser une application développée avec windev


Sujet :

WinDev

  1. #1
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Juillet 2012
    Messages
    171
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2012
    Messages : 171
    Points : 56
    Points
    56
    Par défaut Sécuriser une application développée avec windev
    Bonjour,
    J'ai développé une application sous windev et je souhaite la sécuriser.
    C'est-à-dire, fournir une clé d'activation par client, et mettre en place une date d'expiration du logiciel.
    Y-a-il une méthode pour le faire sous windev ?
    Merci d'avance pour vos propositions.

  2. #2
    Expert confirmé
    Homme Profil pro
    ?
    Inscrit en
    Juillet 2002
    Messages
    2 378
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : ?

    Informations forums :
    Inscription : Juillet 2002
    Messages : 2 378
    Points : 4 494
    Points
    4 494
    Par défaut
    Bonjour

    Windev est livré avec un exemple qui s'appelle : "WD Limitation de duree d utilisation"

    Il y a aussi des fonctions pour gérer un clé d'activation : http://doc.pcsoft.fr/fr-FR/?1000018998

    Tu devrais y trouver des pistes

  3. #3
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Juillet 2012
    Messages
    171
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2012
    Messages : 171
    Points : 56
    Points
    56
    Par défaut
    J'ai commencé tout d'abord, par limiter l'utilisation de l'application en temps, en mettant le code suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    SI DateVersEntier(DateSys()) - DateVersEntier("20150302") > 30 ALORS 
    	Avertissement("Votre licence est expirée, pour plus d'informations veuillez nous contacter sur .........")
    	FinProgramme
    FIN
    Mais le problème c'est l'utilisateur peut changer la date du système et continuer le travail avec l'application, y-t-il une manière plus sûr pour éviter ce type de fraude ?

  4. #4
    Membre émérite
    Homme Profil pro
    Développeur et responsable micros/réseaux
    Inscrit en
    Octobre 2010
    Messages
    1 286
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur et responsable micros/réseaux
    Secteur : Bâtiment

    Informations forums :
    Inscription : Octobre 2010
    Messages : 1 286
    Points : 2 562
    Points
    2 562
    Par défaut
    Bonjour,

    tu peux aussi stocker la date + heure de dernière utilisation valide en la cryptant dans un fichier ou dans une clé de registre et tu compares la date système en cours avec cette date de dernière utilisation afin de savoir si elle est supérieur ou pas ...
    Dans le cas où tu détectes que la date de dernière utilisation est une fois supérieure à la date système, tu verrouilles définitivement l'application avec un autre marqueur et tu indiques à l'utilisateur qu'il ne fallait pas tricher.

    Bon courage,

    Nicolas

  5. #5
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Juillet 2012
    Messages
    171
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2012
    Messages : 171
    Points : 56
    Points
    56
    Par défaut
    C'est fait, et ça marche, j'ai aussi utilisé les fonctions : CléGénèreCléInitiale, CléCalculeCléActivation, CléCompareClé pour doter l'application d'une clé d'activation, mais cela ne fonctionne pas, plus précisément la comparaison avec la fonction CléCompareClé retourne toujours faux, sachant que je génère la clé initiale sous le poste client, et je génère la clé d'activation sous le poste fournisseur.
    Avez-vous une idée ?
    Merci d'avance

  6. #6
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Août 2002
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 29
    Points : 34
    Points
    34
    Par défaut
    Je me posais la même question il y a pas longtemps pour sécuriser une future appli.

    Je pensais à cette solution, après ça vaut ce que ça vaut :

    - Une page sur le net avec un tableau, dans ce tableau des infos genre le numéro de licence + date d activation ou la date de fin de droit d utilisation.
    - Quand tu lances ton appli, elle va parser cette page et vérifier que le numéro de licence est bien dans la liste sinon elle se ferme.

    Et plutôt que de check la date système du poste client, tu peux la récupérer sur le net ce qui éviterait les changement de date système sur le poste client.

  7. #7
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Juillet 2012
    Messages
    171
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2012
    Messages : 171
    Points : 56
    Points
    56
    Par défaut
    Pour la partie de la date d'expiration, je suis tout à fait d'accord je vais voir comment récupérer la date à travers le net, mais pour la partie de stockage des informations dans un tableau
    Une page sur le net avec un tableau, dans ce tableau des infos genre le numéro de licence + date d activation ou la date de fin de droit d utilisation
    , je crois que ça ne va pas me servir trop, parce que mon objectif vise l’interdiction d'installer l'application sur un autre poste autre que celui qui autorisé de l'utiliser.

  8. #8
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2015
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2015
    Messages : 6
    Points : 5
    Points
    5
    Par défaut
    Bon soir, pour résoudre ce problème j'ai pensé a un truck, l'idée est simple c'est e crée un fichier de donnée pour stocker un numéro pour incrémenté le nombre de fois d'ouverture de la l'application, et c'est a vous de définir ce nombre et lorsque ce nombre est atteint un msg d'érreure s'affiche, bon j'ai bon encor réussie a le méttre en place, mais j'y travail

  9. #9
    Expert éminent
    Avatar de jurassic pork
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Décembre 2008
    Messages
    3 947
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 3 947
    Points : 9 275
    Points
    9 275
    Par défaut
    hello,
    peut-être une autre piste : activatar un système d'activation opensource par clé produit. Le problème c'est que c'est du dotnet 4.0 . On peut fort bien utiliser l'assemblage dotnet activator dans windev mais il faut adapter le code c# de l'exemple au wlangage. Cela oblige aussi à ce que les clients aient dotnet 4.0 d'installer sur leur machine. Il reste la solution d'éplucher le code source de ce logiciel et de le transcrire en wlangage bon courage .
    Ami calmant, J.P
    Jurassic computer : Sinclair ZX81 - Zilog Z80A à 3,25 MHz - RAM 1 Ko - ROM 8 Ko

  10. #10
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Août 2002
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 29
    Points : 34
    Points
    34
    Par défaut
    Citation Envoyé par kariel Voir le message
    Pour la partie de la date d'expiration, je suis tout à fait d'accord je vais voir comment récupérer la date à travers le net, mais pour la partie de stockage des informations dans un tableau , je crois que ça ne va pas me servir trop, parce que mon objectif vise l’interdiction d'installer l'application sur un autre poste autre que celui qui autorisé de l'utiliser.

    1)
    A chaque installation, tu récupères un ID matériel sur le pc sur lequel l installation est faite, genre N° série du DD.
    Tu le rajoutes dans le tableau
    A chaque install tu vas check dans le tableau suivant le N° de license si le pc sur lequel l install est faite correspond bien à celui du tableau, si c est pas le cas exit de l install.

    Chaque license ne pourra être installée que sur le pc ou y a le DD d origine dans mon cas.


    2)
    Tu génères une clé d activation en fonction du matériel du pc, ça je sais pas si c est possible.

  11. #11
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Juin 2010
    Messages
    1 359
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 1 359
    Points : 508
    Points
    508
    Par défaut
    Bonjour,

    Je distribue des applications et je me suis donc posé cette même question.

    Mon avis et expérience sur le sujet :
    - Avant toute chose, partez du principe que quelque soit la solution choisie elle sera contournable. Même les plus gros éditeurs ci casse les dents. Donc il faut sécuriser mais pas la peine d'investir trop de temps et d'argent selon moi.
    - La sécurisation via internent ou autre contact extérieur est intéressante mais elle pose différents problèmes. Que ce passe t'il si la connexion internet n'est pas possible ? Que se passe t'il en cas de réinstallation du logiciel ? Comment s'assurer que celui qui se connecte est bien celui qui a acheté ?...
    - La sécurisation en locale est souvent fragile :
    . Limiter la durée : Ok mais il ne faut évidement pas s'appuyer sur la date du système, elle est modifiable par l'utilisateur
    . Une clé de sécurité : Ok mais il faut quelque chose d'un poil costaud
    - Pour ma part, la solution retenue est :
    . Pas de sécurisation via internet ou autre contact extérieur, trop complexe à gérer, incertain dans le temps et contraignant pour l'utilisateur
    . Je sécurise en local en multipliant les verrous plutôt que d'en prévoir un seul bien costaud. L'idée est de brouiller les pistes et de rendre le piratage bien chiant :
    . Par algorithme, je génère des numéros de licence personnalisés et nominatif. L'algorithme utilise une partie du nom du propriétaire de la licence pour générer le numéro de la licence. L'utilisateur sais donc que son numéro est associé à son nom (histoire de le dissuader de le distribuer) et le numéro seul ne fonctionnera pas.
    . Mon numéro de licence intègre plusieurs informations (bien cachées ;-). Notamment l'année de production. Cela me permet d'envisager de limiter la licence dans le temps. L'année fait aussi partie intégrante de l'algorithme de production de clé bien sur (sinon, trop facile)
    . Pour la durée dans le temps, je mémorise le nombre de jours écoulés et la date d'installation en plusieurs endroits histoire de vérifier que les données ne sont pas trafiquées (dans les données de l'appli, sur fichier externe et dans le registre de windows)
    . Et je contrôle plusieurs choses : Le nombre de jours écoulés, la date système par rapport à la date d’installation, la date système par rapport à la date de la dernière utilisation.

    Voilà, j'ai soumis la bête à un informaticiens chevronné et un peu calé en matière de débridage... et bien il a échoué. Et il a échoué à cause de la multiplication des verrous ;-)

    Mais encore une fois, ne passe votre vie la dessus. Une application est piratée quand elle est intéressante.
    Alors passez votre temps à la rendre attractive et à la faire évoluer de tel sorte que les éventuels petits malins est toujours un coup de retard.
    Les solutions les plus simples sont les plus efficaces

  12. #12
    Membre éprouvé
    Inscrit en
    Avril 2008
    Messages
    1 129
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 1 129
    Points : 1 283
    Points
    1 283
    Par défaut
    Salut,

    Ce sujet a déjà été traité de nombreuses fois sur ce forum.
    J'y ai donc appris qu'il vaut mieux limiter une application dans ses fonctionnalités plutôt que dans le temps.
    A cet effet je fournis toujours l'application définitive ayant toutes les fonctionnalités mais limitant le nombre d'enregistrements (fournisseurs, clients articles...)

    L'utilisateur fait une demande d'activation en cliquant un bouton dans l'application. Si internet présent je reçois dans une boite email demandeactivation@gmail.com le fichier texte encrypté, contenant toutes les informations utiles (N° série Disque Dur,du volume,Nom utilisateur,Nom PC,Nom Application,Réseau...)
    Si pas d'internet le fichier est copié sur le bureau avec un message demandant l'envoi manuel.

    Par sécurité, plusieurs méthodes de récupérations du numéro de série sont utilisées car certaines méthodes ne retournent aucune valeur en fonction de certains PC. (d'où Pc serial,HIW,HD)

    A la réception du message j'ai une application qui décrypte et replace les infos dans une base de données.
    Pour générer la licence, je crée un fichier hyperfile avec le nom de l'appli (HdeclareExterne) avec comme mot de passe du fichier une info de la demande d'activation cryptée, puis j'y ajoute un enregistrement avec encore une info de la demande d'activation.



    Côté Client, à la réception du fichier il le place dans son dossier de fichier HF et écrase l'ancien si existant. (d'ailleurs je suis étonné que n’effaçant pas le fichier d'index correspondant, cela fonctionne toujours).

    Au prochain lancement de l'appli,
    - si le mot de passe du fichier est différent et que l'ouverture du fichier échoue : Licence incorrecte (fermeture de l'appli via un finprogramme, ou souvent en fonction de mon humeur je lance une boucle à l'infini sablier bloquant)
    - si le fichier est ouvert mais que l'info de l'enregistrement s'y trouvant diffère de celui du PC : Licence incorrecte (tentative de piratage) voir juste au dessus
    - si le fichier n'existe pas (ffichierexiste) on continue, version limitée

    Ensuite cette procédure de vérification de la licence est lancée en arrière plan via un thread + timer toutes les 30 min pour contrôle.

    Assez complexe à mettre en place pour une première fois, mais maintenant je n'ai que 2 à 3 clics à effectuer et le client reçoit sa licence en pièce jointe automatiquement par email.

    Avantages :
    - pas besoin d'internet pour activer en ligne (juste besoin pour la demande d'activation)
    - pas besoin de droits admin pour activer la licence (pas de base de registre ou dossiers windows)

    Inconvénients :
    - je ne peux désactiver une licence déjà distribuée (menfin bof)
    - le client ne peut déplacer ses données que sur la même partition de disque (volume) sinon licence désactivé

    En espérant que cela puisse aider...

    Bon DEV

  13. #13
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Août 2002
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 29
    Points : 34
    Points
    34
    Par défaut
    Petite question, vu que pour la protection des applis on récupère certaines infos du client, utilisez vous un contrat de license type ?

    Genre comme quoi le client installe le logiciel à ses risques et périls, que vous avez le droit d utiliser des infos le concernant etc etc

Discussions similaires

  1. Comment installer une application développée avec C# sur MAC
    Par sanarz dans le forum Développement Windows
    Réponses: 3
    Dernier message: 20/11/2012, 17h34
  2. Sécuriser une application RCP avec Equinox.security
    Par pingoui dans le forum Eclipse Platform
    Réponses: 1
    Dernier message: 29/03/2012, 09h57
  3. [Généralités] Peut on monter une application web avec windev ?
    Par devalender dans le forum WinDev
    Réponses: 9
    Dernier message: 23/08/2011, 17h05
  4. Réponses: 1
    Dernier message: 04/01/2010, 18h14
  5. Réponses: 2
    Dernier message: 21/04/2008, 11h23

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