Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Как да декриптирате съхранена процедура в SQL Server 2008

Статията за SQL Server Pro "Декриптиране на SQL Server обекти" все още работи в SQL Server 2008.

Трябва да се свържете чрез DAC. Вижте файла „Декриптиране на SQL 2005 съхранени процедури, функции, тригери, views.sql“ в изтеглянето .

Само за да обобщим стъпките, които изпълнява за следната дефиниция на съхранена процедура

CREATE PROC dbo.myproc
WITH ENCRYPTION
AS
SELECT 'FOO'
  1. Извлича шифрования текст на обекта от imageval колона в sys.sysobjvalues и го съхранява в променлива @ContentOfEncryptedObject
  2. Изчислява @ObjectDataLength от DATALENGTH(@ContentOfEncryptedObject)/2 .
  3. Генерира ALTER PROCEDURE израз, подплатен до правилната дължина с - знак (така че в този случай ALTER PROCEDURE [dbo].[myproc] WITH ENCRYPTION AS------------ )
  4. Изпълнява ALTER израз, извлича шифрованата версия от sys.sysobjvalues и го съхранява в променливата @ContentOfFakeEncryptedObject след това връща обратно промяната.
  5. Генерира CREATE PROCEDURE израз, подплатен до правилната дължина с - символ (така че в този случай CREATE PROCEDURE [dbo].[myproc] WITH ENCRYPTION AS----------- ). Това се съхранява в променливата @ContentOfFakeObject

След това преминава за @i = 1 to @ObjectDataLength и дешифрира декрипцията символ по знак, използвайки следния XOR изчисление.

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. Преобразувайте DateTime в yyyyMMddHHmm в T-SQL

  2. Архивиране на големи количества стари данни в SQL Server

  3. Linux - PHP 7.0 и MSSQL (Microsoft SQL)

  4. SQL:Грешка, лимитът на Expression услуги е достигнат?

  5. Максималната рекурсия 100 е била изчерпана преди грешката при завършване на оператора да се покаже в SQL заявката