Je développe un logiciel en Python qui sera distribué aux clients de mon employeur. Mon employeur souhaite limiter l'utilisation du logiciel avec un fichier de licence à durée limitée.
Si nous distribuons les fichiers .py ou même les fichiers .pyc, il sera facile de (décompiler et) supprimer le code qui vérifie le fichier de licence.
Un autre aspect est que mon employeur ne veut pas que le code soit lu par nos clients, craignant que le code soit volé ou du moins les "idées nouvelles".
Existe-t-il un bon moyen de résoudre ce problème ? De préférence avec une solution standard.
Le logiciel fonctionnera sur des systèmes Linux (je ne pense donc pas que py2exe fera l'affaire).
Python, étant un langage interprété compilé en byte-code, est très difficile à verrouiller. Même si vous utilisez un empaqueteur d'exe comme py2exe, la disposition de l'exécutable est bien connue, et les byte-codes Python sont bien compris.
Dans des cas comme celui-ci, il faut généralement faire un compromis. Dans quelle mesure est-il vraiment important de protéger le code ? Y a-t-il de véritables secrets à l'intérieur (comme une clé pour le cryptage symétrique des virements bancaires), ou êtes-vous simplement paranoïaque ? Choisissez le langage qui vous permet de développer le meilleur produit le plus rapidement possible et soyez réaliste quant à la valeur de vos idées novatrices.
Si vous décidez que vous avez vraiment besoin d'appliquer le contrôle de licence de manière sécurisée, écrivez-le comme une petite extension C afin que le code de contrôle de licence soit très difficile (mais pas impossible !) à désosser, et laissez la majeure partie de votre code en Python.
Votre employeur sait-il qu'il peut "voler" les idées que d'autres personnes tirent de votre code ? Je veux dire, s'ils peuvent lire votre travail, vous pouvez aussi lire le leur. Peut-être qu'en cherchant comment vous pouvez tirer profit de la situation, vous obtiendriez un meilleur rendement de votre investissement qu'en craignant ce que vous pourriez perdre.
[Réponse au commentaire de Nick :
Rien de gagné, rien de perdu. Le client a ce qu'il veut (et il l'a payé puisqu'il a fait le changement lui-même). Puisqu'il ne publie pas la modification, c'est comme si elle n'avait pas eu lieu pour tous les autres.
Maintenant, si le client vend le logiciel, il doit changer la notice de copyright (ce qui est illégal, donc vous pouvez le poursuivre et vous gagnerez -> cas simple).
S’il ne modifie pas la mention de copyright, les clients de second niveau remarqueront que le logiciel provient de votre original et se demanderont ce qui se passe. Il y a de fortes chances qu'ils vous contactent et que vous appreniez la revente de votre travail.
Encore une fois, nous avons deux cas : Le client original n'a vendu que quelques copies. Cela signifie qu’il n’a pas gagné beaucoup d’argent de toute façon, alors pourquoi se donner la peine. Ou bien il a vendu un grand nombre d'exemplaires. Dans ce cas, vous avez de meilleures chances d'apprendre ce qu'il fait et d'y remédier.
Mais au final, la plupart des entreprises essaient de se conformer à la loi (une fois leur réputation ruinée, il est beaucoup plus difficile de faire des affaires). Elles ne voleront donc pas votre travail mais travailleront avec vous pour l'améliorer. Ainsi, si vous incluez la source (avec une licence qui vous protège de la simple revente), il y a de fortes chances qu'ils repoussent simplement les modifications qu'ils ont apportées, car cela garantit que la modification sera intégrée à la prochaine version et qu'ils n'auront pas à en assurer la maintenance. C’est du gagnant-gagnant : vous obtenez des modifications et ils peuvent effectuer les modifications eux-mêmes s’ils en ont vraiment, désespérément besoin, même si vous ne voulez pas les inclure dans la version officielle.
Vous devriez jeter un coup d'œil à la façon dont les gars de getdropbox.com le font pour leur logiciel client, y compris Linux. Il est assez difficile à craquer et nécessite un désassemblage assez créatif pour passer les mécanismes de protection.