Red de conocimiento informático - Conocimiento informático - Cómo descifrar el proceso de cifrado Oracle Warp

Cómo descifrar el proceso de cifrado Oracle Warp

El principio del cifrado de Oracle es comprimir primero el código fuente lz en lzstr, luego realizar la operación SHA-1 en los datos comprimidos para obtener la cadena cifrada de 40 bits shstr, y luego concatenar la cadena cifrada y la cadena comprimida para obtener shstr lzstr Y luego realice la conversión de doble carácter de Oracle (tabla de conversión) en la cadena empalmada. Finalmente, la cadena convertida está codificada en base64 y finalmente se obtiene la cadena cifrada envuelta.

La extensión de archivo predeterminada para input_file es sql. El nombre predeterminado de archivo_salida es archivo_entrada.plb. Por tanto, estos comandos son equivalentes.

wrapiname=/mydir/myfile

wrapiname=/mydir/myfile.sql oname=/mydir/myfile.plb

Este ejemplo especifica un input_file diferente. la extensión de archivo especifica un nombre diferente para el archivo_salida:

wrapiname=/mydir/myfile.src oname=/yourdir/yourfile.out

Los pasos para usar Wrap son los siguientes:< / p>

(1) Guarde la declaración SQL que queremos cifrar como texto SQL.

(2) Utilice wrap para procesarlo, especifique el sql de entrada, que es nuestra primera pregunta, y luego especifique la ruta y el nombre del archivo de salida. De forma predeterminada, la extensión de salida es plb.

(3) Ejecute la segunda parte del sql empaquetado, es decir, el archivo plb, y luego cree el objeto.

Ejemplo 1: función de ajuste

--Función

CREAR O REEMPLAZAR FUNCIÓN F_DAVE (

n int

) REGRESAR cadena

ES

COMENZAR

SI n = 1 ENTONCES

REGRESAR '¡Dave es DBA! ';

ELSIF n = 2 THEN

RETURN '¡Dave viene de AnQing!';

ELSE

RETUR 'Dave viene de HuaiNing! ';

END IF;

END;

/

SYS@dave2(db2)gt; seleccione F_DAVE(4) de dual; ;

F_DAVE(4)

------------------ ------------- --- ----------------------------------------------- ---

¡Dave es de Huaining!

Por cierto: alguien en el grupo me preguntó hoy por qué Anqing está incluido en los ejemplos de mi blog, porque soy de Huaining y Anqing.

[oracle@db2 ~]$ pwd

/home/oracle

[oracle@db2 ~]$ cat dave.sql

CREAR O REEMPLAZAR FUNCIÓN F_DAVE (

n int

) RETURNstring

ES

BEGIN

SI n = 1 ENTONCES

RETURN '¡Dave es DBA!';

ELSIF n = 2 ENTONCES

RETURN '¡Dave viene de AnQing!'.

ELSE

REGRESAR '¡Dave es de Huaining! ';

END IF;

END;

/

[oracle@db2 ~]$ wrap iname=dave.sql

PL/ SQL Wrapper: Versión 10.2.0.1.0 - Producción el jueves 18 de agosto a las 22:59:14 de 2011

Copyright (c) 1993, 2004, Oracle.

Procese dave.sql a dave.plb

[oracle@db2 ~]$ ls

bifile.bbd dave.plb dave.sql Desktop log.bbd

[oracle@db2 ~]$ cat dave.

CREAR O REEMPLAZAR FUNCIÓN F_DAVE envuelto

a000000

1

abcd

abcd

abcd

abcd

abcd

abcd

abcd

abcd

abcd

abcd

abcd

abcd

abcd

abcd

abcd

abcd

abcd

abcd

abcd

abcd

abcd

abcd

abcd

8

10de7

S9NWrpt8q6tkKEMxCcfYJz2aLF4wxDQLZ4VfC9AkE6OnV4ydypXGhveHcDg8UXy98WIg6xR

rtc/BRdQJjutbna/9 g0LlaSx87/znV y926S1AeC0IRi/tjPJTyvJereDdk8mftMo8QMjV

fw0xXn0zVagAawwNVhSAiy/JPTMKkrBkC5ruMwQSTe6JQNq7Q2QtJV0hgQ ou0 rYuet4/gJ5B

wAj75ph6EA==

/

SYS@dave2(db2)gt; @dave.plb

-- Llame a la función nuevamente y se ejecuta normalmente:

SYS@dave2(db2)gt; (4) de dual;

F_DAVE(4)

--------------------- ------- ------------------------------------------- -------

¡Dave es de Huaining!

--Mire el código fuente de la función, está cifrado:

SYS@dave2(db2)gt; seleccione texto de dba_source donde nombre='F_DAVE'; p>

TEXTO

------------------------------------- ----- ----------------------------------------

FUNCTION F_DAVE envuelto

a000000

1

abcd

abcd

abcd

abcd

abcd

abcd<

abcd

abcd

abcd

abcd

TEXTO

--------------------------------- ---- -----------------------

---------- -----------

abcd

abcd

abcd

abcd

abcd

abcd

abcd

8

10d e7

S9NWrpt8q6tkKEMxCcfYJz2aLF4wgxDQLZ4VfC9AkE6OnV4ydypXGhveHcDg8UXy98WIg6xR

crtc/BRdQJjutbna/9 g0LlaSx87/znV y926S1AeC0IRi/ tjPJTyvJereDd k8mft Mo8QMjV

TEXTO

-------------- ------------------------------------------------- - ---------------

fw0xXn0zVagAawwNVhSAiy/JPTMKkrBkC5ruMwQSTe6JQNq7Q2QtJV0hgQou0rYuet4/gJ5B

wAj75ph6EA==