태터데스크 관리자

도움말
닫기
적용하기   첫페이지 만들기

태터데스크 메시지

저장하였습니다.
페이지를 읽고 있습니다. ( 아쿠아바다's Blog )
분류 전체보기 (769)
쉐어포인트 (24)
Exchange (12)
SQL (121)
XML (36)
WEB (294)
O / S (97)
삶의향기 (162)
기획 (19)
RSS 피드(IE 7.0부터 기본 지원됩니다. 이전 버전 사용자는 접합한 툴을 사용하세요!!)

sp를 WITH ENCRYPTION 암호화 한거 풀기

SQL 2007/06/07 11:17 by 아쿠아바다
dbo.sample.prc
---------------------------------
CREATE PROCEDURE hello
WITH ENCRYPTION
AS
PRINT \'Hello World!\'
GO

exec sp_helptext hello
GO

exec dbo.DECRYPTSP2K \'hello\'
GO

exec sp_helptext hello
GO
----------------------------------

dbo.DECRYPTSP2K.prc
----------------------------------
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
----------------------------------------------------

'SQL' 카테고리의 다른 글

cross join 이용한 그룹 집계  (0) 2007/06/07
락 용어정리  (0) 2007/06/07
sp를 WITH ENCRYPTION 암호화 한거 풀기  (0) 2007/06/07
심심풀이 5탄  (0) 2007/06/07
심심풀이 3탄  (0) 2007/06/07
심심풀이 4.5탄  (0) 2007/06/07
좀더 흥미로운 내용이 많이 있습니다.. HOME > SQL를 확인하세요
TAG ,   
0 Trackback, 0 Comment, :
1  ... 618 619 620 621 622 623 624 625 626  ... 769 
Statistics Graph
Total : 557,403 Today : 33