Crear patrones personalizados

Top  Previous  Next

Usted mismo podrá crear sus propios patrones.

Ejemplo de patrón de análisis de un archivo AVI con comentarios.

La sintaxis de descripción de patrón es similar a la del lenguaje XML. La carpeta en la que es necesario colocar los archivos se especifica en el pestaña Menú principal del cuadro de diálogo Configuración.

Estructura de patrón

Encabezado de patrón

Cada patrón comienza con un encabezado estándar

<?xml version="1.0" encoding="utf-8"?>

Sección template

Cada patrón comienza con una sección que proporciona el nombre del patrón que se mostrará en el panel datos analizados.

Atributos:

name 

Especifica el nombre del patrón mostrado en el panel datos analizados

Ejemplo:

<template name="AVI File LIST">

........

</template>

Sección signature

Atributos:

align <positive integer> 

Especifica si la dirección de estructura de datos está alineada (por ejemplo, por un sector: 512)

Esta sección contiene elementos field con códigos hexadecimales de la firma. El atributo offset especifica su desplazamiento desde el inicio del registro. La longitud del campo es equivalente al número de códigos hexadecimales.

Ejemplo:

<signature align="1">

<field offset="0">46 49</field>

<field offset="2">4c 45</field>

</signature>

Sección section

Estas secciones contienen todas las expresiones y operaciones necesarias en el patrón para analizar los datos. En el panel datos analizados se muestran los nombres de secciones. De hecho, las secciones son objetos virtuales que se utilizan para agrupar fields (campos) conectados de manera lógica. Las secciones se pueden anidar.

En el panel datos analizados no se muestra la sección principal.

Esta sección contiene elementos field que son los verdaderos objetos de datos. Los nombres de field se muestran en el panel datos analizados junto a sus valores.

Atributos:

name 

Especifica el nombre del patrón que se muestra en el panel datos analizados

Ejemplo:

<section name="JUNK">

 ....

</section>

Lista de todos los objetos en patrones

Tipos de datos (en field)

integer

Subtipos:

int8

int16

int32

int64

uint8

uint16

uint32

uint64

uintX

Atributos:

endian: (be | le | system) 

Opcional. Por defecto: system.

base: (decimal | hex | octal) 

Opcional. Especifica la representación de datos. Por defecto: decimal.

as-offset: <expression> 

Opcional. Especifica que este campo es un desplazamiento y su valor se debe evaluar utilizando la expresión. Una variable especial this devuelve el valor de este campo.

purpose: (offset | rsector |sector | cluster | rcluster) 

Opcional. Especifica el tipo de resultado de expresión as-offset . En caso de que este atributo esté presente, el atributo será necesario si el valor del desplazamiento difiere del valor de este campo (variable this).

rsector y rcluster son desplazamientos relativos a la posición absoluta del inicio del patrón.

assigned-template: <TemplateName> 

Especifica el nombre del patrón vinculado con este campo. Se omite en caso de que los atributos as-offset o purpose no estén especificados.

var: <Name> 

Opcional. Especifica el nombre bajo el que se puede acceder al valor de este campo en expresiones.

 

binary

Atributos:

display-encoding: (hex | binary) 

Opcional. Por defecto: hex.

size: <bytes> 

Obligatorio.

 

char

Atributos:

size: <bytes> 

Obligatorio.

codepage: (ansi | oem | utf8 | utf16)

Opcional. Especifica la página de códigos que se está utilizando. Por defecto: ansi.

 

filetime

Muestra la hora en formato Win32 (64 bits)

 

unixtime

Muestra la hora en formato Unix (segundos desde 01/01/1970)

 

filetime

Muestra la hora en formato DOS (fecha: "hiword", hora: "loword")

 

bits

Atributos:

size: <bytes> 

Obligatorio.

pos: <comma separated list of bit positions> 

Obligatorio. Especifica las posiciones de bit en un bloque de datos.

Comandos

goto

Especifica un salto a un desplazamiento especificado (absoluto o relativo)

Atributos:

address: <expression> 

Especifica una dirección absoluta a la que desplazarse.

offset: <expression> 

Especifica un desplazamiento relativo.

Siempre se debe especificar sólo un atributo.

 

if

Evalúa la condición especificada en el atributo test y, si la condición es verdadera, lee los campos especificados en esta etiqueta.

Atributos:

test: <expression> 

Establece una condición para la prueba.

 

repeat

Lee los campos especificados en la etiqueta hasta que la condición de salida sea igual a 0 o un número de veces especificado

Atributos:

count: <expression> 

<expression> se evalúa una vez en el momento de entrar en el bloque. Los elementos internos se leen un número de veces especificado.

test: <expression> 

<expression> se evalúa en el momento de entrar en el bloque. Similar a la construcción while(...) {}de C++ .

test: <expression>

<expression> se evalúa en el momento de salir del bloque. Similar a la construcción do {} while(...) de C++.

 

setvar

Establece el valor de una variable interna. Como ejemplo, este comando es conveniente para almacenar el desplazamiento actual. El valor del desplazamiento actual se almacena en una variable offset predeterminada.

Atributos:

var: <string> 

Especifica el nombre de la variable.

expr: <expression> 

Especifica una expresión cuyo resultado se asignará a la variable.

Expresiones

Las expresiones en los patrones son expresiones aritméticas cuya sintaxis es similar a la del lenguaje C incluido el procesamiento de operaciones.

Son compatibles las siguientes operaciones:

+ - * / & | > < <= >= != == || &&

Variables predefinidas

offset

Un desplazamiento en bytes desde los datos de inicio del patrón en la que se realiza la lectura.

 

start_position

Posición absoluta del inicio del patrón. offset + start_position = desplazamiento absoluto.

 

this

Esta variable existe sólo en el contexto de evaluación de expresión ass-offset y es el valor actual del campo de datos para el que se especifica esa expresión.