解密SQL2000的儲存過程

2021-03-31 11:05:31 字數 3139 閱讀 3221

內容來自網際網路,作者不明

drop procedure sp_decrypt

gocreate  procedure sp_decrypt (@objectname varchar(50))

asbegin

begin transaction --add by playyuer

declare @objectname1 varchar(100)

declare @sql1 nvarchar(4000),@sql2 nvarchar(4000),@sql3 nvarchar(4000),@sql4 nvarchar(4000),@sql5 nvarchar(4000),@sql6 nvarchar(4000),@sql7 nvarchar(4000),@sql8 nvarchar(4000),@sql9 nvarchar(4000),@sql10 nvarchar(4000) 

declare  @origsptext1 nvarchar(4000),  @origsptext2 nvarchar(4000) , @origsptext3 nvarchar(4000), @resultsp nvarchar(4000)

declare  @i int , @t bigint

declare @m int,@n int,@q int

set @m=(select max(colid) from sys***ments  where id = object_id(@objectname))

set @n=1

--get encrypted data

create table  #temp(colid int,ctext varbinary(8000))

insert #temp select colid,ctext from sys***ments  where id = object_id(@objectname)

set @sql1='alter procedure '+ @objectname +' with encryption as '

--set @sql1='alter procedure '+ @objectname +' with encryption as '

set @q=len(@sql1)

set @sql1=@sql1+replicate('-',4000-@q)

select @sql2=replicate('-',4000),@sql3=replicate('-',4000),@sql4=replicate('-',4000),@sql5=replicate('-',4000),@sql6=replicate('-',4000),@sql7=replicate('-',4000),@sql8=replicate('-',4000),@sql9=replicate('-',4000),@sql10=replicate('-',4000)

exec(@sql1+@sql2+@sql3+@sql4+@sql5+@sql6+@sql7+@sql8+@sql9+@sql10)

while @n<=@m

begin

set @origsptext1=(select ctext from #temp  where colid=@n)

set @objectname1=@objectname+'_t'

set @origsptext3=(select ctext from sys***ments where id=object_id(@objectname) and colid=@n)

if @n=1

begin

set @origsptext2='create procedure '+ @objectname +' with encryption as '--

set @q=4000-len(@origsptext2)

set @origsptext2=@origsptext2+replicate('-',@q)

endelse

begin

set @origsptext2=replicate('-', 4000)

end--start counter

set @i=1

--fill temporary variable

set @resultsp = replicate(n'a', (datalength(@origsptext1) / 2))

--loop

while @i<=datalength(@origsptext1)/2

begin

--reverse encryption (xor original+bogus+bogus encrypted)

set @resultsp = stuff(@resultsp, @i, 1, nchar(unicode(substring(@origsptext1, @i, 1)) ^

(unicode(substring(@origsptext2, @i, 1)) ^

unicode(substring(@origsptext3, @i, 1)))))

set @i=@i+1

end--drop original sp

--execute ('drop procedure '+ @objectname)

--remove encryption

--preserve case

set @resultsp=replace((@resultsp),'with encryption', '')

set @resultsp=replace((@resultsp),'with encryption', '')

set @resultsp=replace((@resultsp),'with encryption', '')

if charindex('with encryption',upper(@resultsp) )>0

set @resultsp=replace(upper(@resultsp),'with encryption', '')

--replace stored procedure without enryption

print @resultsp

--execute( @resultsp)

set @n=@n+1

enddrop table #temp

endrollback transaction --add by playyuer

go

SQL 2000解密儲存過程

begin set origsptext1 select ctext from temp where colid n set objectname1 objectname t set origsptext3 select ctext from syscomments where id object ...

sql2000儲存過程

自 http www.cnblogs.com a13971240 archive 2008 10 22 1316747.html create proc getdataset tablelist varchar 200 搜尋表的欄位,比如 id,datatime,job 用逗號隔開 tablenam...

sql2000儲存過程

create proc getdataset tablelist varchar 200 搜尋表的欄位,比如 id,datatime,job 用逗號隔開 tablename varchar 30 搜尋的表名 selectwhere varchar 500 搜尋條件,這裡不用寫where,比如 job...

sql2000下 分頁儲存過程

set quoted identifier off goset ansi nulls on go 名稱 分頁儲存過程 使用示例 exec sp pageindex from stusources 2,10 注意 目前還沒有對輸入的引數進行嚴格的驗證 預設為輸入都是合法有效的 alter proc s...

C 呼叫sql 2000儲存過程

今天又有朋友問起關於c 呼叫儲存過程的問題,發現自己好久沒用,竟然也忘得差不多了 本來想直接把以前那片拿過來的,但是感覺還是重新寫一下讓自己印象深刻點。除錯環境 vs.net 2005,sql 2000,windows xp sp2。語言 c 呼叫帶輸入引數的儲存過程 首先自然是在查詢分析器裡建立一...