怎样对SQL Server 2005存储过程解密

http://tech.ddvip.com   2008年05月09日    社区交流

内容摘要:要查密文必须使用DAC(专用管理员连接)连接到数据库后,在系统表sys.sysobjvalues查询,该表的列imageval存储了相应的密文。

  --循环设置每一个变量,创建真正的变量

  --每次一个字节

  SET @intProcSpace=1

  --如有必要,遍历每个@real_xx变量并解密

  WHILE @intProcSpace<=(datalength(@real_01)/2)

  BEGIN

  --真的和假的和加密的假的进行异或处理

  SET @real_decrypt_01 = stuff(@real_decrypt_01, @intProcSpace, 1,

  NCHAR(UNICODE(substring(@real_01, @intProcSpace, 1)) ^

  (UNICODE(substring(@fake_01, @intProcSpace, 1)) ^

  UNICODE(substring(@fake_encrypt_01, @intProcSpace, 1)))))

  SET @intProcSpace=@intProcSpace+1

  END

  --通过sp_helptext逻辑向表#output里插入变量

  insert #output (real_decrypt) select @real_decrypt_01

  -- select real_decrypt AS '#output chek' from #output --测试

  -- -------------------------------------

  --开始从sp_helptext提取

  -- -------------------------------------

  declare @dbname sysname

  ,@BlankSpaceAdded int

  ,@BasePos int

  ,@CurrentPos int

  ,@TextLength int

  ,@LineId int

  ,@AddOnLen int

  ,@LFCR int --回车换行的长度

  ,@DefinedLength int

  ,@SyscomText nvarchar(4000)

  ,@Line nvarchar(255)

  Select @DefinedLength = 255

  SELECT @BlankSpaceAdded = 0 --跟踪行结束的空格。注意Len函数忽略了多余的空格

  CREATE TABLE #CommentText

  (LineId int

  ,Text nvarchar(255) collate database_default)

  --使用#output代替sys.sysobjvalues

  DECLARE ms_crs_syscom CURSOR LOCAL

来源:微软BI开拓者    作者:拓狼    责编:豆豆技术应用

正在加载评论...