Pregunta

Oracle Forms10g proporciona una herramienta para convertir los módulos de Oracle Forms, del formato binario (.FMB) con el que trabaja Oracle Forms Builder, al formato de texto (.FMT).

Por ejemplo, si crea un módulo llamado mymodule.fmb con Oracle Forms Builder y luego invoca

frmcmp module=mymodule.fmb script=yes batch=yes logon=no

desde la línea de comando, la utilidad Oracle Forms Convert creará un archivo llamado mymodule.fmt a partir del archivo mymodule.fmb . Se supone que este archivo de texto es "legible" por humanos, excepto el código PL / SQL de disparadores y unidades de programa, que está codificado.

Por ejemplo, este es un fragmento de un archivo .FMT con un fragmento de código PL / SQL codificado

DEFINE  F50P
BEGIN
   PP = 10
   PI = 3
   PN = 464
   PL = 1138
   PV = (BLONG)
<<"
00000049 00800000 00440000 00000000 00000031 0000000d 00000002 a0011519 
00002420 0000045e 001f0000 00165030 5f32335f 4f43545f 32303038 31365f33 
375f3039 00000006 42454749 4e0a0000 0042676f 5f626c6f 636b2820 27504149 
53455327 20293b0a 69662066 6f726d5f 73756363 65737320 7468656e 0a096578 
65637574 655f7175 6572793b 0a656e64 2069663b 00000005 0a454e44 3b000000 
1d574845 4e2d4e45 572d464f 524d2d49 4e535441 4e434520 28466f72 6d290000 

¿Alguna vez ha intentado decodificar este tipo de archivos para poder extraer el código PL / SQL de un formulario?

Sería muy útil poder buscar una cadena en el código PL / SQL de muchos archivos .FMT, en lugar de usar Oracle Forms Builder para abrir manualmente cada uno de los archivos .FMB correspondientes y buscar la cadena en cada uno de ellos.

¡Gracias!

¿Fue útil?

Solución

Junto con la API, tenga en cuenta que si está trabajando al comienzo de este proceso, probablemente será mejor que genere la versión XML que la versión FMT. El FMT es un formato antiguo que se mantiene por compatibilidad con versiones anteriores, y herramientas como los formularios recientemente anunciados - > El convertidor Oracle APEX querrá el XML. También es más fácil de leer.

En " Formularios 10g versión 1 " (9.0.4) el convertidor XML es un programa de línea de comando separado. formas2xml. Creo que eso sigue siendo cierto para 10.1

Además, el XML es más fácil de leer e interpretar.

Otros consejos

Los bytes son solo valores hexadecimales de los caracteres. por ejemplo: tomar la cuarta línea y ponerla en el siguiente código de Python:

[chr(x) for x in [0x53,0x45,0x53,0x27 ,0x20,0x29,0x3b,0x0a ,0x69,0x66,0x20,0x66 ,0x6f,0x72,0x6d,0x5f ,0x73,0x75,0x63,0x63 ,0x65,0x73,0x73,0x20 ,0x74,0x68,0x65,0x6e ,0x0a,0x09,0x65,0x78]]

da el siguiente resultado:

['S', 'E', 'S', "'", ' ', ')', ';', '\n', 'i', 'f', ' ', 'f', 'o', 'r', 'm', '_', 's', 'u', 'c', 'c', 'e', 's', 's', ' ', 't', 'h', 'e', 'n', '\n', '\t', 'e', 'x']

que es formas reconocibles pl / sql. Por lo tanto, parece que no sería demasiado trabajo crear un script que tomaría un directorio de archivos FMT y produciría los archivos correspondientes con texto que podría buscarse.
¡Diviértete!

Oracle Forms 9i y posteriores tienen una API de programación que le permite hacer exactamente lo que describe. Necesitará revisar su documentación de Formularios para hacer esto, pero puede ser más rápido que intentar extraer cadenas binarias.

Si está dispuesto a pagar por una herramienta existente, use lo siguiente:

http://www.orcl-toolbox.com/

Sus formulariosAPI y FormsTools le permiten hacer extracciones, diferencias, cambios y actualizaciones a sus formularios.

De acuerdo con esto página el autor tiene un script en perl para volver a convertir el hex a texto ASCII (dice que le envíe un correo electrónico y lo enviará)

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top