IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage Perl Discussion :

Protection d'un script


Sujet :

Langage Perl

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 30
    Par défaut Protection d'un script
    Bonjour,

    J'ai un script dont j'ai acquis les droits, que j'ai debuggué et modifié, et maintenant j'aimerais pouvoir le protéger. Ou plutôt, j'aimerais le brider afin d'en faire une version d'évaluation.

    Je me pose des questions car je ne sais pas trop comment faire, et quelle est la meilleure solution... Les solutions auxquelles je pensais:

    - Placer le coeur du script sur mon server, et modifier les fichiers afin qu'ils appellent ce script. Comme ça, je peux insérer des "if" qui me permettent de voir qui utilise le script et s'il s'agit ou non d'une version d'évaluation. Le hic c'est que je ne sais pas si mon script pourra fonctionner en "appelant" un script se trouvant sur un autre serveur...

    - Modifier le script lui même en insérant ces fameuses conditions, mais là n'importe qui qui aura téléchargé le script pourra le modifier pour contourner la chose et se retrouver avec une version d'évaluation qui n'en est plus une.

    - La même chose que précédemment, mais en codant le code qui contient ces if.

    Est-ce que quelqu'un pourrait me donner son avis sur la chose et me conseiller ?

    Un grand merci.

  2. #2
    Rédacteur/Modérateur

    Avatar de Lolo78
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Mai 2012
    Messages
    3 612
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2012
    Messages : 3 612
    Billets dans le blog
    1
    Par défaut
    Bonjour,

    Une solution possible serait peut-être de compiler le programme Perl (voir le tutoriel de Djibril). Mais cela n'offre pas de garantie absolue, un hacker saura décompiler le résultat.

    Il existe aussi dans le domaine Acme du CPAN des modules permettant de rendre le code inintelligible ou même illisible (voir par exemple Acme::Bleach de Damian Conway).

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 30
    Par défaut
    Merci pour ta réponse.

    En fait, je sais que quoi que je fasse, un hacker saura faire sauter ma protection. Je ne cherche d'ailleurs pas à me protéger des hackers qui sont bien plus forts que moi

    Non, en fait ce que je voudrais c'est une protection simple, qui soit assez convaincante pour décourager la personne lambda qui aurait dans l'idée de craker cette version gratuite du programme.

    Dans les 2 solutions que tu proposes, quelle est la meilleure à ton sens, et pourquoi ? Je n'ai jamais fait ce genre de choses, alors j'ai besoin de l'avis de connaisseurs.

    Merci encore.

  4. #4
    Rédacteur/Modérateur

    Avatar de Lolo78
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Mai 2012
    Messages
    3 612
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2012
    Messages : 3 612
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par vodjardins Voir le message
    Dans les 2 solutions que tu proposes, quelle est la meilleure à ton sens, et pourquoi ? Je n'ai jamais fait ce genre de choses, alors j'ai besoin de l'avis de connaisseurs.
    Je n'ai pas d'expérience sur ce genre de choses, je ne l'ai jamais fait non plus parce que ma philosophie va plus dans le sens du logiciel libre. Je ne critique absolument pas ta démarche, pas le moins du monde, mais je suis plus enclin à partager mon code qu'à le protéger (sauf dans le contexte professionnel où ce n'est évidemment pas toujours possible).

    Je dirais cependant que la compilation offre un avantage considérable: tes utilisateurs n'auront pas besoin d'avoir Perl installé sur leur bécane, ce qui t'ouvre éventuellement un marché bien plus vaste.

  5. #5
    Expert confirmé

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2009
    Messages
    3 577
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2009
    Messages : 3 577
    Par défaut
    Un exécutable perl généré à partir de Par::Packer est une archive zip. Il suffit sous Windows d'ajouter l'extension .zip à la fin du binaire pour pouvoir le décompresser et lire les fichiers sources en clair.

  6. #6
    Membre émérite Avatar de messinese
    Homme Profil pro
    IT Security Consultant
    Inscrit en
    Septembre 2007
    Messages
    429
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : IT Security Consultant
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Septembre 2007
    Messages : 429
    Par défaut
    Citation Envoyé par vodjardins Voir le message
    Merci pour ta réponse.

    En fait, je sais que quoi que je fasse, un hacker saura faire sauter ma protection. Je ne cherche d'ailleurs pas à me protéger des hackers qui sont bien plus forts que moi

    Non, en fait ce que je voudrais c'est une protection simple, qui soit assez convaincante pour décourager la personne lambda qui aurait dans l'idée de craker cette version gratuite du programme.

    Dans les 2 solutions que tu proposes, quelle est la meilleure à ton sens, et pourquoi ? Je n'ai jamais fait ce genre de choses, alors j'ai besoin de l'avis de connaisseurs.

    Merci encore.

    Salut,

    étant moi-meme fana de reversing je te suggererai, plutot que de la sécurité par l'obscurité (ce qui est inéfficace , ce n'est plus a démontrer) de faire une chose simple:

    Tu fais une version d'éval sans tentative désespérée de pseudo sécu et pour la version complete alors tu mets un systeme d'update du script vers ton serveur de telle façon que seules les personnes qui l'auront pourront faire la mise a jour offrant toute les fonctionnalitées (ou autre c'est un exemple).

    Aprés tu peux gérer cela de plusieurs manieres avec par exemple coté serveur une liste définie de clé valide ou autre du coup il faut aussi que tu fasse ça bien sur le serveur car tu va l'exposer ...

    C'est une solution que j'ai déja mise en oeuvre pour un petit script et qui ma foi a plutot pas mal fonctionné, a toi de réfléchir mais je pense que c'est un meilleur piste.

    Aprés s it uveux rester dans ton idée premiere de l'obscurité, tu complie, tu passes ça a un packer (pas UPX hein) et la déja tu compliquera bien le truc mais ne te leurre pas, ça se bypass ...


    Cdlt

  7. #7
    Membre chevronné
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2013
    Messages
    247
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2013
    Messages : 247
    Par défaut
    Je te suggérerais une solution qui ne te protégerait pas vraiment d'une volonté de nuire à ton code mais juste de formaliser le cadre d'utilisation et d'avoir des recours (enfin je sais pas trop dans quelle mesure):
    Utilisation d'une licence opensource avec le droit de diffuser, partager mais sans avoir le droit de modifier...

    tu peux trouver celle qui correspond à ce que tu souhaites sur ce site:
    http://creativecommons.org/licenses/

  8. #8
    Rédacteur/Modérateur

    Avatar de Lolo78
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Mai 2012
    Messages
    3 612
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2012
    Messages : 3 612
    Billets dans le blog
    1
    Par défaut
    Il y a aussi la solution du shareware, une licence du genre: "Vous pouvez installer ce logiciel et l'utiliser pour l'essayer pendant un mois, après quoi, si vous continuez à l'utiliser, vous êtres dans l'obligation morale de contribuer à son développement pour la modique somme de ... Le paiement de cette licence vous donnera droit aux fonctionnalités supplémentaires suivantes (liste) et aux mises à jour gratuites."

    J'utilise très peu de sharewares, mais il m'est arrivé, pour des sharewares vraiment utiles que j'utilisais vraiment, de payer la somme demandée. %ais jamais pour des "cripplewares" (logiciels soit-disant gratuits mais totalement bridés et inutilisables) te forçant à payer pour avoir la version fonctionnelle.

  9. #9
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 30
    Par défaut
    Merci à tous de vos réponses.

    Citation Envoyé par messinese Voir le message
    Tu fais une version d'éval sans tentative désespérée de pseudo sécu et pour la version complete alors tu mets un systeme d'update du script vers ton serveur de telle façon que seules les personnes qui l'auront pourront faire la mise a jour offrant toute les fonctionnalitées (ou autre c'est un exemple).

    Aprés tu peux gérer cela de plusieurs manieres avec par exemple coté serveur une liste définie de clé valide ou autre du coup il faut aussi que tu fasse ça bien sur le serveur car tu va l'exposer ...

    C'est une solution que j'ai déja mise en oeuvre pour un petit script et qui ma foi a plutot pas mal fonctionné, a toi de réfléchir mais je pense que c'est un meilleur piste.
    Ce que tu proposes semble convenir parfaitement à ce que je veux faire. Mais... le souci c'est que je ne vois pas comment mettre en place concrètement le système d'update...
    Voyons si je comprends ton idée: l'update se fait via un script qui se trouve sur mon serveur, et du coup c'est mon serveur qui délivre la version "complète", c'est ça ? Mais alors, la première version, comment je fais pour en faire une version d'éval ? Je reviens à mon problème de départ.

    Car en fait, mon script fonctionne avec un genre de base de données dans laquelle on stocke des trucs. Et mon idée de version d'éval était de faire une version dans laquelle on ne pourrait stocker qu'un nombre limité de trucs. Et du coup, c'est facile à voir dans le code: tu trouves où est-ce qu'il est écrit : "si (version d'éval) alors (tu peux pas enregistrer autant que tu veux)" et tu passes par-dessus. Tu vois ce que je veux dire ?

    Alors en gros, j'ai l'impression que ta solution a l'air super - et surtout que tu l'as déjà mise en oeuvre et qu'elle marche. Mais j'avoue que je ne vois pas comment appliquer ça à mon cas particulier.

    Tu pourrais me donner un peu plus de détails s'il te plaît ?
    Merci beaucoup.

  10. #10
    Membre émérite Avatar de messinese
    Homme Profil pro
    IT Security Consultant
    Inscrit en
    Septembre 2007
    Messages
    429
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : IT Security Consultant
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Septembre 2007
    Messages : 429
    Par défaut
    Salut,

    en fait moi ce que j'ai fait pour ce genre de chose est vraiment crade mais en gros quand tu fait l'update (ou plutot l'upgrade vers la version complete) le script est carrément remplacé par une copie complete.

    C'est crade (quoique) mais efficace.

    Mon script fonctionnais un peux comme ceci:
    une fois la clé envoyée par mail saisie elle est envoyé a un script sur le serveur qui teste la validité si key ==1 alors l'onglet update est activé.

    Bien entendu le controle de la clé etait fait via un algo maison dont la fonction est obfusquée quand meme afin de limiter un petit peu le bypassing mais bon faut pas se leurrer c'est quand meme de l'interprété ..
    Une solution pour faire ça de façon plus efficace serait peut etre de coder ça en C et de faire appel au binaire ou un truc du genre, a réfléchir.

    Bref, ensuite le client lance l'update (tu peux meme re-check la clée a ce niveau d'ailleur) l'update va sur un repo et cherche un script en .new (complete_script.new par exemple), le DL et remplace donc le script par le .new (ouverture du source et remplacement du code par celui du .new).

    C'est a peu prés ce que j'avais fait de mémoire, c'est clair qu'a l'heure actuelle je ferai un truc bien plus sur et meme je pense que je packerai mon binaire généré par perl2exe (si windows) pour etre encore un peu plus sécure.

    Si je peux encore aider hésites pas en tout cas.

    Cordialement.

  11. #11
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 30
    Par défaut
    Avant toute chose, je te remercie de tes explications détaillées, c'est vraiment sympa. Et puisque tu me le proposes... je vais abuser encore un peu en te posant quelques questions...

    Si je comprends bien, dans le script installé chez le client, il y a quelque part un formulaire permettant de saisir une clé - clé que je lui aurais envoyé par mail après son achat. Il saisit donc la clé dans la zone de texte, valide, et là le script va vérifier si la clé est ok. Si oui, alors ça débloque l'affichage d'un bouton "update".

    Le client clique sur ce bouton, et là j'ai pas compris... Tu mets "l'update va sur un repo et cherche un script en .new ". C'est quoi un repo ? Est-ce que c'est un serveur distant ? Je suppose que oui, puisque tu parles ensuite "DL" (= download je suppose).

    Donc ce que j'ai compris c'est que le script d'update - qui est un script externe au script de départ - va télécharger un script version "full" et le ramener sur le serveur du client. Et là, le code source du script de départ est remplacé par le code de ce nouveau script full.

    Est-ce que j'ai bien tout compris ?

    Mais alors, dans ce cas, ce script qui fait l'update, le client pourrait le lancer lui-même, non ?

    Autre chose: je ne suis pas sûr de savoir comment faire pour remplacer le source qui est sur le serveur de mon client par un autre source téléchargé d'un autre serveur... Mais bon, ça c'est pas le pire, je suppose que je dois pouvoir trouver des explications sur le net.

    En gros je me demandais juste si j'avais bien compris quoi...

    Merci encore et à bientôt.

Discussions similaires

  1. Script de protection de pages ne marchant plus
    Par shubnigg dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 3
    Dernier message: 15/12/2008, 10h40
  2. awk : protection d'une var issue d'un script sh
    Par Fung999 dans le forum Shell et commandes GNU
    Réponses: 5
    Dernier message: 02/03/2008, 19h02
  3. [Tableaux] bug script & protection code
    Par Doksuri dans le forum Langage
    Réponses: 6
    Dernier message: 26/11/2007, 09h41
  4. Script de protection db_protect V1.2
    Par bial77 dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 1
    Dernier message: 11/10/2007, 12h08
  5. Protection de script
    Par passimal dans le forum Linux
    Réponses: 11
    Dernier message: 27/01/2005, 22h09

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo