जावा स्रोत कोड को संरक्षित होने से सुरक्षा [बंद]


96

पिछले हफ्ते, मुझे होमवर्क के लिए थोड़ा GUI बनाना पड़ा। मेरे स्कूल के किसी भी साथी ने ऐसा नहीं किया। उन्होंने मेरा एक सामान चुरा लिया है जहाँ से हमें इसे अपलोड करना था और फिर उन्होंने इसे अपने रूप में फिर से अपलोड किया। जब मैंने अपने शिक्षक से कहा कि यह मेरा सब काम है तो उन्होंने मुझ पर विश्वास नहीं किया।

इसलिए मैंने एक बेकार विधि या किसी चीज़ को इस प्रमाण के साथ अंदर रखने के बारे में सोचा कि मैंने इसे कोडित किया है। मैंने एन्क्रिप्शन के बारे में सोचा। मेरा अब तक का सबसे अच्छा विचार:

String key = ("ZGV2ZWxvcGVkIGJ5IFdhckdvZE5U"); //My proof in base64

क्या आप कुछ और बेहतर तरीके सोच सकते हैं?


31
अपलोड साइट में फ़ाइलों का टाइमस्टैम्प नहीं था?
एवररोसेस

76
क्या आप कह रहे हैं कि वे अपना कोड डाउनलोड कर सकते हैं जहाँ से आपने इसे अपलोड किया है? वह पागल मालूम होता है। आपको शिक्षक के तरीकों पर सवाल उठाना चाहिए। अधिमानतः उसके / उसके बॉस से बात करके जब से वह थोड़ा अनुचित लगता है।
कीसर

56
एपिक आपके किसी होमवर्क को फेल कर देता है और पूरी क्लास को फेल कर देता है।
आयोजित

25
लगता है जैसे शिक्षक एक शुरुआत है ...
UmNyobe

22
इस स्थिति में करने के लिए एकमात्र समझदार बात यह है कि आप अपने होमवर्क को कैसे अपलोड करें, इस बारे में शिक्षक से बात करके समस्या को ठीक करने का प्रयास करें। इसे एक ऐसे क्षेत्र में अपलोड करना, जहाँ आप अन्य सभी के सबमिशन डाउनलोड कर सकते हैं, बस सादा बेवकूफ है - मुझे यकीन नहीं है कि एक शिक्षक को लगता है कि दृष्टिकोण एक अच्छा है जो वास्तव में शिक्षण होना चाहिए!
माइकल बेरी

जवाबों:


104

मुझे आपकी वही समस्या थी जो बहुत समय पहले थी। हमारे पास विंडोज 2000 मशीनें थीं और फाइल को एक नोवेल नेटवर्क फोल्डर में अपलोड किया था जिसे हर कोई देख सकता था। मैंने कई चोरों का इस्तेमाल किया, यहाँ तक कि सबसे अच्छे चोरों को भी हराया: व्हॉट्सएप वॉटरमार्किंग; मेटाडाटा वॉटरमार्किंग; असामान्य चरित्र; विश्वसनीय टाइमस्टैम्पिंग; काम करने का ढंग। यहाँ उन्हें क्रम में है।

व्हॉट्सएप वॉटरमार्किंग:

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

मेटाडाटा वॉटरमार्किंग

यह वह जगह है जहाँ आप जानकारी रखने के लिए फ़ाइल के मेटाडेटा को बदलते हैं। आप अपना नाम, हैश इत्यादि फ़ाइल के अनदेखे हिस्सों में एम्बेड कर सकते हैं, विशेष रूप से EXE के। NT दिनों में, वैकल्पिक डेटा स्ट्रीम लोकप्रिय थीं।

असामान्य चरित्र

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

विश्वसनीय टाइमस्टैम्पिंग

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

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

काम करने का ढंग

तो, आपने कुछ किया और आपके पास अब सही सबूत है? नहीं, छात्र अभी भी कह सकते हैं कि आपने उनसे या किसी अन्य बकवास से विचार चुरा लिया है। इसके लिए मेरा फिक्स था, निजी तौर पर, अपने इंस्ट्रक्टर के साथ अपने एक या अधिक तरीके स्थापित करना। मैं प्रशिक्षक को व्हाट्सएप देखने के लिए कहता हूं, कुछ प्रतीकों की तलाश करता हूं, आदि लेकिन दूसरों को यह बताने के लिए कि वॉटरमार्क क्या था। यदि प्रशिक्षक आपकी सरल तकनीकों को गुप्त रखने के लिए सहमत होंगे, तो वे संभवतः ठीक काम करना जारी रखेंगे। यदि नहीं, तो हमेशा टाइमस्टैम्पिंग पर भरोसा है। ;)


5
+1 - अच्छा, व्यापक जवाब। संभवतः स्वीकृत उत्तर होना चाहिए।
एंडी थॉमस

5
एक और विचार: चर नाम, फ़ील्ड नाम, विधि नाम, वर्ग नाम, आदि में अपने आद्याक्षर को एनकोड करें। चोर के पास सब कुछ फिर से लिखने के लिए कठिन समय होगा। (मैंने यहां इसका उल्लेख किया है, क्योंकि यह एक अच्छा संग्रह है)
gaborsch

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

4
एक और विचार गैबोरश की टिप्पणी से प्रेरित है: जानबूझकर कुछ चीजों को गलत तरीके से याद करना। कुछ फ़ंक्शन या चर नाम की बहुत ही असामान्य गलत वर्तनी करें। 10 अन्य लोगों ने अपने दम पर एक ही काम किया? हाँ ठीक है ... (नोट: न्यू वर्ल्ड बाईबल अनुवाद के एक प्रमुख आलोचक ने दावा किया कि यह केजेवी नॉकऑफ़ था और सबूत था कि केजेवी में एक दुर्लभ व्याकरणिक त्रुटि "ब्रांड न्यू" एनडब्ल्यूटी में थी। तो, इस काम के लिए एक मिसाल है। )
निक पी।

7
"व्हॉट्सएप वॉटरमार्किंग" पर ध्यान देने के लिए एक बिंदु यह है कि यदि IDE (पुनः) आपके कोड को प्रारूपित करता है (जैसे VS C # / Eclipse), तो वे चले जाएंगे।
एल्विन वोंग

63

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

संपादित करें: PGP आपको अपनी कुंजी प्रकट किए बिना एन्क्रिप्ट / साइन इन करने की अनुमति देगा, लेकिन आप पासवर्ड के साथ एक ज़िप फ़ाइल की कतरनी सादगी को हरा नहीं सकते हैं, इसलिए हर होमवर्क असाइनमेंट के लिए एक नई कुंजी चुनें। सादगी में सौंदर्य :)


2
यह सबसे सरल apporach है।
जॉन रेन्नोर

2
आप कैसे साबित करते हैं कि कोड आपका है? मैं आपका कोड चुरा सकता हूं, और ज़िप कर सकता हूं जैसे कि वह मेरा था।
गैबर्सच

4
@GaborSch, अगर मैं एक पासवर्ड के साथ एक ज़िप फ़ाइल में अपना कोड अपलोड करता हूं, तो मैं सूरज की गर्मी से मृत्यु के तुरंत बाद आपका चुराया हुआ संस्करण देखूंगा (उचित रूप से चुने गए पासवर्ड के साथ)
SeanC

11
आप सफलतापूर्वक डिक्रिप्शन कुंजी प्रदान करके यह साबित कर सकते थे कि यह आपका कोड है।
जोनाथन एस। फिशर

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

39

यदि आप शिक्षक को स्रोत कोड दे रहे हैं, तो बस serialVersionUIDअपनी कक्षा की फ़ाइलों में से एक को जोड़ें जो आपके नाम का एक एन्क्रिप्टेड संस्करण है। आप इसे स्वयं शिक्षक को डिक्रिप्ट कर सकते हैं।

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

यदि आप इसे एक स्टाइलिश तरीके से करना चाहते हैं , तो आप इस ट्रिक का उपयोग कर सकते हैं , यदि आपको यादृच्छिक बीज मिल जाए जो आपके नाम का उत्पादन करता है। :) यह आपकी संख्या तब होगी, और जहाँ कहीं भी यह प्रतीत होता है कि यह साबित होगा कि यह आप ही थे जिसने उस कोड को बनाया था ।


5
एक चोर कोड में कॉस्मेटिक बदलाव कर सकता है, जिससे चोरी को कम स्पष्ट किया जा सके। एक सीरियल संस्करण यूआईडी एक आसान कॉस्मेटिक बदलाव होगा।
एंडी थॉमस

3
@GaborSch धारावाहिक के साथ एक है UIDU परिपूर्ण धन्यवाद है
लोरेमइप्सम

2
@ AndyThomas-Cramer हाँ, मुझे इसमें मेरे क्रिप्टेड नाम के साथ एक विधि प्रोग्राम करना चाहिए और अगर इसे हटा दिया जाए, तो प्रोग्राम
वर्कआउट नहीं होगा

2
@ एंडीहोमास-क्रैमर इन थ्योरी हाँ। व्यवहार में अधिकांश चटकारे आलसी होते हैं और केवल वे ही न्यूनतम आवश्यक होते हैं जो वे आवश्यक समझते हैं। (संभवतः के //written by WarGodNTसाथ बदल रहा है //Written by ImaCheata।) यह भी संभावना नहीं है कि उनमें से बहुत से लोग जानते हैं कि svUID उन्हें तोड़ सकता है। भले ही उनमें से कुछ स्मार्ट हैं; अगर अधिकांश वर्ग धोखा दे रहा है तो पकड़े जाने के लिए कुछ निश्चित हैं। कम से कम शिक्षक को अपनी प्रक्रिया को विफल करने के लिए मनाने के लिए पर्याप्त होना चाहिए।
डैन इज़ फ़ाइडलिंग बाय फायरलाइट

3
@WilQu: आप किसी और के नाम या निजी कुंजी के साथ अपने कोड पर हस्ताक्षर नहीं करेंगे?
अनसलैंडर मोनिका

35

यह मेरे छात्रों की एक जोड़ी के साथ हुआ जो एक ही अपार्टमेंट में रहते थे। एक डेस्क दराज में छोड़ दिया डिस्क से स्रोत कोड चुरा लिया।

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

आप इसे दृश्यमान किए बिना जानकारी को एनकोड करने के लिए इसका फायदा उठा सकते हैं। आप रिक्त स्थान के साथ कुछ लाइनों के अंत में अपने इनीशियल्स या अपने छात्र आईडी को एनकोड कर सकते हैं।

एक चोर संभवतः दृश्यमान कोड में कॉस्मेटिक बदलाव करेगा, लेकिन गैर-दृश्य वर्णों को याद कर सकता है।

संपादित करें:

इसके बारे में थोड़ा और सोचते हुए, आप रिक्त स्थान और टैब का उपयोग कर सकते हैं क्योंकि मोर्स-कोड डिट्स और डीएएच, और कई लाइनों के अंत में अपना नाम डालते हैं। एक चोर आपकी पहचान को नष्ट किए बिना कुछ लाइनों को हटा सकता है, पुन: व्यवस्थित या पुन: बना सकता है।

संपादित करें 2:

व्हॉट्सएप में संदेश छिपाने के लिए "व्हॉट्सएप स्टेग्नोग्राफ़ी" शब्द है। Googling ने इस ओपन-सोर्स कार्यान्वयन को 90 के दशक में वापस लाने का खुलासा किया , जिसमें मोर्स कोड के बजाय हफ़मैन एन्कोडिंग का उपयोग किया गया था।


2
आपका स्वागत है, सवाल के लिए धन्यवाद। मुझे मोर्स-कोड रिक्ति के बारे में सोचने का अवसर दिया।
एंडी थॉमस

1
कोई भी जावा आईडीई सभी अदृश्य पात्रों को हटाने वाले कोड को प्रारूपित कर सकता है;; फिर भी मोर्स-कोड का विचार अच्छा है :-)
प्रकाश के

5
विस्तार: किसी भी स्ट्रिंग शाब्दिक में, कुछ रिक्त स्थान को एक वर्ण के साथ बदलें जो रिक्त जैसा दिखता है। एएससीआईआई में चरित्र # 255 की तरह, या यूनिकोड में "अलिखित रिक्त"। अधिकांश newbies अंतर पर ध्यान नहीं देते हैं, और यह आपको इंगित करने की अनुमति देगा कि कौन (शायद!) आपके स्रोतों को चुरा ले।
TheBlastOne

@PKK - हाँ, इस उपाय का मुकाबला करेगा। उपायों का एक संयोजन शायद सबसे अच्छा है।
एंडी थॉमस

@ TheBlastOne - अच्छा विचार है। खुद से आपकी पहचान नहीं करता है, लेकिन चोर सुधारों के कारण यह नहीं खोया है।
एंडी थॉमस

19

यह मेरे लिए एक आईटी प्रशासन समस्या की तरह लगता है। प्रत्येक छात्र का अपना अपलोड क्षेत्र होना चाहिए जो अन्य छात्रों द्वारा एक्सेस नहीं किया जा सकता है।

शिक्षक एक उच्च स्तर का होगा, जो प्रत्येक छात्र अपलोड फ़ोल्डर तक पहुंचने में सक्षम होगा। यदि यह संभव नहीं है तो @exabrial उत्तर के साथ जाएं क्योंकि यह सबसे सरल समाधान है।


9

सबसे अच्छी बात यह है कि आप स्रोत कोड को पासवर्ड के साथ ज़िप करें और शिक्षक को पासवर्ड ई-मेल करें।

समस्या सुलझ गयी।


2
सरल समाधान के लिए +1। इंजीनियर इसे खत्म मत करो। लेकिन प्रोफेसर के साथ जाँच करें कि क्या वह इस पहले के साथ ठीक है।
एडुआर्डो

6

गिट की तरह एक वितरित (= स्टैंडअलोन) संस्करण नियंत्रण प्रणाली का उपयोग करें । उपयोगी भी हो सकता है।

आपके नाम और दिनांक के साथ एक संस्करण इतिहास पर्याप्त रूप से आश्वस्त हो सकता है।


2
लेकिन ओपी यह साबित करने में विफल नहीं है कि उसका स्रोत उसके द्वारा बनाया गया था। उनके पास एक कठिन समय है जो यह साबित करता है कि स्कूल के साथी अपने स्रोतों का उपयोग उनके लिए करते हैं।
TheBlastOne

2
एक वितरित वीसीएस काफी जटिल है। सभी लेखक की जरूरत सामग्री और / या नकल की मौलिकता साबित करने के लिए है। यह किसी भी फाइल सबमिशन मैकेनिज्म के साथ पूरा किया जा सकता है जो सबमिशन को टाइमस्टैम्प करता है, सब्मिट को पहचानता है और छात्रों को सबमिशन को डिलीट करने की अनुमति नहीं देता है। यह एक FTP या वेब सर्वर के रूप में सरल रूप में कुछ के साथ किया जा सकता है।
निक पी

1
एक स्क्रिप्ट लिखना बहुत आसान है जो कमिट लॉग को स्कैन करेगा और एक ही इतिहास के साथ एक नया रेपो फिर से बनाएगा लेकिन एक अलग उपयोगकर्ता।
mikerobi


@ इज़्काता, मैंने संशोधन इतिहास को बदलने की संभावना पर विचार नहीं किया। मैं एक ऐसी स्क्रिप्ट के बारे में सोच रहा था, जो पहले संशोधन की जांच करती है और इसे दूसरे रेपो में भेजती है, फिर दूसरे संशोधन की जांच करती है और नए रेपो कमिट्स को दोहराती है। एक वीसीएस से दूसरे काम में बदलने के लिए कुछ उपकरण के समान।
mikerobi

3

क्या चुराया था?

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

  • बाइनरी? बस प्रत्येक .class के चेकसम की तुलना करना पर्याप्त होगा (आपके स्कूल के साथी वर्ग फ़ाइलों को फिर से लिखने के लिए बहुत आलसी हैं)


2

बस अंतिम समय में अपना समाधान पोस्ट करें। यह किसी को भी इसे कॉपी करने का समय नहीं देगा।

और छात्रों को अन्य छात्रों के कार्य देखने के लिए छात्रों को अस्वीकार करने के लिए व्यवस्थापक को एक प्रतिक्रिया भेजें।


1

यदि आप फ़ाइल को पासवर्ड एन्क्रिप्शन के साथ .zip में अपलोड करते हैं, तो कोई भी .zip फ़ाइल को डाउनलोड करके पासवर्ड को क्रैक कर सकता है और यदि उनका cpu उस पर एक लाख क्वेरी रन करता है, यदि वे एक धोखा चोर के बड़े हैं। दुर्भाग्य से, कुछ हैं और यह करना आसान है।

आपके स्रोत को अन्य छात्रों द्वारा साझा किए गए सर्वर पर देखा जा सकता है। शिक्षक को वास्तव में अपलोड करने के लिए आपको अपना पासवर्ड एन्क्रिप्टेड निर्देशिका देना चाहिए। यह सबडोमेन को जोड़कर आसानी से किया जा सकता है। लेकिन शायद शिक्षक आपको वहां तक ​​पहुंचने के लिए अपने खुद के सर्वर पर फाइलें अपलोड करने की अनुमति दे सकते हैं।

यह स्क्रिप्ट को बाधित करने के लिए भी संभव है ताकि इसके पास एक दस्तावेज़ हो। राइटिंग ('यह पृष्ठ xxxxx द्वारा लिखा गया था'), किसी को भी, जो आपके काम को कॉपी करने में सक्षम नहीं है, जब तक कि वे पहले इसे डिक्रिप्ट नहीं करते। लेकिन असली जवाब यह है कि आपके स्कूल को अपने प्रत्येक छात्र को अपना पासवर्ड संरक्षित निर्देशिका देने की आवश्यकता है।


0

मेरे मामले में, मेरे शिक्षक बेहतर दृष्टिकोण के साथ आए। वे प्रश्न जो हमारे पंजीकरण संख्या के साथ कुछ करने के लिए प्रदान की है। उदाहरण के लिए:

एक फ़ंक्शन / सिद्धांत के लिए इनपुट हमारा पंजीकरण नंबर है, जो प्रत्येक छात्र के लिए अलग है

तो, उत्तर या समाधान के दृष्टिकोण प्रत्येक छात्र से अपेक्षाकृत भिन्न होते हैं। यह जरूरी है कि सभी छात्रों को अपना होमवर्क स्वयं करना होगा, या कम से कम यह जानने के लिए कि अपने पंजीकरण के साथ दृष्टिकोण को कैसे हैक करना है [यह पट्टिका सीखने से कठिन हो सकता है;)]।

Hope your lecturer will read this thread before his next tutorial :D
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.