2010-08-12 10 views
6

मैं जानना चाहता था कि पाइथन बाइट कोड को कम करना कितना आसान है। मैंने अजगर में एक आवेदन किया है जिसका स्रोत मैं सुरक्षित होना चाहता हूं। मैं py2exe का उपयोग कर रहा हूं जो मूल रूप से पायथन संकलित फाइलों पर निर्भर करता है।क्या पाइथन संकलित (*। Pyc) फ़ाइलों को पूरी तरह से डीकंपाइल करना आसान है?

क्या यह कोड सुरक्षित करता है?

+0

संभावित डुप्लिकेट [मैं पाइथन कोड की रक्षा कैसे करूं?] (Http://stackoverflow.com/questions/261638/how-do-i-protect-python-code) –

+2

आह ... 3 वर्षों के बाद, मैं महसूस करें कि बेतुका कोड सुरक्षा कितनी है। वास्तव में, सी/सी ++ जैसी व्यापक भाषाओं में कोई अन्य भाषा मौजूद नहीं है जिसे हटाया नहीं जा सकता है। – Shubham

उत्तर

6

"पूरी तरह से" ("पूरी तरह से डिकंपाइल") में आपकी परिभाषा पर निर्भर करता है ... ;-)। आप आसानी से मूल अजगर स्रोत वापस मिल जाएगा नहीं है - लेकिन बाईटकोड आसान है हो रही है, और मानक पुस्तकालय मॉड्यूल dis वास्तव में मौजूद है बाईटकोड आसानी से पढ़ने योग्य बनाने के लिए (हालांकि यह अभी भी बाईटकोड है, है ना पूर्ण अजगर स्रोत कोड ;-) ।

+0

वैसे भी सी ++ डिकंपेलर भी हैं लेकिन वे सिर्फ बेकार हैं। उन्हें मूल स्रोत कोड नहीं मिलता है लेकिन केवल कुछ असेंबली स्तर के निर्देश प्राप्त होते हैं। तो पूर्ण विघटनकारी से मेरा मतलब है कि * वास्तव में * वास्तविक * स्रोत कोड उत्पन्न करें। – Shubham

+0

आपको "वास्तविक स्रोत कोड" नहीं मिलेगा। टिप्पणियाँ चली जाएगी। लेकिन परिवर्तनीय नाम, विधि नाम, स्थिरांक, तार, और आपके द्वारा लागू किए गए सभी तर्क, पर्याप्त रुचि रखने वाले व्यक्ति द्वारा पठनीय होंगे। –

+1

@ शुभम, हाँ, @Ned सही है: पाइथन बाइटकोड पाइथन स्रोत के बहुत करीब है, असेंबली भाषा सी ++ स्रोत से बना है, जो इसे बनाया गया था। उसके नमक के लायक कोई भी पाइथन विशेषज्ञ बाइटकोड से स्रोत के तर्क को पुनर्निर्माण करने में सक्षम होगा, और इसके बारे में हमेशा के बिना नहीं लेगा (ऐसा नहीं कि असेंबली कोड से ऐसा करना इतना मुश्किल है - देखो कि यह हर नए के लिए कितना समय लगता है एक खेल के लिए मूर्खतापूर्ण, प्रतिलिपि संरक्षण "योजना को समझने, समझने और टूटा हुआ ... ;-)। –

4

संकलन .pyc कोड को सुरक्षित नहीं करता है। उन्हें आसानी से पढ़ा जाता है। How do I protect Python code?

1

यदि आप ऑनलाइन खोज करते हैं तो आप पाइथन बाइटकोड के लिए डिकंपलर पा सकते हैं: डाउनलोड करने के लिए एक मुफ्त संस्करण है, लेकिन जो केवल Python 2.3 तक बाइटकोड को नियंत्रित करता है, और online service जो संस्करण 2.6 तक डिकंपाइल करेगा।

पाइथन बाइटकोड के हाल के संस्करणों के लिए अभी तक कोई डिकंपाइलर प्रतीत नहीं होता है, लेकिन यह लगभग निश्चित रूप से इसलिए है क्योंकि किसी ने बाइटकोड के साथ किसी भी मौलिक कठिनाई के बजाय किसी को लिखने की आवश्यकता महसूस नहीं की है।

कुछ लोगों ने दुभाषिया को संशोधित करके पाइथन बाइटकोड की रक्षा करने का प्रयास किया है: बाइटकोड के लिए उपयोग किए जाने वाले विभिन्न मानों के साथ आप अपने स्वयं के दुभाषिया को संकलित नहीं कर सकते हैं: इससे import dis के साथ कोड की सरल परीक्षा को रोका जा सकता है, लेकिन किसी भी निर्धारित हमले के लिए लंबे समय तक खड़ा नहीं होगा और यह सब पैसा खर्च करेगा कि कोड को बेहतर ढंग से प्रोग्राम में सुधारने के लिए रखा जाएगा।

संक्षेप में, यदि आप अपने कार्यक्रम की रक्षा करना चाहते हैं तो इसे करने के लिए कानून का उपयोग करें: उचित सॉफ़्टवेयर लाइसेंस का उपयोग करें और इसे अनदेखा करने वाले लोगों पर मुकदमा चलाएं। कोड लिखना महंगा है, लेकिन अंत परिणाम शायद ही कभी सॉफ्टवेयर पैकेज का मूल्यवान हिस्सा है: डेटा अधिक मूल्यवान है।

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