Bonjour,
En parcourant des fichiers XML (XML::Simple), je suis tombé sur un douloureux problème.. je m'explique, j'aimerai "parser" des fichiers afin d'en extraire 2 ou 3 champs spécifiques (il s'agit des fichiers de règles d'OSSEC).. Cependant voilà, le format n'est pas strictement identique. Avec Dumper, j'ai:
et avec d'autres fichiers:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 $VAR1 = { 'name' => 'web,accesslog,', 'rule' => [ { 'level' => '0', 'category' => 'web-log', 'id' => '31100', 'description' => 'Access log messages grouped.' }, { 'if_sid' => '31100', 'level' => '0', 'id' => [ '31108', '^2|^3' ], 'description' => 'Ignored URLs (simple queries).', 'compiled_rule' => 'is_simple_http_request' }, ...
Je me suis sorti du premier cas avec la boucle suivante:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 $VAR1 = { 'name' => 'apache,', 'rule' => { '30110' => { 'if_sid' => '30101', 'level' => '5', 'group' => 'authentication_failed,', 'match' => 'authentication failure', 'description' => 'User authentication failed.' }, '30200' => { 'noalert' => '1', 'level' => '6', 'match' => '^mod_security-message: ', 'description' => 'Modsecurity alert.' },
Mais pour le second, j'ai le droit à l'erreur suivante:
Code : Sélectionner tout - Visualiser dans une fenêtre à part foreach my $rule ( @{ $data->{rule} } )
Sans boucle, j'arrive assez facilement à lire mes données ($var->{clé1}->{etc}).. mais ça n'est pas vraiment exploitable.Not an ARRAY reference at ./parseRules.pl line 26.
Toute aide serait appréciée! Merci d'avance.
ps: j'ai consulté les tuto de djibril et nicolas.. et tenté de manipés les hash.. mais je ne m'en suis pas sorti!
Partager