dbForge SQL Decryptor - áttekintés

Néha belefutok érdekesebbnél is érdekesebb munkákba, az egyik ilyen során egy furcsa ellentétet kellett feloldanom. A szituáció a következő: van egy szoftver beszállító, aki írt egy programot, majd éles üzembe került. Ez a program SQL Server-t használ. Teljesítményproblémák merültek fel, így a helyi erők belenéztek az SQL-be és pár furcsa dolgot is találtak. Ezt jelezték a beszállítónak, aki erre a következő patch során titkosította a nézeteket, eljárásokat és a függvényeket is. Ezek után a helyi fejlesztőknek nem volt lehetőségük belenézni a kódba.

Ismerős? Nem csodálkozom :) Ennek a fura helyzetnek több megoldás lehet, de semmiképpen sem a titkosítása az adatbázis objektumainak, inkább a párbeszéd. Amennyiben mégis vissza kellene fejteni adatbázis objektumokat, akkor a Devart-nak van egy programja a dbForge SqlDecryptor. Ez az eszköz egy ideje már fent van a hasznos programok listáján nálam. 

Lássuk mire is jó ez az eszköz: jelenlegi release SQL Server 2000,2005,2008,2012 verziókkal működik (Azure nem!). Kinézetre is hasonlít az SSMS-hez vagy épp a Visual Studio-hoz, így nem nagyon kell keresni a  funkciókat. 

Visszafejtés példa

Az alábbi példa során bemutatnám, hogy milyen lehetőségeket kínál a termék a titkosított objektumok visszafejtésére. Hozzunk létre egy adatbázist első körben:
USE master;
GO
IF EXISTS (SELECT 1 FROM sys.databases WHERE name = 'EncryptedObjects')
	DROP DATABASE EncryptedObjects;
GO
CREATE DATABASE EncryptedObjects;
GO

Majd létrehozok pár titkosított objektumot is:

USE EncryptedObjects;
GO
CREATE PROCEDURE uspEncryptedSproc
WITH ENCRYPTION
AS
SELECT name FROM sys.databases WHERE database_id < 5;
GO

CREATE VIEW vEncryptedView
WITH ENCRYPTION
AS
SELECT name FROM sys.databases WHERE database_id < 5;
GO

CREATE FUNCTION fnEncrypetdFunction(@db_id INT)
RETURNS int
WITH ENCRYPTION 
AS
BEGIN
	DECLARE @is_auto_shrink_on int;
	SELECT @is_auto_shrink_on = is_auto_shrink_on FROM sys.databases WHERE database_id = @db_id;
	RETURN (@is_auto_shrink_on);
END
GO

Ezeket titkosítottam, így se az SSMS-ből, se az OBJECT_DEFINITON függvény segítségével sem lehet visszafejteni a kódot. Itt jön képbe a fentebb említett eszköz. 

A visszafejtés menete:

  • Indítsuk el a dbForge SQL Decrypt alkalmazást
  • Csatlakozzunk az SQL példányhoz, ahol a titkosított objektumokat tartalmazó adatbázis van.

  • Keressük meg az  EncryptedObjects adatbázist.

  • Jelöljük ki a titkosított objektumot, majd az Object Explorer menüben nyomjuk meg az SQL gombot. ennek hatására a jobb oldalon megjelenik a sql kód.


Lehetőség van a titkosított objektum adatbázisban, már nem titkosított formában történő felülírására is. ebben az esetben az Object Explorerben a "kinyitott lakatot" ábrázoló gombot kell megnyomni.

Amennyiben több titkosított objektum van, ezeket akár egyszerre is vissza lehet fejteni, a "varázspálca" ikonos gombra kattintva. 

Összegzés

Alapvetően egy könnyen használható, hasznos eszköz, nem mellékesen ingyenes! Sajnos az SQL Server 2014-es verziót még nem támogatja és nem integrálható az SSMS-be, ettől függetlenül határozottan ajánlott felvenni az eszköztárunkba.

Add comment