Créer des modèles personnalisés

Top  Previous  Next

Vous pouvez créer vos propres modèles vous-mêmes.

Un exemple de modèle commenté de l'analyse d'un fichier AVI.

La syntaxe de la description du modèle est similaire à celle du langage XML. Le dossier où les fichiers devraient être placés est spécifié dans l'onglet Général de la boîte de dialogue Paramètres.

Structure du modèle

En-tête du modèle

Chaque modèle commence par un en-tête standard

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

Section modèle

Chaque modèle démarre avec une section, en donnant au modèle, un nom qui sera affiché dans le volet données analysées.

Attributs :

name

Spécifie le nom du modèle affiché dans le volet données analysées

Exemple :

<template name="AVI File LIST">

........

</template>

Section signature

Attributs :

align <positive integer>

Spécifie si l'adresse de la structure de données est alignée (en général, par   un secteur : 512)

Cette section contient un champ éléments avec un code hexadécimal de la signature. L'attribut décalage  spécifie leur décalage depuis le début de l'enregistrement. La longueur du champ est égale au nombre de codes hexadécimaux.

Exemple :

<signature align="1">

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

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

</signature>

Section section

De telles sections contiennent toutes les expressions et les opérations nécessaires au modèle pour analyser les données. Un nom de section est affiché dans le volet données analysées. En fait, les sections sont des objets virtuels utilisés pour grouper logiquement les champs connectés. Les sections peuvent être nichées.

La section générale est affichée dans le volet données analysées.

Les sections contiennent des champs éléments qui sont des objets des données réelles. Les noms des champs sont montrés dans le volet données analysées avec leurs valeurs.

Attributs :

nom

Spécifie le nom du modèle affiché dans le volet données analysées

Exemple :

<section name="JUNK">

....

</section>

Liste de tous les objets dans les modèles

Types de données (dans champ)

entier

Sous-types :

int8

int16

int32

int64

uint8

uint16

uint32

uint64

uintX

Attributs :

endian : (be | le | system)

Optionnel.  Défaut : système.

base : (decimal | hex | octal)

Optionnel. Spécifie la représentation des données. Défaut : décimal.

as-offset : <expression>

Optionnel. Spécifie que ce champ est un décalage et sa valeur doit être évaluée en utilisant l'expression. Une variable spéciale this retourne la valeur de  ce champ.

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

Optionnel. Spécifie le type du résultat de l'expression as-offset. Si cet attribut est présent, l'attribut  est nécessaire si la valeur du décalage doit différer de la valeur de ce champ (variable this ).

rsector et rcluster  sont des décalages relatifs à la positin absolue du début du modèle.

assigned-template : <TemplateName>

Spécifie le nom du modèle lié à ce champ. Il est ignoré si les attributs as-offset ou purpose ne sont pas spécifiés.

var : <Name>

Optionnel. Spécifie le nom avec lequel on peut accéder à la valeur de ce champ dans les expressions.

 

binary

Attributs :

display-encoding: (hex | binary)

Optionnel. Par défaut : hex

size : <bytes>

Obligatoire.

 

char

Attributs :

size : <bytes>

Obligatoire.

codepage : (ansi | oem | utf8 | utf16)

Optionnel. Spécifie quel codepage est utilisé. Par défaut : ansi.

 

filetime

Affiche le temps au format Win32 (64 bits)

 

unixtime

Affiche le temps au format (seconds depuis le 01/01/1970)

 

filetime

Affiche le temps au format DOS (date : hiword, heure : loword)

 

bits

Attributs :

size : <bytes>

Obligatoire.

pos: <comma separated list of bit positions>

Obligatoire. Spécifie la position de l'octet dans le bloc de données.

Commandes

goto

Spécifie un saut vers un décalage spécifique (soit relatif, soit absolu)

Attributs :

address: <expression>

Spécifie une adresse absolue vers laquelle aller.

offset : <expression>

Spécifie un décalage relatif à utiliser pour le saut.

Un seul et unique attibut doit toujours être spécifié.

 

if

Evalue une condition spécifiée dans l'attribut test et, si la condition est vraie, lit les champs spécifiés dans cette étiquette.

Attribut :

test : <expression>

Définit une condition pour tester à nouveau.

 

repeat

Lit les champs spécifiés dans l'étiquette jusqu'à ce que la condition de sortie soit égale à 0 ou aux temps spécifiés

Attributs :

count : <expression>

<expression> est évalué une fois à l'entrée du bloc. Des éléments internes sont lus un nombre de fois spécifié.

test : <expression>

<expression> est évalué à l'entrée du bloc. Identique à la construction C++ while(...) {}.

test : <expression>

<expression> est évalué à la sortie du bloc. Identique à la construction C++ do {} while(...).

 

setvar

Définit la valeur d'une variable interne. Comme exemple, cette commande est pratique pour stocker le décalage actuel. La valeur du décalage actuel est stockée dans une variable de décalage prédéfinie.

Attributs :

var : <string>

Spécifie le nom de la variable.

expr : <expression>

Spécifie une expression dont le résultat sera assigné à la variable.

Expressions

Les expressions dans les modèles sont des expressions arithmétiques dont la syntaxe est similaire à celle du langage C, y compris les opérations précédentes.

Les opérations suivantes sont prises en charge :

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

Variables prédéfinies

décalage

Un décalage en octets depuis les données de départ du modèle est actuellement lu.

 

start_position

Une posistion absolue du début du modèle. décalage + start_position = décalage absolu.

 

this

Cette variable existe seulement au sein du contexte de l'évaluation de l'expression as-offset et est la valeur actuelle du champ de données pour laquelle cette expression est spécifiée