[R] Extraire les Logs FireWall

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
acls11
Niveau 1
Niveau 1
Messages : 5
Enregistré le : mer. 20 juil. 2011 13:33
Localisation : Villeneuve de la Raho 66
Status : Hors ligne

[R] Extraire les Logs FireWall

#1

Message par acls11 »

Bonjour à tous et toutes; pardonnez la longueur, mais je veux être précis.

Ce que je désirerai : extraire les données "Heure - Evènement - Type d'évènement - Détails" d'une page HTML et les copier dans un fichier texte. Cette étape fait partie d'un processus global visant à automatiser l'extraction et le traitement d'informations.
Ce que j'ai : un modem-routeur LiveBox Sagem Version 1. (Merci de ne pas trop se moquer de moi …)
Les contraintes imposées par le routeur :
- la page contenant les informations désirées est toujours dans un cache différent à chaque ouverture
- il n'est pas possible d'enregistrer les logs via un bouton de commande inclus dans la page
- il n'est pas possible d'enregistrer en mode console, car non implémentée dans le noyau
- je ne sais pas à l'avance combien de lignes devront être copiées, car je filtre que les tentatives d'intrusions et autres accès interdits par les règles de FireWalling que j'ai édictées
Ce que je sais faire (plus ou moins bien) :
- ouvrir la page d'accueil; inscrire le login; inscrire le mot de passe; valider
- inscrire dans la barre URL, la commande JavaScript pour ouvrir la page relative aux données que je veux
- copier l'adresse du cache de la page ouverte et vérifier que l'adresse est bien celle du cache à l'aide de boite de message
- créer un fichier texte pour recevoir les informations copiées
- ouvrir le fichier en mode écriture
Ce que je ne sais pas faire malgré l'aide précieuse de ce post (http://autoitscript.fr/forum/viewtopic.php?f=3&t=6936), est de :
- coller l'adresse du cache pour l'exploiter ensuite (par exemple $url ou autre chose)
- copier les informations à partir du mot "données." dans le fichier texte.

Voici le script et un morceau du code source de la page.

Code : Tout sélectionner

#include <IE.au3>
ShellExecute ("iexplore.exe", "http://192.168.2.254")
WinWaitActive ("Wanadoo_xxxx - Windows Internet Explorer")
Send ("monlogin")
Send ("{TAB}")
Send ("monmotdepasse")
Send ("{ENTER}")
Send ("{TAB}")
Send ("{DEL}")
Send ("javascript&#058;mimic_button('goto: 9006..', 0);")
Send ("{ENTER}")
Send ("+{TAB 7}") ;déplacement dans la barre URL
Send ("^c") ;copie de l'URL de la page
;par exemple http://192.168.2.254/cache/1013678306/index.cgi
$url = ClipGet() ;récupération de l'information copiée
;les 5 lignes suivantes me permettent de vérifier si j'ai la bonne information
;MsgBox(0, "ClipGet contient :", $url)
;Sleep(2000)
;ClipPut($url & "URL du cache")
;MsgBox(0, "ClipPut contient :", ClipGet())
;Sleep(2000)
FileOpen ("c:\rapports\lbs1\fw_lbs1.txt",2) ;ouverture du fichier en mode écriture
;
;et c'est ici que je dois reconnaître ma limite.
;je ne sais pas si la méthode de la ligne $url = ClipGet() et la suite, est la bonne
;je voudrais que les données "Heure - Evènement - Type d'évènement - Détails" soient
;copiées dans le fichier ouvert
;avec la méthode citée dans le lien du post ci dessus le fichier est bien modifié car l'horodatage est actualisé dans l'explorateur
;mais rien n'est écrit dans le fichier.
;
;voici ce que contient le cache de la page avec les données que je voudrais copier :
;

Code : Tout sélectionner

;<BODY><HTML> et plein de lignes ....
;</TABLE></CENTER><P ALIGN=CENTER>Cliquer sur le bouton <B>Rafraîchir</B> pour mettre à jour les données.
;</P><P><BR></P><TABLE border=0 cellpadding=4 cellspacing=0 width="90%"><TR bgcolor=#FF6600>
;<TD class="header_cell" bgcolor=#FF6600 align=CENTER valign=MIDDLE><B><FONT color=#FFFFFF face="Verdana">Heure</FONT></B></TD>
;<TD class="header_cell" bgcolor=#FF6600 align=CENTER valign=MIDDLE><B><FONT color=#FFFFFF face="Verdana">Evénement</FONT></B></TD>
;<TD class="header_cell" bgcolor=#FF6600 align=CENTER valign=MIDDLE><B><FONT color=#FFFFFF face="Verdana">Type d'événement</FONT></B></TD>
;<TD class="header_cell" bgcolor=#FF6600 align=CENTER valign=MIDDLE><B><FONT color=#FFFFFF face="Verdana">Détails</FONT></B></TD></TR>
;<TR bgcolor=#EFEFEF><TD class="standard_cell" align=LEFT valign=MIDDLE>Jul 20 07:54:55 2011</TD><TD class="standard_cell" align=LEFT valign=MIDDLE>Connexion WBM</TD><TD class="standard_cell" align=LEFT valign=MIDDLE>User authentication success </TD><TD class="standard_cell" align=LEFT valign=MIDDLE>Username: monlogin</TD></TR>
;<TR bgcolor=#FFFFFF><TD class="standard_cell" align=LEFT valign=MIDDLE>Jul 20 07:48:27 2011</TD><TD class="standard_cell" align=LEFT valign=MIDDLE>Trafic entrant</TD><TD class="standard_cell" align=LEFT valign=MIDDLE><FONT color=#FF0000>Bloqué - Default policy</FONT></TD><TD class="standard_cell" align=LEFT valign=MIDDLE>TCP 209.44.106.62:6000->monipwan:139 on ppp0</TD></TR>
;<TR bgcolor=#EFEFEF><TD class="standard_cell" align=LEFT valign=MIDDLE>Jul 20 07:20:03 2011</TD><TD class="standard_cell" align=LEFT valign=MIDDLE>Trafic entrant</TD><TD class="standard_cell" align=LEFT valign=MIDDLE><FONT color=#FF0000>Bloqué - Default policy</FONT></TD><TD class="standard_cell" align=LEFT valign=MIDDLE>TCP 60.173.26.41:6000->monipwan:9415 on ppp0</TD></TR>
;</TABLE></FORM></BODY></HTML>
;et ainsi de suite, mais toutes les lignes ci-dessus sont à la queue leu leu.
;
;le fichier texte doit avoir le format suivant
;Apr 1 17:09:06 2011 Connexion WBM User authentication success Username: monlogin
;Apr 1 16:55:41 2011 Trafic entrant Bloqué - Default policy TCP 125.45.109.166:12200->monipwan:7212 on ppp0
;Apr 1 16:55:41 2011 Trafic entrant Bloqué - Default policy TCP 125.45.109.166:12200->monipwan:6588 on ppp0

Voila mon souci. Merci d'avance pour ceux qui vont prendre le temps d'y jeter un oeil.
Désolé par avance si je commence par un long pavé.
Modifié en dernier par acls11 le dim. 24 juil. 2011 10:51, modifié 3 fois.
Avatar du membre
zeshrek
Niveau 10
Niveau 10
Messages : 984
Enregistré le : mer. 17 nov. 2010 09:31
Localisation : Sur ma chaise
Status : Hors ligne

Re: [..]Extraire les Logs FireWall

#2

Message par zeshrek »

Déjà, il faut utiliser les balises quand on met du code dans un post

Ceci dit, il faut juste que tu te fasses un parser. A mon avis, y en a qui vont pas tarder a débarquer et te parles des expressions régulières...
Ceci dit, une question similaire avait été posée y a pas si longtemps : http://autoitscript.fr/forum/viewtopic.php?f=3&t=6936
Si vis pacem para bellum
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11824
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [..]Extraire les Logs FireWall

#3

Message par Tlem »

A première vue; d'après ce que vous dites :
acls11 a écrit :Ce que je sais faire (plus ou moins bien) :
- ...
- copier l'adresse du cache de la page ouverte et vérifier que l'adresse est bien celle du cache à l'aide de boite de message
vous arrivez donc à obtenir l'adresse de la page du cache.

Avec cette adresse, utilisez les fonctions _IExxx AutoIt à votre disposition pour 'afficher la page' dans un objet IE puis de récupérer le texte affiché.
Dans le cas présent, _IEBodyReadText() me semblerait pas mal, afin de récupérer le texte de la page.

A partir de là, vous pouvez effectuer le traitement désiré et enregistrer les données dans un fichier. ;)
Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: [..]Extraire les Logs FireWall

#4

Message par mikell »

De quoi ? c'est pas honteux une Livebox 1 :mrgreen:

Pour illustrer ce que vient de dire Tlem, voilà exactement ce qu'il vous faut :
► Afficher le texte
edit : Remplacer dans le script " &#058 " par " : "
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
acls11
Niveau 1
Niveau 1
Messages : 5
Enregistré le : mer. 20 juil. 2011 13:33
Localisation : Villeneuve de la Raho 66
Status : Hors ligne

Re: [..] Extraire les Logs FireWall

#5

Message par acls11 »

