• Increase font size
  • Default font size
  • Decrease font size
בית T-SQL פענוח ופרוצדורות המאוחסנים, תצוגות, פונקציות SQL Server 2005

פענוח ופרוצדורות המאוחסנים, תצוגות, פונקציות SQL Server 2005

דואר אלקטרוני להדפיס
(0 קולות)

bolean_field_down_128 אני לאחרונה היה פריט באתר שלי כי היה מוצפן. ישנם כלים שונים באינטרנט מכירה לפענח את כל העניין, אבל מצאתי סקריפט חינם שעושה את העבודה. זה התסריט יכול משגרות מאוחסנות, פונקציות, מפעילה לפענח צפיות. להלן התסריט!

  /*================================================ ================================== 
  חיבור במצב DAC דורש! 
  צור קשר עם השרת המקומי הראשון, ולאחר מכן להוסיף את החיבור לתוך חלון השאילתה שלך ולשנות למלא שם שרת: 
  Admin: למשל \ servername  
  לדוגמה: Admin: localhost (אם רק מקרה אחד) 
  מלא @ ObjectName האובייקט שברצונך לפענח 
  מלא @ הזמנים ObjectOwnerOrSchema, dbo בדרך כלל 
  * / 

VULHIERDATABASEIN השימוש VULHIERDATABASEIN GO

( 128 ) מכריזים @ ObjectOwnerOrSchema nvarchar (128) @ObjectName NVARCHAR ( 128 ) מכריזים @ ObjectName nvarchar (128)

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

מכריזים @ אני INT @ObjectDataLength INT אורך INT נתונים פריט @ מכריזים @ContentOfEncryptedObject NVARCHAR ( MAX ) מכריזים @ ContentOfEncryptedObject nvarchar (מקס) @ContentOfDecryptedObject NVARCHAR ( MAX ) מכריזים @ ContentOfDecryptedObject nvarchar (מקס) @ContentOfFakeObject NVARCHAR ( MAX ) מכריזים @ ContentOfFakeObject nvarchar (מקס) @ContentOfFakeEncryptedObject NVARCHAR ( MAX ) מכריזים @ ContentOfFakeEncryptedObject nvarchar (מקס) @ObjectType NVARCHAR ( 128 ) מכריזים @ אובייקט מסוג nvarchar (128) @ObjectID INT מכריזים @ ObjectID INT

ON SET NOCOUNT ON

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

- בדוק שסיפקה קיים אובייקט במסד הנתונים. @ObjectID IS NULL IF @ ObjectID הוא ריק BEGIN ( 'The object name or schema provided does not exist in the database' , 16 , 1 ) RAISERROR ("אובייקט מסוים או סכימה מסופק לא קיים באתר ', 16, 1) החזרה END

- בדוק שסיפקו את החפץ מוצפן. NOT EXISTS ( SELECT TOP 1 * FROM syscomments WHERE id = @ObjectID AND encrypted = 1 ) אם קיים לא (SELECT TOP 1 * מאיפה id = @ syscomments ObjectID ומוצפנת = 1) BEGIN ( 'The object provided exists however it is not encrypted. Aborting.' , 16 , 1 ) RAISERROR ("חפץ ובלבד שזה לא מוצפן קיים. מבטל.", 16, 1) החזרה END

- לקבוע את סוג האובייקט OBJECT_ID ( '[' + @ObjectOwnerOrSchema + '].[' + @ObjectName + ']' , 'PROCEDURE' ) IS NOT NULL אם '([+ "OBJECT_ID @ + ObjectOwnerOrSchema'].[' + @ ObjectName +']", "פרוצדורה") אינו NULL @ObjectType = 'PROCEDURE' אובייקט מסוג SET @ = "נוהל ELSE OBJECT_ID ( '[' + @ObjectOwnerOrSchema + '].[' + @ObjectName + ']' , 'TRIGGER' ) IS NOT NULL אם '([+ "OBJECT_ID @ + + ObjectOwnerOrSchema'].[' @ ObjectName +']", "טריגר") אינו NULL @ObjectType = 'TRIGGER' אובייקט מסוג SET @ = "טריגר" ELSE OBJECT_ID ( '[' + @ObjectOwnerOrSchema + '].[' + @ObjectName + ']' , 'VIEW' ) IS NOT NULL אם '([+ "OBJECT_ID @ + + ObjectOwnerOrSchema'].[' @ ObjectName +'] ',' תצוגה ') אינו NULL @ObjectType = 'VIEW' סוג אובייקט @ SET = 'הצגת' ELSE @ObjectType = 'FUNCTION' אובייקט מסוג SET @ = "מטרה"

- קבל את הייצוג הבינארי של האובייקט כבר לא syscomments טווח המחירים - או מוצפן פריט התוכן. 1 @ContentOfEncryptedObject = imageval SELECT TOP 1 @ = ContentOfEncryptedObject imageval sys. sysobjvalues FROM sys. Sysobjvalues objid = OBJECT_ID ( '[' + @ObjectOwnerOrSchema + '].[' + @ObjectName + ']' ) objid WHERE = OBJECT_ID ("+" [@ + ObjectOwnerOrSchema'].[' + @ ObjectName + ']') and subobjid = 1 ו valclass = 1 = 1 ו subobjid

@ContentOfEncryptedObject ) / 2 פריט נתונים DATA = אורך אורך SET @ (@ ContentOfEncryptedObject) / 2

- אנחנו צריכים לשנות את האובייקט קיים ולהפוך אותו לכתוב אובייקט טמבל - על מנת לפענח את תוכנו. הדבר נעשה במסגרת עסקה - (וזה היה לאחר מכן התגלגל לאחור) כדי להבטיח את חפציו מינימלית thats כל השינויים - השפעה על מסד הנתונים. @ContentOfFakeObject = N 'ALTER ' + @ObjectType + N ' [' + @ObjectOwnerOrSchema + N '].[' + SET @ ContentOfFakeObject = 'ALTER "+ N @ סוג N' [+ אובייקט + @ + N ObjectOwnerOrSchema'].[' + ObjectName + N] "@ עם כמה הצפנה"

@ContentOfFakeObject ) / 2 < @ObjectDataLength אורך של מידע ובמקביל (ContentOfFakeObject @) / 2 <@ נתונים נכס אורך BEGIN DATALENGTH ( @ContentOfFakeObject ) / 2 + 4000 < @ObjectDataLength נתונים אורך IF (ContentOfFakeObject @) / 2 + 4000 <@ אורך נכס נתונים @ContentOfFakeObject = @ContentOfFakeObject + REPLICATE ( N '-' , 4000 ) SET @ @ = ContentOfFakeObject ContentOfFakeObject + שכפל '-', 4000) ELSE @ContentOfFakeObject = @ContentOfFakeObject + REPLICATE ( N '-' , SET @ @ = ContentOfFakeObject ContentOfFakeObject + שכפל '-', DATALENGTH ( @ContentOfFakeObject ) / 2 ) ) @ נתוני אורך פריט - (נתונים אורך (@ ContentOfFakeObject) / 2)) END

- מאז אנחנו צריכים לשנות את האובייקט כדי לפענח את זה, זה נעשה - במסגרת עסקה XACT_ABORT OFF לדרך XACT_ABORT TRAN BEGIN טראן

@ContentOfFakeObject ) EXEC (@ ContentOfFakeObject)

<> 0 אם @ @ <שגיאה> 0 TRAN החזרה טראן

- קבל את התוכן המוצפן של "זיוף" חפץ חדש. 1 @ContentOfFakeEncryptedObject = imageval SELECT TOP 1 @ = ContentOfFakeEncryptedObject imageval sys. sysobjvalues FROM sys. Sysobjvalues objid = OBJECT_ID ( '[' + @ObjectOwnerOrSchema + '].[' + @ObjectName + ']' ) objid WHERE = OBJECT_ID ("+" [@ + ObjectOwnerOrSchema'].[' + @ ObjectName + ']') and subobjid = 1 ו valclass = 1 = 1 ו subobjid

> 0 אם @ @> TRANCOUNT 0 TRAN החזרה טראן

- צור סקריפט ליצור עבור אובייקט טקסט הבובה. @ContentOfFakeObject = N 'CREATE ' + @ObjectType + N ' [' + @ObjectOwnerOrSchema + N '].[' SET @ ContentOfFakeObject = "ליצור" + N @ סוג N '[+ אובייקט + @ + N ObjectOwnerOrSchema'].[' @ ObjectName + N] "+ עם כמה הצפנה"

@ContentOfFakeObject ) / 2 < @ObjectDataLength אורך של מידע ובמקביל (ContentOfFakeObject @) / 2 <@ נתונים נכס אורך BEGIN DATALENGTH ( @ContentOfFakeObject ) / 2 + 4000 < @ObjectDataLength נתונים אורך IF (ContentOfFakeObject @) / 2 + 4000 <@ אורך נכס נתונים @ContentOfFakeObject = @ContentOfFakeObject + REPLICATE ( N '-' , 4000 ) SET @ @ = ContentOfFakeObject ContentOfFakeObject + שכפל '-', 4000) ELSE @ContentOfFakeObject = @ContentOfFakeObject + SET @ @ = ContentOfFakeObject ContentOfFakeObject + ( N '-' , @ObjectDataLength - ( DATALENGTH ( @ContentOfFakeObject ) / 2 ) ) משכפל '-', @ אורך אובייקט נתונים - (אורך נתונים (@ ContentOfFakeObject) / 2)) END

@i = 1 SET @ i = 1

- ממלאים את המשתנה אשר מחזיקים את הנתונים מפוענח עם מלוי אופי @ContentOfDecryptedObject = N '' @ ContentOfDecryptedObject = N SET''

@ContentOfDecryptedObject ) / 2 < @ObjectDataLength אורך של מידע ובמקביל (ContentOfDecryptedObject @) / 2 <@ נתונים נכס אורך BEGIN DATALENGTH ( @ContentOfDecryptedObject ) / 2 + 4000 < @ObjectDataLength נתונים אורך IF (ContentOfDecryptedObject @) / 2 + 4000 <@ אורך נכס נתונים @ContentOfDecryptedObject = @ContentOfDecryptedObject + REPLICATE ( N 'A' , 4000 ) SET @ @ = ContentOfDecryptedObject ContentOfDecryptedObject + שכפל 'א', 4000) ELSE @ContentOfDecryptedObject = @ContentOfDecryptedObject SET @ @ = ContentOfDecryptedObject ContentOfDecryptedObject ( N 'A' , @ObjectDataLength - ( DATALENGTH ( @ContentOfDecryptedObject ) / 2 ) ) + שכפל 'א', @ אורך אובייקט נתונים - (אורך נתונים (@ ContentOfDecryptedObject) / 2)) END

@i <= @ObjectDataLength בעוד @ אני <= אורך פריט נתונים @ BEGIN - Xor האמיתי & & מזויפים מזויפים מוצפן @ContentOfDecryptedObject = STUFF ( @ContentOfDecryptedObject, @i, 1 , @ ContentOfDecryptedObject = Stuff (@ ContentOfDecryptedObject SET, @ אני, 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 @ @ אני = אני + 1 END

- הדפס את תוכן מפוענח של האובייקט בתוך גושים של 2K תווים

SET @ אני = 0

@ContentOfDecryptedObject ) / 2 > ( @i + 1 ) * 2000 נתונים אורך זמן (ContentOfDecryptedObject @) / 2> (@ אני + 1) * 2000 BEGIN ( SUBSTRING ( @ContentOfDecryptedObject, 1 + "mailto:2000*@i" > 2000 *@i , 2000 * ( @i + 1 ) ) ) הדפסה (substring (@ ContentOfDecryptedObject, 1 + "mailto: 2000 * @ i"> * אני @ 2000 , 2000 * (@ אני + 1))) @i = @i + 1 SET @ @ אני = אני + 1 END

- עכשיו להדפיס את נתח לאחרונה, נתח או רק - (אם @ ContentOfDecryptedObject האם לא יעלה על 2K תווים) ( SUBSTRING ( @ContentOfDecryptedObject, 1 + "mailto:2000*@i" > 2000 *@i , 2000 * ( @i + 1 ) ) ) הדפסה (substring (@ ContentOfDecryptedObject, 1 + "mailto: 2000 * @ i"> * אני @ 2000 , 2000 * (@ אני + 1)))

תגיות קוים תגיות



זכויות יוצרים 2008. כל הזכויות שמורות.

קבצים מצורפים:
הורד קובץ זה (Decrypten_SPs.zip) Decrypten_SPs.zip [פענוח משגרות מאוחסנות ב SQL Server 2000 ו 2005] 7 Kb

Trackback (0)

TrackBack URI להודעה זו

תגובה (0)

תגובות RSS feed

כתוב תגובה

נועז italicize לשים דגש שביתה כתובת האתר תמונה לצטט smile wink laugh grin angry sad shocked cool tongue kiss cry
| groter קטן יותר | גדול יותר
תמונת אבטחה
הקלד את התווים המוצגים

עסוק