uncompyle6 KeyError: '3.9.10'

0

Mam plik .exe (napisany w pythone i pyinstaller) i dokonałem wstecznej inżynierii żeby wyskrobać stamtąd wszystkie pliki, użyłem hex editor żeby dostac magic code i zmienić w pliku z kodem, plik z kodem zmieniłem w .pyc i gdy wpisuje w cmd uncompyle6.exe xyz.pyc to dostaje

I don't know about Python version '3.9.10' yet.
Python versions 3.9 and greater are not supported.
I don't know about Python version '3.9.10' yet.
Python versions 3.9 and greater are not supported.
I don't know about Python version '3.9.10' yet.
Python versions 3.9 and greater are not supported.
I don't know about Python version '3.9.10' yet.
Python versions 3.9 and greater are not supported.
I don't know about Python version '3.9.10' yet.
Python versions 3.9 and greater are not supported.
I don't know about Python version '3.9.10' yet.
Python versions 3.9 and greater are not supported.
Traceback (most recent call last):
  File "C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.9_3.9.2800.0_x64__qbz5n2kfra8p0\lib\runpy.py", line 197, in _run_module_as_main
    return _run_code(code, main_globals, None,
  File "C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.9_3.9.2800.0_x64__qbz5n2kfra8p0\lib\runpy.py", line 87, in _run_code
    exec(code, run_globals)
  File "C:\Users\pawel\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.9_qbz5n2kfra8p0\LocalCache\local-packages\Python39\Scripts\uncompyle6.exe\__main__.py", line 4, in <module>
  File "C:\Users\pawel\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.9_qbz5n2kfra8p0\LocalCache\local-packages\Python39\site-packages\uncompyle6\__init__.py", line 54, in <module>
    from uncompyle6.main import decompile_file
  File "C:\Users\pawel\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.9_qbz5n2kfra8p0\LocalCache\local-packages\Python39\site-packages\uncompyle6\main.py", line 19, in <module>
    from uncompyle6 import verify
  File "C:\Users\pawel\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.9_qbz5n2kfra8p0\LocalCache\local-packages\Python39\site-packages\uncompyle6\verify.py", line 24, in <module>
    import xdis.std as dis
  File "C:\Users\pawel\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.9_qbz5n2kfra8p0\LocalCache\local-packages\Python39\site-packages\xdis\std.py", line 236, in <module>
    _std_api = make_std_api()
  File "C:\Users\pawel\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.9_qbz5n2kfra8p0\LocalCache\local-packages\Python39\site-packages\xdis\std.py", line 233, in make_std_api
    return _StdApi(python_version, variant)
  File "C:\Users\pawel\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.9_qbz5n2kfra8p0\LocalCache\local-packages\Python39\site-packages\xdis\std.py", line 78, in __init__
    self.opc = opc = get_opcode_module(python_version, variant)
  File "C:\Users\pawel\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.9_qbz5n2kfra8p0\LocalCache\local-packages\Python39\site-packages\xdis\op_imports.py", line 180, in get_opcode_module
    return op_imports[canonic_python_version[vers_str]]
KeyError: '3.9.10'

Ktoś może się kiedyś spotkał z takim problemem ?

0

do Radosław Głębicki :
no jak ? chyba właśnie najnowsza xD coś czytałem na github że te nowe nie są jakoś kompatybilne z uncompyle6 bo nie został jeszcze odświeżony ? tutaj ---> https://github.com/rocky/python-uncompyle6/issues/280 może ktoś bardziej zrozumie co oni tam piszą xd

1

A jak ustawi magic na jakiś który jest wspierany przez uncompyle? Albo spróbować jakiegoś https://github.com/rocky/python-decompile3
Ja bym w ogóle zaczął od przjechania tego .pyc przez pythonowe dis.dis() żeby się upewnić że nie ma dodatkowej obfuskacji tam (np. podmiany opcodów i tego interpretera embedded)

0

nie wiem co oznacza python dis.dis() a ten temat na github też znalazłem i zanim napisałem post o tym to zrobiłem python pip install decompile3

0

nie wiem co oznacza python dis.dis()

import dis

dis.dis(open("twojpyc.pyc","rb"))

W ten sposób python zdumpuje ci bajtkod/asembler tego twojego pyca. Jeśli się gdzieś po drodze wywali to znaczy ze albo z pycem cos jest nie teges albo np. wersja pythona sie nie zgadza.

0

dosłownie skopiowałem to co mi wysłałeś (tylko nazwę twojpyc.pyc zmieniłem na swoją i wrzuciłem do tego samego folderu co kod) i nic nie wyskoczyło. Może pop prostu zainstaluje starszą wersję Pythona i zobaczę czy pomoże

0

Bo zapomniałem w tym snippecie wyżej dac .read() a ty kopiujesz bezmyślnie nie zastanawiając się co ten kod miał robić.

dis.dis(open("twojpyc.pyc","rb").read())
0

dzięki, sprawdziłem i pyc jest w porządku, nie wywaliło. Zainstalowałem python wersje 3.8.0 do tej wersji doinstalowałem odpowiednią bibliotekę (uncompyle6), puściałem w cmd i teraz mam taki error:

# uncompyle6 version 3.8.0
# Python bytecode 3.9.0 (3425)
# Decompiled from: Python 3.8.0 (tags/v3.8.0:fa919fd, Oct 14 2019, 19:37:50) [MSC v.1916 64 bit (AMD64)]
# Embedded file name: moj_pyc.py
# Compiled at: 2022-03-17 21:28:33

Unsupported Python version, 3.9.0, for decompilation


# Unsupported bytecode in file moj_pyc.pyc
# Unsupported Python version, 3.9.0, for decompilation

czyli coś nie tak z bytecode pliku .pyc oraz nie wiem czemu dalej piszę mi o python 3.9 jak przez 3.8 to robię

0

No ale masz magic w tym pycu od pythona 3.9 więc nie pójdzie ci to na Pythonie 3.8, musisz odpalić interpreterem w pasującej wersji. Albo jeśli dis.dis pod pythonem 3.8 się nie wywalił, to zmień hexedytorem magic w headerze tego pyca na 3.8 i może się uda

0

ok, z magic code był problem. W folderze "PYZ-00.pyz_extracted" z "wypakowanego" pliku exe wziąłem magic code i teraz wszystko działa :)
chodź myślałem że dostane plik .py a dostałem cały kod w cmd ale to skopiowałem i wszystko mam :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1