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

Python Discussion :

Décompilation .pyc => .py


Sujet :

Python

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 41
    Points : 30
    Points
    30
    Par défaut Décompilation .pyc => .py
    Salut

    Ça fait peut de temps que j'ai commencé le Python (un peu plus d'un mois), et je voudrais savoir si il existe un moyen de décompiler un fichier .pyc ?

    Et si oui existe t-il un moyen de protéger un fichier Python pour qu'il ne puisse pas être lu mais qu'il puisse être exécuté par un serveur ?

  2. #2
    Membre éprouvé
    Avatar de Antoine_935
    Profil pro
    Développeur web/mobile
    Inscrit en
    Juillet 2006
    Messages
    883
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur web/mobile

    Informations forums :
    Inscription : Juillet 2006
    Messages : 883
    Points : 1 066
    Points
    1 066
    Par défaut
    Oui, c'est possible grâce au module dis. Je ne pense pas toutefois qu'il inclue des fonctionnalités pour réécrire du code.

    Il est impossible de protéger complètemen du code python. On a toujours besoin du bytecode pour l'exécuter. Ce bytecode a la propriété d'être facilement décompilable et réinterprétable (les fonctions, classes et autres sont décrites proprement).

    Il en va de même pour le Java, le C# ou tout langage interprété. Même les langages compilés peuvent être désassemblés, mais là ça devient extrèmement difficile.

    Tu peux toutefois "obfusquer" ton code. C'est à dire donner un nom incohérent à toutes les classes, fonctions et variables. Ca rend en général le code suffisamment illisible.

    Mais, entre nous, personne ne va essayer de piquer le code que tu as mis sur ton serveur, sauf s'il s'agit d'une innovation à la pointe de la technologie.

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    114
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 114
    Points : 129
    Points
    129
    Par défaut
    Bonjour

    Citation Envoyé par Antoine_935 Voir le message
    Tu peux toutefois "obfusquer" ton code...
    Est-ce qu'il existe des outils pour faire cela ou est-ce que cela se fait à la main ?

    Cordialement
    Emmanuel

  4. #4
    Membre éprouvé
    Avatar de Antoine_935
    Profil pro
    Développeur web/mobile
    Inscrit en
    Juillet 2006
    Messages
    883
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur web/mobile

    Informations forums :
    Inscription : Juillet 2006
    Messages : 883
    Points : 1 066
    Points
    1 066
    Par défaut
    Des outils existent pour ce genre de chose dans pas mal de langages.
    Il y a très certainement quelqu'un qui a fait ça pour Python un jour. Google / Freshmeat / Sourceforge devraient aider.

  5. #5
    Membre éclairé
    Homme Profil pro
    heu...
    Inscrit en
    Octobre 2007
    Messages
    648
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : heu...

    Informations forums :
    Inscription : Octobre 2007
    Messages : 648
    Points : 773
    Points
    773
    Par défaut
    de mémoire je crois qu'un module PyObfuscate existe, en googleant un peu tu devrais trouver.

  6. #6
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 41
    Points : 30
    Points
    30
    Par défaut
    Merci à tous pour vos explications.
    J'ai voulu tester PyObfuscate mais j'ai pas réussi
    il m'a l'ère très bien mais étant donné que j'ai beaucoup de mal avec l'anglais j'ai rien compris
    Si quelqu'un peut m'aider à l'utiliser ?

  7. #7
    Membre éclairé
    Homme Profil pro
    heu...
    Inscrit en
    Octobre 2007
    Messages
    648
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : heu...

    Informations forums :
    Inscription : Octobre 2007
    Messages : 648
    Points : 773
    Points
    773
    Par défaut
    bien sûr, apprends l'anglais



    ps: désolé, mais c'était tentant

  8. #8
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 41
    Points : 30
    Points
    30
    Par défaut
    Pas de problème
    J'attends que tu reviennes N.tox

  9. #9
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 41
    Points : 30
    Points
    30
    Par défaut
    Quelqu'un pourrait m'aider pour utiliser PyObfuscate S.V.P. ?

  10. #10
    Membre chevronné
    Avatar de kedare
    Homme Profil pro
    Network Automation Engineer
    Inscrit en
    Juillet 2005
    Messages
    1 548
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Network Automation Engineer

    Informations forums :
    Inscription : Juillet 2005
    Messages : 1 548
    Points : 1 861
    Points
    1 861
    Par défaut
    Pourquoi vous voulez empêcher les personnes de lire votre code python ?

  11. #11
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 41
    Points : 30
    Points
    30
    Par défaut
    Pour qu'il ne puisse pas être copié et pour pouvoir gardé une sécurité (qui est dedans) qui me permet de savoir quel est le serveur qui se connecte à mon interface.

  12. #12
    Membre éclairé
    Homme Profil pro
    heu...
    Inscrit en
    Octobre 2007
    Messages
    648
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : heu...

    Informations forums :
    Inscription : Octobre 2007
    Messages : 648
    Points : 773
    Points
    773
    Par défaut
    Désolé, mais je te le dis franchement : j'ai pas envie de te traduire le manuel, par contre, tu peux tenter de lancer une traduction via l'outil de traduction de google... ça te permettra d'avoir une première approche...

    Sincèrement, si tu peux, mets-toi à l'anglais, cause dans la programmation, si tu parles pas l'angliche, tu es un peu dans la shit.

  13. #13
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    114
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 114
    Points : 129
    Points
    129
    Par défaut
    Citation Envoyé par kedare Voir le message
    Pourquoi vous voulez empêcher les personnes de lire votre code python ?
    Premier point :

    Pour éviter que des utilisateurs qui croient mieux savoir que vous comment le système doit procéder modifie le script, plante le système et après vous accuse de mal écrire vos programmes.

    Pour ce point, fournir un .pyc suffit.


    Deuxième point :

    Certaines personnes vivent des programmes qu'ils écrivent dans un milieu concurrenciel, avec des concurrents pas toujours très honnêtes avec les règles du jeu.
    Ces concurrents, quand ils ont l'occasion de lire votre programme, ne manque d'exploiter cela sans grand respect de la propriété intellectuelle.
    Donc si on a l'occasion de leur mettre quelques obstacles, c'est en général autant de ressource en moins à mettre par la suite chez l'avocat spécialisé en brevet au honoraire très élevée (et autant de temps en plus pour continuer à écrire du code Python).

    Pour ce point, un obfusqueur de code est déjà un bon outils.

    Cordialement
    Emmanuel

  14. #14
    Membre éprouvé
    Avatar de Antoine_935
    Profil pro
    Développeur web/mobile
    Inscrit en
    Juillet 2006
    Messages
    883
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur web/mobile

    Informations forums :
    Inscription : Juillet 2006
    Messages : 883
    Points : 1 066
    Points
    1 066
    Par défaut
    Actuellement, les langages les plus utilisés sont Java et C#...
    La décompilation du Java est l'affaire d'une ligne de commande, grâce aux bons outils. C# ne doit pas plus résister.

    Alors franchement, la propriété intellectuelle, on la viole comme on veut...
    Si vraiment tu tiens à la protéger, fais du C/Cpp ou autre langage assemblé en langage machine.
    Autrement, il y a toujours quelqu'un qui saura lire ton code.

    De plus, les parties de code révolutionnaires au point de devoir les protéger ainsi sont rares.
    Google, avec son moteur de recherche, est un exemple.
    Mais franchement, le petit site web qu'on fait pour une entreprise n'a rien d'assez extraordinaire pour que des gens se penchent sur une décompilation...

  15. #15
    Membre éclairé
    Homme Profil pro
    heu...
    Inscrit en
    Octobre 2007
    Messages
    648
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : heu...

    Informations forums :
    Inscription : Octobre 2007
    Messages : 648
    Points : 773
    Points
    773
    Par défaut
    Oui, mais il reste libre de faire comme bon lui semble. Et si comme dit emmanuel_Dumas, il en vit, protéger se source de revenu paraît assez logique. Pourquoi ne pourrait-il d'ailleurs pas choisir python comme language de prog, et protéger son travail ? Rien ne le force à ouvrir son code à la concurence. C'est son choix, nous devons le respecter.

  16. #16
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 41
    Points : 30
    Points
    30
    Par défaut
    Je ne cherche pas un moyen de rendre mon code inviolable car je sais fort bien que cela est impossible !
    Mon but est de réduire au maximum les chances qu'il puisse être copier ou modifier sans mon accord.

    Et il existe déjà pas mal de personnes qui convoite mon script alors qu'il n'est pas révolutionnaire

    Donc si quelqu'un peut m'aider à protéger mon script, il est le bienvenue (je ne paye pas l'apéro par contre).


  17. #17
    Membre éprouvé
    Avatar de Antoine_935
    Profil pro
    Développeur web/mobile
    Inscrit en
    Juillet 2006
    Messages
    883
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur web/mobile

    Informations forums :
    Inscription : Juillet 2006
    Messages : 883
    Points : 1 066
    Points
    1 066
    Par défaut
    Citation Envoyé par N.tox Voir le message
    Et si comme dit emmanuel_Dumas, il en vit, protéger se source de revenu paraît assez logique.
    Ce que j'essayais de faire comprendre, c'est que l'obfuscation est en tout cas inutile, si pas néfaste.
    Inutile parce que si quelqu'un veut vraiment faire du reverse engineering, il le fera quand même.
    Néfaste, parce que ça empêchera celui qui veut s'instruire honnêtement de le faire. Ou alors, ça empêchera l'honnête client qui n'a peut-être pas reçu le code source (eh oui, il pensait avoir du python, donc lisible) de changer de prestataire de service facilement.

  18. #18
    Membre éclairé
    Homme Profil pro
    heu...
    Inscrit en
    Octobre 2007
    Messages
    648
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : heu...

    Informations forums :
    Inscription : Octobre 2007
    Messages : 648
    Points : 773
    Points
    773
    Par défaut
    D'une manière générale, arrêtes-moi si je me trompe hein (je suis pas de la partie), mais le client ne se préoccupe-t-il pas d'une seule chose : "ça marche / ça marche pas"

    je ne paye pas l'apéro par contre
    Sans moi alors... :p

    Dans tous les cas, PyObfuscate est assez mauvais en fait (ne se contente que d'un fichier), faudrait voir si y'en a pas un autre, ou en faire un soi-même, ce qui est en théorie assez simple, mais en pratique plus compliqué. dans le cas où tu en fait un toi-même, il est à mon avis assez important de garder une trace des traductions sur ton disque, de façon à ce que la maintenance ne devienne pas un enfer.

  19. #19
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 41
    Points : 30
    Points
    30
    Par défaut
    Mon script ne fait qu'un fichier donc ce n'est pas un problème.
    Et je comptais bien gardé les "non-protégés" pour moi.

    Et pour ton idée de faire nous même un script de protection tu penses à quoi ?
    Moi je pense déjà à:
    - changer le nom des fonctions par un nom random

  20. #20
    Membre éclairé
    Homme Profil pro
    heu...
    Inscrit en
    Octobre 2007
    Messages
    648
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : heu...

    Informations forums :
    Inscription : Octobre 2007
    Messages : 648
    Points : 773
    Points
    773
    Par défaut
    ouais, mais faut repertorier et regrouper tous les noms de fonctions, de classes, de variables, d'attributs, de méthodes, établir des noms de remplacement (facile grace à random.randrange()), repérer les appels au fonctions, et remplacer ensuite les noms originaux par les correspondaces établies.

    Le plus dur étant de repérer tous les appels, et de reconnaître que l'appel à la méthode x est bien un appel à la méthode x de l'objet A, et pas B...

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Décompiler une dll
    Par matmuth dans le forum C++Builder
    Réponses: 4
    Dernier message: 12/09/2005, 17h39
  2. A propos de la décompilation ..
    Par elf dans le forum Général Java
    Réponses: 2
    Dernier message: 16/07/2005, 14h30
  3. Réponses: 11
    Dernier message: 08/07/2005, 17h18
  4. décompilation et delphi
    Par trakiss dans le forum API, COM et SDKs
    Réponses: 7
    Dernier message: 16/06/2004, 10h36

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