Gérer les numéros de série

simon

Membre expert
Club iGen
18 Juin 2000
3 669
16
Singapore
www.simonganiere.ch
Non non ce n'est pas un post pour choper des numéros de série...mais plutôt le contraire...

Je suis entrain de developper deux trois softs et je voulais les vendres sous forme de Shareware une fois qu'ils seront finis. Maintenant ma question était la suivante: comme générer des numéros de série et surtout comme faire pour que le soft se rende compte qu'un numéro de série est valable ??? Je programme en Java, AppleScript et peut-être bientot en cocoa
wink.gif
On fait comment on chope un alogorythme et on fait une base de donnée ?? Merci
 
Une solution toute bete consiste à générer un CODE à partir du Nom de la personne utilisatrice et à partir du Nom du programme. Avantage : le système peut servir pour plein d'applications différentes, faut juste changer le nom du programme.

Une routine permet de calculer ce Code et de vérifier si le code saisi par l'utilisateur correspond à celui généré par son nom et par le nom du programme (qui est stocker dans celui ci).

Exemple en RealBasic :
Ici le Nom de la société est dans la variable : LICENCESOCIETE
Le nom du logiciel est dans la variable : LICENCEAPPLICATION
Le résultat du calcul de la clé est dans la variable : LICENCEVALEUR
Donc il faut alimenter à l'avance LICENCESOCIETE et LICENCEAPPLICATION pour récupérer LICENCEVALEUR

La clé calculée est de la forme : XXXXX-XXXXX-XXXXX-XXXXX

La variable SERIE contient une suite de caractères qui sert à calculer les caractères de la clé, à vous de la changer.

Je me souviens plus trop comment ça marche, mais je passe par la valeur ASCII de chaque caractère que je triture un peu beaucoup
smile.gif



Dim LaLongueur, i, j as integer
Dim LeTabl(0) as integer
Dim Serie, MotPass, LaClef, LicApp as string
LicApp = Left(LICENCEApplication+"ABCDEFGH01234567123456",20)
LaLongueur = Len(LicApp)
Serie = "536YFH7RNTAJCUVQ1MWLXOS0I4ZGBP9K8END2"
'--- initialisation du tableau ---
For i = 1 to LaLongueur
LeTabl.Append asc(Mid(LicApp, i, 1))
Next
'--- Alongement du mot de passe ---
if LICENCESociete = "" then
MotPass = "XAXAXAXASSAFE"
Else
MotPass = LICENCESociete
End
do until Len(MotPass) > LaLongueur * 3
MotPass = MotPass + MotPass + "X"
loop
'--- Boucle de calcul ---
j = 0
for i = 1 to len(MotPass)
j = j + 1
if j > LaLongueur then
j = 1
End
LeTabl(j) =LeTabl(j) + asc(mid(MotPass, i, 1))
next
'--- Transformation en cle ---
LaClef = ""
j = 0
for i = 1 to LaLongueur
j = j + 1
if j > 5 then
LaClef = LaClef + "-"
j = 1
End
LaClef = LaClef + mid(Serie, (floor(1.5 + LeTabl(i) mod len(Serie))),1)
next
LICENCEValeur=LaClef
 
Bonjour,

Et bienvenue dans le mode du partagiciel.

La solution proposée est sympa mais elle risque de t'entrainer des déboires. En effet tu ne peut etre sur à 100 % de ce que la personne va entrer comme nom.

Par exemple M Martin va s'enregistrer au nom de "M Martin" et entrer "Jean-Pierre Martin", ca ne va pas marcher, il va gueuler...

De plus cela n'ajoute rien au niveau protection, les SerialSurfers et consorts diffusent simultanément le nom et le numéro de série.

Je pense qu'il est préférable de ne pas rattacher le numéro de série au nom ou au hardware de la machine.

Mais il est vrai, la solution proposée par MFay est très utilisée et pourra certainement suffire à tes besoins.

