VB/VB.Net Système de license [VB.NET]

4R7Y

Contributeur
Inscrit
6 Mars 2011
Messages
213
Reactions
0
#1
Amis de Cadernis, j'ai besoin de vous !

En effet, voilà mon petit problème :)
Je souhaiterai créer un système de licence pour un de mes programmes mais je n'ai absolument aucune idée de comment faire ça (avec les requète qui font avec, vérifier si la clef est bien sur la BDD, etc ..)

Car bon les mecs sont bien gentils mais la plupart des personnes proposant une solution c'est
Code:
If myTextbox.text = "coucou lol" then
'là c'est bon trop bien ma license
else
'fausse license lol haha mdr
End if
Merci d'avance pour vos réponses :)
 

4R7Y

Contributeur
Inscrit
6 Mars 2011
Messages
213
Reactions
0
#3
Ah oui merci Tifoux :) j'avais pas vu !

Mmhh mais j'aimerai bien faire ça avec MySQL si possible .. m'enfin bon j'vais rechercher un peu !
 
Inscrit
29 Septembre 2011
Messages
393
Reactions
3
#4
avec MYSQL plus simplement fait un système de client -> Serveur.
 

4R7Y

Contributeur
Inscrit
6 Mars 2011
Messages
213
Reactions
0
#5
un système de client -> serveur ?
 
Inscrit
29 Septembre 2011
Messages
393
Reactions
3
#6
Oui tu fait un serveur pour attendre les demande de licence qui lui va chercher dans la base de donné
 

ToOnS

Membre Actif
Inscrit
8 Avril 2009
Messages
968
Reactions
0
#7
bof ca oblige a laisser un ordi tourner 24h/24 alors qu'une base ca tien tres bien sur un site
 

Kyu

Staff
Membre du personnel
Inscrit
4 Octobre 2009
Messages
324
Reactions
8
#8
Oui sauf que si tu te connecte à ta base directement depuis le logiciel, les utilisateurs auront accès à ta base.
 

ToOnS

Membre Actif
Inscrit
8 Avril 2009
Messages
968
Reactions
0
#9
c'est un peu le but non ? passer par une application coté serveur change pas le probleme (apres ca empeche pas de passer par un script php histoire de "camoufler" un peu tout ca , les sites font ca tres bien aussi)
 
Inscrit
29 Septembre 2011
Messages
393
Reactions
3
#10
ToOnS a dit:
c'est un peu le but non ? passer par une application coté serveur change pas le probleme (apres ca empeche pas de passer par un script php histoire de "camoufler" un peu tout ca , les sites font ca tres bien aussi)

salut oui c'est le but mais le soucis c'est que si un petit malin s'amuse a décompiler etc il a forte chance d'avoir accès a la bdd directement sans son application donc il pourra lire les clefs a entrer donc si on fait côter serveur personne aurais accès ou même s'aura d'ou les clefs son vérifier.
 

4R7Y

Contributeur
Inscrit
6 Mars 2011
Messages
213
Reactions
0
#11
Le script Php est la meilleure solution je pense,
J'appelle verifkey=XXX blabla
avec les infos j'me connecte a la bdd
je regarde si la clef existe
je change la page en true/false
je lis la page

Si quelqu'un à une meilleure idée ou bien si quelqu'un sait comment faire ce que j'ai décrit comme pseudo-algorithme en haut ça m'aiderai :p j'connais rien au php ni au MySQL mais si quelqu'un veut bien m'apprendre ce sera avec plaisir
 

Shornaal

Membre Actif
Inscrit
17 Février 2011
Messages
194
Reactions
0
#12
La vérification de la clé ne doit surtout pas être fait du coté du client, un simple coup de compilateur suffirait à faire sauter la protection. Si je devais implanter un système de licence je pense que je procéderais de la manière suivante :

- Trouver un algorithme générant les clés, forcément. Le stockage importe peu. Personnellement, vus que je ne pense pas avoir à gérer plus d'une centaine de clé, voir deux cent au grand maximum je ne prendrais même la peine de passer par SQL. Pourquoi ne pas tout simplement les sérialiser en XML ou JSON par exemple ? Un payement permettrait d'accéder à une page générant une nouvelle clé pour le compte.
- Le client envoi une demande de vérification à un script PHP, vérifiant qu'une clé X est valide sur le compte X. Joignant également un token généré aléatoirement celons une structure précise. Ce token pourrait même être nécessaire pour déchiffrer la clé. Si tout est valide, on accepte l'utilisation du programme.
- Le script renvoi soit une autorisation, soit une exception (License valable mais déjà utilisé sur un compte différent, licence expirée, le format de la licence est invalide etc..).

