The latest Help release available in English.
© 2019 R-Tools Technology Inc.
All rights reserved.
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 .
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 |
<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.
<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 field s (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 |
<section name="JUNK">
....
</section>
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. |
• repea t
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.