Bonjour à tous,
De retour après une intervention urgente.
- Zeshrek : Désolé. Manque d'habitude.
- Tlem : J'ai testé la méthode. Cela me semble effectivement la voie à suivre.
- Mikell : Un peu honteux, je l'accorde. Mais j'aime çà. Je vais tester ce que vous me proposez; qui me paraît déjà bon dès la première lecture et bien plus simple que ce que j'ai fait. Si c'est ok je passerai en Résolu.
en tout cas, merci pour la rapidité des réponses.
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: [..] Extraire les Logs FireWall

#6

Message par mikell »

acls11 a écrit :Un peu honteux, je l'accorde. Mais j'aime çà.
Vous aimez être honteux, ou avoir la Livebox 1 ? :mrgreen:
Perso j'ai aussi une Lb1, qui marche très bien et qui est facilement accessible (ce qui aussi a permis de vous pondre un script qui marche) pas honteux du tout :wink:
Pour les données en sortie ce serait sympa dans une listview
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
acls11
Niveau 1
Niveau 1
Messages : 5
Enregistré le : mer. 20 juil. 2011 13:33
Localisation : Villeneuve de la Raho 66
Status : Hors ligne

Re: [..] Extraire les Logs FireWall

#7

Message par acls11 »

mikell a écrit :
acls11 a écrit :Perso j'ai aussi une Lb1, qui marche très bien et qui est facilement accessible (ce qui aussi a permis de vous pondre un script qui marche) pas honteux du tout :wink:
Pour les données en sortie ce serait sympa dans une listview
Honte pour la Sagem V1. Car elle n'a du qualificatif Modem-Routeur que Modem. Et qu'elle n'offre pas les services qu'on attend d'un équipement actif de ce type.
C'est ainsi que je me retrouve obligé de tenter de fabriquer ma propre solution d'extraction de logs, afin de pouvoir les traiter et analyser au mieux. Moins honteux pour la Box, car elle supporte la partie VOIP. Comme quoi; on ne peut tout avoir ...
Concernant le code, il est léger, court, efficace.
En l'épluchant (car je veux comprendre pourquoi), je me pose quelques questions :
- le tails correspond à Détails ... je suppose
- à quoi correspond le +6?
- le fichier de sortie serait parfait si le contenu de chaque cellule, était séparé par un espace. Par exemple :

Code : Tout sélectionner

Jul 22 13:02:33 2011Connexion WBMUser authentication success Username: admin
Jul 22 12:58:03 2011Trafic entrantBloqué - Packet invalid in connectionTCP 66.211.169.14:443->ipwan:1752 on ppp0
par ceci :

Code : Tout sélectionner

Jul 22 13:02:33 2011 Connexion WBM User authentication success Username: admin
Jul 22 12:58:03 2011 Trafic entrant Bloqué - Packet invalid in connection TCP 66.211.169.14:443->ipwan:1752 on ppp0
Une indication peut être? Du côté de StringRegExpReplace ...
L'étape suivante pour moi sera, de rapatrier le contenu du fichier dans une base SQL, afin de journaliser les tentatives d'intrusions et surtout les attaques UDP/ICMP Flood ... entre autres type d'attaque!
Encore merci pour la rapidité de la réponse et la concision du code.
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: [..] Extraire les Logs FireWall

#8

Message par mikell »

acls11 a écrit :- le tails correspond à Détails ... je suppose
- à quoi correspond le +6?
Vous supposez bien, et le +6 correspond aux 5 lettres de 'tails' + le renvoi à la ligne pour le StringTrimLeft()
acls11 a écrit :- le fichier de sortie serait parfait si le contenu de chaque cellule, était séparé par un espace.
alors là il vous faut utiliser _IEBodyReadHTML() et gérer les balises, par exemple essayez ça :
► Afficher le texte
ça renvoie un tableau html que vous pouvez travailler à volonté Image
Par exemple, si vous validez la ligne en vert, vous insérez le marqueur ' # ' qui servira de délimiteur pour n'importe quelle mise en forme que vous souhaiteriez faire
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
acls11
Niveau 1
Niveau 1
Messages : 5
Enregistré le : mer. 20 juil. 2011 13:33
Localisation : Villeneuve de la Raho 66
Status : Hors ligne

Re: [R] Extraire les Logs FireWall

#9

Message par acls11 »

Bien ... que puis je dire sinon : Merci Mikell !
Le code renvoie exactement ce que je voulais. Parfait.
La concision et la clarté de celui-ci m'inspirera pour ce qui me reste à faire. Encore merci à vous en particulier et à l'ensemble du forum. Continuez.
Je passe donc le sujet en Résolu.
Répondre