此存储过程解密比较短的存储过程可以,运行前先备份存储过程,否则可能无法恢复。 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--尊龙凯时 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 '' @objname '' on '' @tablename '' with encryption for '' @trigtype '' 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 '' @objname '' on '' @tablename '' with encryption for '' @trigtype '' 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, @i, 1)) ^ (unicode(substring(@b, @i, 1)) ^ unicode(substring(@c, @i, 1))))) set @i=@i 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'', '''') set @d=replace((@d),''with encryption'', '''') if charindex(''with encryption'',upper(@d) )>0 set @d=replace(upper(@d),''with encryption'', '''') --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 --尊龙凯时 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 --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) go set quoted_identifier off go set ansi_nulls on go
用户登录
还没有账号?立即注册
用户注册
投稿取消
文章分类: |
|
还能输入300字

上传中....