Şifreli bir görünüm veya saklı yordam nasıl görüntülenir?


27

Üçüncü parti bir veritabanı üzerinde çalışıyorum.

Bir görünümün tanımını sağ tıklatarak görüntülemeye çalıştığımda, CREATE TOardından 'e NEW QUERY EDIT WINDOWbir hata alıyorum:

Bu özellik, bu nesne için bulunmayabilir veya erişim haklarının yetersizliği nedeniyle geri alınamayabilir. Metin şifreli.


Gerekirse, bir SQL profiler izini çalıştırabilir ve SP SQL'in bu şekilde ne yaptığını yakalayabilirsiniz.
Pezevenk Suyu BT '

Şifrelenmiş tsql'yi sql profiler üzerinden almak mümkün müdür? @PimpJuiceIT
wenzzzel

@wenzzzel Öyle olduğuna inanıyorum ama% 100 doğrulukla size tam olarak söylememi hatırlamıyorum ama şifreli bir SP ile geçmişe inanıyorum, neyin gerekli olduğunu görmek için profiler izlemesi yaptım. Bunu onaylayabildiğim herhangi bir ortamı desteklemiyorum, ancak şifrelenmiş bir işlemden gelse bile, profil izlemeyle nelerin çalıştığını görebileceğinize inanıyorum.
Pezevenk Suyu BT

Tamam, o kadar da emin değilim çünkü tüm elde ettiğim şey-- Encrypted text
wenzzzel

Yanıtlar:


12

Hareket halindeyken yerleşik nesnelerin şifresini çözmek için kullanabileceğiniz başka bir üçüncü taraf aracı Red Gate'nin SQL İstemidir: http://www.red-gate.com/products/sql-development/sql-prompt/features

Saklı yordamın üzerine gelindiğinde, şifresi çözülen oluşturma komut dosyasını görmenize izin verir.

Feragatname: Bu araç ticaridir (14 günlük ücretsiz deneme süresine sahip) ve Red Gate için çalışıyorum.


18

Burada bu sorunla ilgili oldukça ayrıntılı bir tanımım var .

Kısacası, nesne gerçekten şifrelenmiş değil, aksine karıştırılmıştır. Bu nedenle orijinali geri alabiliriz. Metot biraz dahil ancak bu adımlardan oluşuyor:

  1. Dedicated Admin Connection'ı kullanarak örneğe bağlanın
  2. Bu gibi karışık kodu seçin:

    SELECT @secret = imageval
    FROM   sys.sysobjvalues
    WHERE  objid = OBJECT_ID(@object_name);
    
  3. Nesneyi, aynı object_id ile aynı ada ve bayt cinsinden aynı uzunluğa sahip başka biriyle değiştirin (örneğin, kullanma ALTER PROCEDURE)

  4. Yeni karıştırılmış kodu yukarıdaki ile aynı şekilde alın
  5. XOR, üç değeri bir araya getirir (orijinal, değiştirilmiş ve değiştirilmiş değiştirme)

Bu size orijinal kodu verecektir. Ancak, Kin'in bahsettiği gibi, destek olabilir ve hatta bunu yapmanın yasal sonuçları olabilir, bu yüzden önce avukatınıza danışın.


14

Modül metni bir RC4 akış şifresi kullanılarak şifrelenir .

RC4 başlatma anahtarı, aşağıdaki SHA-1 karma değerinden hesaplanır :

  • Veritabanı aile GUID (dan sys.database_recovery_status )
    dönüştürülmüş uniqueidentifier için ikili (16)
  • Modülün nesne ID (katalog görünümünden)
    dönüştürülen bir tamsayı küçük endian için ikili (4)
  • Modülün nesne alt İD
    dönüştürüldü smallint küçük endian için ikili (2) .

Modülün nesne alt kimliği:

  • 1 numaralandırılmamış bir saklı yordam için; veya
  • (Kaldırılan) numaralı bir saklı yordamın işlem numarası; veya
  • Aksi halde 0.

Uygun şekilde ayrıcalıklı bir kullanıcı, modülün şifresini şu şekilde çözebilir:

  1. Şifrelenmiş ikili dosyayı sys.sysobjvalues ​​adresinden edinmek (DAC kullanarak)
  2. RC4 anahtarının yukarıda ayrıntılı olarak hesaplanması
  3. Bilinen standart RC4 algoritmasını ikili sistemde çalıştırmak
  4. Sonucu ikiliden nvarchar (max) 'a dönüştürme

Makalemde daha fazla ayrıntı ve tam kod uygulaması:

İç WITH ENCRYPTION


Bunun, bir üçüncü taraf aracının kurulmasının uygun bir çözüm olmadığı en basit, ticari olmayan yaklaşım olduğunu düşünüyorum.
John Eisbrener

12

Sen kullanarak SQL Server bağlanabilir özel yönetici bağlantısı (DAC) sonra saklı yordam sql metnini görüntülemek. Aşağıdakileri kullanarak DAC'ye bağlanın:

admin:Your_Servername

Sen gerekli tam adımları bulabilirsiniz Yığın taşması Bu yanıt ile Martin Smith .

Başka bir alternatif, bazı üçüncü taraf komut dosyalarının, şifreli saklı yordamların, görünümlerin, SQL Server 2005, 2008 ve R2'deki işlevlerin şifresini çözme bölümünde belirtildiği gibi kullanılmasıdır.

Yan not olarak - eğer bir üçüncü taraf veritabanıysa ve prod'da yaparsanız, satıcı bunu destekleyecek mi? SP'leri veya görünümleri şifrelemek için iyi bir neden olabilir. Yedekleme almak daha iyi olur ve bununla uğraşırsın.


8

Orijinal DDL betiğini önizlemek veya şifrelenmiş bir nesnenin şifresini çözmek istiyorsanız, ApexSQL Decrypt ürününü kontrol edebilirsiniz.

Orijinal DDL betiğini önizlemek için SSMS'ye entegre etme seçeneği bulunan ücretsiz bir bağımsız araçtır. Ayrıca, bir kerede birden fazla sunucuda bulunan nesnelerin şifresini çözebilirsiniz. Size yardımcı olabilecek bir başka araç daha, dbForge SQL Decryptor


0

Aynı anda birkaç saklı yordamın şifresini çözmek için sık sık kullandığım bir yöntem ...

RedGate'in SQL'ini kullanın Veritabanınızı boş bir veritabanıyla karşılaştırın (veya saklı yordamlara sahip olmadığını bildiğiniz herhangi bir veritabanını) ile karşılaştırın. Bir dağıtım komut dosyası oluşturun ve SSMS'ye kopyalayın. ENCRYPTION İLE beyaz boşlukla bulun ve değiştirin . Ardından OLUŞTURMA PROSEDÜRÜNÜ ALTER PROSEDÜRÜ olarak değiştirin. RedGate komut dosyasını orijinal veritabanına karşı çalıştırın ve tüm saklı yordam şifrelemesini kaldırdınız.

400+ saklı yordam içeren bir veritabanım vardı ve SQL Prompt kullanışlı olsa da, sağ tıklamak, kopyalamak, 400+ saklı yordamlara karşı yapıştırmak için zamanım değmezdi. RedGate SQL Compare'i kullanarak 400'den fazla saklı yordamdaki şifrelemeyi yaklaşık 10 dakika içinde bitirmeye başladım.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.