L'articolo di SQL Server Pro "Decrypt SQL Server Objects" funziona ancora in SQL Server 2008.
Devi connetterti tramite il DAC. Vedere il file "Decrypt SQL 2005 stored procedure, functions, triggers, views.sql" in il download .
Giusto per riassumere i passaggi che esegue per la seguente definizione di stored procedure
CREATE PROC dbo.myproc
WITH ENCRYPTION
AS
SELECT 'FOO'
- Recupera il testo dell'oggetto crittografato dal
imagevalcolonna insys.sysobjvaluese lo memorizza in una variabile@ContentOfEncryptedObject - Calcola
@ObjectDataLengthdaDATALENGTH(@ContentOfEncryptedObject)/2. - Genera un
ALTER PROCEDUREistruzione riempita alla lunghezza corretta con-carattere (quindi in questo casoALTER PROCEDURE [dbo].[myproc] WITH ENCRYPTION AS------------) - Esegue
ALTERistruzione, recupera la versione crittografata dasys.sysobjvaluese lo memorizza nella variabile@ContentOfFakeEncryptedObjectquindi annulla la modifica. - Genera un
CREATE PROCEDUREistruzione riempita alla lunghezza corretta con-carattere (quindi in questo casoCREATE PROCEDURE [dbo].[myproc] WITH ENCRYPTION AS-----------). Questo viene memorizzato nella variabile@ContentOfFakeObject
Quindi passa da @i = 1 to @ObjectDataLength e decifra la definizione un carattere alla volta usando il seguente XOR calcolo.
NCHAR(
UNICODE(SUBSTRING(@ContentOfEncryptedObject, @i, 1)) ^
(
UNICODE(SUBSTRING(@ContentOfFakeObject, @i, 1)) ^
UNICODE(SUBSTRING(@ContentOfFakeEncryptedObject, @i, 1))
)
)