文章出處

批量解密SQLSERVER數據庫中的各種對象的工具dbForge SQL Decryptor2.1.11

之前寫過一篇文章,使用redgate公司的SQL PROMPT工具,但是不太方便

SQLPROMPT5.3對各種加密對象的解密測試

SQL2005解密已經被加密的存儲過程

昨天ahdung 童鞋介紹了這個工具給我,非常感謝他

dbForge SQL Decryptor這個工具的軟件公司是devart,也是跟redgate公司一樣,制作各種數據庫輔助工具和編程工具的一家比較出名的軟件公司

官網:http://www.devart.com/

軟件下載地址:

http://www.devart.com/dbforge/sql/sqldecryptor/download.html

http://files.cnblogs.com/lyhabc/sqldecryptor.rar

這個工具是免費的,不用破解,安裝完畢,立刻可以用

在SQLSERVER數據庫工具當中還提供了另外一個免費工具:dbForge SQL Azure Backup

http://www.devart.com/dbforge/sql/


介紹

先說題外話:大家可以把這些第三方的工具放到外部工具里,這樣只要打開SSMS,就不用在桌面找這些工具的圖標再打開

相應工具了,速度可以快一倍,我就是這樣做的,打開了SSMS就不用到桌面找這個軟件,找那個軟件

界面使用WPF編寫,還是挺好的

登錄界面做得挺有意思,可以使用傳統的連接方式,也可以使用DAC連接或者自己寫連接字符串

 

我們按照這篇文章創建好各種加密對象:SQLPROMPT5.3對各種加密對象的解密測試

包括視圖,存儲過程,函數,觸發器

功能比較簡單,界面跟SSMS差不多

就三個功能

選中你的數據庫,然后右鍵-》Decryption Wizard..

他會列出你所選擇要顯示的解密對象類型,分別有:存儲過程、用戶定義函數、視圖、表觸發器、數據庫觸發器

你可以將解密的各種對象的腳本保存到同一個腳本中或者每個對象一個腳本,我這里選擇都保存在同一個腳本中

點擊Execute之后,在桌面就會生成一個腳本.sql文件

把腳本拖到SSMS

 1 USE pratice
 2 GO
 3 
 4 SET ANSI_NULLS, QUOTED_IDENTIFIER ON
 5 GO
 6 /***************創建加密的存儲過程*******************/
 7 Create Procedure CPP_test_Encryption 
 8 with encryption
 9 AS
10 ----可以換成任意的邏輯
11 execute CPP_test_Original
12 GO
13 
14 SET ANSI_NULLS, QUOTED_IDENTIFIER ON
15 GO
16 CREATE FUNCTION [dbo].f_get_page(@page_num BINARY(6))
17 RETURNS VARCHAR(11)
18 WITH ENCRYPTION
19 AS
20 BEGIN
21 RETURN(CONVERT(VARCHAR(2),(CONVERT(INT,SUBSTRING(@page_num,6,1))*POWER(2,8))+
22         (CONVERT(INT,SUBSTRING(@page_num,5,1))))+':'+
23         CONVERT(VARCHAR(11),
24         (CONVERT(INT,SUBSTRING(@page_num,4,1))*POWER(2,24))+
25         (CONVERT(INT,SUBSTRING(@page_num,3,1))*POWER(2,16))+
26         (CONVERT(INT,SUBSTRING(@page_num,2,1))*POWER(2,8))+
27         (CONVERT(INT,SUBSTRING(@page_num,1,1)))))
28 END
29 GO
30 
31 SET ANSI_NULLS, QUOTED_IDENTIFIER ON
32 GO
33 CREATE VIEW aa
34 WITH ENCRYPTION
35 AS
36 SELECT * FROM [dbo].[Users]
37 GO
38 
39 SET ANSI_NULLS, QUOTED_IDENTIFIER ON
40 GO
41 CREATE TRIGGER cc
42 ON [dbo].[Users]
43 WITH ENCRYPTION
44 FOR INSERT
45 AS RAISERROR(500001,16,10)
46 GO
47 
48 SET ANSI_NULLS, QUOTED_IDENTIFIER ON
49 GO
50 Create Procedure creat_test_Encryption 
51 with encryption
52 AS
53 SELECT TOP 100 * FROM [dbo].[test13]
54 
55 GO

而Decrypt in-place(alter objects)就是把各種對象中的with encryption去掉,不知道f_get_page這個函數會失敗

執行Decrypt in-place(alter objects)前

1 SET ANSI_NULLS, QUOTED_IDENTIFIER ON
2 GO
3 ALTER Procedure creat_test_Encryption 
4 with encryption
5 AS
6 SELECT TOP 100 * FROM [dbo].[test13]
7 GO

執行執行Decrypt in-place(alter objects)后

1 SET ANSI_NULLS, QUOTED_IDENTIFIER ON
2 GO
3 ALTER Procedure creat_test_Encryption 
4 AS
5 SELECT TOP 100 * FROM [dbo].[test13]
6 GO

你會看到執行Decrypt in-place(alter objects)后,相當于去掉了with encryption

除了那個用戶定義函數之后其他的解密出來了,其實你可以drop掉那個函數,然后用解密出來的腳本重新創建函數就可以了

視圖,觸發器都沒有鎖小圖標了


其他功能

Show  DDL script就是把對象的創建腳本顯示出來,而Decrypt in-place我就不說了

注意,下面的界面是在dbForge SQL Decryptor工具中的界面,不是在SSMS中的界面,雖然這個工具的界面跟SQL2012 的SSMS界面很像

 


總結

DBA有了這個工具之后,就不怕開發人員隨意加密他們自己寫的函數、存儲過程、觸發器了

也能減輕DBA的負擔

如有不對的地方,歡迎大家拍磚o(∩_∩)o


文章列表


不含病毒。www.avast.com
arrow
arrow
    全站熱搜
    創作者介紹
    創作者 大師兄 的頭像
    大師兄

    IT工程師數位筆記本

    大師兄 發表在 痞客邦 留言(0) 人氣()