⚠️ USE THIS FILE IF YOU WANT TO DECOMPILE SINGLE ".PYC" TO ".PY".
- INSTALL PYTHON
- INSTALL UNCOMPLYLE
->
pip install uncompyle6
- RUN THIS TO DECOMPILE SINGLE FILE FROM THE SOURCE FILE DIRECTORY
->
python -m uncompyle6 -o . <fileName.pyc>
# --------- USAGE ----------- | |
# USE THIS FILE IF YOU WANT TO MAINTAIN DIRECTORY STRUCTURE WHILE DECOMPILING ".PYC" TO ".PY" RECURSIVELY | |
# Install Python | |
# Run -> pip install uncompyle6 | |
# Run -> python decompile_pyc_recursively.py -p [PATH-OF-PYC-DIR] | |
# ---------------------------- | |
import argparse | |
import os | |
import glob | |
import subprocess | |
FROM_EXTENSION = "pyc" | |
TO_EXTENSION = "py" | |
parser = argparse.ArgumentParser( | |
description='Decompile .pyc files recursively. ' | |
'It takes a directory in --path argument to scan for .pyc files to uncompile') | |
parser.add_argument('-p', '--path', dest='path', | |
default=os.path.abspath("."), | |
help="Specify root directory to scan pyc files from") | |
class uncompyle6: | |
def __init__(self): | |
pass | |
@staticmethod | |
def check_uncompyle(): | |
try: | |
subprocess.call(["uncompyle6", "--version"]) | |
except OSError as e: | |
print("[ERROR] - uncompyle6 or any of its dependencies are not installed") | |
print( | |
"[ERROR] - refer to https://pypi.org/project/uncompyle6/ to install uncompyle6 and try again") | |
exit(e.errno) | |
@staticmethod | |
def swap_extension(compiled): | |
""" | |
Swap file extension from .pyc to .py | |
:param compiled: | |
:return: | |
""" | |
metadata = os.path.splitext(compiled) | |
return "{0}.{1}".format(metadata[0], TO_EXTENSION) | |
def normalize_path(self, paths): | |
""" | |
Normalize paths | |
:param paths: | |
:return: | |
""" | |
clean = [] # hold clean list of normalized matching paths | |
prefix = os.path.commonprefix(paths) | |
for i in paths: | |
source = i | |
base = self.swap_extension(i.replace(prefix, "")) | |
clean.append({"source": source, "dirname": os.path.dirname( | |
base), "name": os.path.basename(base)}) | |
return clean | |
@staticmethod | |
def search_pyc(use_directory): | |
""" | |
Search .pyc files | |
:param use_directory: | |
:return: | |
""" | |
return glob.glob("/".join([use_directory, "*." + FROM_EXTENSION])) | |
@staticmethod | |
def setup_directories(directories, parent): | |
""" | |
Mimic file organization | |
:param directories: | |
:param parent: | |
:return: | |
""" | |
for i in directories: | |
if i["dirname"]: | |
directory_name = os.path.join(parent, i["dirname"]) | |
if os.path.exists(directory_name): | |
continue | |
os.mkdir(directory_name) | |
print("[INFO] - Done creating %s directory" % directory_name) | |
@staticmethod | |
def uncompyle(locations, parent): | |
for i in locations: | |
uncompyle_source = i["source"] | |
uncompyle_to = os.path.join(parent, i["dirname"], i["name"]) | |
subprocess.call( | |
["uncompyle6", "-o", uncompyle_to, uncompyle_source]) | |
print( | |
"[INFO] - {0} decompiled at {1}".format(uncompyle_source, uncompyle_to)) | |
if __name__ == "__main__": | |
matches = [] | |
args = parser.parse_args() | |
path = args.path | |
os.mkdir('decompiled') | |
cwd = os.path.abspath("./decompiled") | |
uncompyler = uncompyle6() | |
uncompyler.check_uncompyle() | |
for root, dirs, files in os.walk(path): | |
for result in uncompyler.search_pyc(root): | |
matches.append(result) | |
normalized = uncompyler.normalize_path(matches) | |
uncompyler.setup_directories(normalized, cwd) | |
uncompyler.uncompyle(normalized, cwd) | |
exit(0) |
⚠️ USE THIS FILE IF YOU WANT TO DECOMPILE SINGLE ".PYC" TO ".PY".
pip install uncompyle6
python -m uncompyle6 -o . <fileName.pyc>
hi its not working for python 3.9 plz update
Could you please explain the error in more detail?
Unsupported Python version, 3.10.0, for decompilation
@praveenpgeb @ideamartin
Please retry; this is still effective with any python 3.0 and above
versions.
Please, stick to the above steps. -> steps
@praveenpgeb @ideamartin Please retry; this is still effective with any
python 3.0 and above
versions.Please, stick to the above steps. -> steps
plz check
@praveenpgeb @ideamartin
I believe you are both attempting to decompile only one file; in that case, follow this one.-> single .pyc decompile
@praveenpgeb @ideamartin I believe you are both attempting to decompile only one file; in that case, follow this one.-> single .pyc decompile
I'm trying to decompile a single pyc file of 3.9 version
And I ran this command "python -m uncompyle6 -o main.pyc"
It is showing this error sir
ImportError: cannot import name 'iscode' from 'xdis'
I'm trying to decompile a single pyc file of 3.9 version And I ran this command "python -m uncompyle6 -o main.pyc" It is showing this error sir ImportError: cannot import name 'iscode' from 'xdis'
Let me look into it over the weekend and get back to you.
I'm trying to decompile a single pyc file of 3.9 version And I ran this command "python -m uncompyle6 -o main.pyc" It is showing this error sir ImportError: cannot import name 'iscode' from 'xdis'
Let me look into it over the weekend and get back to you.
Sir I need your help
I have contacted you in instagram.. please check sir
hi its not working for python 3.9 plz update