Oracle - Ayuda en exportación/encriptación Oracle

 
Vista:

Ayuda en exportación/encriptación Oracle

Publicado por Carlos (1 intervención) el 15/09/2006 16:27:09
Buenas a todos

Me ha caido un encarguito algo peculiar, y es que me han pedido que encripte todos los paquetes que hay en el cliente para que éste no tenga acceso a la información... en fin cosas de empresa.

El caso es que tenemos algo así como 750 paquetes y hacerlos uno por uno pues... me pueden dar las uvas.

Actualmente tengo un script que me está obteniendo todas las líneas que se obtienen de los paquetes, viene a ser algo así:

DECLARE
CURSOR c_body IS
SELECT DISTINCT NAME, COUNT(line) lineas
FROM user_source
WHERE TYPE IN ('PACKAGE')
GROUP BY NAME;

CURSOR c_line_body (nombre user_source.NAME%TYPE,
linea user_source.line%TYPE) IS
SELECT text
FROM user_source us
WHERE us.TYPE IN ('PACKAGE')
AND us.NAME = nombre
AND us.line = linea;

linea VARCHAR2(4000);

BEGIN

FOR i_cursor IN c_body LOOP
FOR i_indice IN 1..i_cursor.lineas LOOP
FOR j_cursor IN c_line_body(i_cursor.NAME, i_indice) LOOP

INSERT INTO x_tablaPrueba_carlos VALUES(j_cursor.text);

END LOOP;
END LOOP;
END LOOP;
END;

Luego lo que hago es hacer un select * from x_tablaPrueba_carlos y el resultado lo guardo en el spool y lo meto en un archivo, ya que al ser las líneas tan largas no puedo usar el dbms_output.put_line para ver lo que ha almacenado en j_cursor.

Este código me almacena en la tabla x_tablaPrueba_carlos todas las líneas que describen todos los paquetes que hay en el esquema.

Bien, lo que pregunto a esta comunidad, se podría hacer de alguna manera (sin crear 700 tablas) algo similar para que me cree un archivo por cada especificación de paquete de mi esquema? o tal y como me temo no me va a quedar más remedio que parsear el archivo de salida e ir creando los archivos individuales manualmente?

De antemano muchas gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Ayuda en exportación/encriptación Oracle

Publicado por Rodolfo Reyes (445 intervenciones) el 18/09/2006 15:32:26
wrap.exe

wrap es un utilitario de Oracle que simplemente coloca el codigo fuente en un codigo "no entendible", con el sencillo proposito de proteger la propiedad intelectual.

En una oportunidad se reviso aca en mi compañia la posibilidad de implementarlo para manejar el tema de los pases a producción.

Sintaxis
wrap iname=pp.sql oname=oo.plb
iname: archivo original
oname: archivo que contendra el codigo no entendible.

Te explico con un ejemplo:
1) creas un package llamado pp.sql:

CREATE OR REPLACE PACKAGE hagf.prueba AS
PROCEDURE INCLUIR_SIS (param1 IN VARCHAR2);
END prueba;
/

CREATE OR REPLACE PACKAGE BODY hagf.prueba AS
PROCEDURE INCLUIR_SIS (cparam1 VARCHAR2) IS
v_date date;
BEGIN
SELECT to_date('130904','ddmmyy')
INTO v_date
FROM dual;
END;
END prueba;
/

2) Ahora aplicas el utilitario:
wrap iname=pp.sql oname=oo.sql
Esta es la salida:
hagf@crow:/prueba$ wrap iname=pp.sql oname=oo

PL/SQL Wrapper: Release 8.1.7.4.0 - Production on Mon Sep 13 19:04:49 2004

Copyright (c) Oracle Corporation 1993, 2000. All Rights Reserved.

Processing pp.sql to oo.plb

3) Ahora si al editar el programa oo.plb podras aclarar de que se trata:
--
--
--
CREATE OR REPLACE PACKAGE hagf.prueba wrapped
0
abcd
abcd
abcd
abcd
abcd
abcd
abcd
abcd
abcd
abcd
abcd
abcd
abcd
abcd
abcd
3
9
8106000
1
4
0
5
2 :e:
1PACKAGE:
1PRUEBA:
1INCLUIR_SIS:
1PARAM1:
1VARCHAR2:
0

0
0
13
2
0 a0 1d 97 9a 8f a0 b0
3d b4 55 6a a0 :2 aa 59 58
"oo.plb" 214L, 1908C 1,1 Top
--
--
--

4) Ahora simplemente corres oo.plb:
hagf@crow:/prueba$ sqlplus hagf/hagf @oo.plb

SQL*Plus: Release 8.1.7.0.0 - Production on Mon Sep 13 19:07:25 2004

(c) Copyright 2000 Oracle Corporation. All rights reserved.

Connected to:
Oracle8i Enterprise Edition Release 8.1.7.4.0 - Production
With the Partitioning option
JServer Release 8.1.7.4.0 - Production

Package created.

Package Body created.

En la Base de datos con cualquier herramienta visual:Tora, Toad, Enterprise Manager, SqlNavegator, etc. Puedes editar y veras justamente caracteres como los mostrados en el paso 3.
Tan sencillo como resguardar el fuente(pp.sql) y ya queda "protegido" el fuente, ya nadie podra editar o modificar el codigo. A manera de proteccion intelectual del desarrollo es valido, pero tambien es valido como procedimiento de seguridad que tipifique que no se va a tocar el codigo fuente, sin previa autorizacion.

Para finalizar te invito a revizar mediante herramientas (Tora, Toad, Eterprisa Manager, otros) los Procedimeintos almacenados del esquema "sys" de cualquier base de datos(Por lo menos 7.x.x.x / 8.x.x.x) y podras constatar que a ellos se le ha aplicado el utilitario "wrap".

Te recomiendo que revises la siguiente pagina en la web, esta muy bien explicado:
"http://www.databasejournal.com/features/oracle/article.php/3382331"


Una aclaración final, tienes que guardar en algun lado una copia del codigo fuente, porque no he encontrado modo de recuperar el codigo fuente despues de haber hecho el wrap.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar