2009-04-10 16 views
6

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

प्रश्न: मैं "टूटी हुई" जेपीजी फ़ाइल को पढ़ने के बिना, हेडर को बहाल करने, डिस्क पर अच्छी फ़ाइल को सहेजने और फिर इसे "अच्छी" जेपीजी फ़ाइल के रूप में पुनः लोड करने के बिना कैसे उड़ सकता हूं?

+0

बस याद रखें कि अगर कोई आपके प्रोग्राम के साथ छवि देख सकता है तो वे इसे निकाल सकते हैं। उन्हें बस इतना करना है कि प्रिंटस्क्रीन है। – Herms

+0

मुझे पता है। यह मेरे लिए ठीक है। धन्यवाद हर्म्स। – Ampere

उत्तर

16

लोड एक TMemoryStream में "टूटी" फ़ाइल, इन-स्मृति बाइट्स पैच, और तय JPG फ़ाइल लोड करने के लिए TGraphic.LoadFromStream() का उपयोग करें।

+0

डर्न, आप तेज़ हैं। :-) –

+1

> डर्न, आप तेज़ हैं। :-) - केन व्हाइट सहमत हैं। धन्यवाद! मुझे खुश :) – Ampere

+1

TGraphic के बजाय आप [TSynPicture] का उपयोग कर सकते हैं (http://blog.synopse.info/post/2010/03/20/GIF,-TIF,-PNG-and-JPG- चित्र- TGraphic- पढ़ना/लिखना-माध्यम-जीडीआई) कक्षा। –

2

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

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

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

1

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

+0

> यह सिर्फ इस बात पर निर्भर करता है कि उपयोग करने के इच्छुक कितने प्रयास हैं। बहुत ज्यादा नहीं। मैं स्वीकार करता हूं कि कोई छवियों को डिक्रिप्ट कर सकता है। शायद बाद में मैं अतिरिक्त एन्क्रिप्शन जोड़ दूंगा। लेकिन वैसे भी बेकार है क्योंकि कोई भी छवि प्रिंट कर सकता है। – Ampere

6

उन्हें एन्क्रिप्ट करें। एन्क्रिप्टेड छवि को लोड करें, मेमोरी में डिक्रिप्ट करें और फिर लोडफॉर्मस्ट्रीम को मागी जैसा सुझाएं।

4

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

+0

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

0

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

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