加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MySql教程 > 正文

解密存储过程,视图,触发器

发布时间: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】收集整理供大家参考研究

如果以上内容对您有帮助,欢迎收藏、点赞、推荐、分享。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读