# Implementer une clef de licence pour un logiciel commercial



## Lio70 (27 Mai 2010)

Bonjour,

Je voudrais savoir comment implementer un systeme de clef (numero de licence) que l'utilisateur doit taper lors de l'installation, ou plus tard via les Preferences par exemple.

Ma question porte davantage sur la meilleure facon de stocker cette clef et de coder la procedure de verification lors des utilisations suivantes du logiciel. Est-ce dans un fichier texte du type *.plist par exemple, a l'interieur du *.app ? Ou bien quelque part dans Library/... ? J'ai explore le contenu de certains fichiers *.app d'applications commerciales que j'utilise mais sans pouvoir en tirer quoi que ce soit.

Est-ce qu'en general cette clef est laissee "en clair" ou bien est-il courant de la crypter ?

Pour reduire les risques de piratage, je pensais produire pour l'utilisateur une clef personnalisee qui "repond" a une information propre a l'ordinateur, par exemple le numero de serie. Mais je n'ai pas la moindre idee de la facon d'obtenir cette information. Le code Obj-C doit-il s'adresser au hardware, ou cette information est-elle egalement contenue dans un fichier (par exemple produit lors de l'installation du systeme) ?

Quelques suggestions seraient les bienvenues...

Merci


----------



## Zeusviper (27 Mai 2010)

Salut! 

le plus simple et complet à mettre en place à mon avis : 
http://aquaticmac.com/

Sinon, il y a aussi http://www.*kagi*.com/ 


Sinon : http://forum.pommedev.com/index.php?topic=4072.msg


----------



## Mac*Gyver (27 Mai 2010)

Si ton soft a une periode de demo debrayable grace a une licence, cette licence (le serial number quoi) sera un jour ou l'autre diffusee sur des sites de serial (surtout si ton soft est populaire).

la meilleure protection a mon avis, c'est une version de ton soft limité gratuite puis un autre complete mais a acheter (tu payes pour pouvoir la telecharger).

Ca limite le nombre de piratage car meme si quelqu'un qui achete le soft le diffuse sur des sites, peu (ou moins) de personnes prendront le risque de le telecharger et l'installer ( règle de base pour pas se chopper des saloperies sur son mac).

Alors qu'avec juste un code a choper sur un site douteux et le soft qui viens du site officiel, il n'y a pas ce risque pour pirater.

(c'est pas tres clair mais j'espere que tu saisis)


----------



## pascalformac (27 Mai 2010)

bonjour
Si tu veux une sécurté accrue 
je te conseille de te tourner vers les solutions qui comportent une validation -controle( masqué ou non) en ligne
ceci limite les effets de bidouillage geek pour tenter des  install multi machines avec une seule licence monoposte


----------



## Mac*Gyver (27 Mai 2010)

p4m, tu parles d'une install qui se verrait interrompu si on bloque l'appli avec Little Snitch ?

