PDA

Voir la version complète : Commercialiser un module



César Vonc
06/10/2013, 16h48
Bonjour,


Je prévois de vendre un petit module et me pose quelques questions sur sa commercialisation :

Comment peut-ton limiter le module à un numéro de série ? Faut-il forcément le recompiler en ajoutant le numéro de série de l'utilisateur ?

J'imagine que le plus simple est d'utiliser Paypal pour la transaction, peut-on automatiser l'envoi du module après le paiement, ou faut-il le faire à la main à chaque fois ? Comment fait-on si part en vacances, par exemple ? : P

Tengaal
06/10/2013, 19h34
en ce qui concerne le numero de serie, il faut réaliser un algorithme qui permet de générer un code unique en fonction d'une ou plusieurs données de départ (11 chiffres du serial C4D, email de l'utilisateur, etc...)

Ainsi ton module, au démarrage, regarde si son numero de série est défini ou pas (stocker ce numero de série dans un fichier spécifique, si possible bien caché ! ;))
si le numero de série n'est pas défini, alors le module ne fonctionnera pas, ou alors en mode "demo".
si le numéro est défini, alors le module va le comparer au code qu'il génère systématiquement à partir du C4D de l'utilisateur.

bien sûr de ton côté tu as également le générateur de code, qui te permet, après avoir reçu le réglement de l'utilisateur, de lui fournir le code adapté à son C4D.

donc ici tu n'as qu'un seule version de ton module à vendre, le code est généré systématiquement et comparé au sérial fournit, le code n'est pas intégré dans le module.

César Vonc
06/10/2013, 21h45
Ah, ça fait longtemps, Tengaal, content de te voir ici ! ^^


Donc si j'ai bien compris :

- Soit on génère une clef à partir de ses données personnelles dans un fichier qu'on ajoute au module, qui vérifie au démarrage que le numéro de série inscrit dedans est bien le même que celui de C4D.

Ce qui nécessite donc d'ajouter un fichier au module avant de l'envoyer.


- Soit on créé un algo qui génère une clef uniquement à partir du numéro de série de C4D, qu'on envoie à l'utilisateur après le paiement et qui est vérifiée par le module avec ce même algo et le numéro de série lu.

Ça me paraît être plus simple car tout peut être automatisé, seulement comment enregistrer cette clef dans C4D ? Faut-il créer une boîte de dialogue spéciale ou C4D a ce qu'il faut pour ça ?

valkaari
07/10/2013, 00h44
Avec le sdk c++ il y a tout ce qu'il faut, t'as une fonction qui vérifie si le numéro entré est le bon. (la fonction renvoie vrai ou faux)

Donc tu mets ce que tu veux dans la fonction pour vérifier. Soit à partir du numéro de série c4d, soit en envoyant un numéro qui contient deux parties de clefs mélangés.

L'avantage de le lié a un numéro de c4d c'est qu'on ne peut pas l'utiliser sur plusieurs machines, donner son numéro de série facilement. Inconvénient c'est qu'à chaque mise à jour, il te faut régénérer ce numéro. (avec le lot de boulets qui vas avec)

