Dieses Dokuwiki verwendet ein von Anymorphic Webdesign erstelltes Thema.

Je n'ai pas eu l'opportunité de complèment tester mes scripts, vous le faîtes donc à vos “risques et périls”, si j'ai le temps de le tester, cette page sera mise à jour.

Si vous avez une connection partagée avec plusieurs personnes, vous avez peut être envie de savoir un petit peu ce que ces gens font de votre connection ? Curiosité malsaine ? Sans aucun doute. Mais après tout, si il se passe des choses illégal, c'est sur vous que ça tombera.

Tout d'abord, comment faire ? On installe la suite “dsniff” sur la machine qui route tout le traffic, cette suite comprends urlsnarf qui permet d'attraper les requêtes HTTP GET au vol et de vous les restituer. Vous voyez donc des informations du type :

Cerise - - [11/Apr/2008:20:22:29 +0000] "GET http://www.google.fr/intl/fr_fr/images/logo.gif HTTP/1.1" - - "http://www.google.fr" "Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_2; en-us) AppleWebKit/525.13 (KHTML, like Gecko) Version/3.1 Safari/525.13"

Ce que l'on va faire c'est de créer un pipe sur le routeur:

# mkfifo /chemin/du/pipe

Une fois que c'est on va démarrer urlsnarf, par exemple avec un script dans ”/etc/init.d” :

#! /bin/sh
 
case "$1" in
  start)
        echo -n "Starting urlsnarf: "
        start-stop-daemon --start --quiet --exec /usr/sbin/urlsnarf > /chemin/du/pipe
        ;;
  stop)
        echo -n "Stopping urlsnarf: "
        start-stop-daemon --stop --oknodo --quiet --exec /usr/sbin/urlsnarf > /chemin/du/pipe
        ;;
  restart|force-reload)
        echo -n "Restarting urlsnarf: "
        start-stop-daemon --stop --oknodo --quiet --exec /usr/sbin/urlsnarf > /chemin/du/pipe
        sleep 1
        start-stop-daemon --start --quiet --exec /usr/sbin/urlsnarf > /chemin/du/pipe
        ;;
  *)
        echo "Usage: $N {start|stop|restart|force-reload}" >&2
        exit 1
        ;;
esac
 
exit 0

Sachant que urlsnarf est plutôt “lourd” au fur et à mesure du temps (il n'est pas réellement prévu pour loguer), on va le redémarrer toutes les heures avec un cron :

* */1 * * * ./etc/init.d/urlsnarf.sh restart

Si vous n'avez pas d'espace sur votre routeur (type WRT par exemple), vous pouvez toujours créer un partage Samba sur une autre machine (qui possède MySQL) et le monter depuis le routeur, vous créer votre pipe dans ce partage et vous mettez toute la partie script sur l'autre machine. urlsnarf devant être sur le routeur !!

Une fois que tout cela est en place, on va créer notre base de données : (Je l'ai faîtes très simples pour mon usage, si vous voulez faire autre chose où la complexifié n'hesitez pas à m'envoyer un mail, maxime.hadjinlian_at_gmail dot com)

SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";
 
-- 
-- Database: `urlsnarf`
-- 
CREATE DATABASE `urlsnarf` DEFAULT CHARACTER SET latin1 COLLATE latin1_swedish_ci;
USE `urlsnarf`;
 
-- --------------------------------------------------------
 
-- 
-- Table structure for table `logs`
-- 
 
CREATE TABLE IF NOT EXISTS `logs` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `machine` varchar(15) NOT NULL,
  `date` varchar(30) NOT NULL,
  `url` varchar(50) NOT NULL,
  PRIMARY KEY  (`id`),
  FULLTEXT KEY `machine` (`machine`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;

Et maintenant, le script qui va faire la pièce angulaire de tout cela. Il va lire depuis le pipe en continue et mettre ces données dans la base de données. C'est un script python très basique, pour cela il vous faut le package MySQLdb.

Vous pouvez tester si vous l'avez dans un shell python (tapez python dans votre Terminal) et faîtes : import MySQLdb

Si vous avez une erreur de ce type :

 Traceback (most recent call last):
   File "<stdin>", line 1, in ?
 ImportError: No module named MySQLdb

C'est qu'il n'est pas installé, pour ce faire, allez sur l'adresse plus haut pour télécharger la dernière version puis :

$ tar xfz MySQL-python-1.2.0.tar.gz
$ cd MySQL-python-1.2.0
$ python setup.py build
$ su # or use sudo
# python setup.py install

Refaîtes le test, normallement c'est bon.

Vous n'avez plus qu'à créer un fichier avec ce code dedans :

#! /usr/local/bin/python
import os, sys, MySQLdb
 
connectionObject = MySQLdb.connect(host='localhost', user='utilisateur', passwd='motdepasse', db='urlsnarf')
c = connectionObject.cursor()
 
urlpipe = open('pipe','r+');
while 1:
	li = urlpipe.readline()
	#Si y'a rien dans le pipe, on passe. 
	if li != '': 
		ch = li.split('-')
		#Nom machine
		machine = ch[0]
		machine = machine.strip()
		#Date
		date = ch[2]
		date = date[2:28]
		#URL
		url = ch[5]
		url = url.split(' ')
		url = url[1]
		c.query("insert into logs (machine,date,url) values (\""+machine+"\",\""+date+"\",\""+url+"\")")
		c.commit()

Vous le ranger dans un coin, vous vous faîtes un petit script d'init si vous le souhaitez et après ça doit marcher tout seul.

tutorial/bofh/tutorial_logguez_les_urls_visitees.txt · Dernière modification: 2009/06/21 19:58 (édition externe)
Piste: tutorial_installer_wii_media_center tutorial_installer_et_configurer_apache_php tutorial_installer_subversion_trac_et_module_apache post-it_screenshot_console tutorial_installer_htop post-it_tips_ubuntu post-it_gnu_privacy_guard post-it_firewall_pour_un_dedie tutorial_sauvegarder_votre_serveur tutorial_logguez_les_urls_visitees
Dieses Dokuwiki verwendet ein von Anymorphic Webdesign erstelltes Thema.
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0