ورود

View Full Version : Encryption!!!!! It can't STOP ME



majid_afra222
چهارشنبه 17 خرداد 1385, 20:42 عصر
سلام
من باب Encrypt شدن توابع و رویه های SQL Server، با این رویه میتونید گزینه ENCRYPTION رو از بین ببرید و سورس SP رو داشته باشید.


CREATE PROCEDURE DecryptSP(@objName varchar(50))
AS
BEGIN
DECLARE @a nvarchar(4000), @b nvarchar(4000), @c nvarchar(4000), @d nvarchar(4000), @i int, @t bigint
--بدست آوردن اطلاعات ENCRYPT شده
SET @a=(SELECT ctext FROM syscomments WHERE id = object_id(@objName))
SET @b='ALTER PROCEDURE '+ @objName +' WITH ENCRYPTION AS '+REPLICATE('-', 4000-62)
EXECUTE (@b)
--بدست آوردن اطلاعات SP ساختگی خودمان
SET @c=(SELECT ctext FROM syscomments WHERE id = object_id(@objName))
SET @b='CREATE PROCEDURE '+ @objName +' WITH ENCRYPTION AS '+REPLICATE('-', 4000-62)

SET @i=1
--متغیرهای temp را پر میکنیم
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
--حذف SP اصلی
EXECUTE ('drop PROCEDURE '+ @objName)
--حذف گزینه encryption
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', '')
--جایگزینی SP
execute( @d)

برای اجرا هم کافیه نام object رو بهش ارسال کنید
خوب امیدوارم خوشتون بیاد.

AminSobati
چهارشنبه 17 خرداد 1385, 22:40 عصر
ممنون مجید جان! هنوز تستش نکردم اما از ظاهر امر اینطور پیداست که SP نباید از 4kb بیشتر باشه؟

حامد رضائی
دوشنبه 30 مرداد 1385, 16:01 عصر
سلام
spجالبی بود
اما این پروسیجر خطا میده
نمی دونم مشکلش کجاست

arnazarian
شنبه 10 مرداد 1388, 13:53 عصر
آخرش يك end كمه

m0rteza
شنبه 10 مرداد 1388, 15:05 عصر
من باب Encrypt شدن توابع و رویه های SQL Server، با این رویه میتونید گزینه ENCRYPTION رو از بین ببرید و سورس SP رو داشته باشید.

من تا الان چیزی در مورد Encrypt شدن توابع و رویه های نشنیده بودم . 2 تا سوال دارم؟

هدف از این کار چیه؟ یعنی شما با Encrypt شدن توابع و رویه ها نمی خواین مدیر sql server رویه ها رو ببینه؟
حالا چطور Encrypt میکنن ؟ و هدف از از بین بردنش و دیدن سورس چی هست؟

ممنون

بهنام بهمنی
شنبه 10 مرداد 1388, 16:06 عصر
با تشکر فراوان
من یک سئوال هم دارم , آيا با run کردن Profiler می توان محتوای sp کد شده را متوجه شد؟

bad_boy_2007
شنبه 10 مرداد 1388, 21:35 عصر
حالا چطور Encrypt میکنن ؟ و هدف از از بین بردنش و دیدن سورس چی هست؟
ممنون

با استفاده از عبارت With Encryption
مثال :


CREATEPROCEDURE Test
withencryption
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SETNOCOUNTON;
-- Insert statements for procedure here
END
GO


تست كردم ، جواب نداد .
واسه من فقط StoredProcedure - View - Function را فقط Drop ميكنه و Decrypt شده اش رو نميده.
كسي تست كرده كه جواب گرفته باشه ؟ در صورتي كه جوابتون مثبته نسخه SQLServer رو هم قيد بفرماييد .
من از SEL Server 2005 Express Edition‌ استفاده ميكنم