אני לאחרונה היה פריט באתר שלי כי היה מוצפן. ישנם כלים שונים באינטרנט מכירה לפענח את כל העניין, אבל מצאתי סקריפט חינם שעושה את העבודה. זה התסריט יכול משגרות מאוחסנות, פונקציות, מפעילה לפענח צפיות. להלן התסריט!
/*================================================ ================================== חיבור במצב 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)))






















תגיות 