Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

Cara mendekripsi prosedur tersimpan di SQL Server 2008

Artikel SQL Server Pro "Decrypt SQL Server Objects" masih bekerja di SQL Server 2008.

Anda harus terhubung melalui DAC. Lihat file "Decrypt SQL 2005 stored procedure, functions, triggers, views.sql" di pengunduhan .

Hanya untuk meringkas langkah-langkah yang dilakukannya untuk definisi prosedur tersimpan berikut

CREATE PROC dbo.myproc
WITH ENCRYPTION
AS
SELECT 'FOO'
  1. Mengambil teks objek terenkripsi dari imageval kolom di sys.sysobjvalues dan menyimpannya dalam variabel @ContentOfEncryptedObject
  2. Menghitung @ObjectDataLength dari DATALENGTH(@ContentOfEncryptedObject)/2 .
  3. Menghasilkan ALTER PROCEDURE pernyataan diisi dengan panjang yang benar dengan - karakter (jadi dalam hal ini ALTER PROCEDURE [dbo].[myproc] WITH ENCRYPTION AS------------ )
  4. Mengeksekusi ALTER pernyataan, mengambil versi terenkripsi dari sys.sysobjvalues dan menyimpannya dalam variabel @ContentOfFakeEncryptedObject lalu gulung kembali perubahannya.
  5. Menghasilkan CREATE PROCEDURE pernyataan diisi dengan panjang yang benar dengan - karakter (jadi dalam hal ini CREATE PROCEDURE [dbo].[myproc] WITH ENCRYPTION AS----------- ). Ini disimpan dalam variabel @ContentOfFakeObject

Kemudian loop melalui @i = 1 to @ObjectDataLength dan mendekripsi definisi karakter pada satu waktu menggunakan XOR berikut ini perhitungan.

NCHAR(
      UNICODE(SUBSTRING(@ContentOfEncryptedObject, @i, 1)) ^
      (
          UNICODE(SUBSTRING(@ContentOfFakeObject, @i, 1)) ^
          UNICODE(SUBSTRING(@ContentOfFakeEncryptedObject, @i, 1))
      )
     )


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cara Mengaktifkan RPC Out menggunakan T-SQL

  2. Tanda kurung kurawal di T-SQL

  3. Bagaimana saya bisa memasukkan identitas secara manual?

  4. SQL Server:Ganti karakter XML yang tidak valid dari bidang VARCHAR(MAX)

  5. PILIH BERBEDA pada satu kolom