Páginas

domingo, septiembre 26, 2010

Encriptar PL SQL

Semanas anteriores revisaba un codigo API de Oracle APPS, y para mi sorpresa estaba encriptado, ni modo!! Me quede con las ganas de echarle un ojo para ver que hacia e ingeniarmelas para solucionar un problema!! y el cual me desperto el interes para poder desencriptar mi codigo y por mas que busque y ni encontre nada pero vaya!! encontre el codigo que lo encripta.
En un blog de Oracle de un usuario, explica dos ejemplos del comando Wrap!
El ocultamiento de codigo o Encriptacion del mismo, a nivel BD Oracle es muy facil y sencillo con este comandito!! Aqui el ejemplo.
Vamos a encriptar un procedimiento. Para ello ya tenemos el código del mismo en un archivo file.sql, copiado en el servidor de la base de datos. Todo lo que tenemos que hacer es entrar en la consola y ejecutar:
wrap edebug=wrap_new_sql iname=file.sql

PL/SQL Wrapper: Release 9.2.0.8.0- Production on Thu Aug 13
11:38:30 2009 Copyright (c) Oracle Corporation 1993, 2001. All Rights Reserved.

Processing file.sql to file.plb
Nota: El flag edebug=wrap_new_sql es necesario para poder soportar el nuevo compilador de sql y corregir un bug existente con algunas sintaxis de sql avanzado.
La salida, es el archivo encriptado file.plb, el cual ahora podemos compilar en SQL*plus.
SQL> @file.plb

Procedure created.
Listo. El código del procedure en la base de datos no es más legible, ya sea usando cualquier programa de desarrollo, paquete Oracle o vista del diccionario. Sin embargo es perfectamente ejecutable como cualquier otro procedimiento.

No hay comentarios: