2011-10-06 49 views
17

WITH ENCRYPTIONオプションを使用して暗号化されたストアドプロシージャがあります。今私はその手順を解読したいと思う。私はすでにこのフォーラムでSQL 2000のために与えられた "Decryptsp2K"というストアドプロシージャを試しました:http://forums.asp.net/t/1516587.aspx/1SQL Server 2008でストアドプロシージャを復号化する方法

しかし、それは私のストアドプロシージャを解読するのではなく削除します。

SQL Server 2008でストアドプロシージャを復号化する方法はありますか?

答えて

21

SQL Serverのプロ記事"Decrypt SQL Server Objects"はまだあなたがDACを経由して接続する必要があるSQL Serverで2008

に動作します。 the downloadの "SQL 2005のストアドプロシージャ、関数、トリガ、views.sqlの解読"ファイルを参照してください。

ちょうど次のストアド・プロシージャの定義

CREATE PROC dbo.myproc 
WITH ENCRYPTION 
AS 
SELECT 'FOO' 
  1. sys.sysobjvaluesimageval列から暗号化対象テキストを取得し、変数@ContentOfEncryptedObject
  2. 計算し@ObjectDataLengthに格納するためにそれが実行する手順を要約しますDATALENGTH(@ContentOfEncryptedObject)/2から。
  3. は、
  4. ALTERステートメントを実行する(したがって、この場合にALTER PROCEDURE [dbo].[myproc] WITH ENCRYPTION AS-------------文字で正しい長さにパディングALTER PROCEDURE文を生成し、変数@ContentOfFakeEncryptedObjectにその変更をロールバックsys.sysobjvaluesとストアから暗号化されたバージョンを取得します。
  5. -文字(この場合はCREATE PROCEDURE [dbo].[myproc] WITH ENCRYPTION AS-----------)で正しい長さに埋め込まれたCREATE PROCEDUREステートメントを生成します。これは、それが、その後@i = 1 to @ObjectDataLength用をループし、次XOR計算を使用して、一度に定義文字を解読し、変数@ContentOfFakeObject

に保存されます。

NCHAR(
     UNICODE(SUBSTRING(@ContentOfEncryptedObject, @i, 1))^
     (
      UNICODE(SUBSTRING(@ContentOfFakeObject, @i, 1))^
      UNICODE(SUBSTRING(@ContentOfFakeEncryptedObject, @i, 1)) 
    ) 
    ) 

ポール・ホワイトが なぜ上記作品の詳細に入る非常に素晴らしい記事を書いていて、それは が変更に頼らない代替方法を提供しますUPDATE対象:The Internals of WITH ENCRYPTION

+0

私のSPを解読するために実行する必要のあるスクリプトを教えてください。それは "SQL 2005のストアドプロシージャ、関数、トリガ、views.sql"の復号化からですか? –

+0

ありがとう、私はDACを使用してそのスクリプトを実行していたと私のためにうまく動作しています。 –

+2

ニース。私はこれを深く見ていなかった。 – gbn

3

SQL Server 2005以降では、多くの古いツールの使用が中止されました。使用する必要があります。Dedicated Admin Connection

クイック検索ではいくつかのオプションが表示されます。

+0

私はそれがすべての有料版だと思う、無料ではありません。私はhttp://www.elitude.net/リンクからdecryptorをチェックしました。 –

+0

@Upendra Chaudhari:おそらく、そこのアプリに支払っているだけです。それはすべてSQL Server 2005で変更されました – gbn

+0

ご協力いただきありがとうございます。 –

1

復号化のSQL Serverのストアドプロシージャ

暗号化されたストアドプロシージャの復号化にサードパーティのツールを使用できます。ツール -

ダウンロード:あなたが手順やその他の暗号化されたオブジェクトを復号化する場合それはフリーウェアです

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

5

ApexSQL Decryptをチェックしてください。

無料のスタンドアロンツールで、SSMSに統合し、元のDDLスクリプトをプレビューし、変更スクリプトを作成または作成することができます。

スタンドアロンツールから複数のサーバーに接続し、複数のオブジェクトを一度に復号化することができます。

dbForge SQL Decryptorは、この場合でもあなたを助けることができる他のツールです。

関連する問題