2013-05-12 14 views
7

Próbuję dekompilować niektóre .pyc plików - wystarczy kilka podstawowych danych z nich, słyszałem, że najlepiej dla niego byłoby Uncompyle2,Python> Uncompyle2 - Wykorzystanie

więc zainstalowałem Python27 (Win), a następnie Zainstalowałem Uncompyle2 z https://github.com/wibiti/uncompyle2 - wszystko jest w porządku do tej pory, teraz staram się dowiedzieć, jak go używać, readme mówi, że muszę napisać uncompyle2 --h, aby uzyskać więcej pomocy, otrzymuję po tym "niezdefiniowanym" wiadomości, następnie I próbowałem zaimportować skrypt przez import uncompyle2 w tłumaczu, myślę, że moduł jest ładowany (po napisaniu uncompyle2 w tłumaczeniu mówi, że załadował funkcje od __init__), ale nadal nie może uzyskać żadnej z jego funkcji, aby uzyskać pracę, jeśli spróbuję zrobić cokolwiek mówi "błąd składni" (nawet jeśli piszę e wszystko tak jak z readme) i --h też nie działa,

Co robię źle?

Nawiasem mówiąc, próbowałem znaleźć konwertery online, ale skoro kompilowane pliki int w wersji 2.6.4 nie mogą znaleźć niczego, to może z tym pracować.

+0

Powinieneś wpisać 'uncompyle2 --h' w swoim terminalu, nie w tłumaczu Pythona. W systemie Windows może być konieczna edycja zmiennej 'PATH' (google it) w celu uwzględnienia folderu, w którym zainstalowany jest program uncompyle2. –

Odpowiedz

12

z IDLE

import uncompyle2 
with open("uncompiled file.py", "wb") as fileobj: 
    uncompyle2.uncompyle_file("afile.pyc", fileobj) 

Wynik powinien być kod źródłowy Nieskompilowany.

EDIT 2/15/18

dla Pythona 3 Użyj uncompyle 6 i otwórz plik wyjściowy w trybie "W" (nie "WB")

import uncompyle6 
with open("uncompiled file.py", "w") as fileobj: 
    uncompyle6.uncompyle_file("afile.pyc", fileobj) 
+0

Jesteś oszczędność czasu :) –

+0

Otrzymuję 'TypeError: wymagany jest obiekt podobny do bajtów, a nie 'str'' na uncompyle6 dla Pythona 3 – chandru

+0

@chandru zaktualizowana odpowiedź na py3 zgodność – user2682863

1

Aby uruchomić z linii poleceń (Na przykład PowerShell) musisz uruchomić skrypt uncompyle2 w skryptach, prawdopodobnie w C: \ Python \ Scripts, jeśli zainstalowałeś Python do C: \ Python. Będzie to dekompilować somefile.pyc pliku i utworzyć decompiled.py pliku w C: \ Temp

PS C:. \ Python \ Scripts> python \ uncompyle2 -OC: \ temp \ decompiled.py somefile.pyc

1

Chciałbym tylko dodać do zaakceptowanej odpowiedzi, aby zrobić to wszystko z tego samego katalogu, mam pusty folder uncompiled file.py podczas próby uruchomienia go z innego miejsca. Cały skrypt

Poza tym ty człowiek użytkownika2682863! zapisany mój projekt

+0

czy będzie działać z python3 – chandru

+0

Tak, po prostu upewnij się, że nieskomplikowany z/__ pycache __/ –

+0

LMK, jak to działa, ja nie przetestowałem go w 3 –

0

Wystarczy ponowiona wersję na https://github.com/wibiti/uncompyle2

Ale to nie był już importowany. Musiałem przeszukać bibliotekę i odkryłem, że została ona zmieniona ... więc jest to kod, który zadziałał dla mnie:

import uncompyle6 
with open("uncompiled file.py", "wb") as fileobj: 
    uncompyle6.uncompyle_file("yourpycfile.pyc", fileobj) 
+0

Otrzymuję TypeError: wymagany jest obiekt podobny do bajtów, a nie "str" ​​na uncompyle6 dla Pythona 3 – chandru