Sinon avec paypal et les Notification Instantané de Payement, tu peux tout automatiser (mais me semble que je te l'avais déjà dis y longtemps).

Y compris la création du fichier zip à l'envoie, le lien limité dans le temps si t'as envie.



Bref, aucunes solutions n'est fiable de toute façon, c'est juste pour "limiter" le hacking de ton soft. Autant mettre en place la solution la plus simple pour toi et l'utilisateur.

César Vonc
07/10/2013, 01h57
Oui effectivement, j'ai vu qu'il y avait la classe SNHookClass en C++ pour ça, mais j'ai omis de préciser que c'était pour du Python, qui n'est hélas pas aussi complet.

Là je pense à créer une boîte de dialogue demandant le numéro de série, s'il est bon, créer automatiquement un fichier contenant cette clef dans le répertoire du module, qui sera ainsi chargé automatiquement à chaque démarrage... mais ça ne me semble pas très optimal. On ne pourrait pas loger une variable dans les entrailles de C4D et la retrouver à chaque ouverture du logiciel ?



Je vais me remettre le nez dans Paypal, je me souviens avoir essayé, à une époque, en galérant pas mal... : P

valkaari
07/10/2013, 04h29
Cette classe permet d'utiliser la boite de dialogue de cinema4D. T'es pas spécialement obligé de l'utiliser (me semble que cactus dan d'ailleurs ne l'utilise pas)

t'as par exemple c4d.GeGetSerialInfo(c4d.SERIALINFO_CINEMA4D) pour avoir des infos sur le serial de cinema4D

et WritePluginInfo()

et sa copine ReadPluginInfo()

qui existent en python.

je suis jamais passé par ces fonctions en c++ je peux pas t'en dire plus xD

sinon t'as ce "blog" http://c4dprogramming.wordpress.com/

il y a des exemples en C++ mais avec le php etc, ça te donnera la logique.

César Vonc
07/10/2013, 23h34
Ah oui dis donc, il y a beaucoup d'infos sur ce lien, merci !

Je vais faire en sorte qu'il soit téléchargeable sans condition, mais en ne se lançant qu'en version démo si aucune clef n'est enregistrée. La boîte de dialogue principale du module aura un champ de saisie pour entrer une clef et ainsi activer l'outil complet. Ça me paraît être le plus simple.

valkaari
08/10/2013, 00h17
Personnellement la "protection" de la version demo est une vaste blague en utilisant les outils du sdk. Le mode démo peut être limité à 30 jours par exemple. Sauf que ces informations sont stockés et facilement retrouvable. Très très facilement.

Du coup, une petite recherche, zoup on efface toute trace d'enregistrement du plugin.
Le plugin repart en mode démo comme si tu n'avais jamais installé le bousin.

Donc il vaut mieux limiter les fonctions de ton plugins (et faire une version spéciale démo).

C'est pour cette raison que certains ne fournissent des démo de leur plug qu'en utilisant la version demo de cinema4D. (qui ne peut normalement être activé que 42 jours, mais la encore ..... )

Bref fournir une version démo pour la version complète de cinema4D, c'est limite donner gratuitement son outils.

César Vonc
08/10/2013, 00h28
Ah, mais quand je parlais de la version démo du module, je voulais dire avec des fonctions limitées, oui, pas limité dans le temps. ^^

Si pas de clef : fonctions limitées
Sinon : fonctions complètes

Ça ne me paraît pas vraiment violable ainsi, à moins que je n'aie pas bien compris ce que tu voulais dire ?



La limite avec le temps... ça me rappelle le temps où on remontait la date de l'ordi pour profiter des démos de logiciels. :ninja:

valkaari
08/10/2013, 00h44
oui si tu fais une version aux fonctions limités là ça marche. Par contre tester une version limité, j'suis pas certain que les gens aiment beaucoup.

Si ton outils est populaire il y aura rapidement une version cracké et donc les gens préféreront aller tester la version complète cracké que ta version démo. Puis après venir acheter ta version complète.


J'ai bien croisé un type qui après avoir acheté mon xplode, s'est fait dépanner par le mec qui a cracké la protection. (le numéro de série ne fonctionnait plus du coup avec ma version officielle)
Sont "gentils" finalement ces crackers, ils assurent un SAC (support après crack)

Je penses que se prendre la tête pour la protection c'est perdre son temps. De toute façon, y aura toujours un mec pour te casser ton code. Mieux vaut passer du temps a coder un autre outil et faire de la tune plutôt que d'essayer de protéger ce qui est impossible à protéger.

César Vonc
08/10/2013, 01h32
C'est fou, je me demande comment ils font, le type de ton lien disent qu'ils modifient le code d'assemblage ou je ne sais quoi pour inverser la condition de vérification, rien que ça... tu dois te sentir comme un dieu avec une telle maîtrise.

Perso, mon module est un filtre d'import, je réfléchis encore à la façon de le limiter pour la démo, peut-être en important qu'un nombre limité d'objets.

Ou bien en autorisant qu'une importation par session, forçant le redémarrage de c4d pour pouvoir réimporter à nouveau, juste pour que la démo soit chiante à utiliser, mais pas sûr que ça plaise à tout le monde ni que ça donne envie d'acheter. : P

Tengaal
08/10/2013, 22h03
tu peux limiter la taille du fichier à ouvrir (c'est assez simple de connaitre l'information de taille d'un fichier), ainsi tu peux définir une limite.

par exemple tu limite l'ouverture de fichiers inférieurs à 10 ko par exemple (à voir avec le format des fichiers concernés, c'est peut-être déjà beaucoup, ou alors beaucoup trop bas comme seuil, tout dépend du contenu...).