当前位置: 首页 > 编程日记 > 正文

存儲過程解密SQL


存儲過程解密SQL
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

转载于:https://www.cnblogs.com/xiaoniu/archive/2006/08/07/469739.html

相关文章:

软件缺陷生命周期图示及当中涉及到的缺陷的状态

缺陷状态&#xff1a; 激活/打开 已修正 已关闭/非激活 重新打开(对应图示验证通过否N) 推迟(对应图示的延期) 保留(对应图示无法解决) 不能重现 需要更多信息

Adding a QR Code Reader in Flex on Android

<?xml version"1.0" encoding"utf-8"?> <s:View xmlns:fx"http://ns.adobe.com/mxml/2009" xmlns:mx"library://ns.adobe.com/flex/mx"xmlns:s"library://ns.adobe.com/flex/spark" title"HomeView"&g…

41-高级路由:BGP AS长度:接收一切、最大AS长度、不比较AS长度

一、实验拓扑&#xff1a;二、实验要求&#xff1a;1、R4配置同上个实验&#xff1b;2、R3配置接收的路由包含最大AS长度为4&#xff1b;3、R3配置隐藏命令&#xff0c;不比较AS长度&#xff1b;4、R5配置不管收到的路由有没有包含本地AS都收入&#xff08;之前R4已经配置了4.4…

利用动态加载模板,配合ajax实现无刷新操作

关键字&#xff1a;DataGrid 动态模板 Ajax我们使用ajax实现无刷新界面时&#xff0c;对于DataGrid&#xff0c;Repeater等列表还是比较麻烦的&#xff0c;经过我的尝试&#xff0c;找出一种比较合理的方法&#xff0c;可以免除对html的加工处理&#xff0c;随时获取到数据列表…

如何利用业余时间提升自己

1、要找到心动的目标 先要找到自己如果提升哪一方面的能力&#xff0c;能够对自己的工作有较大的贡献 找到你想成为的人 你从他身上找到你想拥有的技能 你喜欢某个人的身上的某种行为表现 也是你的榜样 或者从你的爱好着手发现你在爱好中能够得到提升的点 我想发展的工作技能是…

Eclipse插件的安装方法

转自&#xff1a;http://blog.csdn.net/zhangyabinsky/article/details/7043435 Eclipse插件的安装有两种方法 &#xff1a;一个是在线安装&#xff0c;另一个就是手动安装。 在线安装比较简单&#xff1a;点击Help>>Install New Software..如图&#xff1a; 这样会跳出一…

(转)uml 静态视图依赖

依赖 依赖表示两个或多个模型元素之间语义上的关系。它只将模型元素本身连接起来而不需要用一组实例来表达它的意思。它表示了这样一种情形&#xff0c;提供者的某些变化会要求或指示依赖关系中客户的变化。 根据这个定义&#xff0c;关联和泛化都是依赖关系&#xff0c;但是它…

白盒测试各种“覆盖”间的拓扑关系及白盒用例常用要求

SC为语句覆盖 DC为分支覆盖/判定覆盖 CC为条件覆盖 CDC为判定-条件覆盖 MCC为条件组合覆盖 MC/DC修正条件/判定覆盖 BPC为基本路径覆盖

[转]实战 SQL Server 2008 数据库误删除数据的恢复

实战 SQL Server 2008 数据库误删除数据的恢复 关键字&#xff1a;SQL Server 2008, recover deleted records 今天有个朋友很着急地打电话给我&#xff0c;他用delete语句误删除了SQL Server 2008数据库中两个表中的所有记录&#xff0c;而这个数据库之前没有任何备份。让我帮…

水面加上了Perlin Noise

通过用躁点扰动法线图&#xff0c;水面显得更有质感Real time Shadow 转载于:https://www.cnblogs.com/badkeeper/articles/495443.html

事件冒泡和阻止事件冒泡

事件冒泡 当事件发生后&#xff0c;这个事件就要开始传播(从里到外或者从外向里)。为什么要传播呢&#xff1f;因为事件源本身&#xff08;可能&#xff09;并没有处理事件的能力&#xff0c;即处理事件的函数&#xff08;方法&#xff09;并未绑定在该事件源上。例如我们点击一…

不使用powerdesigner手工绘制用例图例题详解

文章目录1.题目2.分析过程3.结果4.需要注意的细节5.本题易错的地方1.题目 根据以下场景绘制用例图。 某公司预开发一个反馈系统作为其CRM&#xff08;客户关系管理&#xff09;的一部分。系统基本功能描述如下&#xff1a; &#xff08;1&#xff09;客户可通过B/S系统在该公司…

zoj 1204 Additive equations

ACCEPT acm作业http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId204因为老师是在集合那里要我们做这道题。所以我很是天真的就以为要用集合做&#xff0c;结果发现网上都是用数组简单明了地实现了&#xff0c;显得我的代码&#xff0c;特么地超级恶心&#xff01;…

c#中的静态类

如果一个类中的所有方法都是类方法&#xff0c;那么就用static来定义这些方法&#xff0c;如果这个类又要增加一些属性&#xff0c;以供这些方法使用&#xff0c;那么就要使用static来定义这些属性&#xff0c;如果又要给这些属性初始化&#xff0c;就要使用静态构造函数&#…

golang flag简单用法

版权声明&#xff1a;本文可能为博主原创文章&#xff0c;若标明出处可随便转载。 https://blog.csdn.net/Jailman/article/details/80972643 package mainimport ("flag""strings""os""fmt" )var ARGS stringfunc main() {var uptime…

四种JOIN简单实例

前提 现在有班级表class和学生表stud 各有两条数据 共同的属性是classId class表 stud表 可以看到&#xff1a;班级表无1班&#xff0c;学生表3班无学生 1.INNER JOIN 在表中存在至少一个匹配时返回行。和JOIN相同 或者 2.LEFT JOIN 从左表&#xff08;table1&#xff09…

Linux运维人员-服务器组成硬件基础

第1章 1.1关于运维人员 1.1.1 运维的职责 数据不能丢 网站7*24小时运行 保证用户体验&#xff08;用户体验要好&#xff09; 1.1.2 运维原则 简单、易用、高效 简单、粗暴 1.2 服务器 1.2.1服务器尺寸 服务器厚度&#xff08;厚度&#xff09; 服务器尺寸单位为U 1U4.45cm 1…

K - 近邻算法

K - 近邻算法&#xff08;KNN&#xff09;&#xff0c;他的工作原理&#xff1a;存在一个样本数据集合&#xff0c;也称为训练样本集&#xff0c;并且样本集合中每个数据都存在标签&#xff0c;即我们知道样本集合中每一个数据与所属分类的对于关系。输入没有标签的新数据后&am…

必须掌握的八个DOS命令 [转]

一&#xff0c;ping    它是用来检查网络是否通畅或者网络连接速度的命令。作为一个生活在网络上的管理员或者黑客来说&#xff0c;ping命令是第一个必须掌握的DOS命令&#xff0c;它所利用的原理是这样的&#xff1a;网络上的机器都有唯一确定的IP地址&#xff0c;我们给目标…

SQL,NoSQL优缺点总结

SQL优点&#xff1a; 保持数据一致性&#xff08;最大优势&#xff09; 由于以标准化为前提&#xff0c;数据更新的开销很小 可以进行 Join 等复杂查询 SQL不足&#xff1a; 大量数据的写入处理 为有数据更新的表做索引或表结构&#xff08;schema&#xff09;变更 字段不固定…

iOS常用动画 类封装

//这是一个很好的动画封装类 很容易明白很详细 和大家分享 // CoreAnimationEffect.h // CoreAnimationEffect // // Created by VincentXue on 13-1-19. // Copyright (c) 2013年 VincentXue. All rights reserved. //#import /**! 导入QuartzCore.framework** Exampl…

规范化制度保障安擎高品质产品

企业的制度规范是公司管理的依据和准则。一套科学完整的管理制度&#xff0c;有利于维护工作秩序&#xff0c;提高工作效率&#xff0c;也可以保证企业的正常运转和职工的合法利益不受侵害。据内部核算&#xff0c;安擎计算机有限公司在2017年十二次月度产品测试中&#xff0c;…

带进度条的ASP无组件断点续传下载代码

<%LANGUAGE"VBSCRIPT" CODEPAGE"936"%><%Option Explicit%><% 带进度条的ASP无组件断点续传下载简介&#xff1a; 1)利用xmlhttp方式 2)无组件 3)异步方式获取&#xff0c;节省服务器资源 4)服务器到服务器的文件传送。(当然&am…

塔式、机架式、刀片式服务器比较

塔式机架式刀片式优点单个成本低&#xff1b;扩展能力和散热能力好&#xff1b;可以配置多路处理器、多根内存、多块硬盘、多个冗余电源和散热风扇相对于塔式大大节省了空间占用&#xff0c;使布线、管理更为简洁&#xff1b;节省了机房托管费用&#xff1b;平衡了性能与空间扩…

Flume-0.9.4数据插入HBase-0.96

来自&#xff1a;http://blog.csdn.net/iam333/article/details/18770977 最近由于业务需要&#xff0c;需要将flume的数据插入HBase-0.96,利用flume的实时日志收集&#xff0c;实现数据的实时存储。正如前文所 述&#xff0c;flume-ng即flume-1.4.0版本和hbase-0.96结合相对比…

卡壳了~~~ 解决了~~~My Site创建成功了.....

没想到解决这个问题如此简单就是把SharePoint Products and Technologies Configuration Wizard运行一遍&#xff0c;一切都修复了&#xff0c;哈哈~~~快下班了&#xff0c;也没过多测试&#xff0c;似乎没有损失什么数据。 转载于:https://www.cnblogs.com/booolee/archive/20…

Linux 配置开机自启 和 修改环境变量

【 操作系统 Centos7 】 一&#xff0c;开机自动启动的配置 1&#xff0c;赋予 /etc/rc.local 的执行权限 > chmod x /etc/rc.local 2&#xff0c;在 /etc/rc.local 在文件末尾编写要执行的脚本 3&#xff0c;注意写在这个文件中的脚本不要使用相对路径 二&#xff0c;环境变…

无线传感器网络WSN技术、协议、距离汇总

技术协议距离WMANIEEE802.16五公里内WLANIEEE802.11几公里内WPAN蓝牙IEEE802.15.4 紫蜂IEEE802.15.110m内

IISApp -a查找对应的AppPool

cmd下运行IISApp -a可以查找出来每个w3wp.exe对应的应用程序池 [name:IISApp To AppPool][tags:IIS] [From AlphaWu.Blog]转载于:https://www.cnblogs.com/AlphaWu/archive/2006/11/27/574390.html