ورود

View Full Version : باز کردن رمز یک view ی encrypt شده



maaaaaa
چهارشنبه 24 بهمن 1386, 11:18 صبح
سلام

آیا دستوری در sql وجود داره که با اون بتونیم یک شی ای (مثلا یک view)که encrypt شده است را رمزش را باز کنیم و به ساختار شی ساخته شده برسیم،
مثلا این که view ی encrypt شده از چه کدی ساخته شده؟

پیشاپیش از راهنمایی دوستان تشکر میکنم.

Elham_gh
چهارشنبه 24 بهمن 1386, 11:21 صبح
من SP دارم که تمام روتینهای encrypt شده رو باز می کنه. اما باید تا فردا صبر کنید. چون الان در دسترسم نیست باید از خونه پست کنم.

maaaaaa
چهارشنبه 24 بهمن 1386, 11:36 صبح
ممنون،منتظر میمونم

Elham_gh
چهارشنبه 24 بهمن 1386, 17:08 عصر
Decrypt Stored Procedures, Views and Triggers


SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS OFF
GO

CREATE PROCEDURE DECRYPT2K (@objName varchar(50), @type char(1) )
--INPUT: object name (stored procedure,
-- view or trigger), object type ('S'-store
-- d procedure, 'V'view or 'T'-trigger)
--Original idea: shoeboy <shoeboy@ade
-- quacy.org>
--Copyright © 1999-2002 SecurityFocus
--adapted by Joseph Gama
--Planet Source Code, my employer and my
-- self are not responsible for the use of
-- this code
--This code is provided as is and for ed
-- ucational purposes only
--Please test it and share your results
AS
DECLARE @a nvarchar(4000), @b nvarchar(4000), @c nvarchar(4000), @d nvarchar(4000), @i int, @t bigint, @tablename varchar(255), @trigtype varchar(6)
SET @type=UPPER(@type)
IF @type='T'
BEGIN
SET @tablename=(SELECT sysobjects_1.name
FROM dbo.sysobjects INNER JOIN
dbo.sysobjects sysobjects_1 ON dbo.sysobjects.parent_obj = sysobjects_1.id
WHERE (dbo.sysobjects.type = 'TR') AND (dbo.sysobjects.name = @objName))
SET @trigtype=(SELECT CASE WHEN dbo.sysobjects.deltrig > 0 THEN 'DELETE'
WHEN dbo.sysobjects.instrig > 0 THEN 'INSERT'
WHEN dbo.sysobjects.updtrig > 0 THEN 'UPDATE' END
FROM dbo.sysobjects INNER JOIN
dbo.sysobjects sysobjects_1 ON dbo.sysobjects.parent_obj = sysobjects_1.id
WHERE (dbo.sysobjects.type = 'TR') AND (dbo.sysobjects.name = @objName))
END
--get encrypted data
SET @a=(SELECT ctext FROM syscomments WHERE id = object_id(@objName))
SET @b=case @type
WHEN 'S' THEN 'ALTER PROCEDURE '+ @objName +' WITH ENCRYPTION AS '+REPLICATE('-', 4000-62)
WHEN 'V' THEN 'ALTER VIEW '+ @objName +' WITH ENCRYPTION AS SELECT dbo.dtproperties.* FROM dbo.dtproperties'+REPLICATE('-', 4000-150)
WHEN 'T' THEN 'ALTER TRIGGER '+@objName+' ON '+ @tablename+' WITH ENCRYPTION FOR '+@trigtype+' AS PRINT ''a'''+REPLICATE('-', 4000-150)
END
EXECUTE (@b)
--get encrypted bogus SP
SET @c=(SELECT ctext FROM syscomments WHERE id = object_id(@objName))
SET @b=case @type
WHEN 'S' THEN 'CREATE PROCEDURE '+ @objName +' WITH ENCRYPTION AS '+REPLICATE('-', 4000-62)
WHEN 'V' THEN 'CREATE VIEW '+ @objName +' WITH ENCRYPTION AS SELECT dbo.dtproperties.* FROM dbo.dtproperties'+REPLICATE('-', 4000-150)
WHEN 'T' THEN 'CREATE TRIGGER '+@objName+' ON '+ @tablename+' WITH ENCRYPTION FOR '+@trigtype+' AS PRINT ''a'''+REPLICATE('-', 4000-150)
END
--start counter
SET @i=1
--fill temporary variable
SET @d = replicate(N'A', (datalength(@a) / 2))
--loop
WHILE @i<=datalength(@a)/2
BEGIN
--xor original+bogus+bogus encrypted
SET @d = stuff(@d, @i, 1,
NCHAR(UNICODE(substring(@a, @i, 1)) ^
(UNICODE(substring(@b, @i, 1)) ^
UNICODE(substring(@c, @i, 1)))))
SET @i=@i+1
END
--drop original SP
IF @type='S'
EXECUTE ('drop PROCEDURE '+ @objName)
ELSE
IF @type='V'
EXECUTE ('drop VIEW '+ @objName)
ELSE
IF @type='T'
EXECUTE ('drop TRIGGER '+ @objName)
--remove encryption
--try to preserve case
SET @d=REPLACE((@d),'WITH ENCRYPTION', '')
SET @d=REPLACE((@d),'With Encryption', '')
SET @d=REPLACE((@d),'with encryption', '')
IF CHARINDEX('WITH ENCRYPTION',UPPER(@d) )>0
SET @d=REPLACE(UPPER(@d),'WITH ENCRYPTION', '')
--replace SP
execute( @d)

GO
SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS OFF
GO

CREATE PROCEDURE DECRYPTSP2K (@objName varchar(50))
--INPUT: object name (stored procedure,
--
-- view or trigger)
--Original idea: shoeboy <shoeboy@a
-- dequacy.org>
--Copyright © 1999-2002 SecurityFocus
--adapted by Joseph Gama
--Planet Source Code, my employer and my
--
-- self are not responsible for the use
-- of
-- this code
--This code is provided as is and for ed
--
-- ucational purposes only
--Please test it and share your results
AS
DECLARE @a nvarchar(4000), @b nvarchar(4000), @c nvarchar(4000), @d nvarchar(4000), @i int, @t bigint
--get encrypted data
SET @a=(SELECT ctext FROM syscomments WHERE id = object_id(@objName))
SET @b='ALTER PROCEDURE '+ @objName +' WITH ENCRYPTION AS '+REPLICATE('-', 4000-62)
EXECUTE (@b)
--get encrypted bogus SP
SET @c=(SELECT ctext FROM syscomments WHERE id = object_id(@objName))
SET @b='CREATE PROCEDURE '+ @objName +' WITH ENCRYPTION AS '+REPLICATE('-', 4000-62)
--start counter
SET @i=1
--fill temporary variable
SET @d = replicate(N'A', (datalength(@a) / 2))
--loop
WHILE @i<=datalength(@a)/2
BEGIN
--xor original+bogus+bogus encrypted
SET @d = stuff(@d, @i, 1,
NCHAR(UNICODE(substring(@a, @i, 1)) ^
(UNICODE(substring(@b, @i, 1)) ^
UNICODE(substring(@c, @i, 1)))))
SET @i=@i+1
END
--drop original SP
EXECUTE ('drop PROCEDURE '+ @objName)
--remove encryption
--try to preserve case
SET @d=REPLACE((@d),'WITH ENCRYPTION', '')
SET @d=REPLACE((@d),'With Encryption', '')
SET @d=REPLACE((@d),'with encryption', '')
IF CHARINDEX('WITH ENCRYPTION',UPPER(@d) )>0
SET @d=REPLACE(UPPER(@d),'WITH ENCRYPTION', '')
--replace SP
execute( @d)

GO
SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS ON
GO

AlizAAlizA
شنبه 27 بهمن 1386, 14:42 عصر
با سلام و عرض تشکر . لطفا اگه می شه در مورد صدا زدن این SP ها با ذکر مثال توضیح بدهید. پارامتر ها رو به صورت string در یک ' ' نمی پذیره و خطا میده

