SQL - Como leer un SP encriptado

 
Vista:

Como leer un SP encriptado

Publicado por Hubert Casimiro Taco (98 intervenciones) el 02/09/2005 19:21:26
Buenas señores.

Como leer un SP encriptado.

Gracias.
Hubert Casimiro
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Como leer un SP encriptado

Publicado por Isaías Islas (5072 intervenciones) el 02/09/2005 23:30:13
CREATE PROCEDURE DECRYPTSP2K (@objName varchar(50))
AS
DECLARE @a nvarchar(4000), @b nvarchar(4000), @c nvarchar
(4000), @d nvarchar(4000), @i int
--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)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar