Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Декодирование хранимой процедуры / 14 сообщений из 14, страница 1 из 1
22.08.2002, 07:56:31
    #32045068
kosm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Декодирование хранимой процедуры
Подскажите пожалуйста. Ранее была написана хранимая процедура with encryption. Человек,писавший ее давно уволился и найти его нет никакой возможности. Подскажите как можно увидеть ее код на T-SQL?
...
Рейтинг: 0 / 0
22.08.2002, 08:09:15
    #32045069
Guest111
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Декодирование хранимой процедуры
Вот что недавно предложил Robert Djabarov:
Here's the code I got somewhere. Hope it helps.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
If object_id('sp_DecryptObject') Is Not Null
   Drop Procedure sp_DecryptObject
GO
 /************************************************/ 
 /* REVISED REC'D 5/21/98                        */ 
 /* sp_decryptobject        Tom Sager 01/26/98   */ 
 /*                                              */ 
 /* Decrypts objects (views, procedures & trigs) */ 
 /* created with the WITH ENCRYPTION option.     */ 
 /*                                              */ 
 /* Uses the encrypt() built-in function to find */ 
 /* a plaintext string that encrypts to the same */ 
 /* value as stored in the text column of the    */ 
 /* syscomments table.                           */ 
 /*                                              */ 
 /************************************************/ 
Create Procedure sp_DecryptObject (
   @objname varchar( 30 ) = Null )
WITH ENCRYPTION
AS
   SET NOCOUNT ON

   declare @errmsg    varchar( 80 )
   declare @encrtext  varchar( 255 )
   declare @decrtext  varchar( 255 )
   declare @testtext  varchar( 255 )
   declare @printline varchar( 255 )
   declare @textlen   int
   declare @lup       int
   declare @match     char( 1 )
   declare @testchar  smallint
   declare @begblk    smallint
   declare @endblk    smallint

   if (select count(*) from sysobjects where name = @objname) =  0 
   begin
      select @errmsg = 'Object '+@objname+' not found in database '+DB_NAME()
      print @errmsg
      return  1 
   end

   if (select count(*) from sysobjects t1, syscomments t2 where t1.name = @objname and t1.id = t2.id and t2.texttype &  4  !=  0 ) =  0 
   begin
      select @errmsg = 'Object '+@objname+' is not encrypted in database '+DB_NAME()
      print @errmsg
      return  1 
   end

   DECLARE comments_cursor CURSOR for
      select t1.text from syscomments t1, sysobjects t2
         where t1.id = t2.id and t2.name = @objname order by t1.colid

   OPEN comments_cursor

   FETCH NEXT FROM comments_cursor INTO @encrtext

   WHILE (@@fetch_status <> - 1 )
   BEGIN
      IF (@@fetch_status <> - 2 )
      BEGIN
         select @decrtext = REPLICATE(' ',  255 )
         select @textlen = DATALENGTH(@encrtext)
         select @lup =  1 
         select @match = 'n'
         while (@lup <= @textlen)
         begin
            select @testchar =  0 
            select @match = 'n'
            while (@match = 'n')
            begin
               select @decrtext = STUFF(@decrtext,@lup, 1 ,CHAR(@testchar))
               select @testtext = encrypt(@decrtext)
               if ASCII(SUBSTRING(@testtext,@lup, 1 )) = ASCII(SUBSTRING(@encrtext,@lup, 1 ))
               begin
                  select @match = 'y'
               end
               select @testchar = @testchar +  1 
               if (@testchar >  255 )
               begin
                  print 'Error...no match found'
                  return  1 
               end
            end
            select @lup = @lup +  1 
         end
         select @begblk =  1 
         select @endblk =  1 
         while (@endblk <= @textlen)
         begin
            if (substring(@decrtext,@endblk, 1 ) = 0x0a)
            begin
               select @printline = @printline + SUBSTRING(@decrtext,@begblk,@endblk-@begblk+ 1 )
               print @printline
               select @begblk = @endblk +  1 
               select @endblk = @begblk
               select @printline = NULL
            end
            select @endblk = @endblk +  1 
         end
         select @printline = @printline + SUBSTRING(@decrtext,@begblk,@endblk-@begblk+ 1 )
      END
      FETCH NEXT FROM comments_cursor INTO @encrtext
   END
   print @printline
   CLOSE comments_cursor

   DEALLOCATE comments_cursor
GO
...
Рейтинг: 0 / 0
22.08.2002, 11:19:12
    #32045116
Shura_M
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Декодирование хранимой процедуры
В чем же тогда радость кодирования процедуры если любой ее так просто сможет раскодировать?
...
Рейтинг: 0 / 0
22.08.2002, 13:09:54
    #32045191
akuz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Декодирование хранимой процедуры
А можно интересно текст хранимой процедуры вообще из базы удалить, она же типа откомпилирована?
...
Рейтинг: 0 / 0
22.08.2002, 13:20:36
    #32045204
snake
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Декодирование хранимой процедуры
To akuz
Перестартуешь сервак - потеряешь проц.
...
Рейтинг: 0 / 0
22.08.2002, 14:29:52
    #32045242
Tulkin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Декодирование хранимой процедуры
А кто-нить это проверял?
Я проверил- не работает.
Да и не могу понять,как оно будет работать,если ф-я encrypt() возвращает всего-навсего аски-код символа в хексе с двумя нулями впереди.
...
Рейтинг: 0 / 0
22.08.2002, 14:39:44
    #32045246
Glory
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Декодирование хранимой процедуры
Насколько я помню Robert Djabarov предлагал данную процедуру для версии 6.5
...
Рейтинг: 0 / 0
22.08.2002, 15:51:24
    #32045276
akuz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Декодирование хранимой процедуры
Да да, но на 6.5 она как раз и не работала.
...
Рейтинг: 0 / 0
22.08.2002, 17:14:10
    #32045305
Glory
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Декодирование хранимой процедуры
Лично я пользуюсь dOMNAR's SQL Server SysComments Decryptor-ом. Для 7 и 2000-го годится.
...
Рейтинг: 0 / 0
23.08.2002, 12:36:25
    #32045481
kosm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Декодирование хранимой процедуры
Подскажите,а возможно вообще скрыть SP, чтобы только выдавалось сообщение,что нельзя,мол смотреть...
...
Рейтинг: 0 / 0
23.08.2002, 13:19:39
    #32045512
Glory
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Декодирование хранимой процедуры
чтобы только выдавалось сообщение,что нельзя,мол смотреть

Кому выдавалось ? Рядовому пользователю и пользователю - администратору сервера ?
...
Рейтинг: 0 / 0
23.08.2002, 14:55:16
    #32045569
akuz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Декодирование хранимой процедуры
To Glory:

А где можно найти dOMNAR's SQL Server SysComments Decryptor
...
Рейтинг: 0 / 0
23.08.2002, 15:10:43
    #32045578
Shura_M
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Декодирование хранимой процедуры
www.geocities.com/d0mn4r/dSQLSRVD.html
...
Рейтинг: 0 / 0
23.08.2002, 15:33:45
    #32045592
akuz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Декодирование хранимой процедуры
Спасибо за наводку.
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Декодирование хранимой процедуры / 14 сообщений из 14, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]