Nemrég volt egy elemet az én adatbázis titkosított. Vannak különböző eszközök az interneten eladásra dekódolni az egészet, de ÉN alapít egy szabad kézírás amit csinál a munka. Ez a szkript képes tárolt eljárások, függvények, triggerek és a nézetek hírbe. Az alábbiakban a szkript!
/*================================================ ================================== Kapcsolatot DAC módban van szükség! Kapcsolatba a helyi szerver először, majd adjuk hozzá a kapcsolatot a lekérdezés ablak változás kitölteni kiszolgáló neve: ADMIN: KISZOLGÁLÓNÉV \ BÍRÓSÁG EG: ADMIN: localhost (ha csak az egyik esetben) Töltse ki a @ ObjectName objektum kívánt hírbe Töltse ki a @ ObjectOwnerOrSchema ütemezés, általában dbo * /VULHIERDATABASEIN USE VULHIERDATABASEIN GO
( 128 ) DECLARE @ ObjectOwnerOrSchema nvarchar (128) @ObjectName NVARCHAR ( 128 ) DECLARE @ ObjectName nvarchar (128)
SET @ ObjectOwnerOrSchema = 'dbo " @ObjectName = 'VULHIERSTOREDPROCEDURE IN' SET @ ObjectName = 'VULHIERSTOREDPROCEDURE IN "
DECLARE @ i INT @ObjectDataLength INT DECLARE @ hossza INT pont adatai @ContentOfEncryptedObject NVARCHAR ( MAX ) DECLARE @ ContentOfEncryptedObject nvarchar (MAX) @ContentOfDecryptedObject NVARCHAR ( MAX ) DECLARE @ ContentOfDecryptedObject nvarchar (MAX) @ContentOfFakeObject NVARCHAR ( MAX ) DECLARE @ ContentOfFakeObject nvarchar (MAX) @ContentOfFakeEncryptedObject NVARCHAR ( MAX ) DECLARE @ ContentOfFakeEncryptedObject nvarchar (MAX) @ObjectType NVARCHAR ( 128 ) DECLARE @ Objektum típusa nvarchar (128) @ObjectID INT DECLARE @ objektumazonosító INT
ON SET NOCOUNT ON
( '[' + @ObjectOwnerOrSchema + '].[' + @ObjectName + ']' ) SET @ objektumazonosító = OBJECT_ID ('[' + @ + ObjectOwnerOrSchema'].[' + @ ObjectName + "]")
- Ellenőrizze, hogy Feltéve, hogy az objektum nem létezik az adatbázisban. @ObjectID IS NULL HA @ objektumazonosító IS NULL BEGIN ( 'The object name or schema provided does not exist in the database' , 16 , 1 ) RAISERROR ("Az adott tárgy vagy séma Feltéve Nem létezik az adatbázisban", 16, 1) RETURN END
- Ellenőrizze, hogy Feltéve, hogy az objektum nem titkosított. NOT EXISTS ( SELECT TOP 1 * FROM syscomments WHERE id = @ObjectID AND encrypted = 1 ) HA NEM létezik (SELECT * FROM TOP 1 WHERE id = @ objektumazonosító syscomments és titkosított = 1) BEGIN ( 'The object provided exists however it is not encrypted. Aborting.' , 16 , 1 ) RAISERROR ("Az objektum Ez azonban nem titkosított létezik. Megszakítása.", 16, 1) RETURN END
- Határozza meg az objektum típusát OBJECT_ID ( '[' + @ObjectOwnerOrSchema + '].[' + @ObjectName + ']' , 'PROCEDURE' ) IS NOT NULL HA OBJECT_ID ('[' + @ + ObjectOwnerOrSchema'].[' + @ ObjectName + "]", "eljárás"), IS NOT NULL @ObjectType = 'PROCEDURE' SET @ objektum type = "eljárás" ELSE OBJECT_ID ( '[' + @ObjectOwnerOrSchema + '].[' + @ObjectName + ']' , 'TRIGGER' ) IS NOT NULL HA OBJECT_ID ('[' + @ + ObjectOwnerOrSchema'].[' + @ ObjectName + ']', 'TRIGGER) IS NOT NULL @ObjectType = 'TRIGGER' SET @ objektum type = "TRIGGER" ELSE OBJECT_ID ( '[' + @ObjectOwnerOrSchema + '].[' + @ObjectName + ']' , 'VIEW' ) IS NOT NULL HA OBJECT_ID ('[' + @ + ObjectOwnerOrSchema'].[' + @ ObjectName + "]", "VIEW") nem NULL @ObjectType = 'VIEW' SET @ objektum type = "Nézet" ELSE @ObjectType = 'FUNCTION' SET @ objektum type = "FUNCTION"
- Kap a bináris ábrázolása az objektum már nem syscomments árkategóriában - A titkosított tartalom vagy tárgy. 1 @ContentOfEncryptedObject = imageval SELECT TOP 1 @ = ContentOfEncryptedObject imageval sys. sysobjvalues AZ sys. Sysobjvalues objid = OBJECT_ID ( '[' + @ObjectOwnerOrSchema + '].[' + @ObjectName + ']' ) WHERE Objid = OBJECT_ID ('[' + @ + ObjectOwnerOrSchema'].[' + @ ObjectName + "]") and subobjid = 1 ÉS valclass = 1 = 1 és subobjid
@ContentOfEncryptedObject ) / 2 SET @ pont Data Length = DATA HOSSZA (@ ContentOfEncryptedObject) / 2
- Meg kell változtatni a meglévő objektumot, és azt írja a dummy objektum - Annak érdekében, hogy hírbe annak tartalmát. Ez történik a tranzakció - (Amit később visszaáll) biztosítja a minimális tulajdontól amit minden változást - Gyakorolt hatás az adatbázisban. @ContentOfFakeObject = N 'ALTER ' + @ObjectType + N ' [' + @ObjectOwnerOrSchema + N '].[' + SET @ ContentOfFakeObject = N 'ALTER' + @ típusú objektum + N "['+ @ + N ObjectOwnerOrSchema'].[' + @ ObjectName + N "] AS Encryption"
@ContentOfFakeObject ) / 2 < @ObjectDataLength DATA HOSSZA while (@ ContentOfFakeObject) / 2 <@ Property Data Length BEGIN DATALENGTH ( @ContentOfFakeObject ) / 2 + 4000 < @ObjectDataLength DATA hosszát, ha (@ ContentOfFakeObject) / 2 + 4.000 <@ Property Data Length @ContentOfFakeObject = @ContentOfFakeObject + REPLICATE ( N '-' , 4000 ) SET @ @ = ContentOfFakeObject ContentOfFakeObject + Párhuzamos (N '-', 4000) ELSE @ContentOfFakeObject = @ContentOfFakeObject + REPLICATE ( N '-' , SET @ @ = ContentOfFakeObject ContentOfFakeObject + Párhuzamos (N '-', DATALENGTH ( @ContentOfFakeObject ) / 2 ) ) @ Hossza Data tétel - (DATA HOSSZA (@ ContentOfFakeObject) / 2)) END
- Mivel mi kell változtatni az objektum, hogy hírbe, ez történik - Az ügylet XACT_ABORT OFF SET OFF XACT_ABORT TRAN BEGIN TRAN
@ContentOfFakeObject ) EXEC (@ ContentOfFakeObject)
<> 0 Ha a @ @ ERROR <> 0 TRAN ROLLBACK TRAN
- Szerezd meg a titkosított tartalom az új "hamis" objektumot. 1 @ContentOfFakeEncryptedObject = imageval SELECT TOP 1 @ = ContentOfFakeEncryptedObject imageval sys. sysobjvalues AZ sys. Sysobjvalues objid = OBJECT_ID ( '[' + @ObjectOwnerOrSchema + '].[' + @ObjectName + ']' ) WHERE Objid = OBJECT_ID ('[' + @ + ObjectOwnerOrSchema'].[' + @ ObjectName + "]") and subobjid = 1 ÉS valclass = 1 = 1 és subobjid
> 0 IF @ @ TRANCOUNT> 0 TRAN ROLLBACK TRAN
- Létrehoz egy CREATE script objektum próbabábu szöveget. @ContentOfFakeObject = N 'CREATE ' + @ObjectType + N ' [' + @ObjectOwnerOrSchema + N '].[' SET @ ContentOfFakeObject = N 'create' + @ típusú objektum + N "['+ @ + N ObjectOwnerOrSchema'].[' + @ ObjectName + N "] AS Encryption"
@ContentOfFakeObject ) / 2 < @ObjectDataLength DATA HOSSZA while (@ ContentOfFakeObject) / 2 <@ Property Data Length BEGIN DATALENGTH ( @ContentOfFakeObject ) / 2 + 4000 < @ObjectDataLength DATA hosszát, ha (@ ContentOfFakeObject) / 2 + 4.000 <@ Property Data Length @ContentOfFakeObject = @ContentOfFakeObject + REPLICATE ( N '-' , 4000 ) SET @ @ = ContentOfFakeObject ContentOfFakeObject + Párhuzamos (N '-', 4000) ELSE @ContentOfFakeObject = @ContentOfFakeObject + SET @ @ = ContentOfFakeObject ContentOfFakeObject + ( N '-' , @ObjectDataLength - ( DATALENGTH ( @ContentOfFakeObject ) / 2 ) ) Ismétlésben (N '-', @ Object Data Hossz - (DATA HOSSZA (@ ContentOfFakeObject) / 2)) END
@i = 1 SET @ i = 1
- Töltse fel a változó, amely rendelkezik a dekódolt adatokat a kitöltő karakter @ContentOfDecryptedObject = N '' SET @ ContentOfDecryptedObject = N''
@ContentOfDecryptedObject ) / 2 < @ObjectDataLength DATA HOSSZA while (@ ContentOfDecryptedObject) / 2 <@ Property Data Length BEGIN DATALENGTH ( @ContentOfDecryptedObject ) / 2 + 4000 < @ObjectDataLength DATA hosszát, ha (@ ContentOfDecryptedObject) / 2 + 4.000 <@ Property Data Length @ContentOfDecryptedObject = @ContentOfDecryptedObject + REPLICATE ( N 'A' , 4000 ) SET @ @ = ContentOfDecryptedObject ContentOfDecryptedObject + Párhuzamos (N 'A', 4000) ELSE @ContentOfDecryptedObject = @ContentOfDecryptedObject SET @ @ = ContentOfDecryptedObject ContentOfDecryptedObject ( N 'A' , @ObjectDataLength - ( DATALENGTH ( @ContentOfDecryptedObject ) / 2 ) ) Párhuzamos + (N 'A', @ Object Data Hossz - (DATA HOSSZA (@ ContentOfDecryptedObject) / 2)) END
@i <= @ObjectDataLength MIKÖZBEN @ i <= @ hossza adatelem BEGIN - Xor valódi és hamis és hamisított titkosított @ContentOfDecryptedObject = STUFF ( @ContentOfDecryptedObject, @i, 1 , SET @ ContentOfDecryptedObject = cuccok (@ ContentOfDecryptedObject, @ i, 1, ( NCHAR ( ( SUBSTRING ( @ContentOfEncryptedObject, @i, 1 ) ) ^ UNICODE (substring (@ ContentOfEncryptedObject, @ i, 1)) ^ ( ( SUBSTRING ( @ContentOfFakeObject, @i, 1 ) ) ^ UNICODE (substring (@ ContentOfFakeObject, @ i, 1)) ^ ( SUBSTRING ( @ContentOfFakeEncryptedObject, @i, 1 ) ) UNICODE (substring (@ ContentOfFakeEncryptedObject, @ i, 1)) )))
@i = @i + 1 SET @ @ i = i + 1 END
- PRINT tartalmát a decrypted tárgy darabokat 2K karakterek
SET @ i = 0
@ContentOfDecryptedObject ) / 2 > ( @i + 1 ) * 2000 DATA HOSSZA while (@ ContentOfDecryptedObject) / 2> (@ i + 1) * 2000 BEGIN ( SUBSTRING ( @ContentOfDecryptedObject, 1 + "mailto:2000*@i" > 2000 *@i , 2000 * ( @i + 1 ) ) ) PRINT (substring (@ ContentOfDecryptedObject, 1 + "mailto: 2000 @ * i"> i * @ 2000 , 2000 * (@ i + 1))) @i = @i + 1 SET @ @ i = i + 1 END
- Most print az utolsó darab, darabja, vagy a Csak - (Ha @ ContentOfDecryptedObject-e nem haladhatja meg a 2K karakter) ( SUBSTRING ( @ContentOfDecryptedObject, 1 + "mailto:2000*@i" > 2000 *@i , 2000 * ( @i + 1 ) ) ) PRINT (substring (@ ContentOfDecryptedObject, 1 + "mailto: 2000 @ * i"> i * @ 2000 , 2000 * (@ i + 1)))






















Címkék 