Technological recipes that I've held to prepare some solutions DBA environment.

14 Nov 2007

Sql Server: desencriptando Procedimientos almacenados

(Atención: funciona sólo en sqlserver 2000, en las versiones actuales les  borrará el SP correspondiente, ojo con aquello)

Para desencriptar procedimientos almacenados debemos hacer lo siguiente:

Si tenemos un procedimiento encriptado como el siguiente:

CREATE PROCEDURE desencriptame
WITH ENCRYPTION
AS
PRINT 'desencriptame porfavor'
GO

y si luego quiesieramos visualizar el texto de este procedimiento nos apareceria lo siguiente:

exec sp_helptext desencriptame

mensaje: Los comentarios de objeto han sido cifrados.

Para ver el código desencriptado hagamos lo siguiente. Vamos a crear un procedimiento que desencripte esto. este procedimiento se llamará DECRYPTSP2K y su código es el siguiente: compilenlo:

CREATE PROCEDURE [DBO].[DECRYPTSP2K](
@objName VARCHAR(50))
AS
DECLARE @a NVARCHAR(4000),
@b NVARCHAR(4000),
@c NVARCHAR(4000),
@d NVARCHAR(4000),
@i INT,
@t BIGINT
--get encrypted data
SET @a = (SELECT CTEXT
FROM SYSCOMMENTS
WHERE ID = OBJECT_ID(@objName))
SET @b = 'ALTER PROCEDURE ' + @objName + ' WITH ENCRYPTION AS ' +

REPLICATE('-',4000 - 62)


EXECUTE( @b)
--get encrypted bogus SP
SET @c = (SELECT CTEXT
FROM SYSCOMMENTS
WHERE ID = OBJECT_ID(@objName))
SET @b = 'CREATE PROCEDURE ' + @objName + ' WITH ENCRYPTION AS ' +

REPLICATE('-',4000 - 62)
--start counter
SET @i = 1
--fill temporary variable
SET @d = REPLICATE(N'A',(DATALENGTH(@a) / 2))
--loop
WHILE @i <= DATALENGTH(@a) / 2
BEGIN
--xor original+bogus+bogus encrypted
SET @d = STUFF(@d,@i,1,NCHAR(UNICODE(SUBSTRING(@a,@i,1)) ^ (UNICODE(SUBSTRING(@b,@i,1)) ^ UNICODE(SUBSTRING(@c,@i,1)))))
SET @i = @i + 1
END
--drop original SP
EXECUTE( 'drop PROCEDURE ' + @objName)
--remove encryption
--try to preserve case
SET @d = REPLACE((@d),'WITH ENCRYPTION','')
SET @d = REPLACE((@d),'With Encryption','')
SET @d = REPLACE((@d),'with encryption','')
IF CHARINDEX('WITH ENCRYPTION',UPPER(@d)) > 0
SET @d = REPLACE(UPPER(@d),'WITH ENCRYPTION','')
--replace SP
EXECUTE( @d)
Luego ejecutenlo de la siguiente manera:

exec DECRYPTSP2K 'desencriptame'
go

Luego vuelvan a ejecutar el sp_helptext y obtendrán el código desencriptado:

exec sp_helptext desencriptame

mensaje:
Text
CREATE PROCEDURE desencriptame

AS
PRINT 'desencriptame porfavor'

Saludos. Felipe D.
Share:

11 Comments:

Alpha79 said...

Felicitaciones Felipe.
Muy buen trabajo.
Espero seguir visitando tu blog, en busca de tan buenos aportes.

saludos

Anamaria B.

BlackXXX said...

Grande Maestro!!!!.... Quedo demostrado que la Encriptacion de Microsoft vale Yuyo.... :)

Gracias por el Aporte. Yo que iba a implementar la seguridad de mi sistema con esto...jajajaja

Alejandro said...

No funciona en SQL Server 2005 SP2 ¬¬, al ejecutar el procedimiento almacenado DECRYPTSP2K, elimina el que le mandas como parametro

Felipitux said...

noooo en sql server 2005 no. Efectivamente elimina el procedimiento. Antes de ejecutar algo Siempre revisa el código estimado amigo.

miguelon said...

a mi también me elimino el SP que utilice.
Saludos

Anonymous said...

como puedo desencriptar un sp de sql 2008?

rc6016 said...

Estimado lo que yo he probado es utilizar este software que me ha servidor, es una versiòn pagada pero hay unaversiòn trial que puedes usar.

http://www.devlib.net/decryptsql.htm

lamentablemente no hay una soluciòn directa como en SQL Server 2000. 2005 y 2008 requieren de herramientas externas para desencriptar.

thành nguyễn said...

tiếng anh giao tiếp cho trẻ em
chung cư newskyline
chung cư hateco hoàng mai
chung cư hà nội
dịch vụ hoàn thuế gtgt
dịch vụ kế toán thuế trọn gói

dịch vụ quyết toán thuế
khoá học kế toán thuế
trung tâm kế toán
dịch vụ báo cáo thuế
dịch vụ báo cáo tài chính tại tphcm

dich vu ke toan noi bo
dịch vụ dọn dẹp sổ sách trọn gói

xumeiqing said...

coach factory outlet
nmd adidas
ray ban sunglass,ray ban sunglasses,ray ban outlet,cheap ray bans,cheap ray ban sunglasses,cheap ray bans,ray bans
stan smith adidas
cartier
polo ralph lauren
yeezy boost 350
fitflops
instyler max
white converse
ray bans
michael kors outlet
sac longchamp pliage
calvin klein dresses
ralph lauren
michael kors outlet online
fitflops shoes
burberry outlet canada
reebok classic
pandora jewelry
adidas gazelle
supra store
omega speedmaster
nike roshe run
burberry outlet
air jordan shoes
under armour
fitflops sale clearance
coach outlet store online clearance
mlb jerseys wholesale
michael kors handbgas
nike shoes for cheap
oakley sunglasses outlet
michael kors outlet
fitflops sale clearance
reebok outlet store
adidas pure boost black
dior sunglasses 2016
michael kors outlet online
bottega veneta shoes
chenzhen20160511

dada24 Xu said...

canada goose parka
uggs outlet
michael kors outlet online
polo ralph lauren outlet
michael kors
michael kors purse
longchamp sale
air jordans
ugg australia outlet
nike outlet
zhi20161219

caiyan said...

philadelphia phillies jerseys
coach factory outlet
ray ban sunglasses
oakley sunglasses
michael kors outlet clearance
yeezy boost 350
pandora outlet
cheap oakley sunglasses
oakley sunglasses
polo ralph lauren outlet
0424shizhong

Copyright © Felipe Donoso DBA TIPS | Powered by Blogger
Design by SimpleWpThemes | Blogger Theme by NewBloggerThemes.com | Free Blogger Templates