Par contre, si tu veux des renseignements sur les modes de diffusions, mode de paiements à proposer selon les pays, paiements par carte bancaire, taxe et déclarations aux impots (car j'espere que tu vas gagner beaucoup de sous) je suis a ta disposition.

Par exemple, si un Francais achete une de tes licences par un service de carte bancaire aux USA dois tu reverser la TVA sur la vente ? Hmmm ?

Cordialement
 
Coucou,

Ca non, ma solution n'est pas sûre à 100%, mais je trouve qu'elle est la plus pratique. Pour avoir le code, la personne est obligée de te contacter et si elle doit payer elle voudra sûrement le logiciel à son nom (et on peut le vérifier sur le chèque). J'ai horreur de ces logiciels qui te demandent un nouveau code, dès que tu rajoutes un disque dur, que tu réinstalles le système ou que tu changes de machine.

A partir de son nom, et du nom du logiciel tu lui rends :
- Le code à saisir
- Son nom tel qu'elle doit le saisir

Dans les préférences de ton logiciel, tu stockes le nom et le numéro de code. et tu recalcules la clé à chaque démarrage pour vérifier que la clé présente dans le fichier préférence est OK.


Allez, je décrit en gros ma méthode de calcul :
1) Je convertis tous les noms en majuscule (nom applic, nom personne), je retire les accents (pour rester compatible avec les putains de PC).
2) Je concatène : Le nom de l'applic et le nom de la personne et une suite de caractère au pif (pour brouiller)
3) Sur un tableau entier de 20 positions, je place la valeur en ASCII de chaque lettre de la chaîne de caractère, dès que je dépasse la 20 position, je reviens sur la première et je cumule les valeurs en continuant à incrémenter.
4) Pour les 20 positions, je récupère le modulo 36 de chaque résultat du calcul.
5) A chacune des 20 valeurs (0 à 35) je récupère le caractère stocké dans un tableau ou j'avais mélangé à l'avance les 36 lettres et chiffres (A->Z, 0->9). Le désordre c'est encore pour brouiller les pistes.
6) Je cumule tous les caratères obtenus, je rajoute des tirets pour faire joli. Et voila un beau petit CODE

Ce n'était pas exactement ça, mais ça revient au même. Accessoirement, il est possible qu'un même numéro de code puisse être valable pour deux noms différents, mais ça n'a aucune importance.

En fait, j'ai plus effectué cette solution pour m'amuser, et je ne l'ai utilisée que pour deux choses :
- Dans un agenda, pour bloquer l'accès (à la demande d'un de mes utilisateurs).
- Dans un logiciel gratos que j'ai mis dans mon entreprise, mais simplement pour en suivre l'utilisation.
Si une personne veut l'utiliser, ça reste gratuit, Seule l'utilisation sur un serveur nécessite une clé qui est encore gratuite.

[01 mai 2002 : message édité par mfay]
 
Merci pour vos conseils, en fait le truc c'est de trouver un algorithme très bizarre et pas facile à trouver et stocker le nom de la personne et son code ds un fichier et vérifier à chaque démarrage de l'appli. C'est bien ce que je pensais
wink.gif


Didier ne part pas trop loin je risque de te recontacter si cela ne te dérange pas je suis déjà entrain de me dépatouiller avec des histoires de contrat de travail
wink.gif
 
Salut mfay,

Ce que je voulait dire c'est que générer un numéro de série par rapport au nom de la personne n'apporte strictement rien au niveau sécurité supplémentaire :
quand un pirate diffuse un numéro de série il diffuse également le nom correspondant.

Par contre, cela t'impose de générer chaque numéro "à la main" et laisse la possibilité à l'utilisateur honnete de se retrouver bloqué car il n'entre pas le bon nom.

Vous comprendrez que la principe d'une bonne protection n'est pas de se discuter sur un forum public, je ne peut donc vous donner ici plus de détails.

Mais pour les généralités c'est ok:

Une protection c'est un soldat en territoire ennemi.

- Il n'y a pas de protection générique. Chaque protection doit être concue de maniere a s'adapter au terrain. (en fonction de ce que fait le logiciel, la protection sera differente)

- Il doit etre invisible (ne pas perturber l'utilisateur honnete)

- Il doit bouger, et bouger encore. (Il faut sortir tres souvents de nouvelle versions du logiciel)

- Il doit garder des cartouches (la protection ne doit pas etre a un seul endroit du logiciel mais se cacher pour se reveiller a certains moments)


Cordialement
 
<BLOCKQUOTE><font size="1" face="Verdana, Geneva">quote:</font><HR>Posté à l'origine par Didier Guillion:
Salut mfay,

Ce que je voulait dire c'est que générer un numéro de série par rapport au nom de la personne n'apporte strictement rien au niveau sécurité supplémentaire :
quand un pirate diffuse un numéro de série il diffuse également le nom correspondant.
<HR></BLOCKQUOTE>

c'est pas tout à fait vrai.
les pirates amateurs ont un peu plus de réticence à inclure un faux nom pour un enregistrement d'un logiciel. certes, c'est une notion difficilement appréciable, mais je pense que ce comportement est assez majoritaire.
de plus, il devient plus facile au développeur de bloquer à l'enregistrement certains noms trop génériques, et, après repérage de SN de son logiciel qui trainent sur le web ou dans les SerialSurfer, il peut "griller" le nom lors d'un update de son logiciel sans scrupule, s'il a rédigé une licence en conséquence.

pour ma part, je préconiserais d'utiliser le nom de l'ordinateur utilisé dans Partage de fichiers,
ou l'adresse email utilisée dans Messagerie de la préférence système Internet. en imposant ce nom pour l'enregistrement. Si plusieurs logiciels font de même, il devient très difficile aux pirates d'installer des noms différents.
Avec une notice explicative claire, une sensibilisation au problème, beaucoup d'utilisateurs apprécient ces démarches, ils en ont aussi marre de voir l'insolence des pirates alors qu'eux ont payé et donc sont prêt à jouer le jeu.
le must est une page web permettant un support de ces problèmes de SN avec des temps de réponse très rapide. l'utilisateur doit être capable de changer tout seul une nouvelle combinaison s'il change son nom d'ordi ou son email dans les cas que j'évoquais.

enfin, rappellons quelques principes élémentaires:
si ton logiciel est utilisable pour une période donnée, puis se fige en exigeant un numéro de série, n'oublie pas de faire des contrôles intelligents des dates: il est très facile de décaler la date de son ordinateur, aussi garde bien gravé quelque part la date d'installation ou du premier lancement une fois installé sur la machine de l'utilisateur. le contrôle ne devra pas se limiter au démarrage du logiciel mais aussi aléatoirement durant l'utilisation du logiciel, c'est le plus efficace.

pour le controle de la concordance du sn enregistré au moment du démarrage, essaie de ne pas simplement mettre une variable à OK et c'est tout. il devient trop facile de développer un crack par un pirate qui ira modifier ton code pour initialiser et forcer ta variable à OK, court-circuitant ainsi tout contrôle.

si l'expérience vous a appris d'autres astuces, merci de les partager pour le bien de la communauté
wink.gif


j'oubliais: Cocoa Dev Central a fait un bon tutorial pour Cocoa là-dessus. Comme ils font un superbe boulot, je parle encore d'eux, et comme tu vas pas tarder à Cocoa, Simon, voilà pour toi:
Make a Registration Code App

[30 avril 2002 : message édité par ovoleur]
 
Si je ne fais pas d'erreur il est possible de créer un fichier dans le logiciel sous OS X, j'entend par là à l'intérieur du "contenu prologiciel" est-ce que ce serait un bon endroit pour un tel fichier ??? Un peu moins triviale que de le mettre ds ~/Library/Preferences non ??? Est-ce que ce serait une bonne idée de le crypté je sais qu'avec du Java il est possible de crypter des fichiers, histoire que si quelqu'un veut bêtement chopé la date d'installation ou le numéro de série il ne puisse pas le faire directement ???
 
Bonjour,

Bon, on ne vas pas polémiquer sur le fait ou non de générer un numéro de série basé sur le nom de l'utilisateur. C'est un point de détail.(Hmmm, je me demande si c'est bien le moment d'utiliser ce genre d'expressions)

Un logiciel doit se protéger contre trois attaques possibles :

1- Les numéros de série qui circulent.
Ceci peut se faire de manière locale : l'utilisateur qui refile un numéro de série à un pote en disant "fait comme moi, promet de ne pas le donner". Contre ceci il n'y a pas grand chose à faire si ce n'est tenter de donner mauvaise conscience au pirate. Assez difficile je l'avoue.
Ou de manière globale : le numéro de série est diffusé sur Serial Surfer ou sur des sites Web. Plus facile a contrer il suffit de griller le numéro de série.
Astuce : toujours insérer une séquence constante dans le numéro de série, ceci facilite la recherche sur le Web...

2- Les cracks. Ce sont des programmes qui "cassent" la protection en modifiant dans le programme les endroits de tests.
Parades :
- Avoir plusieurs tests dont certains ne passent que rarement (les pirates sont de gros faineants et s'arretent souvent à la première protection)
- Avoir des tests inverses : invoquer la routine de test avec un mauvais numéro de série, cela doit répondre "pas bon" ou alors il y a un probleme.
- Sceller son programme et vérifier que le code n'a pas ete modifié lors de l'execution.

3- Les keygens, c'est les pires. Le pirate a désassemblé ta routine de vérification et à réécrit la routine inverse. Il est donc capable de générer autant de numéro de série qu'il veut.

Parades : Les cartouches.
Je m'explique. Tu génére un numéro de série sur 64 bits par exemple mais tu n'en teste que 32. Quand le keygen sort, tu sort une nouvelle version du programme qui teste 1 bit de plus. Cela suffit a rendre la plupart des numéros de série illegaux invalides. Le pirate doit recommencer à zéro...

Un dernier point tres important qui fait notre force et notre faiblesse aussi : l'éthique.

Un pirate n'hésitera pas a "casser" ton code même si cela le rends instable et plantogène.

Par contre, de ton coté, même si tu es sur à 110% que la personne utilise un programme piraté, ne JAMAIS endommager les données de l'ordinateur. On n'est pas des gougnafiers.

Cordialement
 
si tu veux vraiment faire chier les pirates :

une fois le softs installé tu fais en sorte que l'enregistrement se fasse en ligne.

TU recupère NOM et N° de SERIE de l'orddi grace a un p'tit programme.

et hop !

un code est généré depuis les deux.

Comme ça dans surfer serials
grin.gif
il y des pirate qui expliqueront qu'il faudra ouvrir ton soft a partir de resorcerer et le bidouiller
grin.gif
 
En fait on peut imaginer plein de mixe différents du genre je prends l'adresse, le mail et le numéro de téléphone et zou je fais un gros mixe et c'est tout bon
wink.gif


Yama je suis d'accord avec toi mais comment je fais dans le programme pour vérifier le numéro de série ???
 
Bonjour,

N'oubliez pas que pas mal de personnes n'ont pas Internet.

D'autre part quand vous passez par un site qui accepte les cartes bancaires, vous n'avez pas ce genre de renseignements.

Comme fait un pirate pour avoir un numéro de série ?

1- Il recupere un numero de carte bancaire volé
2- Il commande en ligne avec un nom bidon, une adresse bidon, un email volatile à Hotmail
3- Vous lui envoyez le SN
4- Vous vous prenez les frais de cartes bancaire dans la tete deux mois plus tard.

Cordialement
 
ben, sinon pour éviter le piratage, la meilleure solution c'est de rendre le logiciel gratuit
grin.gif


Ou alors, il faut qu'il ne soit pas trop cher.

Sinon un vrai pirate trouvera toujours une solution en cherchant directement en assembleur dans le programme. Mais avec la taille des programmes ça doit commencer à devenir rare ce genre de pirate. Et rare n'est pas inexistant, sniff.

Mais soyons optimiste, il y a encore des personnes qui achètent les logiciels, ou alors je suis le seul. J'espère, qu'une fois que tu as mis une petite protection et que ton prix est raisonable, que le piratage ne dépassera pas 20% ?

[30 avril 2002 : message édité par mfay]
 
Je trouve ce topics interessant , on voit bien comment les gens réfléchissent.Vous voyez je pensse que la plupart des voleurs de cd-key achettent le produit si celuit ci est pas trop cher...Qu'en penssez vous, une petite protection qui demande le cd-key puis en dessou vous marquez "Pour que je puisse continuer a dévelloper..."
wink.gif
 
<BLOCKQUOTE><font size="1" face="Verdana, Geneva">quote:</font><HR>Posté à l'origine par Natik:
Je trouve ce topics interessant , on voit bien comment les gens réfléchissent.Vous voyez je pensse que la plupart des voleurs de cd-key achettent le produit si celuit ci est pas trop cher...Qu'en penssez vous, une petite protection qui demande le cd-key puis en dessou vous marquez "Pour que je puisse continuer a dévelloper..."
wink.gif
<HR></BLOCKQUOTE>

J'y ai déjà pensé et j'ai déj lancé un topic sur Net Café à propos de PayPal.com qui te permet si j'ai bien compris de donner la somme que tu veux. Tu genres la donnation au programmes bien fait et utiles
wink.gif
 
oui mais c'est enfoirées ils te prenent des euros a chaque fois... 5% je crois ca fais cher a la fin.
grin.gif
 
Bonjour,

Pour ma part, j'évalue la part de logiciel piraté par rapport au logiciel acheté de 9 pour 1. (9 piratés pour 1 acheté) Et je me trouve optimiste.

Depuis quelques années on sent une évolution des mentalités dans ce domaine.Jusqu'alors les pirates avaient un profil assez constant, ils se voulaient underground, limite anarchiste, essayant de "politiser" leur acte pour se donner bonne conscience.

Maintenant on vois arriver des personnes complètement candides, qui appellent les logiciels piratés 'logiciels de test' et n'ont aucune notion de l'aspect illégal de la chose.

Cette banalisation de l'acte devient inquiétante.

Cordialement
 
Oui, je pensse que c'est a cause des jeunes (dont j'en fait partie) qui utilisent mal les moyens d'echange de fichiers...D'ici quelques années ca risque d'aller mieu...
grin.gif
grin.gif
 
A vrai dire il n'existe pas de système impiratable, je pense que comme le dit didier, l'installation d'une gestion des numéros de série permet de maintenir un ratio de 9 pour 1... mais que ce "1" arrivera à ses fins si il souhaite vraiment pirater les logiciels de simon. Un moyen plus sur de garantir l'achat d'un logiciel : diffuser des demos bridées pour assurer la renommée du soft et n'autoriser l'accès au logiciel complet par internet qu'apres l'enregistrement.
Les logiciels qui mettent a jour souvent leurs numeros de série connus sur surfers serials peuvent aussi profiter du laps de temps mensuel nécessaire a l'édition de surfer serial pour en exclure les numéros de serie piratés.
La solution ultime serait une clé matérielle (la disquette de cubase) ou une clé USB ... mais on s'éloigne du concept du shareware
grin.gif
 
<BLOCKQUOTE><font size="1" face="Verdana, Geneva">quote:</font><HR>Posté à l'origine par bengilli:
..... de maintenir un ratio de 9 pour 1... mais que ce "1" arrivera à ses fins si il souhaite vraiment pirater les logiciels .....<HR></BLOCKQUOTE>

Si j'ai bien compris Didier, c'est les 9 qui piratent; le 1 lui il est honnète et il paye ses logiciels !
frown.gif

Je crois que je vais faire un autre métier...
grin.gif


[01 mai 2002 : message édité par remi trom]