Banco de Dados - Oracle

Criptografia com Wrapper

O Wrapper não é um pacote ou serviço do banco de dados Oracle, ele poderá ser encontrado nos servidores Windows, dentro da pasta Oracle Home\Bin e seu executavel é o Wrap.exe, é um aplicativo executado em MS-DOS. Por isso não se assuste, por que ele é mais simples do que pensamos.

por Rodrigo Almeida



Olá!

Hoje em dia, para proteger o código fonte e enviar à terceiros ou executar os códigos em outras empresas, usa-se os recursos de criptografia para proteger o código fonte, no Oracle, podemos encontrar esse recurso em um aplicativo externo ao banco de dados, chamado Wripper.

O Wrapper não é um pacote ou serviço do banco de dados Oracle, ele poderá ser encontrado nos servidores Windows, dentro da pasta Oracle Home\Bin e seu executavel é o Wrap.exe, é um aplicativo executado em MS-DOS. Por isso não se assuste, por que ele é mais simples do que pensamos.

As vantagens de utilizar o Wrapper são muitas:

  • Segurança nos Códigos PL/SQL;
  • Os processos de Import/Export normais aceitam as rotinas geradas pelo Wrapper;
  • Referências das variáveis Bind são carregadas ao tempo de carga;
  • Apenas os servidores Oracle são capazes de descriptografar essas rotinas, dando exclusividade ao código.

Porém, o Wrapper traz algumas desvatagens na utilização do desenvolvimento, deixando ele de fora dos projetos, pois ele não consegue trabalhar com o bloco de PL/SQL por completo, englobando todas as funções da linguagem, apenas com alguns comandos específicos:

  • Create Procedure;
  • Create Functions;
  • Create Package;
  • Create Package body.

Os demais comandos em PL/SQL são ignorados pelo aplicativo, tais como:

  • Create Index;
  • Create View;
  • Create Type;
  • Create Database Link e etc.

Por outro lado, um ponto interessante é o modo que ele trata os comentários de código, REM ou --, porque onde à essas instruções na fonte de dados, o compilador de criptografia os remove, a não ser que o desenvolvedor os inclua dentro da parte de especificações do código a ser gerado.

O modo de gerarmos códigos criptografados com Wrapper é muito simples, basta abrirmos o MS-DOS e dentro das pastas dos arquivos fontes, executar a linha de comando abaixo:

wrap iname=ra_ex.sql oname=ra_ex_s.plb

Na linha de comando, percebemos a utilização de apenas dois parâmetros, um de entrada e outro de saída dos arquivos. No parâmentro de entrada, o INAME (INPUT NAME = Nome de Entrada) é onde iremos dizer qual arquivo será criptografado, sempre com extensão .SQL, e o parâmetro de saída o ONAME (OUTPUT NAME = Nome de saída) é onde vamos dizer qual é o nome do arquivo que será gerado com extensão .PLB, esse será o resultado final, o código criptografado, caso não colocamos essa especificação, e executarmos o aplicativo, será gerado um arquivo .PLB com o mesmo nome do arquivo de entrada, essa função é padrão do Wrapper.

Para fixar os processos de criptografia do Wrapper, vamos fazer um exemplo em SQL e abrir o código gerado em PLB.

Arquivo ra_ex.sql

SQL > CREATE OR REPLACE FUNCTION FUNCIONARIO (CARGOFUNC IN VARCHAR2) IS
2

CURSOR C1 IS SELECT NOMEFUNC FROM EMPREGADOS WHERE CARGO = CARGOFUNC;

3

NOME VARCHAR2(100);

4

CONTADOR NUMBER(10) := 1;

5
BEGIN
6

DBMS_OUTPUT.ENABLE(1000);

7

FOR R1 IN C1 LOOP

8

DBMS_OUTPUT.PUT_LINE ("NUMERO DE FUNCIONARIOS : " || TO_CHAR(CONTADOR));

9

CONTADOR = CONTADOR + 1

10

END LOOP;

11

DBMS_OUTPUT.PUT_LINE ("TOTAL DE FUNCIONARIOS NESSE CARGO :" || TO_CHAR(CONTADOR));

12

REM CREDITOS DO EXEMPLO

13

DBMS_OUTPUT.PUT_LINE ("EXEMPLO POR RODRIGO ALMEIDA - www.usinabrasil.com.br")

14

RETURN CONTADOR;

15
END FUNCIONARIO;
16
/

Após passar pelo Wrapper, o código será exibido assim:

Arquivo ra_ex_s.plb

CREATE OR REPLACE FUNCTION FUNCIONARIO WRAPPED
ABCD

ABCD

0
------------------------------------
1ENABLE:
1PUT_LINE:
0
21
0
7D 45 AM 3E 95 GY 4H
BD 3W 1Q C9 F8 AG GF
0G VQ A7 32 S9 6J 1L
A1 X5 J7 51 S8 U7 ZA
1W 46 ID Z9 PA QN 4I
QV BT 6S 3K N6 DS Q7
12 J3 SY CQ ZP SE TT
6H M0 LS XW VH TK D6

Em um modo geral o código fonte do arquivo PLB será sempre maior que o SQL, porém com um criptografia em seus dados de saída.

Com a utilização dos métodos de criptografia com o Wrapper, a troca de códigos em PL/SQL entre empresas fica mais seguro e garante os créditos de desenvolvimento do script para o programador de origem. Ajundando a todos.

Espero que tenham gostado e até a próxima.

Rodrigo Almeida

Rodrigo Almeida

Rodrigo Almeida