मैं किसी ग्राहक को एक व्याख्या भाषा में लिखे गए कोड को देखने से कैसे रोक सकता हूं?


16

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

समस्या यह है कि मुझे उस सर्वर पर चलने के लिए स्क्रिप्ट की आवश्यकता है जिसे मेरा क्लाइंट भुगतान कर रहा है, तो क्या कोई तरीका है कि मैं किसी विशेष फ़ोल्डर को रूट एक्सेस से मशीन पर सुरक्षित कर सकता हूं, या इसे बना सकता हूं ताकि केवल एक विशेष उपयोग निर्देशिका तक पहुंच सके ? ओएस उबंटू है।


13
आपके और आपके ग्राहक के बीच किस तरह का अनुबंध / समझौता मौजूद है? क्या वे कोड के मालिक हैं, या क्या आपके पास केवल इसका उपयोग करने का लाइसेंस है? या आपने इसमें से कोई काम नहीं किया है?
मैट बी

2
मैंने सोचा कि अजगर स्रोत को बाइनरी में संकलित करना संभव था। क्या इस परियोजना के लिए संभव है? यदि ऐसा है तो आप बाइनरी तैनात कर सकते हैं।
FrustratedWithFormsDesigner 15

नाइटक्रैकर मेरे विचार से सही है। उचित लाइसेंसिंग और अनुबंधों को यह सब रोकना चाहिए, न कि तकनीकी उपायों को। विशेष रूप से, क्योंकि आप हमेशा विघटित / de-अंधेरा करना कुछ और कर सकते हैं rootकरने के लिए अनुमति दी है सब कुछ
बॉबी

इसे दूसरे तरीके से सोचें, अगर वे एक अनुबंध या लाइसेंस को तोड़ते हैं तो आप उन्हें रोने तक के लिए मुकदमा कर सकते हैं
जैकब बोएर

9
हर कोई हमेशा कहता है कि उनका कोड एक उचित राशि के लायक है।
कालेब ब्रासी

जवाबों:


40

इसे लाइसेंस दें।

वास्तव में, यह सब है!


6
मेरा पहला विचार यह था कि इसे उत्तर के रूप में नीचा दिखाया जाए, लेकिन बिल्ली, आप सही हैं। लाइसेंस और अनुबंध पर हस्ताक्षर करना यहां जाने का तरीका है।
बॉबी

@ बॉबी: लगभग एकमात्र रास्ता। विकल्प यह है कि रमणीय, उपयोगी नई सुविधाओं को इतनी जल्दी जोड़ा जाए कि पुराने संस्करण को चोरी करना समय की बर्बादी हो।
एसएलटी

क्या क्रिएटिव कॉमन्स लाइसेंस के रूप में पर्याप्त होंगे?

10
-1 सवाल यह है कि कोड को देखकर क्लाइंट को रोकने के तरीके पूछे जाते हैं, ऐसा नहीं करता है। लोग हमेशा लाइसेंस का पालन नहीं करते हैं, और मुकदमा चलाने के लिए कानूनी रूप से सुनिश्चित करना संभव नहीं है।
2

8
आप पायथन कोड को देखकर ग्राहक को रोक नहीं सकते हैं, इसे अलग करना बहुत आसान है। DRM काम नहीं करता है (यदि वे इसे चला सकते हैं, तो वे इसे अलग कर सकते हैं)। तो एकमात्र उत्तर कानूनी है। और एक बार जब आप प्रवर्तन के लिए कानून पर भरोसा कर रहे हैं, तो तकनीकी आधार को जटिल करके अपने या अपने ग्राहकों के लिए जीवन को कठिन बनाने का कोई मतलब नहीं है।
ncoghlan

10

तुम हमेशा कोड pyc बाइट करने के लिए सभी फ़ाइलों को संकलित कर सकते हैं। वहाँ से बाहर कर रहे हैं कि वहाँ से बाहर स्रोत कोड उत्पन्न कर सकते हैं, लेकिन गंभीर कुछ भी नहीं है।

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

नीचे पंक्ति, बाइट कोड के लिए संकलन और अधिक महत्वपूर्ण बात यह लाइसेंस


मेरा एक सवाल है। बाइट संकलक मनमाने ढंग से चर नामों का उपयोग करता है, या क्या यह पुराने चर नामों का उपयोग करता है? (मुझे लगता है कि पुराने लोगों का उपयोग करना होगा, क्योंकि बाहरी मॉड्यूल उस नाम स्थान पर निर्भर हैं)।

@ ग्रेट: बाइटकोड में चर नाम होते हैं। यह अभी भी एक अपेक्षाकृत अपठनीय गड़बड़ है जब disassembled ( इस नुस्खा के disassembly को पचाने का प्रयास करें ), और कोई भी (हाल ही में) विघटित नहीं होते हैं।

7

साइथन का उपयोग करें। यह आपको अपने कार्यक्रम को मूल निष्पादन के रूप में संकलित करने की अनुमति देगा। फिर इसे चोरी करने के लिए बहुत कठिन होना चाहिए

निर्देशिका के लिए, एकमात्र सलाह जो मैं आपको दे सकता हूं, यह सुनिश्चित करें कि आपने अपनी अनुमतियाँ सही ढंग से सेट की हुई हैं। ACL आपके दोस्त हो सकते हैं, हालाँकि मुझे 100% यकीन नहीं है कि वे रूट को एक फ़ाइल तक पहुँचने से रोक सकते हैं। यहां तक ​​कि अगर वे कर सकते हैं, तब भी रूट सिर्फ अनुमति बदल सकता है। वह जड़ है, वह भगवान है - बस यही काम है।

http://www.korokithakis.net/node/109


1

जैसा कि ऊपर दिखाया गया है, डिस्सेम्बलर्स को कोड वापस मिल सकता है, लेकिन अभी तक यह बहुत पठनीय नहीं है (कम से कम ओपन सोर्स डिस्सेम्बलर्स के लिए नहीं)।

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

PyPI पर एक खोज करते हुए, मैंने यह पाया: http://pypi.python.org/pypi/pyfuscate/0.1 । आपको इसकी जांच करनी चाहिए और अन्य की तरह इसे बाहर निकालना चाहिए और वापस रिपोर्ट करना चाहिए: डी

इसके अलावा: आपको इसका लाइसेंस भी देना चाहिए।


1

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

इस तरह से आपका ग्राहक आपके प्रतीत होता है कि अस्पष्ट कोड को कॉपी-पेस्ट कर सकता है, लेकिन इसे कहीं और नहीं चला सकता। मेरा सुझाव पूरी तरह से बुलेट-प्रूफ नहीं है: लेकिन दुभाषिया डिक्रिप्टेड प्रोग्राम को मेमोरी में कहीं स्टोर कर सकता है। फिर यह संभव है कि कुछ हैकर निष्पादन के दौरान सादे कार्यक्रम में आपके कार्यक्रम को पुनः प्राप्त करते हैं जो मुझे लगता है।

जैसा कि फ़ोल्डरों को रूट एक्सेस से रोकने के लिए, मैं मानता हूं कि रूट को किसी भी फाइल / फोल्डर को एक्सेस करने से नहीं रोका जा सकता है।


यह सिर्फ ओफिसकेशन है, सही टूल के साथ, हमेशा एक बिंदु होगा जहां कोड सादे पाठ में है। अपने समाधान को हराने के लिए एक आसान तरीका बस बाहर स्वैप करने के लिए किया जाएगा ruby/ python/ nodeकस्टम प्रोग्राम दर्पण के साथ निष्पादन एपीआई और कोड आउटपुट।
जामो

इसके अतिरिक्त, निजी कुंजी (डिक्रिप्शन के लिए) पर्यावरण के लिए उपलब्ध होगी, इसलिए एक हमलावर के लिए उपलब्ध है।
फिक्सी

0

यहां लाइसेंस देना सबसे अच्छा जवाब है। उस ने कहा, यह उनके गियर पर क्यों चलना है? यदि यह इतना महत्वपूर्ण है कि आप एक सेवा के लिए बसंत चाहते हैं और कुछ प्रकार की सेवा एपीआई का निर्माण कर सकते हैं, तो लोग इसे चोरी करने के लिए आपकी बौद्धिक संपदा भी नहीं देख सकते हैं।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.