एन्क्रिप्टेड दृश्य या संग्रहीत प्रक्रिया को कैसे देखें


27

मैं थर्ड पार्टी डेटाबेस पर काम कर रहा हूं।

जब मैं दाईं ओर क्लिक करके किसी दृश्य की परिभाषा देखने की कोशिश करता हूं, CREATE TOऔर तब NEW QUERY EDIT WINDOW, मुझे एक त्रुटि मिल रही है:

यह संपत्ति इस ऑब्जेक्ट के लिए मौजूद नहीं हो सकती है या अपर्याप्त एक्सेस अधिकारों के कारण पुनर्प्राप्ति योग्य नहीं हो सकती है। पाठ एन्क्रिप्ट किया गया है।


यदि आवश्यक हो तो आप एक एसक्यूएल प्रोफाइलर ट्रेस भी चला सकते हैं और एसपी एसक्यूएल इस तरह से भी कब्जा कर सकते हैं।
दलाल जूस आईटी

क्या sql profiler के माध्यम से एन्क्रिप्टेड tsql प्राप्त करना संभव है? @PimpJuiceIT
wenzzzel

@wenzzzel मुझे विश्वास है कि यह है, लेकिन मैं आपको 100% सटीकता के साथ बताने के लिए बिल्कुल याद नहीं करता, लेकिन मेरा मानना ​​है कि वह एक एन्क्रिप्टेड एसपी के साथ अतीत में था, मैं एक प्रोफाइलर ट्रेस को देखने के लिए भाग गया कि क्या जरूरत थी। मैं उस समय किसी भी वातावरण का समर्थन नहीं करता हूं जो मैं इसकी पुष्टि कर सकता हूं लेकिन मेरा मानना ​​है कि आप देख सकते हैं कि प्रोफाइल ट्रेस के साथ क्या चल रहा है, भले ही यह एन्क्रिप्टेड प्रक्रिया से आता हो।
पिंप जूस आईटी 15

ठीक है, मुझे इतना यकीन नहीं है कि इस कारण से मुझे सब मिल रहा है-- Encrypted text
wenzzzel

जवाबों:


12

एक अन्य थर्ड पार्टी टूल जिसका इस्तेमाल आप उड़ने वाली वस्तुओं को डिक्रिप्ट करने के लिए कर सकते हैं, Red Gate का SQL Prompt है: http://www.red-gate.com/products/sql-development/sql-prompt/features

संग्रहीत प्रक्रिया पर मँडरा तो आप डिक्रिप्टेड निर्माण स्क्रिप्ट को देखने के लिए अनुमति देगा।

डिस्क्लेमर: यह टूल कमर्शियल (14 दिन के फ्री ट्रायल के साथ) है और मैं रेड गेट के लिए काम करता हूं।


18

इस समस्या के बारे में मेरा यहाँ विस्तृत विवरण है

संक्षेप में, ऑब्जेक्ट वास्तव में एन्क्रिप्ट नहीं किया गया है, बल्कि बाधित है। इसलिए हम मूल वापस प्राप्त कर सकते हैं। विधि थोड़ा सा शामिल है, लेकिन इसमें ये चरण शामिल हैं:

  1. उदाहरण के लिए समर्पित व्यवस्थापक कनेक्शन का उपयोग कर कनेक्ट करें
  2. इस तरह obfuscated कोड का चयन करें:

    SELECT @secret = imageval
    FROM   sys.sysobjvalues
    WHERE  objid = OBJECT_ID(@object_name);
    
  3. ऑब्जेक्ट को किसी अन्य के साथ बदलें जिसका समान नाम समान object_id हो और बाइट्स में समान लंबाई (उदाहरण के लिए ALTER PROCEDURE)

  4. नए ओब्सेस्ड कोड को ऊपर की तरह ही प्राप्त करें
  5. XOR तीन मूल्यों को एक साथ (obfuscated मूल, प्रतिस्थापन और obfuscated प्रतिस्थापन)

वह आपको मूल कोड देगा। हालांकि, जैसा कि किन ने उल्लेख किया है, ऐसा करने के साथ समर्थन और कानूनी निहितार्थ भी हो सकते हैं ताकि पहले अपने वकील से परामर्श करना सुनिश्चित करें।


14

मॉड्यूल टेक्स्ट को RC4 स्ट्रीम सिफर का उपयोग करके एन्क्रिप्ट किया गया है।

