2008-09-07 9 views
56

क्या कोई लाइब्रेरी या एप्लिकेशन है जो स्रोत कोड प्राप्त करने के लिए पायथन 2.4+ बाइटकोड को विघटित कर सकता है?मुफ्त पायथन डीकंपलर जो ऑनलाइन सेवा नहीं है?

तलाशी में पता चला:

  • http://depython.net - एक ऑनलाइन सेवा है कि आप
  • dis module करने के लिए एक pyc या प्यो फ़ाइल अपलोड करनी होगी - आप एकत्रित न करने की अनुमति देता है, लेकिन बाईटकोड
  • decompile.py डिकंपाइल नहीं - केवल 1.5.2 या 2.0
  • डिकंपाइल - एक डिकंपिलिंग ऑनलाइन सेवा जिसे आपको भुगतान करने और
पर अपने पीईसी को अपलोड करने और अपलोड करने की आवश्यकता है, के लिए काम करता है
+0

यह काम करना चाहिए: https://github.com/wibiti/uncompyle2। – David542

उत्तर

1

मैं अविश्वसनीय रूप से depython.net

की सटीकता पर हैरान मैं क्या सोचते हैं वे जिले मॉड्यूल का उपयोग और इसके साथ अपने कोड को फिर से संगठित है हूँ। आपको ऐसा करने का कोई तरीका ढूंढना होगा या जिसने पहले से ही एल्गोरिदम लिखा है।

4

मैंने अतीत में डिकंपाइल (उबंटू पैकेज, ऑनलाइन सेवा नहीं, मुझे नहीं पता कि वे एक ही चीज़ हैं या नहीं) और परिणाम से संतुष्ट से अधिक थे। इसने मुझे rm *.pyc के बजाय rm *.py के बाद काम के घंटे बचाए।

+11

फिर भी एक और कारण है कि संस्करण नियंत्रण आपका मित्र क्यों है। :-) –

+0

मैं उस उद्देश्य के लिए गिट साफ़ का उपयोग करता हूं। :) – Arafangion

3

यहां decompyle पर थोड़ी अधिक जानकारी है: यह वही सॉफ्टवेयर है जो वाणिज्यिक decompyle service बन गया। यह ओपन सोर्स होता था और इसका पुराना संस्करण a debian package (स्रोत कोड समेत) के रूप में उपलब्ध/रखरखाव किया जाता है।

यह पाइथन को संस्करण 2.3 तक डिकंपाइल करेगा, लेकिन 2.4+ नहीं।

15

जैसा कि अन्य ने कहा, डिकंपाइल का मुफ्त संस्करण केवल 2.3 तक काम करता है। लेकिन कभी-कभी आप इसे अपने नए पीईसी को पुराने मार्शलिंग प्रारूप में परिवर्तित करके काम करने के लिए प्राप्त कर सकते हैं।

निम्न स्क्रिप्ट दो तर्क, इनपुट और आउटपुट फ़ाइल लेती है, और इसे किसी ऐसे रूप में परिवर्तित करती है जो कम से कम अपने दांतों को कम करने की कोशिश करेगी।

#!/usr/bin/python 
import marshal 
import sys 

MAGIC23 = ';\xf2\r\n' 

def load_pyc(filename): 
     f = open(filename, 'rb') 
     try: 
       magic = f.read(4) 
       timestamp = f.read(4) 
       codeobject = marshal.load(f) 
     finally: 
       f.close() 
       return magic, timestamp, codeobject 

def dump_pyc_23(filename, timestamp, codeobject): 
     assert len(timestamp)==4 
     f = open(filename, 'wb') 
     try: 
       f.write(MAGIC23) 
       f.write(timestamp) 
       marshal.dump(codeobject, f, 0) 
     finally: 
       f.close() 

magic, timestamp, codeobject = load_pyc(sys.argv[1]) 
dump_pyc_23(sys.argv[2], timestamp, codeobject) 

शुभकामनाएँ!

+3

नीचे उल्लिखित uncompyle2 पायथन 2.7 का समर्थन करता है और इस प्रकार यह और अधिक उपयोगी लगता है। – gps

+1

ठीक है, यह _only_ 2.7 है जो समर्थित है। –

+0

पायकॉन 2.6 और 2.7 और पायथन 3 और डीकंपिप्लेज़ संस्करण 2.5, 2.6, 3.4 और 3.5 दोनों से uncompyle6 समर्थन deocompyling का समर्थन https://pypi.python.org/pypi?name=uncompyle6&:action=display – rocky

3

unpyc नामक डिकंपाइल का एक कांटा है जिसने हाल ही में कुछ गतिविधि देखी है। मैंने कुछ पीईसी फाइलों के साथ इसका इस्तेमाल करने की कोशिश की लेकिन यह उनके साथ काम नहीं किया।

4

मुझे UnPyc के साथ अच्छा अनुभव है - यह पूरी तरह से मेरे Django models.py को पुनर्प्राप्त कर दिया गया है।

+1

बस फैब्रिक के लिए UnPyc का उपयोग किया गया फ़ाइल और यह बहुत अच्छी तरह से काम किया। यह मुझे मूल फ़ाइल में लगभग 9 0% वापस मिला। – richleland

+2

@richleland मैंने './UnPyc -d ' की कोशिश की है, यह मुझे पाइथन नहीं देता है,-डी कहते हैं कि लागू नहीं किया गया है। अपना कोड वापस पाने के लिए आपने इसका उपयोग कैसे किया? क्या आपने उबंटू पैकेज का उपयोग किया था? – cerberos

+0

यह एप्लिकेशन बिल्कुल काम नहीं करता है। – itmard

4

आप ऑनलाइन सेवा नहीं चाहते हैं लेकिन depython.com एक अच्छी पायथन डीकंपाइल सेवा है। कोशिश करो।

4

में मदद करता है यह अफसोस की स्थिति में कभी दूसरों के लिए मैं पुष्टि कर सकता है कि uncompyle2 अब अजगर 2.7 के साथ काम करता है (और केवल 2.7 है वह इस समय लगता है) और बस मुझे एक बुरा दुर्घटना से बचाया (और हाँ, मुझे स्रोत नियंत्रण का उपयोग करना चाहिए था)।

+0

thx! यह मेरे लिए काम किया। – osmosis

संबंधित मुद्दे