Oracle PL / SQL 코드 복호화

Oracle 의 PL / SQL 코드 암호 화 를 통 해 업무 논 리 를 보호 하 는 것 은 어떤 경우 에 매우 유용 하 다. 간단하게 정리 했다.
               1. Wrap 명령 으로 암호 화
               2. dbms 통과 하기ddl 패 키 지 는 암호 화 에 사 용 됩 니 다.
               3. Oracle 암호 화 원리
               4. 암호 화 코드 의 해독
  
1. Wrap 명령 으로 암호 화   
     1. 예 파일 pro 만 들 기wrap.sql
create or replace procedure pro_wrap is
begin
   dbms_output.put_line('Wrap Demo');
end pro_wrap;
   2. wrap 명령 을 통 해 pld 암호 화 파일 생 성
     wrap iname=c:\pk\pro_wrap.sql oname=c:\pk\pro_wrap.plb
c:\pk>wrap iname=c:\pk\pro_wrap.sql oname=c:\pk\pro_wrap.plb

PL/SQL Wrapper: Release 11.2.0.1.0- 64bit Production on     3   25 21:58:20 2014

Copyright (c) 1993, 2009, Oracle.  All rights reserved.

Processing c:\pk\pro_wrap.sql to c:\pk\pro_wrap.plb
  3. 암호 화 된 파일 prowrap. pld, 저장 프로시저 생 성   
c:\pk>sqlplus / as sysdba

SQL*Plus: Release 11.2.0.1.0 Production on     3  25 22:17:19 2014

Copyright (c) 1982, 2010, Oracle.  All rights reserved.


   :
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options

SQL> set serveroutput on
SQL> @c:\pk\pro_wrap.plb

     。

SQL> exec pro_wrap;
Wrap Demo

PL/SQL        。
    exec 테스트 를 통 해 저장 과정 이 성공 적 으로 실 행 된 것 을 볼 수 있 습 니 다.
 4. 코드 가 암호 화 되 었 는 지 다시 확인 합 니 다.
    
SQL> set newpage none
SQL> set heading off
SQL> set space 0
SQL> set pagesize 0
SQL> set trimout on
SQL> set trimspool on
SQL> set linesize 2500
SQL> SELECT dbms_metadata.get_ddl('PROCEDURE','PRO_WRAP') FROM dual;

  CREATE OR REPLACE PROCEDURE "SYS"."PRO_WRAP" wrapped
a000000
354
abcd
abcd
abcd
abcd
abcd
abcd
abcd
abcd
abcd
abcd
abcd
abcd
abcd
abcd
abcd
7
50 8d
cKb3/QEp0AIWOH/IyhxS2ffLbrUwg5nnm7+fMr2ywFwWFpfQlpbyVmmldIvAwDL+0oYJaWm4
UpuySv4osr3nsrMdBjAsriTqsoG4yGWcd2jPMi720eokHwKpyrXOpcrGpvY5pg2Gb0c=
  암호 화 된 코드 임 을 알 수 있 습 니 다.
둘. dbms 통과 하기ddl 패 키 지 는 암호 화 에 사 용 됩 니 다.
   Wrap 는 명령 행 방식 이 고 dbmsddl 패 키 지 는 10g 에서 제공 하기 시작 한 코드 암호 화 패키지 로 코드 에서 호출 할 수 있 고 더욱 유연 합 니 다.
   desc dbms 로dll 은 구체 적 인 프로 세 스 이름과 파 라 메 터 를 볼 수 있 습 니 다.간단 한 예 를 들 어 코드 를 암호 화 합 니 다.
      
SQL> declare
  2    v_sql varchar2(1024);
  3    v_wrap varchar2(1024);
  4  begin
  5
  6  v_sql := 'create or replace procedure pro_wrap is
  7     begin
  8        dbms_output.put_line(\''Wrap Demo\'');
  9     end pro_wrap; ';
 10
 11     select dbms_ddl.wrap(v_sql)  into v_wrap from dual;
 12     dbms_output.put_line('==========================');
 13     dbms_output.put_line(v_sql);
 14     dbms_output.put_line('==========================');
 15     dbms_output.put_line(v_wrap);
 16  end;
 17  /
==========================
create or replace procedure pro_wrap is
        begin
           dbms_output.put_line(\'Wrap Demo\');
        end pro_wrap;
==========================
create or replace procedure pro_wrap wrapped
a000000
354
abcd
abcd
abcd
abcd
abcd
abcd
abcd
abcd
abcd
abcd
abcd
abcd
abcd
abcd
abcd
7
56 96
uO8D8aP98Qo6Xpynkx0It0gfVwQwg5nnm7+fMr2ywFwWFpfQlpbyVmmldIsG9cAy/tKGBsNp
abhSm7JK/iiyveeysx0GMCyuJOrwBIG4yPKcd2jkBDIu9tHc6iQfAqnKtc6lysam9kQ5phYZ
H50=



PL/SQL        。
    직접 암호 화 된 전후의 코드 차 이 를 볼 수 있 습 니 다.
  3. Oracle 암호 화 원리
    Oracle 10g PL / SQL 의 wrap 과정 은 원본 코드 를 lz 압축 lzstr 한 다음 에 압축 데 이 터 를 SHA - 1 연산 하여 40 비트 의 암호 화 문자열 shstr 를 얻 은 다음 에 암호 화 문자열 과 압축 문자열 을 shstr + lzstr 로 연결 한 다음 에 맞 춘 문자열 을 Oracle 쌍 문자 변환 (전환 표) 하고 마지막 으로 변 환 된 문자열 을 base 64 인 코딩 하 는 것 이다.최종 적 으로 wrap 의 암호 화 문자열 을 얻 었 습 니 다.
  4. 암호 화 코드 의 해독
     훌륭 한 문장 을 보다
   Oracle 10g unwrap 기술 분석 에 의 해 GENXOR   http://blogs.360.cn/blog/oracle10g-unwrap%E6%8A%80%E6%9C%AF%E5%88%86%E6%9E%90-by-genxor/
MAIL: [email protected]
BLOG:http://blog.csdn.net/xcl168

좋은 웹페이지 즐겨찾기