if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[sp_decrypt]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo].[sp_decrypt]
GO
/*--破解函数,过程,触发器,视图.仅限于SQLSERVER2000
--作者:J9988--*/
/*--调用示例
--解密指定存储过程
exec sp_decrypt 'AppSP_test'
--对所有的存储过程解密
declare tb cursor for
select name from sysobjects where xtype='P' and status>0 and name<>'sp_decrypt'
declare @name sysname
open tb
fetch next from tb into @name
while @@fetch_status=0
begin
print '/*-------存储过程 ['+@name+'] -----------*/'
exec sp_decrypt @name
fetch next from tb into @name
end
close tb
deallocate tb
--*/
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[SP_DECRYPT]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo].[SP_DECRYPT]
GO
CREATE PROCEDURE sp_decrypt(@objectName varchar(50))
AS
begin
set nocount on
--CSDN:j9988 copyright:2004.04.15
--V3.1
--破解字节不受限制,适用于SQLSERVER2000存储过程,函数,视图,触发器
--修正上一版视图触发器不能正确解密错误
--发现有错,请E_MAIL:CSDNj9988@tom.com
begin tran
declare @objectname1 varchar(100),@orgvarbin varbinary(8000)
declare @sql1 nvarchar(4000),@sql2 varchar(8000),@sql3 nvarchar(4000),@sql4 nvarchar(4000)
DECLARE @OrigSpText1 nvarchar(4000), @OrigSpText2 nvarchar(4000) , @OrigSpText3 nvarchar(4000), @resultsp nvarchar(4000)
declare @i int,@status int,@type varchar(10),@parentid int
declare @colid int,@n int,@q int,@j int,@k int,@encrypted int,@number int
select @type=xtype,@parentid=parent_obj from sysobjects where id=object_id(@ObjectName)
create table #temp(number int,colid int,ctext varbinary(8000),encrypted int,status int)
insert #temp SELECT number,colid,ctext,encrypted,status FROM syscomments WHERE id = object_id(@objectName)
select @number=max(number) from #temp
set @k=0
while @k<=@number
begin
if exists(select 1 from syscomments where id=object_id(@objectname) and number=@k)
begin
if @type='P'
set @sql1=(case when @number>1 then 'ALTER PROCEDURE '+ @objectName +';'+rtrim(@k)+' WITH ENCRYPTION AS '
else 'ALTER PROCEDURE '+ @objectName+' WITH ENCRYPTION AS '
end)
if @type='TR'
begin
declare @parent_obj varchar(255),@tr_parent_xtype varchar(10)
select @parent_obj=parent_obj from sysobjects where id=object_id(@objectName)
select @tr_parent_xtype=xtype from sysobjects where id=@parent_obj
if @tr_parent_xtype='V'
begin
set @sql1='ALTER TRIGGER '+@objectname+' ON '+OBJECT_NAME(@parentid)+' WITH ENCRYPTION INSTERD OF INSERT AS PRINT 1 '
end
else
begin
set @sql1='ALTER TRIGGER '+@objectname+' ON '+OBJECT_NAME(@parentid)+' WITH ENCRYPTION FOR INSERT AS PRINT 1 '
end
end
if @type='FN' or @type='TF' or @type='IF'
set @sql1=(case @type when 'TF' then
'ALTER FUNCTION '+ @objectName+'(@a char(1)) returns @b table(a varchar(10)) with encryption as begin insert @b select @a return end '
when 'FN' then
'ALTER FUNCTION '+ @objectName+'(@a char(1)) returns char(1) with encryption as begin return @a end'
when 'IF' then
'ALTER FUNCTION '+ @objectName+'(@a char(1)) returns table with encryption as return select @a as a'
end)
if @type='V'
set @sql1='ALTER VIEW '+@objectname+' WITH ENCRYPTION AS SELECT 1 as f'
set @q=len(@sql1)
set @sql1=@sql1+REPLICATE('-',4000-@q)
select @sql2=REPLICATE('-',8000)
set @sql3='exec(@sql1'
select @colid=max(colid) from #temp where number=@k
set @n=1
while @n<=CEILING(1.0*(@colid-1)/2) and len(@sQL3)<=3996
begin
set @sql3=@sql3+'+@'
set @n=@n+1
end
set @sql3=@sql3+')'
exec sp_executesql @sql3,N'@sql1 nvarchar(4000),@ varchar(8000)',@sql1=@sql1,@=@sql2
end
set @k=@k+1
end
set @k=0
while @k<=@number
begin
if exists(select 1 from syscomments where id=object_id(@objectname) and number=@k)
begin
select @colid=max(colid) from #temp where number=@k
set @n=1
while @n<=@colid
begin
select @OrigSpText1=ctext,@encrypted=encrypted,@status=status FROM #temp WHERE colid=@n and number=@k
SET @OrigSpText3=(SELECT ctext FROM syscomments WHERE id=object_id(@objectName) and colid=@n and number=@k)
if @n=1
begin
if @type='P'
SET @OrigSpText2=(case when @number>1 then 'CREATE PROCEDURE '+ @objectName +';'+rtrim(@k)+' WITH ENCRYPTION AS '
else 'CREATE PROCEDURE '+ @objectName +' WITH ENCRYPTION AS '
end)
if @type='FN' or @type='TF' or @type='IF'
SET @OrigSpText2=(case @type when 'TF' then
'CREATE FUNCTION '+ @objectName+'(@a char(1)) returns @b table(a varchar(10)) with encryption as begin insert @b select @a return end '
when 'FN' then
'CREATE FUNCTION '+ @objectName+'(@a char(1)) returns char(1) with encryption as begin return @a end'
when 'IF' then
'CREATE FUNCTION '+ @objectName+'(@a char(1)) returns table with encryption as return select @a as a'
end)
if @type='TR'
begin
if @tr_parent_xtype='V'
begin
set @OrigSpText2='CREATE TRIGGER '+@objectname+' ON '+OBJECT_NAME(@parentid)+' WITH ENCRYPTION INSTEAD OF INSERT AS PRINT 1 '
end
else
begin
set @OrigSpText2='CREATE TRIGGER '+@objectname+' ON '+OBJECT_NAME(@parentid)+' WITH ENCRYPTION FOR INSERT AS PRINT 1 '
end
end
if @type='V'
set @OrigSpText2='CREATE VIEW '+@objectname+' WITH ENCRYPTION AS SELECT 1 as f'
set @q=4000-len(@OrigSpText2)
set @OrigSpText2=@OrigSpText2+REPLICATE('-',@q)
end
else
begin
SET @OrigSpText2=REPLICATE('-', 4000)
end
SET @i=1
SET @resultsp = replicate(N'A', (datalength(@OrigSpText1) / 2))
WHILE @i<=datalength(@OrigSpText1)/2
BEGIN
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
set @orgvarbin=cast(@OrigSpText1 as varbinary(8000))
set @resultsp=(case when @encrypted=1
then @resultsp
else convert(nvarchar(4000),case when @status&2=2 then uncompress(@orgvarbin) else @orgvarbin end)
end)
print @resultsp
set @n=@n+1
end
end
set @k=@k+1
end
drop table #temp
rollback tran
end
|
相关推荐
笔者找到的功能最强大、操作最简单、使用最可靠的数据库解密工具,用于解密的SQL Server2000、2005等版本的存储过程、函数、触发器和视图。 执行连接到数据库后,左边直接列出数据库清单以及每个数据库内的存储过程...
解密SQL SERVER 2005加密存储过程,视图、函数.sql
破解字节不受限制,适用于SQLSERVER2000存储过程,函数,视图,触发器
2024SQLServer解密存储过程、函数、视图、触发器,mssql解密,WITH ENCRYPTION解密,亲测可用,支持2000、2005、2008、2012、2019...
此存储过程可以破解sql 2000、2005、2008加密的函数、存储过程、视图、触发器,本人平时工作中经常使用,非常方便!
SQL SERVER存储过程解密工具,sqldecryptor可以将被加密的存储过程和函数等直接解密
破解加密过的存储过程 前提是要知道 加密的存储过程是用哪个版本的SQL 本人以SQL2005的版本为例
笔者找到的功能最强大、操作最简单、使用最可靠的数据库解密工具,用于解密的SQL Server2000、2005等版本的存储过程、函数、触发器和视图。 执行连接到数据库后,左边直接列出数据库清单以及每个数据库内的存储过程...
笔者找到的功能最强大、操作最简单、使用最可靠的数据库解密工具,用于解密的SQL Server2000、2005等版本的存储过程、函数、触发器和视图。 执行连接到数据库后,左边直接列出数据库清单以及每个数据库内的存储过程...
用delphi编写,能查看SQL SERVER中加密的存储过程或函数。
5.4.5 加密和解密Web.Config文件的配置节 5.4.6 ASP.NET网站管理工具 5.4.7 ASP.NET MMC管理单元 5.5 本章小结 第6章 数据源控件 6.1 SqlDataSource数据源控件 6.2 AccessDataSource数据源控件 6.3 ...
实现加密解密功能,独立的DLL文件,可注册为SQLServer扩展存储过程,在SQL脚本中调用加解密功能;也可注册为COM库;还可在开发语言中以声明外部函数方式直接调用DLL文件中的加解密功能。提供了Delphi的调用接口单元...
MS SQLSERVER数据库开发提供:一、查看指定数据库对象 二、加密的存储过程、函数、触发器及视图都可以解密 三、自助提供表的查询、增、删、改的SQL语句 四、针对现有表记录生成初始数据脚本 五、针对表生成管理此表...
以下代码已经在SQLServer2008上的示例数据库测试通过问题一:如何为数据进行加密与解密,避免使用者窃取机密数据? 对于一些敏感数据,如密码、卡号,一般不能使用正常数值来存储。否则会有安全隐患。以往的加密解密...
MS SQLSERVER数据库开发提供:一、查看指定数据库对象 二、加密的存储过程、函数、触发器及视图都可以解密 三、自助提供表的查询、增、删、改的SQL语句 四、针对现有表记录生成初始数据脚本 五、针对表生成管理此表...
以下代码已经在SQLServer2008上的示例数据库测试通过 问题一:如何为数据进行加密与解密,避免使用者窃取机密数据? 对于一些敏感数据,如密码、卡号,一般不能使用正常数值来存储。否则会有安全隐患。以往...
实例225 使用ROT13加密解密文件 314 6.7 其他 315 实例226 获取窗口文本 315 实例227 判断文件是否正在被使用 316 实例228 在程序中调用.HLP文件 317 实例229 C#中实现文件拖放 317 实例230 文件比较 318 ...