Omri Bahat beschreibt im Artikel "Decrypt SQL Server Objects" (im "SQL Server Magazine", Ausgabe August 2007) wie man mit vergleichsweise wenig Aufwand den Quellcode den ENCRYPT angelegten Quellcode von Prozeduren/Funktionen/Views sichtbar machen kann. Er verwendet dazu zwei Tricks: erstens eine "Dedicated Admin Connection" (DAC, einfach beim Connect vor den Servernamen "ADMIN:" schreiben) und zweitens benutzt er ALTER, um das Objekt zu verändern, um den XOR-Schlüssel herauszubekommen (natürlich in einer Transaktion, um das Original nicht zu zerstören.

Den Artikel kann man nur als angemeldeter Leser des Magazins sehen, aber die Quelltexte der Beispiele sind freundlicherweise frei zugänglich.

Damit kann man den verschlüsselten Quelltext aus der Spalte "imageval" der Tabelle "sys.sysobjvalues" (am 2005er, siehe Datei WebListing_01.txt) lesen und dann mittels ALTER-Statement den Hex-Wert (für das XOR) ermitteln (siehe Datei Listing_03.txt). Mit den ermittelten Infos kann man den Quellcode dann entschlüsseln (siehe Listing_04.txt). Das geht auch am SQL-Server-2000, nur stehen die Infos da woanders, aber das steht auch alles in seinen Beispieldateien.

Insgesamt ist der Artikel mal erfrischend anders als die sonst eher belehrenden Artikel des Magazins. Ich weiß noch nicht, ob ich das mal benötigen werde, aber immer hin ist es gut zu wissen, dass man die Encryption des Quelltextes so leicht "knacken" kann. Langfristig wollen wir den Quelltext unserer Objekte nämlich encrypted anlegen…

Disclaimer: Hier ging es jetzt um die Datenverschlüsselung. Die ist nach wie vor richtig schön sicher…