maaaaaa
شنبه 04 اسفند 1386, 13:00 عصر
سلام

کسی نیست جواب سوال ما را بده؟

Elham_gh
شنبه 04 اسفند 1386, 13:15 عصر
با سلام و عرض تشکر . لطفا اگه می شه در مورد صدا زدن این SP ها با ذکر مثال توضیح بدهید. پارامتر ها رو به صورت string در یک ' ' نمی پذیره و خطا میده



DECRYPT2K 'spTest','S'

rezaei manesh
یک شنبه 05 اسفند 1386, 11:17 صبح
سلام
من از پروسیجر های شما استفاده کردم اما اون پروسیجر قفل شده رو پاک می کنه چیزی جدیدی که شامل کد های پروسیجر قفل شده باشه من پیدا نکردم
دوستان قبل از استفاده پشتیبان بگیرند من از پروسیجر ازمایشی استفاده می کردم وگرنه...

Elham_gh
یک شنبه 05 اسفند 1386, 14:08 عصر
سلام
من از پروسیجر های شما استفاده کردم اما اون پروسیجر قفل شده رو پاک می کنه چیزی جدیدی که شامل کد های پروسیجر قفل شده باشه من پیدا نکردم
دوستان قبل از استفاده پشتیبان بگیرند من از پروسیجر ازمایشی استفاده می کردم وگرنه...

من این روتین را تست شده گذاشتم و عمل کرده

maaaaaa
دوشنبه 06 اسفند 1386, 08:09 صبح
خانم Elham_gh

من هم با نظر آقای rezaei manesh موافقم

Elham_gh
دوشنبه 06 اسفند 1386, 09:26 صبح
خانم Elham_gh

من هم با نظر آقای rezaei manesh موافقم

خیر. من بعد از فرمایش شما در مورد View ها چک کردم که اینطور بوده اما در مورد Stored procedure چون مرتب از اون استفاده می کنم مطمئن هستم.

h_baqery
چهارشنبه 08 اسفند 1386, 10:27 صبح
من روی یه sp و یه Vw چک کردم خیلی توپ کار کرد .

h_baqery
چهارشنبه 08 اسفند 1386, 10:36 صبح
روی بعضی از sp ها این error رو می ده .


Server: Msg 512, Level 16, State 1, Procedure DECRYPT2K, Line 33
Subquery returned more than 1 value. This is not permitted when the subquery follows =, !=, <, <= , >, >= or when the subquery is used as an expression.
Server: Msg 512, Level 16, State 1, Procedure DECRYPT2K, Line 41
Subquery returned more than 1 value. This is not permitted when the subquery follows =, !=, <, <= , >, >= or when the subquery is used as an expression.


کسی می تونه اصلاحش کنه که ؟؟؟؟

tefos666
دوشنبه 10 تیر 1387, 20:25 عصر
دوست عزیز این دستور کاملا درست احتمالا شما پروسیجرتون رمز شده نبوده یه نگاه به این سایت بنداز

http://www.mssqltips.com/tip.asp?tip=1046

یا اینکه این عبارت رو تو گوگل جستجو کن یه دنیا سایت برات پیدا میکنه که چجوری پروسیجرتون رو رمز کنید و یا چگونه باز کنید

Encrypted object is not transferable, and script can not be generated

یا برای سهولت کار شما :

http://www.google.com/search?hl=en&client=firefox-a&channel=s&rls=org.mozilla%3Aen-US%3Aofficial&q=decrypting+Stored+Procedures&btnG=Search


http://khsw.blogspot.com/2004/08/decrypt-stored-procedures-on-sql.html

http://www.google.com/search?q=Encrypted+object+is+not+transferable%2C+a nd+script+can+not+be+generated&ie=utf-8&oe=utf-8&aq=t&rls=org.mozilla:en-US:official&client=firefox-a


امیدوارم بدردتون خورده باشه من که لذتش رو بردم !!!

SUCCESS IS DOING , NOT WISHING :متفکر: