web-dev-qa-db-fra.com

Comment déchiffrer une procédure stockée dans SQL Server 2008

J'ai une procédure stockée qui est cryptée à l'aide de l'option WITH ENCRYPTION. Maintenant, je veux décrypter cette procédure. J'ai déjà essayé une procédure stockée appelée "Decryptsp2K" qui est donnée pour SQL 2000 dans ce forum: http://forums.asp.net/t/1516587.aspx/1

Mais cela supprime ma procédure stockée, plutôt que de la déchiffrer.

Existe-t-il un moyen de déchiffrer une procédure stockée dans SQL Server 2008?

17

L'article de SQL Server Pro "Déchiffrer 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, fonctions, déclencheurs, 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'
  1. Récupère le texte de l'objet crypté de la colonne imageval dans sys.sysobjvalues et le stocke dans une variable @ContentOfEncryptedObject
  2. Calcule @ObjectDataLength à partir de DATALENGTH(@ContentOfEncryptedObject)/2.
  3. Génère une instruction ALTER PROCEDURE complétée à la longueur correcte avec le caractère - (donc dans ce cas ALTER PROCEDURE [dbo].[myproc] WITH ENCRYPTION AS------------)
  4. Exécute l'instruction ALTER, récupère la version chiffrée de sys.sysobjvalues et la stocke dans la variable @ContentOfFakeEncryptedObject, puis annule la modification.
  5. Génère une instruction CREATE PROCEDURE complétée à la longueur correcte avec le caractère - (donc dans ce cas CREATE PROCEDURE [dbo].[myproc] WITH ENCRYPTION AS-----------). Ceci est stocké dans la variable @ContentOfFakeObject

Il parcourt ensuite pour @i = 1 to @ObjectDataLength et déchiffre la définition, caractère par caractère, en utilisant le calcul XOR suivant.

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

METTRE À JOUR

Paul White a écrit un très bel article qui donne des détails sur pourquoi ce qui précède fonctionne-t-il et donne-t-il une autre méthode qui ne fonctionne pas compter sur la modification de l'objet: The Internals of WITH ENCRYPTION

22
Martin Smith

Si vous souhaitez décrypter une procédure ou tout autre objet chiffré, consultez ApexSQL Decrypt .

C’est un outil autonome gratuit, avec une option pour l’intégrer dans SSMS, prévisualiser le script DDL original et créer des scripts de modification ou de décryptage.

À partir d'un outil autonome, vous pouvez vous connecter à plusieurs serveurs et décrypter plusieurs objets à la fois.

dbForge SQL Decryptor est l'autre outil qui peut vous aider dans ce cas également.

6
LopesC

De nombreux outils plus anciens ont cessé de fonctionner avec SQL Server 2005+. Notez que vous devez utiliser le Dedicated Admin Connection

Une recherche rapide montre plusieurs options. 

3
gbn

Déchiffrer la procédure stockée de SQL SERVER

Vous pouvez utiliser un outil tiers pour décrypter votre procédure stockée chiffrée.

Téléchargez cet outil: c'est un logiciel gratuit

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

1
Ankit Bhalala

dbForge Sql Decryptor m'a aidé à déchiffrer la procédure stockée chiffrée . Des détails sont disponibles ici

0
Jineesh Uvantavida