RC4 आरंभीकरण कुंजी को SHA-1 हैश से गणना की जाती है:

  • डेटाबेस परिवार GUID (से sys.database_recovery_status )
    से परिवर्तित uniqueidentifier को बाइनरी (16)
  • मॉड्यूल की वस्तु आईडी (कैटलॉग विचारों से) पूर्णांक से छोटे-एंडियन बाइनरी में
    परिवर्तित (4)
  • मॉड्यूल की वस्तु उप-आईडी स्मॉलिंट से लिटिल-एंडियन बाइनरी (2) में
    परिवर्तित हो गई ।

मॉड्यूल की वस्तु उप-आईडी है:

  • एक अनावश्यक संग्रहित प्रक्रिया के लिए 1; या
  • एक (पदावनत) क्रमांकित संख्या के लिए प्रक्रिया संख्या; या
  • 0 अन्यथा।

एक उपयुक्त विशेषाधिकार प्राप्त उपयोगकर्ता तब मॉड्यूल को डिक्रिप्ट कर सकता है:

  1. Sys.sysobjvalues (DAC का उपयोग करके) से एन्क्रिप्टेड बाइनरी को प्राप्त करना
  2. ऊपर विस्तृत रूप में RC4 कुंजी की गणना
  3. बाइनरी पर प्रसिद्ध मानक आरसी 4 एल्गोरिथ्म चल रहा है
  4. परिणाम को बाइनरी से नवरच (अधिकतम) में परिवर्तित करना

अधिक विवरण और मेरे लेख में एक पूर्ण कोड कार्यान्वयन:

के आंतरिक WITH ENCRYPTION


मुझे लगता है कि यह सबसे सीधा, गैर-वाणिज्यिक, दृष्टिकोण है जहां एक 3 पार्टी उपकरण स्थापित करना एक संभव समाधान नहीं है।
जॉन एइसब्रेनर

12

आप समर्पित सर्वर कनेक्शन (DAC) का उपयोग करके SQL सर्वर से कनेक्ट कर सकते हैं, फिर संग्रहीत कार्यविधि का sql पाठ देखें। DAC का उपयोग कर कनेक्ट करें:

admin:Your_Servername

आप मार्टिन स्मिथ द्वारा स्टैक ओवरफ्लो पर इस उत्तर में आवश्यक पूर्ण चरण पा सकते हैं ।

SQL सर्वर 2005, 2008, और R2 में एन्क्रिप्टेड संग्रहीत प्रक्रियाओं, विचारों, कार्यों में डिक्रिपिंग में वर्णित के रूप में एक अन्य विकल्प कुछ तृतीय पक्ष लिपियों का उपयोग करना है।

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


8

यदि आप मूल DDL स्क्रिप्ट का पूर्वावलोकन करना चाहते हैं या किसी एन्क्रिप्टेड ऑब्जेक्ट को डिक्रिप्ट करना चाहते हैं, तो आप ApexSQL डिक्रिप्ट की जांच कर सकते हैं

यह एक फ्री स्टैंडअलोन टूल है, इसे SSMS में एकीकृत करने के विकल्प के साथ, मूल DDL स्क्रिप्ट का पूर्वावलोकन करें। इसके अलावा, आप कई सर्वरों पर स्थित वस्तुओं को एक बारी में डिक्रिप्ट कर सकते हैं। एक और उपकरण जो आपकी मदद कर सकता है, वह है dbForge SQL Decryptor


0

एक विधि जिसका उपयोग मैं अक्सर एक समय में कई संग्रहीत प्रक्रियाओं को डिक्रिप्ट करने के लिए करता हूं ...

RedGate की SQL का उपयोग करें और अपने डेटाबेस की तुलना खाली डेटाबेस (या आपके द्वारा ज्ञात किसी भी डेटाबेस में संग्रहीत कार्यविधियाँ नहीं होंगी) से करें। एक तैनात स्क्रिप्ट बनाएं और SSMS में कॉपी करें। खोजें और सफेद स्थान के साथ परिवर्तन के साथ बदलें । फिर रचनात्मक प्रक्रिया में बदलाव प्रक्रिया को बदलें। मूल डेटाबेस के खिलाफ RedGate स्क्रिप्ट चलाएँ और आपने सभी संग्रहीत कार्यविधि एन्क्रिप्शन को हटा दिया है।

मेरे पास ४००+ संग्रहीत प्रक्रियाओं वाला एक डेटाबेस था और जब SQL प्रॉम्प्ट काम में आता है, तो यह ४००+ संग्रहीत प्रक्रियाओं के खिलाफ राइट क्लिक, कॉपी, पेस्ट करने के लिए मेरे समय के लायक नहीं था। RedGate SQL का उपयोग करते हुए तुलना करें कि मैं अपने 400+ संग्रहीत कार्यविधियों से एन्क्रिप्शन को हटाने में सक्षम था, लगभग 10 मिनट शुरू होने में।

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