Decompile Python 2.7 .pyc [closed]

Posted on

Question :

Decompile Python 2.7 .pyc [closed]

I’ve searched up and down, but can’t find a de-compiler that will work for Python 2.7 .pyc. Does anybody know of one that will work for Python 2.7? Thanks

Asked By: suffa

||

Answer #1:

UPDATE (2019-04-22) – It sounds like you want to use uncompyle6 nowadays rather than the answers I had mentioned originally.

This sounds like it works: http://code.google.com/p/unpyc/

Issue 8 says it supports 2.7: http://code.google.com/p/unpyc/updates/list

UPDATE (2013-09-03) – As noted in the comments and in other answers, you should look at https://github.com/wibiti/uncompyle2 or https://github.com/gstarnberger/uncompyle instead of unpyc.

Answered By: Mike Driscoll

Answer #2:

In case anyone is still struggling with this, as I was all morning today, I have found a solution that works for me:

Uncompyle

Installation instructions:

git clone https://github.com/gstarnberger/uncompyle.git
cd uncompyle/
sudo ./setup.py install

Once the program is installed (note: it will be installed to your system-wide-accessible Python packages, so it should be in your $PATH), you can recover your Python files like so:

uncompyler.py thank_goodness_this_still_exists.pyc > recovered_file.py

The decompiler adds some noise mostly in the form of comments, however I’ve found it to be surprisingly clean and faithful to my original code. You will have to remove a little line of text beginning with +++ near the end of the recovered file to be able to run your code.

Answered By: Milosz

Answer #3:

Decompyle++ (pycdc) appears to work for a range of python versions: https://github.com/zrax/pycdc

For example:

git clone https://github.com/zrax/pycdc   
cd pycdc
make  
./bin/pycdc Example.pyc > Example.py
Answered By: Erik

Answer #4:

Here is a great tool to decompile pyc files.

It was coded by me and supports python 1.0 – 3.3

Its based on uncompyle2 and decompyle++

http://sourceforge.net/projects/easypythondecompiler/

Answered By: Extreme Coders

Answer #5:

Ned Batchelder has posted a short script that will unmarshal a .pyc file and disassemble any code objects within, so you’ll be able to see the Python bytecode.
It looks like with newer versions of Python, you’ll need to comment out the lines that set modtime and print it (but don’t comment the line that sets moddate).

Turning that back into Python source would be somewhat more difficult, although theoretically possible. I assume all these programs that work for older versions of Python do that.

Answered By: Michael Hoffman

Leave a Reply

Your email address will not be published.