解密存储过程,视图,触发器
发布时间:2020-12-11 23:21:10 所属栏目:MySql教程 来源:网络整理
导读:今天PHP站长网 52php.cn把收集自互联网的代码分享给大家,仅供参考。 此存储过程解密比较短的存储过程可以,运行前先备份存储过程,否则可能无法恢复。 Decrypt Stored Procedures,Views and TriggersScript Rating Total
以下代码由PHP站长网 52php.cn收集自互联网 现在PHP站长网小编把它分享给大家,仅供参考 此存储过程解密比较短的存储过程可以,运行前先备份存储过程,否则可能无法恢复。 Decrypt Stored Procedures,Views and Triggers Script Rating Total number of votes [11] By: jgama This SP will decrypt Stored Procedures,Views or Triggers that were encrypted using "with encryption" There are 2 versions: one for SP''s only and the other one for SP''s,triggers and views version 1: INPUT: object name (stored procedure,view or trigger) version 2: INPUT: object name (stored procedure,view or trigger),object type(''T''-trigger,''P''-stored procedure or ''V''-view) Original idea: shoeboy?Copyright ?1999-2002 SecurityFocus Stored procedures coded by Joseph Gama ? SET QUOTED_IDENTIFIER OFF GO SET ANSI_NULLS OFF GO CREATE PROCEDURE DECRYPT2K (@objName varchar(50),@type char(1) ) --INPUT: object name (stored procedure,-- view or trigger),object type (''S''-store -- d procedure,''V''view or ''T''-trigger) --Original idea: shoeboy <[email?protected] -- quacy.org> --Copyright ?1999-2002 SecurityFocus --adapted by Joseph Gama --Planet Source Code,my employer and my -- self are not responsible for the use of -- this code --This code is provided as is and for ed -- ucational purposes only --Please test it and share your results AS DECLARE @a nvarchar(4000),@b nvarchar(4000),@c nvarchar(4000),@d nvarchar(4000),@i int,@t bigint,@tablename varchar(255),@trigtype varchar(6) SET @type=UPPER(@type) IF @type=''T'' BEGIN SET @tablename=(SELECT sysobjects_1.name FROM dbo.sysobjects INNER JOIN dbo.sysobjects sysobjects_1 ON dbo.sysobjects.parent_obj = sysobjects_1.id WHERE (dbo.sysobjects.type = ''TR'') AND (dbo.sysobjects.name = @objName)) SET @trigtype=(SELECT CASE WHEN dbo.sysobjects.deltrig > 0 THEN ''DELETE'' WHEN dbo.sysobjects.instrig > 0 THEN ''INSERT'' WHEN dbo.sysobjects.updtrig > 0 THEN ''UPDATE'' END FROM dbo.sysobjects INNER JOIN dbo.sysobjects sysobjects_1 ON dbo.sysobjects.parent_obj = sysobjects_1.id WHERE (dbo.sysobjects.type = ''TR'') AND (dbo.sysobjects.name = @objName)) END --get encrypted data SET @a=(SELECT ctext FROM syscomments WHERE id = object_id(@objName)) SET @b=case @type WHEN ''S'' THEN ''ALTER PROCEDURE ''+ @objName +'' WITH ENCRYPTION AS ''+REPLICATE(''-'',4000-62) WHEN ''V'' THEN ''ALTER VIEW ''+ @objName +'' WITH ENCRYPTION AS SELECT dbo.dtproperties.* FROM dbo.dtproperties''+REPLICATE(''-'',4000-150) WHEN ''T'' THEN ''ALTER TRIGGER ''[email?protected]+'' ON ''+ @tablename+'' WITH ENCRYPTION FOR ''[email?protected]+'' AS PRINT ''''a''''''+REPLICATE(''-'',4000-150) END EXECUTE (@b) --get encrypted bogus SP SET @c=(SELECT ctext FROM syscomments WHERE id = object_id(@objName)) SET @b=case @type WHEN ''S'' THEN ''CREATE PROCEDURE ''+ @objName +'' WITH ENCRYPTION AS ''+REPLICATE(''-'',4000-62) WHEN ''V'' THEN ''CREATE VIEW ''+ @objName +'' WITH ENCRYPTION AS SELECT dbo.dtproperties.* FROM dbo.dtproperties''+REPLICATE(''-'',4000-150) WHEN ''T'' THEN ''CREATE TRIGGER ''[email?protected]+'' ON ''+ @tablename+'' WITH ENCRYPTION FOR ''[email?protected]+'' AS PRINT ''''a''''''+REPLICATE(''-'',4000-150) END --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,1)) ^ (UNICODE(substring(@b,1)) ^ UNICODE(substring(@c,1))))) SET @[email?protected]+1 END --drop original SP IF @type=''S'' EXECUTE (''drop PROCEDURE ''+ @objName) ELSE IF @type=''V'' EXECUTE (''drop VIEW ''+ @objName) ELSE IF @type=''T'' EXECUTE (''drop TRIGGER ''+ @objName) --remove encryption --try to preserve case SET @d=REPLACE((@d),''WITH ENCRYPTION'','''') SET @d=REPLACE((@d),''With Encryption'',''with encryption'','''') IF CHARINDEX(''WITH ENCRYPTION'',UPPER(@d) )>0 SET @d=REPLACE(UPPER(@d),'''') --replace SP execute( @d) GO SET QUOTED_IDENTIFIER OFF GO SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER OFF GO SET ANSI_NULLS OFF GO CREATE PROCEDURE DECRYPTSP2K (@objName varchar(50)) --INPUT: object name (stored procedure,-- -- view or trigger) --Original idea: shoeboy <[email?protected] -- dequacy.org> --Copyright ?1999-2002 SecurityFocus --adapted by Joseph Gama --Planet Source Code,my employer and my -- -- self are not responsible for the use -- of -- this code --This code is provided as is and for ed -- -- ucational purposes only --Please test it and share your results AS DECLARE @a nvarchar(4000),@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'',1))))) SET @[email?protected]+1 END --drop original SP EXECUTE (''drop PROCEDURE ''+ @objName) --remove encryption --try to preserve case SET @d=REPLACE((@d),'''') --replace SP execute( @d) GO SET QUOTED_IDENTIFIER OFF GO SET ANSI_NULLS ON GO 以上内容由PHP站长网【52php.cn】收集整理供大家参考研究 如果以上内容对您有帮助,欢迎收藏、点赞、推荐、分享。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |