<?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>JoPa.Fr &#187; Linux</title>
	<atom:link href="http://www.jopa.fr/index.php/tag/linux/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.jopa.fr</link>
	<description>001100010BIDOUILLE11101010111100010LIBRE1000100111100101</description>
	<lastBuildDate>Tue, 10 Jan 2012 21:59:31 +0000</lastBuildDate>
	<language>fr</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Démonstration de Proxmox VE</title>
		<link>http://www.jopa.fr/index.php/2011/08/15/virtualisation-proxmox/</link>
		<comments>http://www.jopa.fr/index.php/2011/08/15/virtualisation-proxmox/#comments</comments>
		<pubDate>Mon, 15 Aug 2011 21:47:20 +0000</pubDate>
		<dc:creator>Jopa</dc:creator>
				<category><![CDATA[Configurations]]></category>
		<category><![CDATA[Planet-Libre]]></category>
		<category><![CDATA[Réseau]]></category>
		<category><![CDATA[Système]]></category>
		<category><![CDATA[Debian]]></category>
		<category><![CDATA[Distribution]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Logiciels Libres]]></category>
		<category><![CDATA[Serveur]]></category>
		<category><![CDATA[Vidéo]]></category>
		<category><![CDATA[Virtualisation]]></category>

		<guid isPermaLink="false">http://www.jopa.fr/?p=2482</guid>
		<description><![CDATA[Proxmox Virtual Environnement est un environnement de virtualisation (hyperviseur)  libre, développé et maintenu par la société Autrichienne Proxmox Solutions Server. Proxmox VE s&#8217;installe sur un serveur nu, à partir d&#8217;une image iso téléchargeable sur le site officiel. Etant donné qu&#8217;il repose sur une distribution Debian Lenny, il est tout à fait possible de l&#8217;installer, sur [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;"><em><a href="http://www.jopa.fr/wp-content/uploads/2011/08/logo_proxmox.png"><img class="alignright size-full wp-image-2495" title="logo_proxmox" src="http://www.jopa.fr/wp-content/uploads/2011/08/logo_proxmox.png" alt="" width="197" height="120" /></a><a title="Proxmox VE" href="http://www.proxmox.com/">Proxmox Virtual Environnement</a></em> est un environnement de virtualisation (<em><a title="Wikipedia Hyperviseur" href="http://fr.wikipedia.org/wiki/Hyperviseur">hyperviseur</a></em>)  libre, développé et maintenu par la société Autrichienne <em><a href="http://www.proxmox.com/about-us">Proxmox Solutions Server</a></em>.</p>
<p style="text-align: justify;"><em>Proxmox VE</em> s&#8217;installe sur un serveur nu, à partir d&#8217;une image iso téléchargeable sur <a title="Téléchargement Proxmox" href="http://www.proxmox.com/downloads/proxmox-ve">le site officiel</a>. Etant donné qu&#8217;il repose sur une distribution <em><a href="http://www.debian.org">Debian Lenny</a></em>, il est tout à fait possible de l&#8217;installer, sur un système existant, à partir de paquets. La dernière version (1.8) utilise les extensions de virtualisation des processeurs 64 bits, elle n&#8217;est disponible que pour cette architecture, inutile donc,  de tenter une installation sur une machine 32 bits.</p>
<p style="text-align: justify;">Une interface web d&#8217;administration offre une surveillance et une gestion simplifiée des machines virtuelles <a title="Wikipedia KVM" href="http://fr.wikipedia.org/wiki/Kernel-based_Virtual_Machine">KVM (kernel-based Virtual Machine)</a> et para-virtuelles <a title="Wikipedia OpenVZ" href="http://fr.wikipedia.org/wiki/OpenVZ">OpenVZ </a>. Nous pouvons en quelques clics, créer, modifier, supprimer, démarrer, arrêter, suspendre ou visualiser l&#8217;état d&#8217;une machine.</p>
<p style="text-align: justify;">Des outils, en lignes de commandes, permettent des fonctionnalités plus poussées, telles que la sauvegarde à chaud par <em>snapshot</em> ou la restauration.  Enfin, des fonctions de <a title="Clustering" href="http://fr.wikipedia.org/wiki/Grappe_de_serveurs">clustering</a> permettent, par exemple, la migration à chaud de machines virtuelles d&#8217;un serveur physique à un autre.</p>
<p style="text-align: justify;">Je vous propose ci-dessous, trois petites démonstrations en <em>screencast</em>. La première montre l&#8217;utilisation de l&#8217;interface Web pour la création et l&#8217;installation d&#8217;un serveur virtuel <em>kvm</em> sous <em>Debian Squeeze</em>, la deuxième, le clonage de ce serveur à l&#8217;aide des outils de <em>snapshot</em> et de restauration et enfin, la troisième, la création d&#8217;un cluster de deux serveurs <em>Proxmox VE</em> ainsi que la migration d&#8217;une machine virtuelle d&#8217;un serveur vers l&#8217;autre.</p>
<p><span id="more-2482"></span></p>
<h4>Démo n°1 &#8211; Installation d&#8217;un serveur virtuel Debian.</h4>
<p>&nbsp;</p>
<p><a href="http://www.youtube.com/watch?v=tE-tR_iQ6kM"><img src="http://img.youtube.com/vi/tE-tR_iQ6kM/2.jpg"></a></p>
<p><a href="http://www.youtube.com/watch?v=tE-tR_iQ6kM">Click here</a> to view the video on YouTube.</p>

<p>&nbsp;</p>
<h4>Démo n°2 &#8211; Utilisation des outils de sauvegarde et de restauration pour le clonage d&#8217;une VM.</h4>
<p>&nbsp;</p>
<p><a href="http://www.youtube.com/watch?v=GD8MPg27Mu4"><img src="http://img.youtube.com/vi/GD8MPg27Mu4/2.jpg"></a></p>
<p><a href="http://www.youtube.com/watch?v=GD8MPg27Mu4">Click here</a> to view the video on YouTube.</p>

<p>&nbsp;</p>
<h4>Démo n°3 &#8211; Création d&#8217;un cluster Proxmox VE et migration à chaud.</h4>
<p>&nbsp;</p>
<p><a href="http://www.youtube.com/watch?v=HHZLpBTMGCs"><img src="http://img.youtube.com/vi/HHZLpBTMGCs/2.jpg"></a></p>
<p><a href="http://www.youtube.com/watch?v=HHZLpBTMGCs">Click here</a> to view the video on YouTube.</p>

<p>&nbsp;</p>
<h4>Sources :</h4>
<ul>
<li><a title="Proxmox" href="http://www.proxmox.com/">Site officiel Proxmox</a>,</li>
<li><a title="Proxmox sur Wikipedia" href="http://fr.wikipedia.org/wiki/Proxmox">Wikipedia</a>.</li>
</ul>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jopa.fr/index.php/2011/08/15/virtualisation-proxmox/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
		<item>
		<title>Linux Live USB Creator &#8211; &#171;&#160;LiLi&#160;&#187; pour les intimes</title>
		<link>http://www.jopa.fr/index.php/2011/08/10/linux-live-usb-creator/</link>
		<comments>http://www.jopa.fr/index.php/2011/08/10/linux-live-usb-creator/#comments</comments>
		<pubDate>Wed, 10 Aug 2011 20:10:37 +0000</pubDate>
		<dc:creator>Jopa</dc:creator>
				<category><![CDATA[Astuces]]></category>
		<category><![CDATA[Planet-Libre]]></category>
		<category><![CDATA[Distribution]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Logiciels Libres]]></category>
		<category><![CDATA[Usb]]></category>

		<guid isPermaLink="false">http://www.jopa.fr/?p=2454</guid>
		<description><![CDATA[Sous le doux diminutif de &#171;&#160;LiLi&#160;&#187; et derrière des allures &#171;&#160;Disco&#160;&#187; se cache un utilitaire, pour Windows, de création de distribution live Linux sur clé USB. Linux Live USB Creator est un outil, opensource et sous licence GPL, capable de générer cette clé depuis une image iso locale ou téléchargée automatiquement depuis une liste bien [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;"><a href="http://www.jopa.fr/wp-content/uploads/2011/08/LiliLogo_seul.png"><img class="alignleft size-full wp-image-2458" title="LiliLogo_seul" src="http://www.jopa.fr/wp-content/uploads/2011/08/LiliLogo_seul.png" alt="" width="117" height="115" /></a>Sous le doux diminutif de &laquo;&nbsp;LiLi&nbsp;&raquo; et derrière des allures &laquo;&nbsp;Disco&nbsp;&raquo; se cache un utilitaire, pour <em>Windows</em>, de création de distribution live <em>Linux</em> sur clé USB. <a title="Linux Live USB Créator" href="http://www.linuxliveusb.com/"><em>Linux Live USB Creator</em> </a>est un outil, opensource et sous licence GPL, capable de générer cette clé depuis une image <em>iso</em> locale ou téléchargée automatiquement depuis une liste bien fournie.</p>
<p style="text-align: justify;">Sa première originalité est sa capacité à embarquer une version portable de <a href="http://www.vbox.me/">Virtualbox</a> (<a href="http://www.vbox.me/">portable-Virtualbox</a>) pour permettre l&#8217;exécution de la distribution dans une machine virtuelle, directement depuis Windows, sans aucune installation, ni reboot. Sa deuxième est, sous réserve d&#8217;espace suffisant, la possibilité de conserver les documents présents sur la clé et de continuer à l&#8217;utiliser de façon tout à fait classique.</p>
<p style="text-align: justify;"><span id="more-2454"></span></p>
<div align=center>
<a href="http://www.jopa.fr/wp-content/uploads/2011/08/Lili_et2.jpg"><img class="size-full wp-image-2460 aligncenter" title="Lili_et2" src="http://www.jopa.fr/wp-content/uploads/2011/08/Lili_et2.jpg" alt="" width="448" height="763" /></a>
</div>
<p>&nbsp;</p>
<p style="text-align: justify;">L&#8217;opération se déroule en cinq étapes :</p>
<h3 style="text-align: justify;">Etape 1 :</h3>
<ul>
<li>Choix du périphérique de stockage USB qui va accueillir la distribution,</li>
</ul>
<h3 style="text-align: justify;">Etape 2 :</h3>
<ul style="text-align: justify;">
<li>Choix de la source entre :</li>
<ul>
<li>Une image locale au format iso, dmg ou zip,</li>
<li>Le téléchargement manuel ou automatique à partir d&#8217;une bonne liste de distributions. Des tests sont réalisés pour trouver le miroir le plus rapide, &#8211; classe !</li>
<li>Un CDRom ou DVD inséré dans le lecteur.</li>
</ul>
</ul>
<h3 style="text-align: justify;"></h3>
<h3 style="text-align: justify;">Etape 3 :</h3>
<div style="text-align: justify;">
<ul>
<li>Définition d&#8217;une quantité d&#8217;espace utilisateur pour le stockage des données personnelles. Cette étape n&#8217;est pas utile si la clé est destiné à servir de support d&#8217;installation, elle l&#8217;est un peu plus s&#8217;il s&#8217;agit de fabriquer un &laquo;&nbsp;bureau&nbsp;&raquo; linux de poche.</li>
</ul>
</div>
<h3 style="text-align: justify;">Etape 4 :</h3>
<div style="text-align: justify;">
<ul>
<li>L&#8217;étape 4 permet d&#8217;affiner trois options :</li>
<ul>
<li><strong>Cacher les fichiers sur la clé</strong> : comme indiqué dans l&#8217;intitulé, cette option permet de cacher les fichiers de la distribution et de virtualbox. Seuls les documents externes au projet (documents déjà présent ou stockés dans le cadre d&#8217;un usage classique) seront visibles,</li>
<li><strong>Formater la clé en FAT32</strong> : formate la clé avant d&#8217;y transféré la distribution. Evidemment, dans ce cas, toutes les données présentes seront perdues,</li>
<li><strong>Permettre de lancer directement LinuxLive sous Windows</strong> : installe &laquo;&nbsp;Portable Virtualbox&nbsp;&raquo; sur la clé et permet de booter cette dernière dans une machine virtuelle.</li>
</ul>
</ul>
</div>
<h3 style="text-align: justify;"></h3>
<h3 style="text-align: justify;">Etape 5 :</h3>
<div style="text-align: justify;">
<ul>
<li>C&#8217;est parti ! Après quelques minutes, nous obtenons une clé USB bootable. Suivant les option choisies, cette dernière peut intégrer un &laquo;&nbsp;autorun&nbsp;&raquo; qui permettra d&#8217;exécuter la distribution dans une machine virtuelle sur Windows.</li>
</ul>
</div>
<p>&nbsp;</p>
<h3>Liens :</h3>
<ul>
<li>Site officiel : <a title="Linux Live USB" href="http://www.linuxliveusb.com">www.linuxliveusb.com</a></li>
<li><a title="Matrice de support" href="http://www.linuxliveusb.com/en/supported-linuxes">Distributions supportées</a>.</li>
</ul>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jopa.fr/index.php/2011/08/10/linux-live-usb-creator/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>QR Codes et encodage (qrencode)</title>
		<link>http://www.jopa.fr/index.php/2009/08/26/qr-codes-et-encodage-qrencode/</link>
		<comments>http://www.jopa.fr/index.php/2009/08/26/qr-codes-et-encodage-qrencode/#comments</comments>
		<pubDate>Tue, 25 Aug 2009 22:12:37 +0000</pubDate>
		<dc:creator>Jopa</dc:creator>
				<category><![CDATA[Astuces]]></category>
		<category><![CDATA[Bidouilles]]></category>
		<category><![CDATA[Planet-Libre]]></category>
		<category><![CDATA[Code barre]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Logiciels Libres]]></category>

		<guid isPermaLink="false">http://www.jopa.fr/?p=1758</guid>
		<description><![CDATA[Pour compléter mon billet sur la génération de codes barres, je vais me pencher sur les codes à 2 dimensions : les QR Codes. Pour reprendre la définition de &#171;&#160;Wikipedia&#160;&#187; : Le code QR ou QR Code (en anglais) est un code-barres en 2 dimensions (code matrice) pouvant stocker jusqu&#8217;à 7089 caractères numériques, 4296 caractères alphanumériques (contrairement au code-barre [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;">Pour compléter mon billet<a title="generer-codes-barres-lignes-de-commandes-linux-barcode" href="generer-codes-barres-lignes-de-commandes-linux-barcode"> sur la génération de codes barres</a>, je vais me pencher sur les codes à 2 dimensions : les QR Codes.</p>
<p style="text-align: center;"><img class="size-full wp-image-1759 aligncenter" title="jopaqrcode" src="http://www.jopa.fr/wp-content/uploads/2009/08/jopaqrcode.png" alt="jopaqrcode" width="135" height="135" /></p>
<p>Pour reprendre la définition de &laquo;&nbsp;<a title="http://fr.wikipedia.org/wiki/Code_QR" href="http://fr.wikipedia.org/wiki/Code_QR">Wikipedia</a>&nbsp;&raquo; :</p>
<blockquote>
<p style="text-align: justify;">Le <strong>code QR</strong> ou <em><strong>QR Code</strong></em> (en <a style="text-decoration: none; color: #002bb8; background-image: none; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: initial; background-position: initial initial;" title="Anglais" href="http://fr.wikipedia.org/wiki/Anglais">anglais</a>) est un <a style="text-decoration: none; color: #002bb8; background-image: none; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: initial; background-position: initial initial;" title="Code-barre" href="http://fr.wikipedia.org/wiki/Code-barre">code-</a><a style="text-decoration: none; color: #002bb8; background-image: none; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: initial; background-position: initial initial;" title="Code-barre" href="http://fr.wikipedia.org/wiki/Code-barre">barres</a> en 2 dimensions (code matrice) pouvant stocker jusqu&#8217;à 7089 caractères numériques, 4296 caractères alphanumériques (contrairement au code-barre « traditionnel » qui lui ne peut stocker que de 10 à 13 caractères) ou 2953 <a style="text-decoration: none; color: #002bb8; background-image: none; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: initial; background-position: initial initial;" title="Octet" href="http://fr.wikipedia.org/wiki/Octet">octets</a> . Il a l&#8217;avantage de pouvoir stocker beaucoup d&#8217;informations tout en étant petit et rapide à scanner. Ainsi, le sigle « QR » dérive de « <em>Quick Respons<span style="font-style: normal;"><em>e</em> » car le contenu peut être décodé rapidement.</span></em></p>
<p style="text-align: justify;"><em><span style="font-style: normal;"><br />
</span></em></p></blockquote>
<p style="text-align: justify; "><span id="more-1758"></span></p>
<p style="text-align: justify; ">Ce type de code, par sa capacité, permet de &laquo;&nbsp;stocker&nbsp;&raquo; un petit texte, une adresse e-mail, une url, un numéro de téléphone ou encore une <em><a title="http://fr.wikipedia.org/wiki/Vcard" href="http://fr.wikipedia.org/wiki/Vcard">vcard</a></em> complète. Il présente l&#8217;intérêt de pouvoir être interprété rapidement à partir d&#8217;un PDA ou d&#8217;un téléphone, bien sûr munis d&#8217;un appareil photo et d&#8217;une petite application permettant le décodage. Le contenu, en fonction de son type, peut être, ensuite, traité directement par l&#8217;appareil : pointage du navigateur vers l&#8217;url, création d&#8217;un nouvel email,  import de la <em>vcard </em>dans le carnet d&#8217;adresses, etc&#8230; Un concept qui ravie les adeptes de gadgets mobiles, en permettant, en un shoot, la saisie d&#8217;adresses ou d&#8217;url, pas toujours très pratique, voir fastidieuse sur ce genre d&#8217;appareil.</p>
<p style="text-align: justify; ">
<p style="text-align: justify; ">
<div id="attachment_1786" class="wp-caption alignnone" style="width: 490px"><a href="http://fr.androlib.com/android.application.com-google-zxing-client-android-xzA.aspx"><img class="size-full wp-image-1786" title="Barcode-Scanner-URL-Found" src="http://www.jopa.fr/wp-content/uploads/2009/08/Barcode-Scanner-URL-Found.jpg" alt="Application &quot;Barcode scanner&quot; sur un téléphone Androïd (HTC Hero)" width="480" height="320" /></a><p class="wp-caption-text">Application &quot;Barcode scanner&quot; sur un téléphone Androïd (HTC Hero)</p></div>
<p style="text-align: justify; ">
<p>Pour créer son propre <em>QR Code</em>, il existe de nombreux générateurs en ligne, en voici quelques uns, la liste est loin d&#8217;être exhaustive :</p>
<ul>
<li><a title="http://qrcode.kaywa.com" href="http://qrcode.kaywa.com">http://qrcode.kaywa.com</a>,</li>
<li><a title="http://www.snapmaze.com/" href="http://www.snapmaze.com/">http://www.snapmaze.com</a>,</li>
<li><a title="http://zxing.appspot.com/generator" href="http://zxing.appspot.com/generator">http://zxing.appspot.com/generator</a>.</li>
</ul>
<p>Comme pour les codes barres classiques (1 dimension), ce qui va m&#8217;intéresser, c&#8217;est bien entendu de pouvoir les générer en local&#8230; et si possible en lignes de commandes ( eh oui ! Encore !).</p>
<p>Il existe un petit programme qui fait ça très bien et qui se nomme judicieusement : <a title="http://megaui.net/fukuchi/works/qrencode/index.en.html" href="http://megaui.net/fukuchi/works/qrencode/index.en.html">qrencode</a>.</p>
<p><em>qrencode</em> est intégré dans la majeure partie des distributions, si ce n&#8217;était pas votre cas, vous pouvez toujours télécharger les sources sur le <a title="http://megaui.net/fukuchi/works/qrencode/index.en.html" href="http://megaui.net/fukuchi/works/qrencode/index.en.html">site officiel</a>.</p>
<p>Ce petit outil permet de générer une image au format <em>png</em>, à partir d&#8217;une ou plusieurs chaînes de caractères.</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p1758code2'); return false;">View Code</a> SH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p17582"><td class="code" id="p1758code2"><pre class="sh" style="font-family:monospace;">$ qrencode --help
qrencode version 3.0.3
Copyright (C) 2006, 2007, 2008 Kentaro Fukuchi
Usage: qrencode [OPTION]... [STRING]
Encode input data in a QR Code and save as a PNG image.
&nbsp;
-h           display this message.
--help       display the usage of long options.
-o FILENAME  write PNG image to FILENAME. If '-' is specified, the result
will be output to standard output. If -S is given, structured
symbols are written to FILENAME-01.png, FILENAME-02.png, ...;
if specified, remove a trailing '.png' from FILENAME.
-s NUMBER    specify the size of dot (pixel). (default=3)
-l {LMQH}    specify error collectin level from L (lowest) to H (highest).
(default=L)
-v NUMBER    specify the version of the symbol. (default=auto)
-m NUMBER    specify the width of margin. (default=4)
-S           make structured symbols. Version must be specified.
-k           assume that the input text contains kanji (shift-jis).
-c           encode lower-case alphabet characters in 8-bit mode. (default)
-i           ignore case distinctions and use only upper-case characters.
-8           encode entire data in 8-bit mode. -k, -c and -i will be ignored.
-V           display the version number and copyrights of the qrencode.
[STRING]     input data. If it is not specified, data will be taken from
standard input.</pre></td></tr></table></div>

<p style="text-align: justify;">
<p style="text-align: justify;">
<p style="text-align: justify;">La plupart des paramètres disposent d&#8217;une valeur par défaut, ce qui simplifie la mise en œuvre pour une utilisation &laquo;&nbsp;classique&nbsp;&raquo;. Il suffit de préciser le nom de fichier en sortie et le contenu à encoder.</p>
<p style="text-align: justify;"><span style="color: #800000;">$ qrencode -o test1.png &laquo;&nbsp;http://www.jopa.fr&nbsp;&raquo;<br />
$ qrencore -o test2.png &lt; test.txt</span></p>
<p style="text-align: justify;">
<div><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/OxFR6r-Dqk4&amp;hl=fr&amp;fs=1&amp;" /><param name="allowfullscreen" value="true" /><embed type="application/x-shockwave-flash" width="425" height="344" src="http://www.youtube.com/v/OxFR6r-Dqk4&amp;hl=fr&amp;fs=1&amp;" allowscriptaccess="always" allowfullscreen="true"></embed></object></div>
<p style="text-align: justify;">
<p style="text-align: justify;">Pour en savoir plus :</p>
<ul>
<li><a title="http://journal-smala.org/?18-qr-code.html" href="http://journal-smala.org/?18-qr-code.html">QR-code ? Clovis Darrigan répond</a>,</li>
<li><a title="http://fr.wikipedia.org/wiki/Code_QR" href="http://fr.wikipedia.org/wiki/Code_QR">Wikipedia</a>,</li>
<li><a title="http://megaui.net/fukuchi/works/qrencode/index.en.html" href="http://megaui.net/fukuchi/works/qrencode/index.en.html">QrEncode</a>,</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.jopa.fr/index.php/2009/08/26/qr-codes-et-encodage-qrencode/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Construire sa borne d&#8217;arcade&#8230;en 6 mois&#8230;</title>
		<link>http://www.jopa.fr/index.php/2009/08/17/construire-sa-borne-darcade-en-6-mois/</link>
		<comments>http://www.jopa.fr/index.php/2009/08/17/construire-sa-borne-darcade-en-6-mois/#comments</comments>
		<pubDate>Mon, 17 Aug 2009 21:47:28 +0000</pubDate>
		<dc:creator>Jopa</dc:creator>
				<category><![CDATA[Bidouilles]]></category>
		<category><![CDATA[Divers]]></category>
		<category><![CDATA[Planet-Libre]]></category>
		<category><![CDATA[bricolage]]></category>
		<category><![CDATA[Jeux]]></category>
		<category><![CDATA[Linux]]></category>

		<guid isPermaLink="false">http://www.jopa.fr/?p=1691</guid>
		<description><![CDATA[Sur son nouveau site, Torglut nous explique comment construire sa propre borne d&#8217;arcade&#8230; en 6 mois ! Au final,  un beau meuble à monter sois-même et biensûr, une utilisation ludique de notre OS préféré&#8230; Sur ce site, tu vas apprendre à construire une borne d&#8217;arcade en 6 mois. Les esprits chagrins diront que 6 mois, [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;">Sur son <a title="http://torglut.free.fr/" href="http://torglut.free.fr/" target="_blank">nouveau site</a>, <em>Torglut</em> nous explique comment construire sa propre borne d&#8217;arcade&#8230; en 6 mois ! Au final,  un beau meuble à monter sois-même et biensûr, une utilisation ludique de notre OS préféré&#8230;</p>
<p style="text-align: center;"><a href="http://torglut.free.fr/"><img class="size-medium wp-image-1692 aligncenter" title="img_43_0012_final" src="http://www.jopa.fr/wp-content/uploads/2009/08/img_43_0012_final-225x300.jpg" alt="img_43_0012_final" width="225" height="300" /></a></p>
<blockquote><p>Sur ce site, tu vas apprendre à construire une borne d&#8217;arcade en 6 mois. Les <a href="http://fr.wiktionary.org/wiki/esprit_chagrin">esprits chagrins</a> diront que 6 mois, c&#8217;est très long.<br />
Effectivement, c&#8217;est très long, surtout qu&#8217;on peut <a href="http://chris.polymathic.net/cabinet/index.shtml">construire une borne d&#8217;arcade en 24 heures</a>.<br />
Seulement voilà, je suis assez mauvais en bricolage, d&#8217;où les 6 mois <img src='http://www.jopa.fr/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /><br />
Je remercie au passage l&#8217;auteur du site ci-dessus, sur lequel je me suis basé pour construire la borne.<br />
Ce site est donc fait pour toi, qui possèdes à peu près le même niveau que moi en bricolage, c&#8217;est à dire un niveau 0 sur une échelle de 10.</p></blockquote>
<p><a title="Construire une borne d'arcade" href="http://torglut.free.fr/">Pour la leçon de bricolage, c&#8217;est par là !</a></p>
<p style="text-align: center;">
]]></content:encoded>
			<wfw:commentRss>http://www.jopa.fr/index.php/2009/08/17/construire-sa-borne-darcade-en-6-mois/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Pam et Mir:ror : une authentification RFID sous Linux</title>
		<link>http://www.jopa.fr/index.php/2009/07/16/linux-pam-et-mirror-une-authentification-rfid/</link>
		<comments>http://www.jopa.fr/index.php/2009/07/16/linux-pam-et-mirror-une-authentification-rfid/#comments</comments>
		<pubDate>Wed, 15 Jul 2009 23:10:03 +0000</pubDate>
		<dc:creator>Jopa</dc:creator>
				<category><![CDATA[Bidouilles]]></category>
		<category><![CDATA[Configurations]]></category>
		<category><![CDATA[Planet-Libre]]></category>
		<category><![CDATA[Développement]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Mir:ror]]></category>
		<category><![CDATA[rfid]]></category>
		<category><![CDATA[Sécurité]]></category>

		<guid isPermaLink="false">http://www.jopa.fr/?p=1461</guid>
		<description><![CDATA[Cette pluvieuse journée du 14 juillet m&#8217;a permis de poursuivre mes petits travaux sur le lecteur rfid &#171;&#160;Mir:ror&#160;&#187;. Dans les articles précédents, je me suis surtout intéressé au déclenchement d&#8217;événements en fonction des puces rfid détectées (ou pas) par le lecteur, oubliant l&#8217;essence même du RFID : l&#8217;authentification. J&#8217;ai donc profité de ce temps à [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;"><img class="alignleft size-full wp-image-1462" title="pam_mirror" src="http://www.jopa.fr/wp-content/uploads/2009/07/pam_mirror.jpg" alt="pam_mirror" width="201" height="204" />Cette pluvieuse journée du 14 juillet m&#8217;a permis de poursuivre mes petits travaux sur le lecteur rfid &laquo;&nbsp;Mir:ror&nbsp;&raquo;. Dans les articles précédents, je me suis surtout intéressé au déclenchement d&#8217;événements en fonction des puces <em>rfid </em>détectées (ou pas) par le lecteur, oubliant l&#8217;essence même du RFID : l&#8217;authentification. J&#8217;ai donc profité de ce temps à ne pas mettre mon chat dehors pour écrire un module <a title="http://fr.wikipedia.org/wiki/Pluggable_Authentication_Modules" href="http://fr.wikipedia.org/wiki/Pluggable_Authentication_Modules">PAM (Pluggable Authentification Module)</a> permettant d&#8217;authentifier un utilisateur via le <em>Mir:ror</em>.</p>
<p style="text-align: justify;">L&#8217;idée est simple : si mon <em>Mir:ror</em> est connecté à l&#8217;ordinateur et qu&#8217;un fichier contenant mon <em>rfid </em>est présent dans mon répertoire, je veux pouvoir ouvrir ma session à l&#8217;aide d&#8217;une puce <em>RFID </em>(carte, badge, ztamp:s, laaaaapin&#8230;) à la place de saisir mon mot de passe.</p>
<p style="text-align: justify;"><span id="more-1461"></span></p>
<p style="text-align: justify;">Je ne vais pas m&#8217;attarder ici à décrire la manière dont est codé le module, je vous laisse le soin de lire les sources&#8230; Je vais me contenter d&#8217;expliquer son installation et son utilisation.</p>
<h2>Mise en garde :</h2>
<p style="text-align: justify;">Pour plusieurs raisons dont la simplification du module et mes piètres talents de développeur, il va sans dire que ce petit programme ne doit pas être utilisé en environnement sécurisé. Par contre, pour la maison, c&#8217;est plutôt fun !</p>
<p style="text-align: justify;"><em>Nous touchons ici à une partie sensible du système : l&#8217;authentification. Les manipulations ci-dessous sont donc à réaliser avec prudence.</em></p>
<h2>Compilation :</h2>
<p>Pour pouvoir compiler <em>pam_mir-ror</em>, il nous faut installer un version récente de la librairie de développement pam (libpam-dev). J&#8217;ai utilisé la version 1.0.1 proposée par défaut sous Debian Lenny.</p>
<p><span style="color: #800000;">$ sudo aptitude install libpam-dev</span></p>
<p>L&#8217;archive contenant les sources est téléchargeable ci-dessous :</p>
<ul>
<li><a href="http://www.jopa.fr/wp-content/uploads/2009/07/pam_mir-ror.0.2.tar.gz">pam_mir-ror.0.2.tar.gz</a></li>
</ul>
<p style="text-align: justify;">Une fois téléchargée, il faut la décompresser et tout simplement lancer la commande &laquo;&nbsp;make&nbsp;&raquo;.</p>
<p><span style="color: #800000;">$ tar -xvzf pam_mir-ror.0.2.tar.gz<br />
$ cd pam_mir-ror.0.2<br />
$ make</span></p>
<p style="text-align: justify;">Si tout se passe bien, nous devrions obtenir deux binaires :</p>
<ul style="text-align: justify;">
<li>read_mir-ror : Un petit outil permettant la lecture à partir du Mir:ror,</li>
<li style="text-align: justify;">pam_mir-ror.so : Le module pam.</li>
</ul>
<h2 style="text-align: justify;">read_mir-ror</h2>
<p style="text-align: justify;">Le petit outil read_mir-ror va nous permettre de tester le lecteur. Il suffit de l&#8217;exécuter et d&#8217;approcher une puce rfid.</p>
<p style="text-align: justify;"><span style="color: #800000;">$ sudo ./read_mirror<br />
0000D0081A025303420200D2</span></p>
<p style="text-align: justify;">La série de chiffres affichée n&#8217;est rien d&#8217;autre que l&#8217;ID de l&#8217;objet détecté.</p>
<p style="text-align: justify;"><em>Il est préférable d&#8217;utiliser read_mirror avec les droits root, au moins la première fois, pour l&#8217;accès au périphérique mir:ror. Par défaut, le mir:ror n&#8217;est accessible que par root. Les droits du handler sont changés à la première utilisation de la fonction de détection (inclue dans l&#8217;outil et le module). Il serait certainement plus propre de coder un petit outil qui serait automatiquement lancé par udev ou hotplug au branchement du Mir:ror, mais pour un module PAM, ce n&#8217;est pas très important.<br />
</em></p>
<h2 style="text-align: justify;">Génération du fichier utilisateur</h2>
<p style="text-align: justify;">Le même outil (read_mir-ror), va nous permettre de générer le fichier <em>.authtag </em>contenant le rfid propre à chaque utilisateur :</p>
<p style="text-align: justify;">Pour l&#8217;utilisateur courant :</p>
<p style="text-align: justify;"><span style="color: #800000;">$ sudo ./read_mirror &gt; ~/.authtag<br />
$ sudo chmod 400 ~/.authtag</span></p>
<p style="text-align: justify;">Pour un autre utilisateur  (toto):</p>
<p style="text-align: justify;"><span style="color: #800000;">$ sudo ./read_mirror &gt; /home/toto/.authtag<br />
$ sudo chmod 400 /home/toto/.authtag</span></p>
<p style="text-align: justify;">Il faut bien entendu présenter la puce au lecteur juste après la commande <em>./read_mirror</em>.<br />
Le fichier .authtag doit maintenant contenir le tag :</p>
<p><span style="color: #800000;">$ cat ~/.authtag</span><br />
<span style="color: #800000;">0000D0081A025303420200D2</span></p>
<h2 style="text-align: justify;">Module PAM  :  pam_mir:ror.so</h2>
<p style="text-align: justify;">Pour qu&#8217;il soit utilisable par PAM, il faut que <em>pam_mir:ror.so</em> soit présent dans /lib/security (lib64/security pour une architecture 64 bits)</p>
<p style="text-align: justify;"><span style="color: #800000;">$ sudo cp pam_mir-ror.so /lib/security</span></p>
<p style="text-align: justify;">ou pour un module 64 bits :</p>
<p style="text-align: justify;"><span style="color: #800000;">$ sudo cp pam_mir-ror.so /lib64/securit</span>y</p>
<p style="text-align: justify;">La dernière étape va être l&#8217;ajout du module à PAM. Pour cela, il nous faut éditer le fichier :<br />
<em>/etc/pam.d/common-auth </em>pour y ajouter, avant les modules pam_unix.so ou pam_unix2.so :</p>
<p style="text-align: justify;"><em>auth             sufficient         pam_mir-ror.so</em></p>
<p style="text-align: justify;"><em>/etc/pam.d/common-auth</em></p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p1461code4'); return false;">View Code</a> INI</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p14614"><td class="code" id="p1461code4"><pre class="ini" style="font-family:monospace;">#
# /etc/pam.d/common-auth - authentication settings common to all services
...
auth    sufficient                      pam_mir-ror.so
# here are the per-package modules <span style="">&#40;</span>the <span style="color: #933;">&quot;Primary&quot;</span> block<span style="">&#41;</span>
auth    <span style="color: #000066; font-weight:bold;"><span style="">&#91;</span>success<span style="color: #000066; font-weight:bold;">=</span><span style="color: #660066;">1 default=ignore<span style="">&#93;</span></span>      pam_unix.so nullok_secure</span>
# here's the fallback if no module succeeds
auth    requisite                       pam_deny.so
# prime the stack with a positive return value if there isn't one already<span style="color: #666666; font-style: italic;">;</span>
# this avoids us returning an error just because nothing sets a success code
# since the modules above will each just jump around
auth    required                        pam_permit.so
# and here are more per-package modules <span style="">&#40;</span>the <span style="color: #933;">&quot;Additional&quot;</span> block<span style="">&#41;</span>
# end of pam-auth-update config</pre></td></tr></table></div>

<p style="text-align: justify;">Avant de rebooter frénétiquement la machine pour voir ce que ça peut donner avec <em>gdm</em>,  je conseille vivement de tester sur une console (crtl-alt-F1 par exemple)&#8230; Comme expliqué en début d&#8217;article, nous touchons ici à une partie sensible du système et c&#8217;est mieux de garder la main pour éviter des pirouettes telles qu&#8217;un redémarrage en single user ou à partir d&#8217;un liveCD pour réparer.</p>
<p style="text-align: justify;">J&#8217;ai fait en sorte que le module loggue un minimum. En fonction du système, ces logs sont visibles dans /var/log/auth.log ou /var/log/syslog.</p>
<p style="text-align: justify;"><a href="http://www.jopa.fr/wp-content/uploads/2009/07/shell1.png"><img class="aligncenter size-full wp-image-1478" title="shell" src="http://www.jopa.fr/wp-content/uploads/2009/07/shell1.png" alt="shell" width="457" height="263" /></a></p>
<p style="text-align: justify;">Dernière version des sources : <a href="http://www.jopa.fr/wp-content/uploads/2009/07/pam_mir-ror.0.2.tar.gz">pam_mir-ror.0.2.tar.gz</a></p>
<p style="text-align: justify;">
<p style="text-align: justify;">
<p style="text-align: justify;">
]]></content:encoded>
			<wfw:commentRss>http://www.jopa.fr/index.php/2009/07/16/linux-pam-et-mirror-une-authentification-rfid/feed/</wfw:commentRss>
		<slash:comments>11</slash:comments>
		</item>
		<item>
		<title>Mir:ror mon beau Mir:ror&#8230;Comment puis-je te comprendre ?</title>
		<link>http://www.jopa.fr/index.php/2009/07/12/violet-mirror-acces-device-c/</link>
		<comments>http://www.jopa.fr/index.php/2009/07/12/violet-mirror-acces-device-c/#comments</comments>
		<pubDate>Sun, 12 Jul 2009 00:22:12 +0000</pubDate>
		<dc:creator>Jopa</dc:creator>
				<category><![CDATA[Bidouilles]]></category>
		<category><![CDATA[Divers]]></category>
		<category><![CDATA[Planet-Libre]]></category>
		<category><![CDATA[Scripts]]></category>
		<category><![CDATA[Développement]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Mir:ror]]></category>
		<category><![CDATA[rfid]]></category>

		<guid isPermaLink="false">http://www.jopa.fr/?p=1415</guid>
		<description><![CDATA[Dans mon précédent article, je présentais mir:ror, le petit lecteur RFID commercialisé par la société Violet.  Après avoir survolé leur application &#171;&#160;Mirware&#160;&#187; et mis en évidence les limites de son utilisation, je vais mettre &#171;&#160;les mains dans le cambouis&#160;&#187; pour essayer de comprendre comment communiquer avec Mir:ror.  L&#8217;idée étant de pouvoir coder de petits outils [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;"><img class="alignright size-medium wp-image-1437" title="miror" src="http://www.jopa.fr/wp-content/uploads/2009/07/miror-300x254.jpg" alt="miror" width="184" height="156" />Dans mon <a title="http://www.jopa.fr/index.php/2009/07/07/violet-mirror-linux" href="http://www.jopa.fr/index.php/2009/07/07/violet-mirror-linux">précédent article</a>, je présentais <em>mir:ror</em>, le petit lecteur RFID commercialisé par la société <a title="http://www.violet.net/" href="http://www.violet.net/">Violet</a>.  Après avoir survolé leur application &laquo;&nbsp;Mirware&nbsp;&raquo; et mis en évidence les limites de son utilisation, je vais mettre &laquo;&nbsp;les mains dans le cambouis&nbsp;&raquo; pour essayer de comprendre comment communiquer avec Mir:ror.  L&#8217;idée étant de pouvoir coder de petits outils capables de réagir à des tags RFID.</p>
<p style="text-align: justify;"><span id="more-1415"></span></p>
<p style="text-align: justify;">D&#8217;un point de vu système, Mir:ror est directement reconnu sous Linux et accessible via le handler de périphérique /dev/hidraw<em>X</em> (où <em>X</em> est le numéro de périphérique, normalement &laquo;&nbsp;0&#8243; si c&#8217;est le premier appareil du genre connecté).</p>
<p style="text-align: justify;">La petite application &laquo;&nbsp;<em>discover-device</em>&laquo;&nbsp;, fournie avec <em>Mirware</em>, permet de le détecter automatiquement :</p>
<p style="text-align: justify;"><img class="aligncenter size-full wp-image-1417" title="discover-device" src="http://www.jopa.fr/wp-content/uploads/2009/07/discover-device.png" alt="discover-device" width="457" height="246" /></p>
<p style="text-align: justify;">Attention tout de même aux droits, le périphérique n&#8217;est par défaut accessible que par <em>root</em>, il faudra lui changer les droits ou utiliser le script &laquo;&nbsp;<em>installer.sh</em>&nbsp;&raquo; pour le faire, avant de pouvoir l&#8217;exploiter avec un utilisateur standard.</p>
<p style="text-align: justify;">Commençons par voir ce qu&#8217;il se passe avec un simple &laquo;&nbsp;cat&nbsp;&raquo; du fichier :</p>
<p style="text-align: justify;"><img class="size-full wp-image-1421 aligncenter" title="cat-miror" src="http://www.jopa.fr/wp-content/uploads/2009/07/cat-miror.png" alt="cat-miror" width="457" height="246" /></p>
<p style="text-align: justify;">Des hiéroglyphes s&#8217;affichent lorsque nous approchons ou retirons un tag&#8230; C&#8217;est plutôt bon signe, et visiblement c&#8217;est binaire ! Nous devrions y voir plus clair avec un affichage en hexadécimal.  <em>Hexdump</em> est idéal pour ça !</p>
<p style="text-align: justify;"><img class="aligncenter size-full wp-image-1422" title="hexdump" src="http://www.jopa.fr/wp-content/uploads/2009/07/hexdump.png" alt="hexdump" width="457" height="246" /></p>
<p style="text-align: justify;">La première ligne (0000 0000 0000 0000 0000 0000 0000 0000 *) nous indique que tant qu&#8217;il ne se passe rien, on lit des zéros&#8230; Où&#8230;Qu&#8217;on lit des zéros tant qu&#8217;il ne se passe rien ! (c&#8217;est plutôt normal).<br />
Les deux lignes suivantes (0102 0000 d008 1a02 5303 4202 00d2 0000 &#8211; 0000 0000 0000 0000 0000 0000 0000 0000) s&#8217;affichent lorsqu&#8217;un tag est approché, les deux dernières ( 0202 0000 d008 1a02 5303 4202 00d2 0000 &#8211; 0000 0000 0000 0000 0000 0000 0000 0000 ) lorsqu&#8217;on éloigne le tag.</p>
<p style="text-align: justify;">Après plusieurs tests, j&#8217;en déduis assez facilement que les deux premiers octets (0102 ou 0202) codent l&#8217;évènement. J&#8217;en ai repéré 4 types :</p>
<ul style="text-align: justify;">
<li>0&#215;0102 : Tag rfid détecté,</li>
<li>0&#215;0202 : Tag rfid retiré,</li>
<li>0&#215;0501 : Le mir:ror est mis à l&#8217;envert,</li>
<li>0&#215;0401 : Le mir:ror est remis à l&#8217;endroit.</li>
</ul>
<p style="text-align: justify;">Les 12 octets suivants semblent identifier la puce RFID.</p>
<p style="text-align: justify;">A titre de test, écrivons rapidement un petit bout de code C, prenant le device en paramètre et affichant les évènements et le tag associé :</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p1415code9'); return false;">View Code</a> C</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p14159"><td class="code" id="p1415code9"><pre class="c" style="font-family:monospace;"><span style="color: #666666; font-style: italic;">// Jopa - Petit test du Mir:ror : test_mirror.c</span>
<span style="color: #339933;">#include &lt;stdio.h&gt;</span>
<span style="color: #339933;">#include &lt;stdlib.h&gt;</span>
&nbsp;
<span style="color: #993333;">int</span> main<span style="color: #009900;">&#40;</span><span style="color: #993333;">int</span> argc<span style="color: #339933;">,</span> <span style="color: #993333;">char</span> <span style="color: #339933;">*</span>argv<span style="color: #009900;">&#91;</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
  FILE <span style="color: #339933;">*</span>mirror<span style="color: #339933;">;</span>
  <span style="color: #993333;">short</span> <span style="color: #993333;">unsigned</span> <span style="color: #993333;">int</span> block<span style="color: #339933;">;</span>
  <span style="color: #993333;">short</span> <span style="color: #993333;">unsigned</span> <span style="color: #993333;">int</span> event<span style="color: #339933;">;</span>
  <span style="color: #993333;">char</span> tag<span style="color: #009900;">&#91;</span><span style="color: #0000dd;">25</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
  <span style="color: #993333;">int</span> i<span style="color: #339933;">;</span>
&nbsp;
  <span style="color: #666666; font-style: italic;">//Vérification du paramètre (device)</span>
  <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span>argc<span style="color: #339933;">!=</span><span style="color: #0000dd;">2</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
        <span style="color: #000066;">printf</span> <span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;Usage : %s mirror_device <span style="color: #000099; font-weight: bold;">\n</span><span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #339933;">,</span>argv<span style="color: #009900;">&#91;</span><span style="color: #0000dd;">0</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        exit<span style="color: #009900;">&#40;</span><span style="color: #339933;">-</span><span style="color: #0000dd;">1</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  <span style="color: #009900;">&#125;</span>
&nbsp;
  <span style="color: #666666; font-style: italic;">// Ouverture du fichier device</span>
  mirror <span style="color: #339933;">=</span> fopen<span style="color: #009900;">&#40;</span>argv<span style="color: #009900;">&#91;</span><span style="color: #0000dd;">1</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">,</span><span style="color: #ff0000;">&quot;rb&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #339933;">!</span>mirror<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
        <span style="color: #000066;">printf</span><span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;Accès à  %s impossible !<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #339933;">,</span>argv<span style="color: #009900;">&#91;</span><span style="color: #0000dd;">1</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        exit<span style="color: #009900;">&#40;</span><span style="color: #339933;">-</span><span style="color: #0000dd;">1</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  <span style="color: #009900;">&#125;</span>
&nbsp;
  <span style="color: #666666; font-style: italic;">// Boucle en lecture</span>
  <span style="color: #b1b100;">while</span> <span style="color: #009900;">&#40;</span><span style="color: #0000dd;">1</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
     fread<span style="color: #009900;">&#40;</span><span style="color: #339933;">&amp;</span>event<span style="color: #339933;">,</span><span style="color: #0000dd;">2</span><span style="color: #339933;">,</span><span style="color: #0000dd;">1</span><span style="color: #339933;">,</span>mirror<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
     <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span>event<span style="color: #339933;">!=</span><span style="color: #0000dd;">0</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
        <span style="color: #666666; font-style: italic;">// Evenement detecté, lecture de l'ID</span>
        <span style="color: #b1b100;">for</span> <span style="color: #009900;">&#40;</span>i<span style="color: #339933;">=</span><span style="color: #0000dd;">0</span><span style="color: #339933;">;</span>i<span style="color: #339933;">&lt;</span><span style="color: #0000dd;">6</span><span style="color: #339933;">;</span>i<span style="color: #339933;">++</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
            fread<span style="color: #009900;">&#40;</span><span style="color: #339933;">&amp;</span>block<span style="color: #339933;">,</span><span style="color: #0000dd;">2</span><span style="color: #339933;">,</span><span style="color: #0000dd;">1</span><span style="color: #339933;">,</span>mirror<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
            sprintf<span style="color: #009900;">&#40;</span><span style="color: #339933;">&amp;</span>tag<span style="color: #009900;">&#91;</span>i<span style="color: #339933;">*</span><span style="color: #0000dd;">4</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">,</span><span style="color: #ff0000;">&quot;%04X&quot;</span><span style="color: #339933;">,</span>block<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        <span style="color: #009900;">&#125;</span>
&nbsp;
 <span style="color: #666666; font-style: italic;">//Affichage en fonction de l'événement</span>
        <span style="color: #b1b100;">switch</span> <span style="color: #009900;">&#40;</span>event<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
            <span style="color: #666666; font-style: italic;">// Tag On</span>
            <span style="color: #b1b100;">case</span> <span style="color: #208080;">0x102</span> <span style="color: #339933;">:</span>
                <span style="color: #000066;">printf</span><span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;%s : ON<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #339933;">,</span>tag<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
                <span style="color: #000000; font-weight: bold;">break</span><span style="color: #339933;">;</span>
&nbsp;
             <span style="color: #666666; font-style: italic;">//Tag Off</span>
             <span style="color: #b1b100;">case</span> <span style="color: #208080;">0x202</span> <span style="color: #339933;">:</span>
                 <span style="color: #000066;">printf</span><span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;%s : OFF<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #339933;">,</span>tag<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
                 <span style="color: #000000; font-weight: bold;">break</span><span style="color: #339933;">;</span>
&nbsp;
             <span style="color: #666666; font-style: italic;">//Mirror envers</span>
             <span style="color: #b1b100;">case</span> <span style="color: #208080;">0x501</span> <span style="color: #339933;">:</span>
                 <span style="color: #000066;">printf</span><span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;MIR:ROR ENVERS<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
                 <span style="color: #000000; font-weight: bold;">break</span><span style="color: #339933;">;</span>
&nbsp;
             <span style="color: #666666; font-style: italic;">//Mirror endroit</span>
             <span style="color: #b1b100;">case</span> <span style="color: #208080;">0x401</span> <span style="color: #339933;">:</span>
                   <span style="color: #000066;">printf</span><span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;MIR:ROR ENDROIT<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
                    <span style="color: #000000; font-weight: bold;">break</span><span style="color: #339933;">;</span>
&nbsp;
             <span style="color: #666666; font-style: italic;">//Default</span>
             <span style="color: #b1b100;">default</span> <span style="color: #339933;">:</span>
                   <span style="color: #000066;">printf</span><span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;Evénement inconnu<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        <span style="color: #009900;">&#125;</span> <span style="color: #666666; font-style: italic;">//switch</span>
      <span style="color: #009900;">&#125;</span> <span style="color: #666666; font-style: italic;">//if (event</span>
   <span style="color: #009900;">&#125;</span> <span style="color: #666666; font-style: italic;">//while (1)</span>
<span style="color: #009900;">&#125;</span> <span style="color: #666666; font-style: italic;">// main()</span></pre></td></tr></table></div>

<p style="text-align: justify;">En quelques lignes, nous ouvrons le périphérique dont le handler est passé en paramètre et bouclons sur sa lecture, 2 octets par 2 octets.<br />
Quand autre chose que &laquo;&nbsp;0&#8243; est détecté, c&#8217;est forcément un changement d&#8217;état. Nous lisons ensuite l&#8217;identifiant de la puce RFID.<br />
La dernière partie affiche un message en fonction de l&#8217;évènement détecté.</p>
<p style="text-align: justify;">Il ne reste plus qu&#8217;à le compiler et le tester :<br />
<span style="color: #800000;">$ gcc test_mirror.c -o test_mirror<br />
$ ./test_mirror</span></p>
<p><img class="aligncenter size-full wp-image-1434" title="test_mirror" src="http://www.jopa.fr/wp-content/uploads/2009/07/test_mirror.png" alt="test_mirror" width="497" height="331" /></p>
<p><span style="color: #800000;">Pour compléter l&#8217;exemple, nous pouvons rajouter l&#8217;exécution d&#8217;un script associé au tag et à son approche ou son éloignement. Les scripts pourraient être stockés dans le répertoire de l&#8217;utilisateur et porter l&#8217;<em>&lt;id&gt;-on.sh</em> ou l&#8217;<em>&lt;id&gt;-off.sh</em> comme nom. Pour l&#8217;exemple :</span></p>
<ul>
<li>0000D0081A025303420200D2-on.sh : Lancement de Firefox sur le blog de Jopa</li>
</ul>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p1415code10'); return false;">View Code</a> SH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p141510"><td class="code" id="p1415code10"><pre class="sh" style="font-family:monospace;">#!/bin/sh
firefox http://www.jopa.fr</pre></td></tr></table></div>

<ul>
<li>0000D0081A025303420200D2-off.sh : Lancement de Thunderbird</li>
</ul>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p1415code11'); return false;">View Code</a> SH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p141511"><td class="code" id="p1415code11"><pre class="sh" style="font-family:monospace;">#!/bin/sh
thunderbird</pre></td></tr></table></div>

<p><span style="color: #800000;">$ chmod +x ~/0000D0081A025303420200D2-*.sh</span></p>
<p style="text-align: justify;">Adaptons un peu le code en ajoutant une variable pour le nom du script et une commande &laquo;&nbsp;<em>system</em>&nbsp;&raquo; dans le <em>&laquo;&nbsp;switch/case&nbsp;&raquo;</em>.</p>
<p style="text-align: justify;">

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p1415code12'); return false;">View Code</a> C</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p141512"><td class="code" id="p1415code12"><pre class="c" style="font-family:monospace;">   <span style="color: #666666; font-style: italic;">// Jopa - Test Mir:ror</span>
&nbsp;
<span style="color: #339933;">#include &lt;stdio.h&gt;</span>
<span style="color: #339933;">#include &lt;stdlib.h&gt;</span>
&nbsp;
<span style="color: #993333;">int</span> main<span style="color: #009900;">&#40;</span><span style="color: #993333;">int</span> argc<span style="color: #339933;">,</span> <span style="color: #993333;">char</span> <span style="color: #339933;">*</span>argv<span style="color: #009900;">&#91;</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
  FILE <span style="color: #339933;">*</span>mirror<span style="color: #339933;">;</span>
  <span style="color: #993333;">short</span> <span style="color: #993333;">unsigned</span> <span style="color: #993333;">int</span> block<span style="color: #339933;">;</span>
  <span style="color: #993333;">short</span> <span style="color: #993333;">unsigned</span> <span style="color: #993333;">int</span> event<span style="color: #339933;">;</span>
  <span style="color: #993333;">char</span> tag<span style="color: #009900;">&#91;</span><span style="color: #0000dd;">25</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
  <span style="color: #666666; font-style: italic;">// Ajout d'un variable script</span>
  <span style="color: #993333;">char</span> script<span style="color: #009900;">&#91;</span><span style="color: #0000dd;">256</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
  <span style="color: #993333;">int</span> i<span style="color: #339933;">;</span>
&nbsp;
  <span style="color: #666666; font-style: italic;">//Vérification du paramètre (device)</span>
  <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span>argc<span style="color: #339933;">!=</span><span style="color: #0000dd;">2</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
        <span style="color: #000066;">printf</span> <span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;Usage : %s mirror_device <span style="color: #000099; font-weight: bold;">\n</span><span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #339933;">,</span>argv<span style="color: #009900;">&#91;</span><span style="color: #0000dd;">0</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        exit<span style="color: #009900;">&#40;</span><span style="color: #339933;">-</span><span style="color: #0000dd;">1</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  <span style="color: #009900;">&#125;</span>
&nbsp;
  <span style="color: #666666; font-style: italic;">// Ouverture du fichier device</span>
  mirror <span style="color: #339933;">=</span> fopen<span style="color: #009900;">&#40;</span>argv<span style="color: #009900;">&#91;</span><span style="color: #0000dd;">1</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">,</span><span style="color: #ff0000;">&quot;rb&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #339933;">!</span>mirror<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
        <span style="color: #000066;">printf</span><span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;Accès à  %s impossible !<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #339933;">,</span>argv<span style="color: #009900;">&#91;</span><span style="color: #0000dd;">1</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        exit<span style="color: #009900;">&#40;</span><span style="color: #339933;">-</span><span style="color: #0000dd;">1</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  <span style="color: #009900;">&#125;</span>
&nbsp;
  <span style="color: #666666; font-style: italic;">// Boucle en lecture</span>
  <span style="color: #b1b100;">while</span> <span style="color: #009900;">&#40;</span><span style="color: #0000dd;">1</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
     fread<span style="color: #009900;">&#40;</span><span style="color: #339933;">&amp;</span>event<span style="color: #339933;">,</span><span style="color: #0000dd;">2</span><span style="color: #339933;">,</span><span style="color: #0000dd;">1</span><span style="color: #339933;">,</span>mirror<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
     <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span>event<span style="color: #339933;">!=</span><span style="color: #0000dd;">0</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
        <span style="color: #666666; font-style: italic;">// Evenement detecté, lecture de l'ID</span>
        <span style="color: #b1b100;">for</span> <span style="color: #009900;">&#40;</span>i<span style="color: #339933;">=</span><span style="color: #0000dd;">0</span><span style="color: #339933;">;</span>i<span style="color: #339933;">&lt;</span><span style="color: #0000dd;">6</span><span style="color: #339933;">;</span>i<span style="color: #339933;">++</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
            fread<span style="color: #009900;">&#40;</span><span style="color: #339933;">&amp;</span>block<span style="color: #339933;">,</span><span style="color: #0000dd;">2</span><span style="color: #339933;">,</span><span style="color: #0000dd;">1</span><span style="color: #339933;">,</span>mirror<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
            sprintf<span style="color: #009900;">&#40;</span><span style="color: #339933;">&amp;</span>tag<span style="color: #009900;">&#91;</span>i<span style="color: #339933;">*</span><span style="color: #0000dd;">4</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">,</span><span style="color: #ff0000;">&quot;%04X&quot;</span><span style="color: #339933;">,</span>block<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        <span style="color: #009900;">&#125;</span>
&nbsp;
 <span style="color: #666666; font-style: italic;">//Affichage en fonction de l'événement</span>
        <span style="color: #b1b100;">switch</span> <span style="color: #009900;">&#40;</span>event<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
            <span style="color: #666666; font-style: italic;">// Tag On</span>
            <span style="color: #b1b100;">case</span> <span style="color: #208080;">0x102</span> <span style="color: #339933;">:</span>
                <span style="color: #000066;">printf</span><span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;%s : ON<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #339933;">,</span>tag<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
                <span style="color: #666666; font-style: italic;">//Construction du nom de script et exécution</span>
                sprintf<span style="color: #009900;">&#40;</span>script<span style="color: #339933;">,</span><span style="color: #ff0000;">&quot;./%s-on.sh&quot;</span><span style="color: #339933;">,</span>tag<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
                system<span style="color: #009900;">&#40;</span>script<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
                <span style="color: #000000; font-weight: bold;">break</span><span style="color: #339933;">;</span>
&nbsp;
             <span style="color: #666666; font-style: italic;">//Tag Off</span>
             <span style="color: #b1b100;">case</span> <span style="color: #208080;">0x202</span> <span style="color: #339933;">:</span>
                 <span style="color: #000066;">printf</span><span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;%s : OFF<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #339933;">,</span>tag<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
                 <span style="color: #666666; font-style: italic;">//Construction du nom de script et exécution</span>
                 sprintf<span style="color: #009900;">&#40;</span>script<span style="color: #339933;">,</span><span style="color: #ff0000;">&quot;./%s-off.sh&quot;</span><span style="color: #339933;">,</span>tag<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
                 system<span style="color: #009900;">&#40;</span>script<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
                 <span style="color: #000000; font-weight: bold;">break</span><span style="color: #339933;">;</span>
&nbsp;
             <span style="color: #666666; font-style: italic;">//Mirror envers</span>
             <span style="color: #b1b100;">case</span> <span style="color: #208080;">0x501</span> <span style="color: #339933;">:</span>
                 <span style="color: #000066;">printf</span><span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;MIR:ROR ENVERS<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
                 <span style="color: #000000; font-weight: bold;">break</span><span style="color: #339933;">;</span>
&nbsp;
             <span style="color: #666666; font-style: italic;">//Mirror endroit</span>
             <span style="color: #b1b100;">case</span> <span style="color: #208080;">0x401</span> <span style="color: #339933;">:</span>
                   <span style="color: #000066;">printf</span><span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;MIR:ROR ENDROIT<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
                    <span style="color: #000000; font-weight: bold;">break</span><span style="color: #339933;">;</span>
&nbsp;
             <span style="color: #666666; font-style: italic;">//Default</span>
             <span style="color: #b1b100;">default</span> <span style="color: #339933;">:</span>
                   <span style="color: #000066;">printf</span><span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;Evénement inconnu&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        <span style="color: #009900;">&#125;</span> <span style="color: #666666; font-style: italic;">//switch</span>
      <span style="color: #009900;">&#125;</span> <span style="color: #666666; font-style: italic;">//if (event</span>
   <span style="color: #009900;">&#125;</span> <span style="color: #666666; font-style: italic;">//while (1)</span>
<span style="color: #009900;">&#125;</span> <span style="color: #666666; font-style: italic;">// main()</span></pre></td></tr></table></div>

<p style="text-align: justify;">Ceci n&#8217;est bien entendu qu&#8217;un exemple, écrit rapidement et pas forcément très propre. Mais il permet de mettre en évidence la simplicité avec laquelle il est possible d&#8217;accéder à des informations RFID et ouvre la porte sur des développements qui peuvent être rapidement prometteurs.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jopa.fr/index.php/2009/07/12/violet-mirror-acces-device-c/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Violet connecting objects</title>
		<link>http://www.jopa.fr/index.php/2009/07/07/violet-mirror-linux/</link>
		<comments>http://www.jopa.fr/index.php/2009/07/07/violet-mirror-linux/#comments</comments>
		<pubDate>Tue, 07 Jul 2009 21:57:12 +0000</pubDate>
		<dc:creator>Jopa</dc:creator>
				<category><![CDATA[Bidouilles]]></category>
		<category><![CDATA[Configurations]]></category>
		<category><![CDATA[Planet-Libre]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Mir:ror]]></category>
		<category><![CDATA[rfid]]></category>

		<guid isPermaLink="false">http://www.jopa.fr/?p=1354</guid>
		<description><![CDATA[Vous connaissez certainement la société Violet et plus particulièrement son fameux lapin communicant : le Nabaztag ? Cette même société produit le &#171;&#160;mir:ror&#171;&#160;, un petit gadget très design qui n&#8217;est pas moins qu&#8217;un  lecteur RFID. Question coût, le mir:ror se trouve un peu partout pour un 50ène d&#8217;euros. J&#8217;ai déniché le mien en solde pour [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;"><img class="alignleft size-medium wp-image-1355" title="mirror" src="http://www.jopa.fr/wp-content/uploads/2009/07/mirror-300x235.gif" alt="mirror" width="300" height="235" />Vous connaissez certainement la société <a title="Violet" href="http://www.violet.net" target="_blank">Violet </a>et plus particulièrement son fameux lapin communicant : le <a title="http://www.nabaztag.com/fr/index.html" href="http://www.nabaztag.com/fr/index.html" target="_blank">Nabaztag </a>? Cette même société produit le &laquo;&nbsp;<a title="http://www.violet.net/_mirror-le-premier-lecteur-rfid.html" href="http://www.violet.net/_mirror-le-premier-lecteur-rfid.html" target="_blank">mir:ror</a>&laquo;&nbsp;, un petit gadget très design qui n&#8217;est pas moins qu&#8217;un  lecteur <a title="http://fr.wikipedia.org/wiki/Radio-identification" href="http://fr.wikipedia.org/wiki/Radio-identification" target="_blank">RFID.</a></p>
<p style="text-align: justify;">Question coût, le <em>mir:ror</em> se trouve un peu partout pour un 50ène d&#8217;euros. J&#8217;ai déniché le mien en solde pour moins de 30 € &#8211; <em>Tu vois chérie, moi aussi le fais les soldes  !!!</em> &#8211; Dans un joli coffret, sont rangés le lecteur <em>usb</em>, 3 &laquo;&nbsp;timbres&nbsp;&raquo; autocollants (<a title="http://www.violet.net/_ztamps-rfid-tag-that-give-powers-to-your-objects.html" href="http://www.violet.net/_ztamps-rfid-tag-that-give-powers-to-your-objects.html">Ztamp:s</a>) et 2 petits lapins (<a title="http://www.violet.net/_nanoztag-the-programmable-RFID-rabbit.html" href="http://www.violet.net/_nanoztag-the-programmable-RFID-rabbit.html">Nano:Ztag</a>), tous munis d&#8217;une puce RFID.<img class="alignright size-full wp-image-1365" title="nano1" src="http://www.jopa.fr/wp-content/uploads/2009/07/nano1.jpg" alt="nano1" width="80" height="138" /></p>
<p style="text-align: justify;">
<p style="text-align: justify;">Le lecteur fonctionne biensûr avec les objets commercialisés par <em>Violet</em>, mais aussi avec n&#8217;importe quel <em>tags RFID</em>, pourvu qu&#8217;il  respecte la norme <a title="http://en.wikipedia.org/wiki/ISO_14443A" href="http://en.wikipedia.org/wiki/ISO_14443A">ISO 14443 A ou B</a> &#8211; La carte de bus/métro de <em>Toulouse </em>fonctionne parfaitement par exemple.</p>
<p style="text-align: justify;">En utilisation standard, moyennant l&#8217;installation d&#8217;un petit logiciel (<a title="http://my.violet.net/mirror/choose_mirware" href="http://my.violet.net/mirror/choose_mirware">Mirware</a>) et la création d&#8217;un compte (gratuit) sur le site de Violet, nous pourrons enregistrer nos objets RFID et associer une action à leur approche ou leur éloignement du lecteur.</p>
<p style="text-align: justify;"><img class="alignleft size-full wp-image-1369" title="ztamps" src="http://www.jopa.fr/wp-content/uploads/2009/07/ztamps.gif" alt="ztamps" width="110" height="110" />Après tout ce vocabulaire &laquo;&nbsp;<em>Nabaztanique</em>&laquo;&nbsp;, il faut bien que j&#8217;avoue que ce n&#8217;est pas pour son utilisation standard que j&#8217;ai craqué, mais pour  les  perspectives prometteuses  offertes en terme de bidouillage : <em>Authentification pam</em>, <em>évènements domotiques (X10)</em>, <em>clef de chiffrement</em>, on peut imaginer énormément d&#8217;usages &laquo;&nbsp;<em>non-officiels</em>&nbsp;&raquo; &#8230; et c&#8217;est ça qui est bon !</p>
<p style="text-align: justify;">Néanmoins, dans la suite du billet, je vais balayer une installation classique du &laquo;&nbsp;<em>Mirware</em>&nbsp;&raquo; sous <em>Linux. </em>Il faut bien commencer par là !<em> </em>Cette manipulation ne présente pas de difficulté particulière, à part peut-être pour les architectures <em>64 bits</em>. Dans un prochain article, je m&#8217;intéresserai au développements possibles autour du joujou !</p>
<p style="text-align: justify;"><span id="more-1354"></span></p>
<h2 style="text-align: justify;">Mirware mon beau Mirware&#8230;</h2>
<p style="text-align: justify;">J&#8217;ai réalisé ce test sur deux machines sous Ubuntu (9.04 &laquo;&nbsp;Jaunty jackalope&nbsp;&raquo; ), l&#8217;une en 32 bits, l&#8217;autre en 64. Mais <em>Mirware</em> devrait fonctionner sous n&#8217;importe quelle distribution, le tout étant de bien installer les librairies nécessaires.</p>
<p style="text-align: justify;">Dans les pré-requis, il faut bien entendu une machine sous <em>Linux</em>, disposant d&#8217;une interface graphique et connectée à Internet. En effet, <em>Mirware</em> fonctionne grâce au serveur <em>Violet.net</em>, sur lequel seront enregistrés les <em>tags </em>et les actions qui leurs sont associées.  C&#8217;est un peu limitant, mais comment dire&#8230;.c&#8217;est comme ça ! Domage !</p>
<p style="text-align: justify;">L&#8217;application est disponible <a title="http://my.violet.net/mirror/choose_mirware" href="http://my.violet.net/mirror/choose_mirware">ici</a> en version alpha&#8230; On regrettera l&#8217;absence des sources, mis à part pour la partie concernant la détection du périphérique, ce qui va sauver l&#8217;installation sur une distribution 64 bits.</p>
<p style="text-align: justify;">Je parlais de librairies, il nous faudra satisfaire quelques dépendances à ce sujet et en installer 3 principales :</p>
<ul>
<li>Qt 4.4 avec le module webkit,</li>
<li>QCA 2.0.1,</li>
<li>SDL 1.2</li>
</ul>
<p>(cf le README pour plus d&#8217;infos)</p>
<p style="text-align: justify;"><span style="color: #800000;">$ sudo apt-get install   libqt4-webkit   libqca2   libsdl1.2debian</span></p>
<p style="text-align: justify;"><span style="color: #800000;"><span style="color: #333333;">Nous pouvons à présent télécharger et installer le Mirware :</span></span></p>
<p style="text-align: justify;"><span style="color: #800000;"><span style="color: #333333;"><span style="color: #800000;">$ wget -c</span> </span>http://broad.violet.net/mirror/mirware.tar.gz<br />
$ tar -xvzf mirware.tar.gz<br />
$ cd mirware-0.9.9-1724<br />
$ sudo ./installer.sh<br />
</span></p>
<p style="text-align: justify;"><span style="color: #333333;">Le script <em>installer.sh</em>, présent dans l&#8217;archive de Mirware, va juste caler les droits pour la détection du périphérique :<br />
</span></p>
<p style="text-align: justify;"><span style="color: #800000;"><em><span style="color: #333333;">installer.sh ( pour information uniquement)</span></em><br />
</span></p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p1354code14'); return false;">View Code</a> SH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p135414"><td class="code" id="p1354code14"><pre class="sh" style="font-family:monospace;">#!/bin/bash
[ &quot;$(id -u)&quot; -eq 0 ] || { echo &quot;This script needs root credentials&quot; ; exit 1 ; }
chown root discover-device || { echo &quot;Could not change owner of discover-device to root. Do you have root credentials ?&quot; ; exit 1 ; }
chmod a+s discover-device || exit 1
touch detected_device
&nbsp;
echo &quot;All done ! You can now plug a mir:ror and launch mirware-launcher.sh !&quot;</pre></td></tr></table></div>

<p style="text-align: justify;">Il ne reste plus qu&#8217;à connecter le<em> mir:ror</em> et  lancer mirware :</p>
<p><span style="color: #800000;">$ ./mirware-launcher.sh</span></p>
<p style="text-align: justify;"><img class="size-full wp-image-1398 alignleft" title="icone_notif" src="http://www.jopa.fr/wp-content/uploads/2009/07/icone_notif.png" alt="icone_notif" width="113" height="62" />Une icône dans la barre de notification indique que tout se passe bien. En approchant un objet du capteur, une fenêtre de connexion devrait apparaître, suivie d&#8217;un interface permettant d&#8217;enregistrer l&#8217;objet et de lui associer des actions (applications).</p>
<p><img class="aligncenter size-medium wp-image-1399" title="connexion" src="http://www.jopa.fr/wp-content/uploads/2009/07/connexion-300x237.png" alt="connexion" width="300" height="237" /></p>
<p><img class="aligncenter size-medium wp-image-1400" title="mirware" src="http://www.jopa.fr/wp-content/uploads/2009/07/mirware-300x237.png" alt="mirware" width="300" height="237" /></p>
<h2>32 bits&#8230;C&#8217;est bien&#8230;mais 64 ?</h2>
<p style="text-align: justify;">Si vous utilisez une distribution 64 bits, il vous faudra recompiler le petit programme de détection du mir:ror : <em>discover-device</em> et installer les librairies utilisées par <em>Mirware</em> dans leur version 32 bits. Sans les sources et en l&#8217;abscence de version 64 bits, pas le choix&#8230;</p>
<p style="text-align: justify;">Concernant la compilation de <em>discover-device</em>, rien de bien sorcier, il faut juste ne pas oublier de lui redonner les bons droits&#8230;<br />
<span style="color: #800000;">$ sudo rm discover-device<br />
$ gcc discover-device.c -o discover-device<br />
$ sudo ./installer.sh</span></p>
<p style="text-align: justify;">Pour les librairies 32 bits, après avoir pas mal joué de l&#8217;<em>apt-get</em>, je suis tombé sur<a title="http://frozenfox.freehostia.com/cappy/getlibs" href="http://frozenfox.freehostia.com/cappy/getlibs"> un script</a> qui simplifie bien les choses (merci Cappy). <a title="http://ubuntuforums.org/showthread.php?t=474790" href="http://ubuntuforums.org/showthread.php?t=474790">Getlibs</a> prend en paramètre un binaire et télécharge les librairies dépendantes dans leurs versions 32 et 64 bits&#8230; Le pied !</p>
<p><span style="color: #800000;">$ wget -c http://frozenfox.freehostia.com/cappy/getlibs<br />
$ ./getlibs mirware</span></p>
<h2>Pour clore ce chapitre&#8230;</h2>
<p style="text-align: justify;">&#8230;sur une utilisation classique du <em>mir:ror</em>, je peux ajouter qu&#8217;une grande majorité des actions proposées par le serveur sont fonctionnelles sous Linux&#8230; L&#8217;ouverture d&#8217;un dossier, le chargement d&#8217;une url, l&#8217;accès à la messagerie, à un podcast ou une webradio, la lecture d&#8217;un texte en texttospeech et j&#8217;en passe&#8230;</p>
<p style="text-align: justify;">J&#8217;ai tout de même noté un problème gênant sur l&#8217;application permettant le lancement de scripts;  En effet, cette dernière ne sait gérer que des scripts <em>Windows/Dos batch </em>(.bat) ou des <em>AppleScripts(MacOsx)</em>. Ce n&#8217;est pas très gênant pour l&#8217;utilisation que je compte en faire et comme promis, je détaillerai, dans le prochain article comment s&#8217;affranchir des contraintes du serveur <em>Violet</em>.<em>net</em> pour passer de l&#8217;autre côté du mirroir.</p>
<p style="text-align: justify;">
]]></content:encoded>
			<wfw:commentRss>http://www.jopa.fr/index.php/2009/07/07/violet-mirror-linux/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>Debian 5.0 : Lenny is stable</title>
		<link>http://www.jopa.fr/index.php/2009/02/16/debian-5-lenny-is-stable/</link>
		<comments>http://www.jopa.fr/index.php/2009/02/16/debian-5-lenny-is-stable/#comments</comments>
		<pubDate>Mon, 16 Feb 2009 18:22:10 +0000</pubDate>
		<dc:creator>Jopa</dc:creator>
				<category><![CDATA[Evènements]]></category>
		<category><![CDATA[Debian]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Logiciels Libres]]></category>

		<guid isPermaLink="false">http://www.jopa.fr/?p=1180</guid>
		<description><![CDATA[Si vous trainez par ici, vous le savez probablement déjà&#8230; La nouvelle a déjà fait le tour des blogs : Pour la Saint-Valentin, la communauté Debian à offert à Lenny son status de &#171;&#160;stable&#160;&#187;.  ( La Saint-Valentin,  c&#8217;est le 14 février&#8230; ça, vous ne le savez pas forcément ! )&#8230; www.debian.org Mazeltov !!! Une toute [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;"><img class="alignleft size-full wp-image-1191" title="lennysqueeze" src="http://www.jopa.fr/wp-content/uploads/2009/02/lennysqueeze.jpg" alt="lennysqueeze" width="244" height="114" />Si vous trainez par ici, vous le savez probablement déjà&#8230; La nouvelle a déjà fait le tour des blogs : Pour la Saint-Valentin, la communauté <em>Debian </em>à offert à <em>Lenny </em>son status de &laquo;&nbsp;stable&nbsp;&raquo;.  ( La Saint-Valentin,  c&#8217;est le 14 février&#8230; ça, vous ne le savez pas forcément ! )&#8230;</p>
<p style="text-align: center;"><a title="http://www.debian.org/" href="http://www.debian.org/">www.debian.org</a></p>
<p style="text-align: justify;">
<p style="text-align: center;">Mazeltov !!! Une toute nouvelle testing du nom de <em>Squeeze </em>est née&#8230;</p>
<p style="text-align: justify;">
<p style="text-align: justify;">
<p style="text-align: center;"><a title="http://www.debian.org/" href="http://www.debian.org/"><br />
</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.jopa.fr/index.php/2009/02/16/debian-5-lenny-is-stable/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Xsnow n&#8217;est pas mort !</title>
		<link>http://www.jopa.fr/index.php/2008/12/01/xsnow-nest-pas-mort/</link>
		<comments>http://www.jopa.fr/index.php/2008/12/01/xsnow-nest-pas-mort/#comments</comments>
		<pubDate>Sun, 30 Nov 2008 23:01:21 +0000</pubDate>
		<dc:creator>Jopa</dc:creator>
				<category><![CDATA[Divers]]></category>
		<category><![CDATA[Planet-Libre]]></category>
		<category><![CDATA[Bureau]]></category>
		<category><![CDATA[Linux]]></category>

		<guid isPermaLink="false">http://www.jopa.fr/?p=890</guid>
		<description><![CDATA[Vous souvenez-vous de xsnow ? Ce petit programme qui, il y a  déjà plus d&#8217;une quinzaine d&#8217;années, déposait de fines couches de neige sur les fenêtres de nos terminaux X. L&#8217;attelage du père Noël tentait alors de traverser l&#8217;écran en affrontant péniblement la tempête et les rafales de vent. Aujourd&#8217;hui, à l&#8217;heure des bureaux Compiz [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;"><a href="http://www.jopa.fr/wp-content/uploads/2008/11/santa.png"><img class="alignleft size-full wp-image-892" title="santa" src="http://www.jopa.fr/wp-content/uploads/2008/11/santa.png" alt="" width="210" height="83" /></a>Vous souvenez-vous de <em>xsnow</em> ? Ce petit programme qui, il y a  déjà plus d&#8217;une quinzaine d&#8217;années, déposait de fines couches de neige sur les fenêtres de nos terminaux X. L&#8217;attelage du père Noël tentait alors de traverser l&#8217;écran en affrontant péniblement la tempête et les rafales de vent.</p>
<p style="text-align: justify;">Aujourd&#8217;hui, à l&#8217;heure des bureaux<em> Compiz </em>et <em>Xgl,</em> j&#8217;ai été heureux de découvrir que <em>xsnow</em> existait toujours, fonctionnait et n&#8217;était pas ridicule (pas trop !).</p>
<p style="text-align: justify;">Nostalgiques et curieux devraient pouvoir l&#8217;installer à l&#8217;aide du gestionnaire de paquets de leur distribution préférée. Si ce n&#8217;était pas le cas, les sources sont disponibles à de nombreux endroits.</p>
<p style="text-align: justify;"><a title="http://dropmix.xs4all.nl/rick/Xsnow/xsnow-1.42.tar.gz" href="http://dropmix.xs4all.nl/rick/Xsnow/xsnow-1.42.tar.gz">Ici par exemple.</a></p>
<p style="text-align: justify;">
<p style="text-align: justify;"><a href="http://www.jopa.fr/wp-content/uploads/2008/11/xsnow_ps.png"><img class="aligncenter size-full wp-image-891" title="xsnow_ps" src="http://www.jopa.fr/wp-content/uploads/2008/11/xsnow_ps.png" alt="" width="500" height="312" /></a></p>
<p style="text-align: justify;">
]]></content:encoded>
			<wfw:commentRss>http://www.jopa.fr/index.php/2008/12/01/xsnow-nest-pas-mort/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Scellement de fichiers avec Tripwire</title>
		<link>http://www.jopa.fr/index.php/2008/11/29/scellement-de-fichiers-avec-tripwire/</link>
		<comments>http://www.jopa.fr/index.php/2008/11/29/scellement-de-fichiers-avec-tripwire/#comments</comments>
		<pubDate>Fri, 28 Nov 2008 23:10:34 +0000</pubDate>
		<dc:creator>Fade &#38; Jopa</dc:creator>
				<category><![CDATA[Configurations]]></category>
		<category><![CDATA[Planet-Libre]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Sécurité]]></category>

		<guid isPermaLink="false">http://www.jopa.fr/?p=860</guid>
		<description><![CDATA[Pour la surveillance d&#8217;un système, il est vital de savoir quand des fichiers sont modifiés, supprimés ou ajoutés. C&#8217;est une base indispensable pour s&#8217;assurer de l&#8217;intégrité d&#8217;une machine. Tripwire est un outil de scellement de fichiers, il crée une référence du système  de fichiers et est capable de générer des rapports sur tout ce qui [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;"><a href="http://www.jopa.fr/wp-content/uploads/2008/11/notcross.jpg"><img class="size-full wp-image-882 alignleft" title="notcross" src="http://www.jopa.fr/wp-content/uploads/2008/11/notcross.jpg" alt="" width="320" height="119" /></a>Pour la surveillance d&#8217;un système, il est vital de savoir quand des fichiers sont modifiés, supprimés ou ajoutés. C&#8217;est une base indispensable pour s&#8217;assurer de l&#8217;intégrité d&#8217;une machine.<em><br />
Tripwire</em> est un outil de scellement de fichiers, il crée une référence du système  de fichiers et est capable de générer des rapports sur tout ce qui a bougé. Comme sous Unix/Linux tout est fichier, si quelque chose change, tripwire le voit !</p>
<p style="text-align: justify;">La suite de l&#8217;article est issue d&#8217;une documentation co-écrite par ma collègue Françoise, initialement pour un usage interne.</p>
<p style="text-align: justify;"><span id="more-860"></span></p>
<h1>1 &#8211; Installation</h1>
<p>Sous Debian :</p>
<pre><span style="color: #800000;"># aptitude install tripwire</span></pre>
<p style="text-align: justify;">Deux passphrases sont demandées pour la génération de deux certificats (site et local).</p>
<h1>2 &#8211; Configuration</h1>
<h2>2.1 &#8211; Fonctionnement des fichiers de config</h2>
<p style="text-align: justify;">Les fichiers de configuration et de règles de <em>tripwire</em> sont sous forme binaire et signés par le certificat local.</p>
<ul>
<li class="level1">
<div class="li">/etc/tripwire/tw.cfg</div>
</li>
<li class="level1">
<div class="li">/etc/tripwire/tw.pol</div>
</li>
</ul>
<p style="text-align: justify;">Ces fichiers ne sont pas éditables directement. Il faut passer par leur version texte qui ne doit, bien entendu pas être stockée sur la machine surveillée :</p>
<ul>
<li class="level1">
<div class="li">twcfg.txt</div>
</li>
<li class="level1">
<div class="li">twpol.txt</div>
</li>
</ul>
<p style="text-align: justify;">Une fois le fichier texte édité, la commande suivante permet de générer le fichier binaire et de les signer (la passphrase est demandée).</p>
<pre class="code"><span style="color: #800000;"># tripwire --update-policy -Z low fichier.txt
</span></pre>
<p class="level4">
<h2>2.2 &#8211; Le fichier de règles (policy) : tw.pol / twpol.txt</h2>
<p style="text-align: justify;">Ce fichier permet de définir les répertoires à analyser et leur degré d&#8217;importance. Des alertes seront générées en fonction de la sensibilité des fichiers.</p>
<p style="text-align: justify;">La structure et la syntaxe d&#8217;un fichier source (txt) de stratégie n&#8217;est pas très complexe…  Le répertoire : <em>/usr/share/doc/tripwire/examples</em>/ contient des exemples bien détaillés. Il est possible de partir de ces fichiers et de les adapter. La mise en commentaire (#) permet d&#8217;annuler certaines vérifications, le &laquo;&nbsp;!&nbsp;&raquo; permet d&#8217;empêcher explicitement la vérification de certaines arborescences.</p>
<p style="text-align: justify;">Une fois la politique définit, il faut que <em>tripwire </em>la prenne en compte :</p>
<pre class="code"><span style="color: #800000;"># tripwire --update-policy -Z low /etc/tripwire/twpol.txt
  Parsing    policy file: /etc/tripwire/twpol.txt
  Please enter your local passphrase:
  Please enter your site passphrase:
  ...
</span></pre>
<h1>3 &#8211; Initialisation</h1>
<p class="level3">
<p style="text-align: justify;">L&#8217;initialisation permet de construire la base de référence du système, elle se fait par la commande :</p>
<pre class="code"><span style="color: #800000;"># tripwire --init
  Please enter your local passphrase:
  Generating the database...
  *** Processing Unix File System ***</span><span style="color: #800000;">
  ...</span></pre>
<h1>4 &#8211; La vérification du système et la mise à jour</h1>
<h2>4.1 &#8211; Vérification</h2>
<p class="level4">
<p style="text-align: justify;">Par défaut, <em>Tripwire </em>ajoute un script de lancement au répertoire <em>/etc/cron.daily/.</em> Le cron déclenchera ainsi une vérification d&#8217;intégrité journalière. Il est possible exécuter une vérification <span style="color: #000000;">d&#8217;intégrité<em> </em>à tout moment grâce à la commande suivante:</span></p>
<pre class="code"><span style="color: #800000;"># tripwire --check
</span></pre>
<p style="text-align: justify;">Lors d&#8217;une vérification d&#8217;intégrité, <em>Tripwire </em>analyse les objets actuels du système de fichiers et leurs propriétés, grâce aux informations stockées dans la base de références. Les violations sont imprimées à l&#8217;écran et une copie cryptée et signée du rapport est créée dans <em>/var/lib/tripwire/report/</em>.</p>
<pre class="file"><span style="color: #800000;"> # tripwire --check
  Parsing policy file: /etc/tripwire/tw.pol
  *** Processing Unix File System ***
  Performing integrity check...
  Wrote report file: /var/lib/tripwire/report/sd-xxxx-20071127-191046.twr

  Tripwire(R) 2.3.0 Integrity Check Report

  Report generated by:          root
  Report created on:            mar 27 nov 2007 19:10:46 CET
  Database last updated on:     Never

===============================================================================
Report Summary:
===============================================================================

Host name:                    sd-xxxx
Host IP address:              xxx.xxx.xxx.xxx
Host ID:                      None
Policy file used:             /etc/tripwire/tw.pol
Configuration file used:      /etc/tripwire/tw.cfg
Database file used:           /var/lib/tripwire/sd-xxxx.twd
Command line used:            tripwire --check

===============================================================================
Rule Summary:
===============================================================================

-------------------------------------------------------------------------------
  Section: Unix File System
-------------------------------------------------------------------------------

  Rule Name                       Severity Level    Added    Removed  Modified
  ---------                       --------------    -----    -------  --------
  Invariant Directories           66                0        0        0
  Tripwire Data Files             100               0        0        0
  Other binaries                  66                0        0        0
  Tripwire Binaries               100               0        0        0
  Other libraries                 66                0        0        0
  Root file-system executables    100               0        0        0
  System boot changes             100               0        0        0
  Root file-system libraries      100               0        0        0
  (/lib)
  Critical system boot files      100               0        0        0
* Other configuration files       66                0        0        1
  (/etc)
  Boot Scripts                    100               0        0        0
* Security Control                66                0        0        1
* Root config files               100               0        0        0
  Devices &amp; Kernel information    100               0        0        0
  (/dev)

Total objects scanned:  19373
Total violations found:  2

===============================================================================
Object Summary:
===============================================================================

-------------------------------------------------------------------------------
# Section: Unix File System
-------------------------------------------------------------------------------

-------------------------------------------------------------------------------
Rule Name: Other configuration files (/etc)
Severity Level: 66
-------------------------------------------------------------------------------

Modified:
"/etc"

-------------------------------------------------------------------------------
Rule Name: Security Control (/etc/passwd)
Severity Level: 66
-------------------------------------------------------------------------------

Modified:
"/etc/passwd"

===============================================================================
Error Report:
===============================================================================

No Errors

-------------------------------------------------------------------------------
*** End of report ***

Tripwire 2.3 Portions copyright 2000 Tripwire, Inc. Tripwire is a registered
trademark of Tripwire, Inc. This software comes with ABSOLUTELY NO WARRANTY;
for details use --version. This is free software which may be redistributed
or modified only under certain conditions; see COPYING for details.
All rights reserved.
Integrity check complete.
</span></pre>
<p>Dans l&#8217;exemple, le fichier <em>/etc/passwd</em> a été modifié.</p>
<h2 class="code">4.2 &#8211; Affichage des rapports</h2>
<div class="level4">
<p style="text-align: justify;">La commande <em>twprint </em>est utilisée pour consulter les rapports et les bases de données cryptés de Tripwire. Exemple pour imprimer un rapport :</p>
<pre class="code" style="text-align: justify;"><span style="color: #800000;"># twprint -m r --twrfile /var/lib/tripwire/report/francoiseD-20081123-204116.twr
</span></pre>
<p style="text-align: justify;">L&#8217;option <em>-m r </em>de cette commande indique à <em>twprint </em>de décoder un rapport <em>Tripwire</em>.</p>
<p style="text-align: justify;">L&#8217;option –twrfile indique à <em>twprint </em>d&#8217;utiliser un fichier rapport <em></em>spécifique. Les rapports sont disponibles dans le répertoire <em>/var/lib/tripwire/report</em>.</p>
</div>
<p>On peut également utiliser <em>twprint </em>pour visualiser la base de données complète ou les informations sur un fichiers en particulier.<br />
C&#8217;est très pratique pour avoir une idée de la quantité d&#8217;informations contrôlées par <em>Tripwire </em>sur le système.</p>
<p style="text-align: justify;">Pour visualiser la base de données complète, entrez cette commande:</p>
<p style="text-align: justify;"><span style="color: #800000;">twprint -m d &#8211;print-dbfile | less</span></p>
<p style="text-align: justify;">
<p style="text-align: justify;">Pour avoir des renseignements sur un fichier en particulier, tel que <em>/etc/hosts</em>, la commande est la suivante :</p>
<pre class="code"><span style="color: #800000;">  twprint -m d --print-dbfile /etc/hosts
</span></pre>
<h2>4.3 &#8211; La mise à jour</h2>
<p style="text-align: justify;">Si la ou les modifications détectées sont légitimes, il faut remettre à jour la base. C&#8217;est l&#8217;option <span style="color: #800000;"><em>&#8211;update </em></span>qui permet de le faire, en s&#8217;appuyant sur un fichier rapport.</p>
<p><span style="color: #800000;"># tripwire &#8211;update -Z low &#8211;twrfile /var/lib/tripwire/report/sd-xxxx-20071127-191046.twr</span></p>
<p style="text-align: justify;"><em>Tripwire </em>ouvrira le rapport au moyen de l&#8217;éditeur de texte par défaut. (La configuration de l&#8217;éditeur peut être modifié dans le fichier twcfg.txt).  A ce moment, vous avez la possibilité de dé-sélectionner les fichiers que vous ne désirez pas inclure dans la mise à jour de la base de données. Les mises à jour proposées commencent par un <em>[x] </em>, avant le nom du fichier.</p>
<pre><span style="color: #800000;">Added:
[x] "/usr/sbin/longrun"</span></pre>
<pre><span style="color: #800000;">Modified:
</span><span style="color: #800000;">[x] "/usr/sbin"
[x] "/usr/sbin/cpqarrayd"</span></pre>
<p class="level3" style="text-align: justify;">Si vous voulez spécifiquement exclure une violation valide afin qu&#8217;elle ne fasse pas partie de la mise à jour de la base de données, enlevez le <em>x</em>.</p>
<pre><span style="color: #800000;">tripwire --update -Z low --twrfile /var/lib/tripwire/report/francoiseD-20081123-204116.twr
Please enter your local passphrase:
Wrote database file: /var/lib/tripwire/francoiseD.twd</span></pre>
<h1 class="level3">5 &#8211; Maintenance</h1>
<h2 class="level3">5.1 &#8211; Régénérer la Passphrase locale</h2>
<pre><span style="color: #800000;">twadmin -m G -L francoiseD-local.key -P nouvellepassphrase
The local key file: "/etc/tripwire/francoiseD-local.key" exists. Overwrite (Y/N)? y
Generating key (this may take several minutes)...
Key generation complete.</span></pre>
<h2>5.2 &#8211; Régénérer la Passphrase site</h2>
<pre><span style="color: #800000;">twadmin -m G -S site.key -Q NouvellepassPhrase
The site key file: "/etc/tripwire/site.key" exists. Overwrite (Y/N)? y
Generating key (this may take several minutes)...
Key generation complete.

</span></pre>
<h2><span style="color: #000000;">5.3 &#8211; Signer et encrypter</span></h2>
<p class="level3">
<pre><span style="color: #800000;">twadmin --create-cfgfile -S site.key /etc/tripwire/twcfg.txt
Please enter your site passphrase:   NouvellepassPhrase
Wrote configuration file: /etc/tripwire/tw.cfg  

twadmin --create-polfile -S site.key /etc/tripwire/twpol.txt
Please enter your site passphrase: NouvellepassPhrase
Wrote policy file: /etc/tripwire/tw.pol</span></pre>
<h2>5.4 &#8211; Réinitialiser la base</h2>
<p class="level3"><span style="color: #800000;">tripwire &#8211;init</span></p>
<p class="level3">
<p class="level3">Liens utilisés pour la rédaction de cet article :</p>
<p class="level3">http://www.tu-chemnitz.de/docs/lindocs/RH9/RH-DOCS/rhl-rg-fr-9/s1-tripwire-install-rpm.html</p>
<p>http://www.linux-kheops.com/doc/redhat72/rhl-rg-fr-7.2/ch-tripwire.html</p>
<p>http://www.linux-kheops.com/doc/cours/jgourdin/outils-tcp-ip/Linux-tripwire.html</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jopa.fr/index.php/2008/11/29/scellement-de-fichiers-avec-tripwire/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

