Shubham
Shubham

Reputation: 22339

Is it easy to fully decompile python compiled(*.pyc) files?

I wanted to know that how much easy is to decompile python byte code. I have made an application in python whose source I want to be secure. I am using py2exe which basically relies on python compiled files.

Does that secure the code?

Upvotes: 8

Views: 19929

Answers (4)

crifan
crifan

Reputation: 14338

Now we can say: VERY EASY decompile, and NOT secure.

For I have use uncompyle6 to decompile my (latest 3.8.0) Python code:

uncompyle6 utils.cpython-38.pyc > utils.py

and decompile effect is NEARLY PERFECT.

  • origin python vs decompiled python:

    • pyc uncompile utils

      • -> ALMOST same py code except no comments

Not forget, other can use unpy2exe to

Extract .pyc files from executables created with py2exe

so your method not secure.

Upvotes: 0

Duncan
Duncan

Reputation: 95742

If you search online you can find decompilers for Python bytecode: there's a free version for downloading but which only handles bytecode up to Python 2.3, and an online service which will decompile up to version 2.6.

There don't appear to be any decompilers yet for more recent versions of Python bytecode, but that's almost certainly just because nobody has felt the need to write one rather than any fundamental difficulty with the bytecode itself.

Some people have tried to protect Python bytecode by modifying the interpreter: there's no particular reason why you can't compile your own interpreter with the different values used for the bytecode: that will prevent simple examination of the code with import dis, but won't stand up long to any determined attack and it all costs money that code be better put into improving the program itself.

In short, if you want to protect your program then use the law to do it: use an appropriate software license and prosecute those who ignore it. Code is expensive to write, but the end result is rarely the valuable part of a software package: data is much more valuable.

Upvotes: 1

Alex Martelli
Alex Martelli

Reputation: 882701

Depends on your definition of "fully" (in "fully decompile")...;-). You won't easily get back the original Python source -- but getting the bytecode is easy, and standard library module dis exists exactly to make bytecode easily readable (though it's still bytecode, not full Python source code;-).

Upvotes: 8

Ned Batchelder
Ned Batchelder

Reputation: 376022

Compiling .pyc does not secure the code. They are easily read. See How do I protect Python code?

Upvotes: 6

Related Questions