Wednesday, September 22, 2010

PL/SQL - wrapping/obfuscating objects


Preciso escrever um post um pouco mais detalhado,mas por hoje vou deixar algumas linha de código por aqui.Acho que deve ajudar.

A palavra "Wrap" tem alguns significados dentre eles embrulhar ou envolver algo ,normalmente para protegê-lo.
No nosso caso iremos proteger nosso codigo.

Pois bem " wrapping" é diferente de "encrypting" .Uma vez tendo um wrapped object você não consegue mais desfaze-lo* .
Para trabalhar com criptografia existem outros pacotes no Oracle que não iremos entrar em detalhe agora,mas se você procura por isso pode encontrar alguns detalhes em :

Usando wrap utility :

Tenho um arquivo ".sql" que contem o codigo da minha procedure em pl/sql.

$ ls |grep my_p
my_proc.sql
jccorrea|arvato28 ~/Documents
$
jccorrea|arvato28 ~/Documents
$ wrap iname=my_proc.sql

PL/SQL Wrapper: Release 11.2.0.1.0- Production on Thu Sep 23 19:01:15 2010

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

Processing my_proc.sql to my_proc.plb
jccorrea|arvato28 ~/Documents
$ more my_proc.plb
CREATE OR REPLACE PROCEDURE my_procfoo wrapped
a000000
1
abcd
abcd
abcd
abcd
abcd
abcd
abcd
abcd
abcd
abcd
abcd
abcd
abcd
abcd
abcd
7
43 79
If0FucdLbueE4p3U0uRQWu+lr9Awg5nnm7+fMr2ywFyFO1+WFpeu3NlywcB0iwlp523+mYFc
pdKZUjK/ssKLwMAy/tLWmboxxXXFVMe+kr5UgqampybzvA==

/
jccorrea|arvato28 ~/Documents
$

Feito isso você pode rodar o arquivo my_proc.plb para criar a procedure.

Usando a package DBMS_DDL

Usando a package dbms_ddl podemos usar o objeto create_wrapped para fazer a mesma coisa que fizemos acima :

SQL> declare
my_ddl varchar2(150) ;
begin
my_ddl := 'create or replace procedure my_procfoo as v_num integer; begin v_num := 5 ; end;' ;
dbms_ddl.create_wrapped(my_ddl);
end ; 2 3 4 5 6
7 /

PL/SQL procedure successfully completed.

Elapsed: 00:00:00.01
SQL> select TEXT
from all_source
where name = 'MY_PROCFOO'
and type = 'PROCEDURE' 2 3 4
5 /

TEXT
--------------------------------------------------------------------------------
procedure my_procfoo wrapped
a000000
b2
abcd
abcd
abcd
abcd
abcd
abcd
abcd
abcd

TEXT
--------------------------------------------------------------------------------
abcd
abcd
abcd
abcd
abcd
abcd
abcd
7
3f 75
IpCGLNo/BDIha28AwTNsfGHp6Cgwg5nnm7+fMr2ywFyFO1+WFpeu3Nly6rh0K+dt/pmBXKXS
mVIyv7LCK7jAMv7S1p6jMcV1xVTVU5K+VIKmphHX89g=

TEXT
--------------------------------------------------------------------------------


Elapsed: 00:00:00.06
SQL>

Em um próximo post trateremos o assunto de criptografia !

Abs,

JC

/
jccorrea|arvato28 ~/Documents
$

Feito isso você pode rodar o arquivo my_proc.plb para criar a procedure.


















No comments: