Como verificar o código fonte de uma package?

DBA Geral (instalação, configuração do banco, scripts do Sql*Plus, shell scripts, batch scripts, etc...)
Responder
Avatar do usuário
heraldoaraujo
Rank: Programador Pleno
Rank: Programador Pleno
Mensagens: 41
Registrado em: Dom, 19 Fev 2012 12:10 pm

Turma boa tarde,

Queria saber quais são os meios de verificar o código fonte de uma packages. Alguém pode me ajudar?
Tinho
Rank: DBA Sênior
Rank: DBA Sênior
Mensagens: 319
Registrado em: Seg, 16 Nov 2009 4:50 pm
Localização: São Paulo - SP

Caro Heraldo,

Costumo utilizar o seguinte código, veja se lhe ajuda:

Selecionar tudo


SELECT *
  FROM DBA_OBJECTS UO
 WHERE UO.OWNER = 'SYSTUR'
   AND UO.OBJECT_TYPE IN ('PACKAGE','PACKAGE BODY','PROCEDURE')
   AND (    TRIM(UPPER(UO.OBJECT_NAME)) LIKE TRIM(UPPER('%sitef%'))
         or TRIM(UPPER(UO.OBJECT_NAME)) LIKE TRIM(UPPER('%cart%cr%dito%'))   )
   AND UO.status = 'VALID'         ;
--   AND (    TRIM(UPPER(UO.OBJECT_NAME)) LIKE TRIM(UPPER('%CLIE%')) );
--         OR TRIM(UPPER(UO.OBJECT_NAME)) LIKE TRIM(UPPER('%GEN%')) 
--         OR TRIM(UPPER(UO.OBJECT_NAME)) LIKE TRIM(UPPER('%PES%')) ),

--
-- SELECT * FROM ALL_OBJECTS WHERE
SELECT DISTINCT NAME
  FROM ALL_SOURCE 
 WHERE OWNER                = 'SYSTUR'
   AND TYPE                IN ('PACKAGE','PACKAGE BODY')--,'PROCEDURE','FUNCTION')
   AND (    TRIM(UPPER(TEXT)) LIKE TRIM(UPPER('%sitef%'))
         or TRIM(UPPER(TEXT)) LIKE TRIM(UPPER('%cart%cr%dito%'))
         /*or TRIM(UPPER(TEXT)) LIKE TRIM(UPPER('%OURO%'))*/         );

Att.,
Avatar do usuário
heraldoaraujo
Rank: Programador Pleno
Rank: Programador Pleno
Mensagens: 41
Registrado em: Dom, 19 Fev 2012 12:10 pm

Muito obrigado vou testar hoje a noite, mas funciona mesmo com uma packages criptografada, é possível?
Tinho
Rank: DBA Sênior
Rank: DBA Sênior
Mensagens: 319
Registrado em: Seg, 16 Nov 2009 4:50 pm
Localização: São Paulo - SP

Não conheço muito de criptografia no Oracle pois nunca tive a necessidade de criar, pois nas maiorias dos lugares que eu já trabalhei esta rotina já estava desenvolvida.

No entanto sei que existem packages específicas para esta finalidades, como você pode ver no seguinte link:

http://glufke.net/oracle/viewtopic.php?t=200

Att.,
Tinho
Rank: DBA Sênior
Rank: DBA Sênior
Mensagens: 319
Registrado em: Seg, 16 Nov 2009 4:50 pm
Localização: São Paulo - SP

Como me interessei pelo assunto, sugiro os seguintes links, caso queira tirar suas dúvidas sobre criptografia. Basta ver o método usado para criptografar e fazer o inverso, segue:

TDE
http://www.profissionaisti.com.br/2011/ ... com-o-tde/

Wrapper
http://www.linhadecodigo.com.br/artigo/ ... apper.aspx
http://www.devmedia.com.br/pl-sql-wrapper/4636

DBMS_CRYPTO
http://docs.oracle.com/cd/B28359_01/app ... crypto.htm
http://psoug.org/reference/dbms_crypto.html

OBFUSCATION TOOKIT/MD5
http://www.siltechconsult.com.br/silverblog/?p=29
http://www.oraclehome.com.br/2011/08/30 ... no-oracle/

Além disso, existe mais tópicos aqui no próprio site.

Abçs.,
Avatar do usuário
stcoutinho
Moderador
Moderador
Mensagens: 850
Registrado em: Qua, 11 Mai 2011 5:15 pm
Localização: são Paulo - SP

Fala Tinho!

MUITO legal as dicas que postou, mas receio que não seja possível descriptografar um package, function ou procedure que se encontre criptografada.

O objetivo da criptografia de códigos PL/SQL é o de justamente esconder a lógica do negócio de consultas como a que o HeraldoAraujo está desejando fazer.

Por exemplo, o ORACLE EBS (um ERP da ORACLE) está cheia de packages criptografadas que impedem os concorrentes de conhecerem as regras de negócio da aplicação.

A ORACLE recomenda sempre que os desenvolvedores, caso pensem em criptografar os fontes, que mantenham uma cópia descriptografada dos mesmos.

Abraços,

Sergio Coutinho
Avatar do usuário
heraldoaraujo
Rank: Programador Pleno
Rank: Programador Pleno
Mensagens: 41
Registrado em: Dom, 19 Fev 2012 12:10 pm

Bom dia turma,

Eu já previa que não era possível, como o colega de cima falou. Queria ter mesmo CERTEZA sobre esse assunto.

Muito obrigado a todos.
Tinho
Rank: DBA Sênior
Rank: DBA Sênior
Mensagens: 319
Registrado em: Seg, 16 Nov 2009 4:50 pm
Localização: São Paulo - SP

Ah entendi, vlw, muito legal isso.

É que eu estava imaginando ser uma criptografia intencional, ou seja, feita por algum desenvolvedor.

Obrigado.

Abç.
Avatar do usuário
fbifabio
Moderador
Moderador
Mensagens: 199
Registrado em: Ter, 22 Fev 2011 1:51 pm
Localização: São Paulo - SP
Contato:
Fábio Prado
www.fabioprado.net

Pessoal,

Para surpresa de todos, infelizmente é possível recuperar o código wrapped de um objeto pl/sql:
http://www.blackhat.com/presentations/b ... nnigan.pdf

[]s
Responder
  • Informação
  • Quem está online

    Usuários navegando neste fórum: Nenhum usuário registrado e 10 visitantes