• Increase font size
  • Default font size
  • Decrease font size
Hjem T-SQL Dekryptere lagrede prosedyrer, Views, Funksjoner i SQL Server 2005

Dekryptere lagrede prosedyrer, Views, Funksjoner i SQL Server 2005

E-post Skriv ut
(0 stemmer)

bolean_field_down_128 Jeg har nylig hatt et element i min database som var kryptert. Det finnes ulike verktøy på Internett for salg til dekryptere hele greia, men jeg fant en gratis skript som gjør jobben. Dette skriptet kan lagrede prosedyrer, funksjoner, triggere Views dekryptere. Nedenfor manuset!

  /*================================================ ================================== 
  Tilkoblingen i DAC-modus krever! 
  Få kontakt med lokale serveren først, deretter legge tilkoblingen i søket vinduet og endre å fylle inn server navn: 
  ADMIN: servernavn \ forekomst  
  EG: ADMIN: localhost (hvis bare ett eksempel) 
  Fyll @ ObjectName objektet du vil dekryptere 
  Fyll ut @ ObjectOwnerOrSchema tidsplanen, vanligvis dbo 
  * / 

VULHIERDATABASEIN BRUK VULHIERDATABASEIN GO

( 128 ) ERKLÆRER @ ObjectOwnerOrSchema nvarchar (128) @ObjectName NVARCHAR ( 128 ) ERKLÆRER @ ObjectName nvarchar (128)

SET @ ObjectOwnerOrSchema = 'dbo' @ObjectName = 'VULHIERSTOREDPROCEDURE IN' SET @ ObjectName = 'VULHIERSTOREDPROCEDURE IN'

ERKLÆRER @ I INT @ObjectDataLength INT ERKLÆRER @ lengde INT element Data @ContentOfEncryptedObject NVARCHAR ( MAX ) ERKLÆRER @ ContentOfEncryptedObject nvarchar (MAX) @ContentOfDecryptedObject NVARCHAR ( MAX ) ERKLÆRER @ ContentOfDecryptedObject nvarchar (MAX) @ContentOfFakeObject NVARCHAR ( MAX ) ERKLÆRER @ ContentOfFakeObject nvarchar (MAX) @ContentOfFakeEncryptedObject NVARCHAR ( MAX ) ERKLÆRER @ ContentOfFakeEncryptedObject nvarchar (MAX) @ObjectType NVARCHAR ( 128 ) ERKLÆRER @ Objekttype nvarchar (128) @ObjectID INT ERKLÆRER @ ObjectID INT

ON SET NOCOUNT ON

( '[' + @ObjectOwnerOrSchema + '].[' + @ObjectName + ']' ) SET @ ObjectID = OBJECT_ID ('[' + @ + ObjectOwnerOrSchema'].[' + @ ObjectName + ']')

- Sjekk at Forutsatt objektet eksisterer i databasen. @ObjectID IS NULL IF @ ObjectID ER NULL BEGIN ( 'The object name or schema provided does not exist in the database' , 16 , 1 ) RAISERROR ('Den spesielle objektet eller skjema Forutsatt Finnes ikke i databasen', 16, 1) RETURN END

- Sjekk at Forutsatt objektet er kryptert. NOT EXISTS ( SELECT TOP 1 * FROM syscomments WHERE id = @ObjectID AND encrypted = 1 ) HVIS IKKE finnes (SELECT TOP 1 * FROM WHERE id = @ ObjectID syscomments OG kryptert = 1) BEGIN ( 'The object provided exists however it is not encrypted. Aborting.' , 16 , 1 ) RAISERROR ('Målet Forutsatt men det er ikke kryptert eksisterer. Avbryter. ", 16, 1) RETURN END

- Bestem type på objektet OBJECT_ID ( '[' + @ObjectOwnerOrSchema + '].[' + @ObjectName + ']' , 'PROCEDURE' ) IS NOT NULL IF OBJECT_ID ('[' + @ + ObjectOwnerOrSchema'].[' + @ ObjectName + ']', 'prosedyre) ER IKKE NULL @ObjectType = 'PROCEDURE' SET @ objekt type = 'PROSEDYRE' ELSE OBJECT_ID ( '[' + @ObjectOwnerOrSchema + '].[' + @ObjectName + ']' , 'TRIGGER' ) IS NOT NULL IF OBJECT_ID ('[' + @ + ObjectOwnerOrSchema'].[' + @ ObjectName + ']', 'TRIGGER') ER IKKE NULL @ObjectType = 'TRIGGER' SET @ objekt type = 'TRIGGER' ELSE OBJECT_ID ( '[' + @ObjectOwnerOrSchema + '].[' + @ObjectName + ']' , 'VIEW' ) IS NOT NULL IF OBJECT_ID ('[' + @ + ObjectOwnerOrSchema'].[' + @ ObjectName + ']', 'VIEW') ER IKKE NULL @ObjectType = 'VIEW' SET @ objekt type = 'VIEW' ELSE @ObjectType = 'FUNCTION' SET @ objekt type = 'funksjonen'

- Få binær representasjon av objektet ikke lenger syscomments prisklasse - Det kodet innhold eller objekt. 1 @ContentOfEncryptedObject = imageval SELECT TOP 1 @ = ContentOfEncryptedObject imageval sys. sysobjvalues FRA sys. Sysobjvalues objid = OBJECT_ID ( '[' + @ObjectOwnerOrSchema + '].[' + @ObjectName + ']' ) WHERE objid = OBJECT_ID ('[' + @ + ObjectOwnerOrSchema'].[' + @ ObjectName + ']') and subobjid = 1 OG valclass = 1 = 1 og subobjid

@ContentOfEncryptedObject ) / 2 SET @ Post Data Lengde = data Lengde (@ ContentOfEncryptedObject) / 2

- Vi trenger å endre eksisterende objekt og gjøre det skrive en dummy objekt - For å dekryptere innholdet. Dette gjøres i en transaksjon - (Som senere ble rullet tilbake) for å sikre en minimal eiendeler dvs alle endringer - Effekt på databasen. @ContentOfFakeObject = N 'ALTER ' + @ObjectType + N ' [' + @ObjectOwnerOrSchema + N '].[' + SET @ ContentOfFakeObject = N 'ALTER' + @ type Object + N '[' + @ + N ObjectOwnerOrSchema'].[' + @ ObjectName + N '] MED AS Encryption'

@ContentOfFakeObject ) / 2 < @ObjectDataLength DATA LENGTH stund (@ ContentOfFakeObject) / 2 <@ Eiendom Data Lengde BEGIN DATALENGTH ( @ContentOfFakeObject ) / 2 + 4000 < @ObjectDataLength DATA LENGTH IF (@ ContentOfFakeObject) / 2 + 4000 <@ Eiendom Data Lengde @ContentOfFakeObject = @ContentOfFakeObject + REPLICATE ( N '-' , 4000 ) SET @ @ = ContentOfFakeObject ContentOfFakeObject + Repliker (N '-', 4000) ELSE @ContentOfFakeObject = @ContentOfFakeObject + REPLICATE ( N '-' , SET @ @ = ContentOfFakeObject ContentOfFakeObject + Repliker (N '-', DATALENGTH ( @ContentOfFakeObject ) / 2 ) ) @ Lengde Data Item - (data Lengde (@ ContentOfFakeObject) / to)) END

- Siden vi må endre på objektet for å dekryptere den, er dette gjort - I en transaksjon XACT_ABORT OFF SET OFF XACT_ABORT TRAN BEGIN Tran

@ContentOfFakeObject ) EXEC (@ ContentOfFakeObject)

<> 0 IF @ @ FEIL <> 0 TRAN ROLLBACK Tran

- Få den krypterte innholdet i den nye "falske" objekt. 1 @ContentOfFakeEncryptedObject = imageval SELECT TOP 1 @ = ContentOfFakeEncryptedObject imageval sys. sysobjvalues FRA sys. Sysobjvalues objid = OBJECT_ID ( '[' + @ObjectOwnerOrSchema + '].[' + @ObjectName + ']' ) WHERE objid = OBJECT_ID ('[' + @ + ObjectOwnerOrSchema'].[' + @ ObjectName + ']') and subobjid = 1 OG valclass = 1 = 1 og subobjid

> 0 IF @ @ TRANCOUNT> 0 TRAN ROLLBACK Tran

- Lag en CREATE script for objektet dummy teksten. @ContentOfFakeObject = N 'CREATE ' + @ObjectType + N ' [' + @ObjectOwnerOrSchema + N '].[' SET @ ContentOfFakeObject = N 'CREATE' + @ type Object + N '[' + @ + N ObjectOwnerOrSchema'].[' + @ ObjectName + N '] MED AS Encryption'

@ContentOfFakeObject ) / 2 < @ObjectDataLength DATA LENGTH stund (@ ContentOfFakeObject) / 2 <@ Eiendom Data Lengde BEGIN DATALENGTH ( @ContentOfFakeObject ) / 2 + 4000 < @ObjectDataLength DATA LENGTH IF (@ ContentOfFakeObject) / 2 + 4000 <@ Eiendom Data Lengde @ContentOfFakeObject = @ContentOfFakeObject + REPLICATE ( N '-' , 4000 ) SET @ @ = ContentOfFakeObject ContentOfFakeObject + Repliker (N '-', 4000) ELSE @ContentOfFakeObject = @ContentOfFakeObject + SET @ @ = ContentOfFakeObject ContentOfFakeObject + ( N '-' , @ObjectDataLength - ( DATALENGTH ( @ContentOfFakeObject ) / 2 ) ) Replikat (N '-', @ Objekt Data Lengde - (data Lengde (@ ContentOfFakeObject) / 2)) END

@i = 1 SET @ i = 1

- Fyll variabelen som holder dekryptert data med en fyllmasse karakter @ContentOfDecryptedObject = N '' SET @ ContentOfDecryptedObject = N''

@ContentOfDecryptedObject ) / 2 < @ObjectDataLength DATA LENGTH stund (@ ContentOfDecryptedObject) / 2 <@ Eiendom Data Lengde BEGIN DATALENGTH ( @ContentOfDecryptedObject ) / 2 + 4000 < @ObjectDataLength DATA LENGTH IF (@ ContentOfDecryptedObject) / 2 + 4000 <@ Eiendom Data Lengde @ContentOfDecryptedObject = @ContentOfDecryptedObject + REPLICATE ( N 'A' , 4000 ) SET @ @ = ContentOfDecryptedObject ContentOfDecryptedObject + Repliker (N 'A', 4000) ELSE @ContentOfDecryptedObject = @ContentOfDecryptedObject SET @ @ = ContentOfDecryptedObject ContentOfDecryptedObject ( N 'A' , @ObjectDataLength - ( DATALENGTH ( @ContentOfDecryptedObject ) / 2 ) ) + Repliker (N 'A', @ Objekt Data Lengde - (data Lengde (@ ContentOfDecryptedObject) / 2)) END

@i <= @ObjectDataLength WHILE @ i <= @ Lengde dataelementet BEGIN - Xor ekte og falsk og forfalskning kryptert @ContentOfDecryptedObject = STUFF ( @ContentOfDecryptedObject, @i, 1 , SET @ ContentOfDecryptedObject = STUFF (@ ContentOfDecryptedObject, @ i, 1, ( NCHAR ( ( SUBSTRING ( @ContentOfEncryptedObject, @i, 1 ) ) ^ UNICODE (delstreng (@ ContentOfEncryptedObject, @ I, 1)) ^ ( ( SUBSTRING ( @ContentOfFakeObject, @i, 1 ) ) ^ UNICODE (delstreng (@ ContentOfFakeObject, @ I, 1)) ^ ( SUBSTRING ( @ContentOfFakeEncryptedObject, @i, 1 ) ) UNICODE (delstreng (@ ContentOfFakeEncryptedObject, @ I, 1)) )))

@i = @i + 1 SET @ I = @ i + 1 END

- PRINT innholdet i dekryptert objektet i biter av 2K tegn

SET @ i = 0

@ContentOfDecryptedObject ) / 2 > ( @i + 1 ) * 2000 DATA LENGTH stund (@ ContentOfDecryptedObject) / 2> (@ i + 1) * 2000 BEGIN ( SUBSTRING ( @ContentOfDecryptedObject, 1 + "mailto:2000*@i" > 2000 *@i , 2000 * ( @i + 1 ) ) ) PRINT (delstreng (@ ContentOfDecryptedObject, + 1 "mailto: 2000 @ * jeg"> i * @ 2000 , 2000 * (@ i + 1))) @i = @i + 1 SET @ I = @ i + 1 END

- Nå skriver ut den siste blokk, klump eller Bare - (Hvis @ ContentOfDecryptedObject Har ikke overstige 2K tegn) ( SUBSTRING ( @ContentOfDecryptedObject, 1 + "mailto:2000*@i" > 2000 *@i , 2000 * ( @i + 1 ) ) ) PRINT (delstreng (@ ContentOfDecryptedObject, + 1 "mailto: 2000 @ * jeg"> i * @ 2000 , 2000 * (@ i + 1)))

Copyright 2008. Alle rettigheter reservert.

Vedlegg:
Last ned denne filen (Decrypten_SPs.zip) Decrypten_SPs.zip [Nedgang lagrede prosedyrer i SQL Server 2000 og 2005] 7 Kb

Trackback (0)

TrackBack URI for dette innlegget

Kommentar (0)

RSS feed Kommentarer

Skriv kommentar

fet kursivere understreking streik url bilde Sitat smile wink laugh grin angry sad shocked cool tongue kiss cry
| groter mindre | større
sikkerhetsbildet
Skriv inn bokstavene ovenfor

opptatt