The latest Help release available in English.
© 2019 R-Tools Technology Inc.
All rights reserved.
Créer des modèles personnalisés
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. |
• |
repea t |
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