Les informations de connexions à la base de donnée ne doivent surtout pas être stockée dans le code source du logiciel. D'où tout l'intérêt de passer par une application serveur qui doit être sécurisée au maximum. PHP est un langage très simple à prendre en main, tu ne devrais pas rencontrer de soucis, si tu as besoin de conseils hésite pas à poster dans la section Questions / Réponses ou à m'envoyer un MP.
 

4R7Y

Contributeur
Inscrit
6 Mars 2011
Messages
213
Reactions
0
#13
merci de ta réponse Shornaal :)

Je dois avouer que niveau sécurité je n'y connais rien, mais pour générer les clefs ça devrait aller (petit algo en fonction de deux trois paramètre dont 1 inconnu par le client c'est bon ? crypté en md5)

Mais dans tout les cas, sérialisé ou pas il faudra bien passer par un BDD non ? enfin je veux bien télécharger le fichier sérialisé mais c'est dangereux ? enfin je ne vois pas trop comment faire du coup en passant par la stérilisation

Comment envoyer une demande à un script php ? c'est une simple connexion http ? avec dans l'url la clef ainsi que les autres paramètres permettant de 'retrouver' la clef non cryptée ?

Pour le côté scipt je sens que je vais devoir apprendre le php du coup, ce sera toujours utile de toute façon
 

ToOnS

Membre Actif
Inscrit
8 Avril 2009
Messages
968
Reactions
0
#14
on va dire que tu appelles ce fichier index.php :
Code:
<?php
    $?>    = $_REQUEST['action'];
        if ($action == "Hello") 
	{echo ("World");}
?>
edit : $action = $_REQUEST['action'];

si tu envois ca : http://www.tonsite.web/index.php?&action=Hello , alors sur ta page ca sera ecrit World

apres pour la bdd :
Code:
 <HTML><BODY BGCOLOR=#FFFFFF>
<?php
 $username="toons";
 $password="pass";
 $hostname="localhost";
 $nombase="ma_base";

#On se connecte a MySql
 if(!($connexion=mysql_connect
    ($hostname,$username,$password)))
 {
 echo "<U>probleme lors de la connexion à MySql</U>";
 exit();
 }
 else
 {
 echo ("<B>Connexion a MySql OK <BR>");

#On se connecte a la base
 if(!mysql_select_db($nombase,$connexion))
 {echo ("Erreur de selection de la base -->$nombase<--<br>");exit();}
 else
 {echo ("<B>Ouverture de la base -->$nombase<-- ok<br>");}

 $result_table=mysql_list_tables($nombase,$connexion);
 # On compte le nombre de lignes de resultat
 $nombre_table=mysql_num_rows($result_table);
 echo "Nous avons <font color=green>$nombre_table</font> tables disponibles<BR>";
 mysql_close($connexion);
 ?>
 </BODY></HTML>
 

Shornaal

Membre Actif
Inscrit
17 Février 2011
Messages
194
Reactions
0
#15
Ce n'est ni optimisé, ni sécurisée là en l'état ToOns. ôO.
 

ToOnS

Membre Actif
Inscrit
8 Avril 2009
Messages
968
Reactions
0
#16
y'a moyen de lire le code php ?
 

4R7Y

Contributeur
Inscrit
6 Mars 2011
Messages
213
Reactions
0
#17
Je sais pas mais en tout cas merci toOns :) j'ai bien compris les requête !

Ensuite pour la BDD, pour récupérer chaque données de chaque ligne, on fait comme si on voulait lire dans un tableau ?
 

ToOnS

Membre Actif
Inscrit
8 Avril 2009
Messages
968
Reactions
0
#18
ca doit donner a peu pres ca :
$requete="select * from $nomtable";

$resultat=mysql_db_query($db,$requete) or die ('Erreur '.$requete.' '.mysql_error());
$n=mysql_num_rows($resultat);

for($i=0;$i<$n;$i++) {
$ligne=mysql_fetch_row($resultat);
$id=$ligne[0];
$description=$ligne[1];

echo ("identifiant n°$id = $description<br>");
}
 

4R7Y

Contributeur
Inscrit
6 Mars 2011
Messages
213
Reactions
0
#19
D'ac c'est comme un tableau alors :) thx ! du coup plus qu'a faire la génération de clef et la création de la table

mais shornaal pourquoi tu dis que ce n'est pas sécurisé ?
 

ToOnS

Membre Actif
Inscrit
8 Avril 2009
Messages
968
Reactions
0
#20
d'apres ce que je sais c'est impossible de recuperer le code php "pas interprété" donc :
$username="toons";
$password="pass";
$hostname="localhost";
$nombase="ma_base";
apres je sais pas tout
de toute facon il y'a moyen de court circuité le fonction de verification de la clef du soft meme si c'est obsusqué mais la faut un niveau superieur (ou des outils specialisés dans le cracking) mais si c'est pas du "modern warfare 14" ou du "need for speed mega wanted" y'a moins de risques d'attirer les vilains
 
Haut Bas