L'article SQL Server Pro "Décrypter les objets SQL Server" fonctionne toujours dans SQL Server 2008.
Vous devez vous connecter via le DAC. Voir le fichier "Décrypter les procédures stockées SQL 2005, les fonctions, les déclencheurs, les vues.sql" dans le téléchargement .
Juste pour résumer les étapes qu'il effectue pour la définition de procédure stockée suivante
CREATE PROC dbo.myproc
WITH ENCRYPTION
AS
SELECT 'FOO'
- Récupère le texte de l'objet chiffré à partir de
imageval
colonne danssys.sysobjvalues
et le stocke dans une variable@ContentOfEncryptedObject
- Calcule
@ObjectDataLength
deDATALENGTH(@ContentOfEncryptedObject)/2
. - Génère une
ALTER PROCEDURE
déclaration complétée à la bonne longueur avec le-
caractère (donc dans ce casALTER PROCEDURE [dbo].[myproc] WITH ENCRYPTION AS------------
) - Exécute le
ALTER
instruction, récupère la version chiffrée desys.sysobjvalues
et stocke cela dans la variable@ContentOfFakeEncryptedObject
annule ensuite la modification. - Génère une
CREATE PROCEDURE
déclaration complétée à la bonne longueur avec le-
caractère (donc dans ce casCREATE PROCEDURE [dbo].[myproc] WITH ENCRYPTION AS-----------
). Ceci est stocké dans la variable@ContentOfFakeObject
Il boucle ensuite pour @i = 1 to @ObjectDataLength
et déchiffre la définition un caractère à la fois en utilisant le XOR
suivant calcul.
NCHAR(
UNICODE(SUBSTRING(@ContentOfEncryptedObject, @i, 1)) ^
(
UNICODE(SUBSTRING(@ContentOfFakeObject, @i, 1)) ^
UNICODE(SUBSTRING(@ContentOfFakeEncryptedObject, @i, 1))
)
)