et comment ils font ceux qu'on pas internet alors? 
(d'ailleurs on les entends plus trop ici depuis depuis un moment).


----------



## pascalformac (27 Mai 2010)

> p4m, tu parles d'une install qui se verrait interrompu si on bloque  l'appli avec Little Snitch?


oh non pas forcement interrompue
mais par exemple n'allant pas au delà de la periode d'essai ...limitée (  dans le temps ou en options)




> et comment ils font ceux qu'on pas internet alors?
> (d'ailleurs on les entends plus trop ici depuis depuis un moment).


ils se démerdent , comme ils le feraient pour lire leurs emails ou télecharger une appli ou faire les maj necessaires à leur matosse


----------



## tatouille (28 Mai 2010)

perso en 2010 nous n'avons pas de client sans internet (de toutes les facon on vend pratiquement que par internet), nous fesons du logiciel pour en vivre (ce n'est pas du social), le "+ secure" serait de generer une clef prive/public quand le gas enregistre le produit tu lui genere sa clef privee + random info " basees sur le hardware/ time ecetera et garde la clef public cote server


----------



## Lio70 (29 Mai 2010)

Merci pour vos reponses. Je vais examiner plus en detail toutes ces solutions. Etant donne que certains shops online auxquels on peut sous-traiter la vente s'occupe aussi d'octroyer une clef de licence, je pensais a faire ceci pour reduire les risques. Reste evidemment a automatiser un maximum de processus!

1- Le client recoit une clef de licence du vendeur.
2- Le vendeur m'envoie la liste des gens qui ont achete le soft et leur clef de licence (c'est apparemment ce qui se passe avec une des solutions que vous m'avez recommandees). J'importe cela dans ma base de donnees.
3- Dans les Prefs du logiciel, l'utilisateur lit une clef qui est le resultat d'un algorithme utilisant le nom du logiciel et le numero de serie de son ordinateur. Cette clef est generee lors de l'installation du logiciel. C'est donc une clef unique pour ce logiciel-la sur cet ordinateur-la.
4- Il se connecte a mon site avec son code d'utilisateur/de client qu'il aura cree "chez moi", et pourra voir dans sa fiche qu'il a effectivement achete le logiciel et peut meme lire sa clef de licence. Il tape alors la clef generee par le logiciel, et un autre algorithme genere pour lui la clef finale, qu'il doit entrer dans les Prefs.

En fait, l'operation est moins terrible qu'elle n'en a l'air. 

Mais pour rejoindre ma question initiale, comment programmer en Objective-C pour lire le numero de serie de l'ordinateur?


----------



## pascalformac (29 Mai 2010)

il y a un avantage annexe lié à une validation via un " call home" ( cad validation via ta base de données) telle que tu l'exposes en 4

ca peut AUSSI etre un élement interessant de relation client en boostant une page profil client  au delà de la simple verif-generation de log

puisque le client y va , autant s'en servir pour en faire une zone relationelle
( accès FAQ , doc, offre d'inscription newsletters , zone de contact pour support avancé ou   commentaires etc)
tout ca est souvent ailleurs sur le site


----------



## Lio70 (29 Mai 2010)

pascalformac a dit:


> puisque le client y va , autant s'en servir pour en faire une zone relationelle
> ( accès FAQ , doc, offre d'inscription newsletters , zone de contact pour support avancé ou   commentaires etc)
> tout ca est souvent ailleurs sur le site


C'est exactement ce que j'avais prevu. 
Finalement, l'AquaticMac a l'air interessant. Je vais sans doute l'utiliser. Reste maintenant  a trouver un shop fiable, de preference en plusieurs langues, qui m'envoie chaque jour toutes les coordonnees des acheteurs.
Je pourrais faire le shop moi-meme en PHP/MySQL. Je l'ai deja fait pour quelqu'un d'autre avec os-Commerce et le systeme de payement Ogone mais je ne veux pas assumer cela pour moi-meme. En plus, avec un autre shop, la vente et la facturation est sous-traitee tandis que si je le fais moi-meme, je genere moi-meme les factures et les honoraires de mon comptable vont grimper :rateau:.


----------



## pascalformac (29 Mai 2010)

change de comptable
( je sors)


----------



## Lio70 (29 Mai 2010)

pascalformac a dit:


> change de comptable
> ( je sors)


Non non, reste !  Mais a raison de 5 logiciels vendus dans le monde entier, meme un succes faible peut globalement representer quelques centaines de copies vendues par mois.


----------



## Anonyme (7 Juin 2010)

Il faut coupler ta clé avec un enregistrement sur un serveur sur le net qui fait une corrélation avec une signature de ta machine.

Sinon, si c'est des fichiers cachés sur disque, on peut réinitialiser indéfiniment le soft sur ta machine.

A+

Philippe.


----------



## Lio70 (15 Juin 2010)

Merci pour vos reponses.
Pour le shop, je vais sans doute travailler avec e-Sellerate. Cela n'a pas l'air mal.


----------



## farhaneit (21 Juin 2010)

J'aimerais signaler que presque tout les ordinateurs Apple se ressemblent. Il n'y a pas des milliers de configurations possibles et presque tout les macbook ont le même matériel, tout comme les iMac...
Je veux dire par la, qu'identifier l'acheteur par son matériel n'est pas très judicieux dans la mesure où il y a de fortes chances de retrouver la même configuration.

J'opterais plutôt pour le numero de serie de l'ordinateur + nom d'utilisateur + adresse MAC + langue du système d'exploitation


----------



## tatouille (21 Juin 2010)

c'est precisement de quoi on parlait....

"signature de ta machine"
"tu lui genere sa clef privee + random info " basees sur le hardware/ time"


----------



## farhaneit (21 Juin 2010)

> c'est precisement de quoi on parlait....
> 
> "signature de ta machine"
> "tu lui genere sa clef privee + random info " basees sur le hardware/ time"


Oui mais ca n'a aucun sens d'identifier un utilisateur avec son hardware vu qu'il y a un parc immense d'ordinateurs avec la meme configuration.


----------



## tatouille (22 Juin 2010)

farhaneit a dit:


> Oui mais ca n'a aucun sens d'identifier un utilisateur avec son hardware vu qu'il y a un parc immense d'ordinateurs avec la meme configuration.



tu ne comprends pas.


----------



## Anonyme (26 Juin 2010)

Oui effectivement .... ce n'est pas compris.

Chaque machine à un serial number par exemple et bien d'autre chose propre à lui comme la mac adress etc ....

A+

Philippe.


----------

