Подтвердить что ты не робот

Как расшифровать хранимую процедуру в SQL Server 2008

У меня есть хранимая процедура, которая зашифровывается с помощью опции WITH ENCRYPTION. Теперь я хочу расшифровать эту процедуру. Я уже пробовал хранимую процедуру под названием "Decryptsp2K", которая предоставляется для SQL 2000 в этом форуме: http://forums.asp.net/t/1516587.aspx/1

Но он удаляет мою хранимую процедуру, а не расшифровывает ее.

Есть ли способ расшифровать хранимую процедуру в SQL Server 2008?

4b9b3361

Ответ 1

В SQL Server 2008 по-прежнему работает статья SQL Server Pro Расшифровать объекты SQL Server.

Вам необходимо подключиться через ЦАП. См. Файл "Расшифровать хранимые процедуры SQL, функции, триггеры, views.sql" в загрузке.

Просто, чтобы суммировать шаги, которые он выполняет для определения следующей хранимой процедуры

CREATE PROC dbo.myproc
WITH ENCRYPTION
AS
SELECT 'FOO'
  • Извлекает текст зашифрованного объекта из столбца imageval в sys.sysobjvalues и сохраняет его в переменной @ContentOfEncryptedObject
  • Вычисляет @ObjectDataLength из DATALENGTH(@ContentOfEncryptedObject)/2.
  • Создает инструкцию ALTER PROCEDURE, заполненную до нужной длины символом - (поэтому в этом случае ALTER PROCEDURE [dbo].[myproc] WITH ENCRYPTION AS------------)
  • Выполняет инструкцию ALTER, извлекает зашифрованную версию из sys.sysobjvalues и сохраняет ее в переменной @ContentOfFakeEncryptedObject, а затем отбрасывает изменение.
  • Создает инструкцию 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))
      )
     )

UPDATE

Пол Уайт написал очень хорошую статью, в которой подробно рассказывается о почему это работает, и что дает альтернативный метод, который не полагайтесь на изменение объекта: Внутренние значения WITH ENCRYPTION

Ответ 2

Если вы хотите расшифровать процедуру или любой другой зашифрованный объект, посмотрите ApexSQL Decrypt.

Это бесплатный автономный инструмент с возможностью его интеграции в SSMS, предварительного просмотра оригинального сценария DDL и создания сценариев изменения и создания расшифровки.

Из автономного инструмента вы можете подключиться к нескольким серверам и расшифровать несколько объектов одновременно.

dbForge SQL Decryptor - это еще один инструмент, который может помочь вам и в этом случае.

Ответ 3

Многие старые инструменты перестали работать с SQL Server 2005+. Обратите внимание, что вы должны использовать Dedicated Admin Connection

Быстрый поиск показывает несколько вариантов.

Ответ 4

Расшифровать хранимую процедуру SQL SERVER

Вы можете использовать сторонний инструмент для дешифрования зашифрованной хранимой процедуры.

Загрузите этот инструмент: это бесплатное программное обеспечение

https://www.devart.com/dbforge/sql/sqldecryptor/download.html

Ответ 5

dbForge Sql Decryptor помог мне расшифровать зашифрованную хранимую процедуру. Подробности доступны здесь here

Ответ 6

LIFE-SAVER SQL инструмент

этот инструмент помог мне восстановить мои собственные работы давно зашифрован, отправлен, но клиент случайно потерял исходный код

Какой хороший день :)

https://www.devart.com/dbforge/sql/sqldecryptor/download.html