Picviz

Picviz est un applicatif qui, à partir de fichiers log générés par des sources diverses telles que Apache, Netfilter, … va concevoir des graphiques au format png permettant une vue plus synthétique et plus compréhensible des données contenues dans ces fichiers log (erreurs, anomalies, …)

Picviz permet de générer des graphiques type coordonnées parallèles. Les coordonnées parallèles sont une technique permettant de visualiser un nombre important d'informations de façon non ambiguë (voir wikipedia).

  • Disposer d'une connexion à Internet configurée et activée.
  • Dépôt universe activé (sinon voir depots).

Installation des paquetages prérequis (dont python et gcc)

apt-get install flex bison python-dev python-qt4 cmake cairo-dock gcc libpcre3 libpcre3-dbg libpcre3-dev

Installation de libpicviz (c'est la library de picviz développée en python) l'archive est disponible ici

cd ..
wget http://pkgs.fedoraproject.org/repo/pkgs/picviz/libpicviz-0.6.tar.gz/bd2cd1dd250dc5df362b1d3a5edea3cd/libpicviz-0.6.tar.gz
tar xvf libpicviz-0.6.1.tar.gz
cd libpicviz-0.6.1
make
sudo make install
cd src/bindings/python
sudo python setup.py install

Installation de picviz-cli (picviz en interface texte) l'archive est disponible ici

cd ..
wget http://pkgs.fedoraproject.org/repo/pkgs/picviz/picviz-cli-0.6.tar.gz/4ef5edbb77811de3ac608af28d02dce6/picviz-cli-0.6.tar.gz
tar xvf picviz-cli-0.6.tar.gz
cd picviz-cli-0.6/src
make
sudo make install

Installation de picviz-Gui (picviz en interface graphique) l'archive est disponible ici

cd ../..
wget http://www.wallinfire.net/files/picviz/picviz-gui-0.7.tar.gz
tar xvf picviz-gui-0.7.tar.gz
cd picviz-gui-0.7
sudo ./setup.py install
sudo ldconfig

> picviz-gui

Intégrer picviz-gui au menu Application : Clic droit sur ApplicationÉditer les menusAccessoiresNouvel élément → le nom Picviz, la commande picviz-gui

Picviz reçoit en entrée des fichiers au format PCV.

Avant d'utiliser le logiciel Picviz, il faut utiliser un script qui permet de convertir le fichier log en un fichier PCV par l'utilisation du langage PGDL (plus d'information).

Sources (Syslog, Netfilter, Apache) → Génération par le langage PGDL (utilisation de script) → fichier PCV → Conception du graphique (par utilisation picviz) → Graphique png

> picviz-cli

pcv -Tpngcairo -Rheatline -rrrrrrrra access-wallinfire.net.pcv > access.png
  • Tpngcairo : format png
  • Rheatline -Avirus : couleur
  • rrrrrrrr : permet une haute résolution
  • a : permet afficher du texte

Génération automatique de graphiques : Nous pouvons, à partir cron, créer un script qui permet de générer des images périodiques. Le script syslog2picviz.pl est disponible ici

#!/bin/sh
./syslog2picviz.pl syslogemu.log > syslogemu.pcv
pcv -Tpngcairo -Rheatline -rrrrrrrra syslogemu.pcv > syslogemu.png
echo "" | mutt -x -s "Picviz" root -a syslogemu.png
rm syslogemu.pcv
rm syslogemu.png

Un envoi de mail se fait automatiquement par utilisation d'un serveur mail

> picviz-gui

Screenshot de picviz

picviz-gui apporte un plus à la ligne de commande, mais comme celle-ci est écrite en python. Elle est relativement moins fluide et fine que ggobi.

> Exemple d'utilisation

La source

On récupère un log, dans mon cas syslogemu.log log de parfeu.

Extrait du fichier log

Mar  3 09:38:46 debian DINPUT IN=eth0 OUT= MAC=00:0c:30:db:0c:32:00:0c:30:b1:d9:e2:09:00  SRC=192.168.1.205 DST=192.168.1.240 LEN=44 TOS=00 PREC=0x00 TTL=55 ID=53647 CE PROTO=TCP SPT=48040 DPT=23 SEQ=2989621591 ACK=0 WINDOW=4096 SYN URGP=0
Mar  3 09:38:46 debian DINPUT IN=eth0 OUT= MAC=00:0c:30:db:0c:32:00:0c:30:b1:d9:e2:09:00  SRC=192.168.1.205 DST=192.168.1.240 LEN=44 TOS=00 PREC=0x00 TTL=40 ID=7426 PROTO=TCP SPT=48040 DPT=113 SEQ=2989621591 ACK=0 WINDOW=1024 SYN URGP=0
Mar  3 09:38:46 debian DINPUT IN=eth0 OUT= MAC=00:0c:30:db:0c:32:00:0c:30:b1:d9:e2:09:00  SRC=192.168.1.205 DST=192.168.1.240 LEN=44 TOS=00 PREC=0x00 TTL=56 ID=40787 CE PROTO=TCP SPT=48040 DPT=21 SEQ=2989621591 ACK=0 WINDOW=1024 SYN URGP=0
...

Conversion

On convertit le log du parfeu en format PCV à l'aide de script. Le script syslog2picviz.pl est disponible ici, On peut le modifier selon la situation.

./syslog2picviz.pl syslogemu.log > syslogemu.pcv

Extrait du fichier pcv

header {
	title = "Syslog picviz analysis";
}
axes {
	ipv4   SRC [label="Ip source"];
	ipv4   DST [label="IP destination"];
	port   SPT [label="Port source"];
	port   DPT [label="Port destination"];
}
data {
PortIN="",SRC="192.168.1.205",DST="192.168.1.240",SPT="48040",DPT="23";
PortIN="",SRC="192.168.1.205",DST="192.168.1.240",SPT="48040",DPT="113";
PortIN="",SRC="192.168.1.205",DST="192.168.1.240",SPT="48040",DPT="21";
...
}

Création de l'image

On utilise la commande pcv pour convertir syslogemu.pcv en syslogemu.png. A partir de là, nous pouvons débuter l'analyse de l'image.

pcv -Tpngcairo -Rheatline -rrrrrrrra syslogemu.pcv > syslogemu.png
  • picviz.txt
  • Dernière modification: Le 11/09/2022, 11:49
  • par moths-art