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

 Delphi Discussion :

Créer/ Identifier une installation unique de mon soft


Sujet :

Delphi

  1. #1
    Futur Membre du Club
    Homme Profil pro
    sans
    Inscrit en
    Mars 2014
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France

    Informations professionnelles :
    Activité : sans
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2014
    Messages : 10
    Points : 5
    Points
    5
    Par défaut Créer/ Identifier une installation unique de mon soft
    Bonjour
    Je developpe mon premier soft avec beaucoup d'ambitions et à cette occasion je me trouve confronté au pb de gestion des copies...

    J'ai prévu un système d'identification via le web qui permettrait de connaitre IP lors de l'appel, ID utilisateur (enregistré au moment de l'installation) et un ID d installation que je souhaiterais unique.

    Mais comment faire que mon installation crée un identifiant unique ?

    J'aimerais mettre cet identifiant unique dans le code compilé car j'ai cru comprendre que c'était la meilleure solution, mais est il possible de voir les infos lors de l'appel à ma page web via indy ? Est-il possible (mais je crois que oui) de décompiler le code et connaître cet identifiant unique ?

    Voila, je pense que ce pb est le lot commun de beaucoup de développeurs désireux de protéger leur travail...

    Je suis ouvert à toutes remarques, critiques (mais soyez indulgents svp car c'est ma première appli et donc mon premier raisonnement ...)

    merci pour vos conseils

    Stéphane

    Petite précision : Je n ai pas besoin de faire de test de retour, j'utilise la valeur récupérée via indy dans des calculs ce qui donnera un résultat erroné ou même une erreur, rendant l'emploi du soft impossible.

  2. #2
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 061
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 061
    Points : 41 021
    Points
    41 021
    Billets dans le blog
    62
    Par défaut
    Bonjour,


    Citation Envoyé par moneytix Voir le message
    je me trouve confronté au pb de gestion des copies...
    Voilà, je pense que ce pb est le lot commun de beaucoup de développeurs désireux de protéger leur travail...
    tout le monde ou presque est passé par là , il y a même un nombre assez importants de discussions a ce sujet dans le forum (fonction recherche)
    J'ai prévu un système d'identification via le web qui permettrait de connaitre IP lors de l'appel, ID utilisateur (enregistré au moment de l'installation) et un ID d installation que je souhaiterais unique.
    problèmes : l'IP peut varier , la machine peut ne pas être connectée
    Mais comment faire que mon installation crée un identifiant unique ?
    le GUID est très à la mode
    J'aimerais mettre cet identifiant unique dans le code compilé car j'ai cru comprendre que c'était la meilleure solution, mais est il possible de voir les infos lors de l'appel à ma page web via indy ?
    avec indy il est possible de 'crypter' la connexion

    Est-il possible (mais je crois que oui) de décompiler le code et connaître cet identifiant unique ?
    il y aura toujours un plus malin , le ratio €*intérêt du logiciel / temps de hacking est le nerf de la guerre

    Je suis ouvert à toutes remarques, critiques ....
    Petite précision : Je n'ai pas besoin de faire de test de retour, j'utilise la valeur récupérée via indy dans des calculs ce qui donnera un résultat erroné ou même une erreur, rendant l'emploi du soft impossible.
    une critique de moins à faire
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  3. #3
    Membre chevronné
    Avatar de free07
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    931
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ardèche (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 931
    Points : 1 913
    Points
    1 913
    Par défaut
    Citation Envoyé par moneytix Voir le message
    Bonjour

    J'ai prévu un système d'identification via le web qui permettrait de connaitre IP lors de l'appel, ID utilisateur (enregistré au moment de l'installation) et un ID d installation que je souhaiterais unique.
    Il faut préférer l'adresse mac de la carte réseau, celle-ci est unique pour chaque carte réseau et pas de problème si le poste n'est pas connecté au réseau, mais le problème est lorsque l'utilisateur change de carte réseau, on peut alors doubler l'identifiant en se référant à un autre numéro, tel que le numéro de série du disque dur, de la carte mère, du processeur, etc

  4. #4
    Futur Membre du Club
    Homme Profil pro
    sans
    Inscrit en
    Mars 2014
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France

    Informations professionnelles :
    Activité : sans
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2014
    Messages : 10
    Points : 5
    Points
    5
    Par défaut
    Citation Envoyé par free07 Voir le message
    Il faut préférer l'adresse mac de la carte réseau, celle-ci est unique pour chaque carte réseau et pas de problème si le poste n'est pas connecté au réseau, mais le problème est lorsque l'utilisateur change de carte réseau, on peut alors doubler l'identifiant en se référant à un autre numéro, tel que le numéro de série du disque dur, de la carte mère, du processeur, etc
    Merci je vais exploiter ces pistes.

  5. #5
    Débutant
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    886
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 886
    Points : 330
    Points
    330
    Par défaut
    Citation Envoyé par moneytix Voir le message
    Mais comment faire que mon installation crée un identifiant unique ?
    voilà une question que j'aimerais encadrer et accrocher sur mon mur

    pour avoir cherché pendant longtemps, je ne veux pas te décourager mais la tache est dur !!!

    après tout dépend ... comme on t'as dit plus haut, si la personne à des intérêts, et du temps à perdre, il trouvera un moyen de contourner :/

    tu ne trouveras pas de formule magique

    après il y a quelque chose d'important à prendre en compte : ton logiciel, tu le distribue à qui ? tes amis ? à des clients ? au grand public ?

    gratuit ? payant ? (je l'espère vu que tu veux protéger)

    vois tu, il y a plus de facilité à protéger un programme qui oblige une personne à te contacter, te payer, pour que tu lui génère un identifiant précis; que de laisser ton programme à la merci de tout le monde

    pour l'adresse mac, oublies ... déjà que tu n'auras pas de code universel qui détectera l'adresse mac de toutes les machines, ensuite l'adresse mac peut être changé facilement ...

    précision concernant la fonction GUID : elle génère une chaine aléatoire à chaque appel, jamais la même

  6. #6
    Membre chevronné
    Avatar de free07
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    931
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ardèche (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 931
    Points : 1 913
    Points
    1 913
    Par défaut
    C'est clair qu'il n'y a pas de solution miracle !

    Citation Envoyé par Coussati Voir le message
    pour l'adresse mac, oublies ... déjà que tu n'auras pas de code universel qui détectera l'adresse mac de toutes les machines
    Je vois pas vraiment ce que tu veux dire par code universel ?

    Citation Envoyé par Coussati Voir le message
    ensuite l'adresse mac peut être changé facilement ...
    C'est vrai mais quelles en sont les conséquences ? Si le soft est installé sur un poste connecté à un réseau local d'entreprise, je vois mal l'utilisateur changé l'adresse mac !
    Si le soft est destiné à un particulier, il a forcément une connection internet et quels sont les conséquences du changement d'adresse mac ?

    Citation Envoyé par Coussati Voir le message
    précision concernant la fonction GUID : elle génère une chaine aléatoire à chaque appel, jamais la même
    La solution de la fonction GUID est peut être une solution interessante mais comment la gère t'on sachant qu'elle change à chaque appel de la fonction ?

    Une solution qui est aussi utilisé est de générer un numéro de série pour le soft au moment de l'inscription de l'utilisateur sur le site internet du concepteur du programme mais ce numéro de série est aussi 'hackable'...

  7. #7
    Futur Membre du Club
    Homme Profil pro
    sans
    Inscrit en
    Mars 2014
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France

    Informations professionnelles :
    Activité : sans
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2014
    Messages : 10
    Points : 5
    Points
    5
    Par défaut
    J ai bien reflechi.
    Le plus simple serait de simplement tester le couple Login/pass en ligne et de mettre un numero de serie unique dans le soft mais là aussi, si on decompile, on doit bien pouvoir trouver ce numero et le modifier non ?

    Que pensez vous du fait d'afficher dans le form les infos relatives au proprio, infos qui seraient dans un fichier crypté en 256 via les compos chilkat ou autre , la clef pourait etre recuperee en ligne en fonction de la signature md5 de ce fichier crypté ?
    Dans ce fichier il y aurait outre les infos relatives au proprio, un parametre que j ajouterais à tous les calculs et qui ferait planter le soft s il n est pas correct.
    le fichier serait alors cree et crypté au moment de l installation d apres un parametre aleatoire recuperé lui aussi en ligne lors de l inscription..

    Ce serait assez simple et permettrait, je crois de :
    -Si le fichier est absent, planter le lancement
    -s il est incorrect, planter l'execution
    -meme en cas de decouverte de la clef de cryptage, ce ne vaudrait que pour une seule appli

    qu en pensez vous ?

  8. #8
    Débutant
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    886
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 886
    Points : 330
    Points
    330
    Par défaut
    moneytix, je n'ai pas trop compris, mais bon étant donné que tu n'as pas répondu aux précisions que je t'ai demandé à propos de la distribution du logiciel, je ne m'avancerai pas d'avantage


    free07 :

    - ce que je veux dire pour l'adresse mac, il y aura forcément des machines où la détection ne fonctionnera pas (j'ai testé pas mal de fonction et au finale ça ne fonctionne pas sur tous les pc)

    - pour le changement de l'adresse mac, je pense que si la personne se trouve sur un réseau d'entreprise, celle ci n'ira pas jusqu'à chercher à pirater l'accès au logiciel

    - pour la fonction GUID, l'astuce qui n'en n'est pas vraiment une, est de sauvegarder la chaine généré lors de la 1ère exécution du logiciel; et lors des prochaines ouverture, il lira cette clé

  9. #9
    Futur Membre du Club
    Homme Profil pro
    sans
    Inscrit en
    Mars 2014
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France

    Informations professionnelles :
    Activité : sans
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2014
    Messages : 10
    Points : 5
    Points
    5
    Par défaut
    mon objectif est de distribuer à un public de trader un logiciel payant, une sorte de robot...

  10. #10
    Membre éprouvé
    Avatar de Gecko
    Homme Profil pro
    Développeur décisionnel
    Inscrit en
    Décembre 2008
    Messages
    499
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur décisionnel

    Informations forums :
    Inscription : Décembre 2008
    Messages : 499
    Points : 1 277
    Points
    1 277
    Par défaut
    Normalement tes clients sont censés êtres connectés à internet, pourquoi ne pas créer une API qui effectuera une partie du travail via le net?

    En gros ton client te paie une licence, tu attribue la licence à un couple login/pass (donc côté serveur), ensuite tu fais faire le plus gros du boulot par le soft mais tu garde une partie minime et vitale côté serveur.

    Du coup si le soft ne reçois pas ses instruction il ne tournera pas. Ensuite le soft peux très bien retourner hash contenant IP/Mac/Nom de la machine/nom de la session utilisateur à chaque requêtes, si tu constates que le soft effectue des requêtes rapprochées avec deux hash différents tu coupes les sessions. Si c'est répétitif du révoque la licence (faut le prévoir dans les CGU).

    Perso j'axerai ma protection dans ce sens pour rendre le soft inexploitable et sans stocker de valeurs côté client.
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    if ($toBe || !$toBe) echo 'That is the question';

    Mes projets: DVP I/O

  11. #11
    Futur Membre du Club
    Homme Profil pro
    sans
    Inscrit en
    Mars 2014
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France

    Informations professionnelles :
    Activité : sans
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2014
    Messages : 10
    Points : 5
    Points
    5
    Par défaut
    Citation Envoyé par Gecko Voir le message
    Normalement tes clients sont censés êtres connectés à internet, pourquoi ne pas créer une API qui effectuera une partie du travail via le net?
    Pke je debute et n avais aucune idee de cette possibilité...c est bien l idee premiere que j avais mais je contournais la non connaissance de cette possibilité en recuperant une valeur en ligne (avec indy) que j utilisais pour mes calculs dans une dll mais c est l ideal pour ce que j envisage mais ...

    peux tu m indiquer un tuto ou tout du moins une piste de recherche car je dois passer un tableau et recuperer un integer..
    A moins que l on pouisse appeller une fonction dans une Dll sur une autre machine, auquel cas je n ai rien à modifier sion apprendre à faire communiquer sur le reseau ...

    bon peut etre je melange tout là...

    ilfaudrait donc un VPS windows et non un serveur web

    merci de ton aide

    j ai trouvé une piste sur les objets com, c est ça ? http://docwiki.embarcadero.com/RADSt...us_et_distants

  12. #12
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    12
    Détails du profil
    Informations personnelles :
    Âge : 53
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2005
    Messages : 12
    Points : 17
    Points
    17
    Par défaut
    Bonsoir,

    Citation Envoyé par moneytix Voir le message
    Que pensez vous du fait d'afficher dans le form les infos relatives au proprio, infos qui seraient dans un fichier crypté en 256 via les compos chilkat ou autre , la clef pourait etre recuperee en ligne en fonction de la signature md5 de ce fichier crypté ?
    Dans ce fichier il y aurait outre les infos relatives au proprio, un parametre que j ajouterais à tous les calculs et qui ferait planter le soft s il n est pas correct.
    le fichier serait alors cree et crypté au moment de l installation d apres un parametre aleatoire recuperé lui aussi en ligne lors de l inscription..
    qu en pensez vous ?
    un petit coup de désassembleur , un petit JMP et ton soft n'ira même pas verifier l'existence du dit fichier !

    Normalement tes clients sont censés êtres connectés à internet, pourquoi ne pas créer une API qui effectuera une partie du travail via le net?

    En gros ton client te paie une licence, tu attribue la licence à un couple login/pass (donc côté serveur), ensuite tu fais faire le plus gros du boulot par le soft mais tu garde une partie minime et vitale côté serveur.

    Du coup si le soft ne reçois pas ses instruction il ne tournera pas. Ensuite le soft peux très bien retourner hash contenant IP/Mac/Nom de la machine/nom de la session utilisateur à chaque requêtes, si tu constates que le soft effectue des requêtes rapprochées avec deux hash différents tu coupes les sessions. Si c'est répétitif du révoque la licence (faut le prévoir dans les CGU).

    Perso j'axerai ma protection dans ce sens pour rendre le soft inexploitable et sans stocker de valeurs côté client.
    Plus ingénieux, mais pas mieux, si ton serveur tombe en panne ou autre... tes clients sont dans la merde et par la même occasion toi aussi.

    C'est peut-être une connerie que je vais dire mais sais-t'on jamais...
    Et si tu codait par exemple une verification de clé qui fait partie intégrante d'une fonction / procédure dont le logiciel a un besoin vital.

    je tente de m'expliquer:

    debut d'une procédure du logiciel
    ....
    ....
    calcul de verification de la licence sous forme morcelée
    partie 1
    partie 2 (sert en partie a la verification de licence mais aussi à une partie vitale de la procedure du logiciel)
    partie 3
    la suite de la procedure du logiciel
    ....
    fin de la procédure

    vu que le logiciel se sert de cette procedure a la fois pour la verification de la licence,
    mais en dehors de cela l'utilise aussi pour une fonction vitale du logiciel...
    si l'on désassemble et que l'on tente de jumper le contrôle, le logiciel plante à coup sûr.

    pour pouvoir passer outre , il faudrait pouvoir réecrire la procédure pratiquement en entier et là coté crackers il y à beaucoups moins de monde pouvant faire ça.
    si en plus de cela tu code et compile en 64 bits tu es tranquilles pour un moment excepté IDA Pro , les autres désassembleurs ne sont pas encore au point niveau 64 bits.

    Bien à vous

  13. #13
    Membre émérite
    Avatar de ALWEBER
    Homme Profil pro
    Expert Delphi
    Inscrit en
    Mars 2006
    Messages
    1 496
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Expert Delphi

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 496
    Points : 2 762
    Points
    2 762
    Billets dans le blog
    10
    Par défaut Une solution
    Bonjour,

    Voici ce que j'ai employé il y a quelques années et qui a très bien fonctionné

    Deux programmes. L'un P1 que tu gardes, l'autre P2 qui est le programme livré au client
    Sur P2. tu calcules une clé C1 à partir de la macadress composée avec un nombre aléatoire.
    La première fois le logiciel P2 te sollicite par un envoi d’Émail de demande de licence et le code calculé
    Avec P1 tu calcule une clé d'autorisation C2 que tu renvoies au client

    C1 et C2 sont stockées dans la base de registre du client et c'est cette autorisation qui permet d'autoriser l'exécution du programme
    client.

    Cordialement

  14. #14
    Responsable Lazarus & Pascal

    Avatar de gvasseur58
    Homme Profil pro
    Cultivateur de code (bio)
    Inscrit en
    Février 2013
    Messages
    1 436
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Cultivateur de code (bio)
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2013
    Messages : 1 436
    Points : 20 855
    Points
    20 855
    Billets dans le blog
    84
    Par défaut
    Citation Envoyé par moneytix Voir le message
    mon objectif est de distribuer à un public de trader un logiciel payant, une sorte de robot...
    Bonjour,

    De toute cette discussion, je pense que tu devrais retenir ce qui suit :
    1. Il n'existe AUCUN moyen de protéger à 100% ton logiciel Qui n'a jamais vu le programme d'une grande firme piraté, parfois même avant sa sortie ?
    2. La protection doit être en fonction du public que tu vises : faire "planter", s'appuyer sur le matériel, bloquer avec une ligne Internet, autant de solutions qui, commercialement, sont des erreurs. En effet, qui achèterait un logiciel qui se bloque à la moindre contrariété ? Le client cherche un outil et se contrefiche de savoir qu'il est bloqué pour préserver les intérêts de son auteur : il veut qu'il remplisse son travail à toute heure et en tout lieu. Tous ceux qui ont opté pour des systèmes genre dongle sur une prise USB pourraient te l'expliquer si leur entreprise n'avait pas coulé...
    3. La protection des logiciels est un métier à part entière : le bricolage est contournable par un pirate en quelques minutes, au pire en quelques heures. Il existe des solutions professionnelles de protection : tu vends, mais tu peux aussi acheter ce genre de composant tiers.
    4. Pour être piraté, ton programme doit présenter un sérieux intérêt et une bonne diffusion. Demande-toi si c'est le cas. Les clients honnêtes sont les plus nombreux (mais peut-être pas dans le monde des traders que tu vises ).

    Bon courage
    Accès à mon site et à mon blog. Actualités, cours et ressources Delphi, Lazarus et Pascal.
    Pensez à la balise - Quelqu'un vous a aidé ou vous appréciez une intervention ? Pensez au

Discussions similaires

  1. Réponses: 1
    Dernier message: 01/04/2015, 16h38
  2. Identifier une machine unique (client)
    Par biloumousse dans le forum Langage
    Réponses: 2
    Dernier message: 02/02/2006, 20h33
  3. Comment identifier une machine de facon unique ?
    Par BigBenQ dans le forum Développement
    Réponses: 14
    Dernier message: 19/12/2005, 08h36
  4. InnoSetup => Créer une installation ?
    Par MaTHieU_ dans le forum C++Builder
    Réponses: 2
    Dernier message: 30/04/2005, 22h53
  5. Créer une install
    Par Erwin dans le forum MFC
    Réponses: 13
    Dernier message: 27/01/2004, 18h25

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