<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom">
<channel>
	<title>Dev.Yannou90</title>
	<link>http://dev.yannou90.free.fr/</link>
	<language>fr</language>
	<description>GNU/linux et moi  ...</description>
<atom:link xmlns:atom="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://dev.yannou90.free.fr/feed.php" />
	<lastBuildDate>Sun, 02 Mar 2014 16:32:00 CET</lastBuildDate>
	<generator>PluXml</generator>
	<item>
		<title>Fullbox, sous le capot : freebox révolution</title> 
		<link>http://dev.yannou90.free.fr/index.php?article8/fullbox-sous-le-capot-freebox-revolution</link>
		<guid>http://dev.yannou90.free.fr/index.php?article8/fullbox-sous-le-capot-freebox-revolution</guid>
		<description>&lt;p&gt;
	Nous allons analyser en détail la génération de passphrases wpa pour la freebox révolution aussi appellée freeboxv6 ...&lt;/p&gt;&lt;p&gt;
	Fullbox permet la génération de passphrases pour la freebox révolution.&lt;/p&gt;
&lt;p&gt;
	&amp;nbsp;&lt;/p&gt;
&lt;p&gt;
	Comment fonctione-t-il et qu&#039;elle sont ses limites?&lt;/p&gt;
&lt;p&gt;
	&amp;nbsp;&lt;/p&gt;
&lt;p&gt;
	Comme vous le savez, la freebox révolution utilise d&#039;origine des passphrases sous la forme suivante :&lt;/p&gt;
&lt;blockquote&gt;
	&lt;p&gt;
		[ un mot latin ] [ de 1 à 3 caractères ] [ un mot latin ] [ de 1 à 3 caractères ] [ un mot latin ] [ de 0 à 2 caractères ]&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;
	&amp;nbsp;&lt;/p&gt;
&lt;p&gt;
	Au vu de certaine clées fourni par les possesseurs de freebox révolution désireux de connaitre la robustesse de tels passphrases, j&#039;ai choisi de générer des clées suivant ce shèma :&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;
		un dictionnaire de mot de latin de 5 à 10 caractères&lt;/li&gt;
	&lt;li&gt;
		les séparateurs sont composés de 1 à 3 caractères parmis ceux ci: - ! ? # @&lt;/li&gt;
	&lt;li&gt;
		le dernier champs est composé de 0 à 2 caractères parmis : - ! ? # @ 0 1 2 3 4 5 6 7 8 9&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
	&amp;nbsp;&lt;/p&gt;
&lt;p&gt;
	Au vu des possibilités de passphrases quasi infini j&#039;ai determiné une façon efficace et optimisé de créer ces clées :&lt;/p&gt;
&lt;p&gt;
	Génération de clées par boucle sur boucle infinie :&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;
		3 tirages de 10 mots parmis 33220, donc 30 mots différents par boucle&lt;/li&gt;
	&lt;li&gt;
		155 &quot;séparateurs&quot; différents&lt;/li&gt;
	&lt;li&gt;
		240 en position final&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
	Donc par boucle , fullbox génère:&lt;/p&gt;
&lt;blockquote&gt;
	&lt;p&gt;
		1000x155x155x240=5766000000&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;
	Nous obtenons donc 5.766.000.000 passphrases différentes par boucles !! Et ce uniquement avec 30 mots.&lt;/p&gt;
&lt;p&gt;
	Si nous devions générer tous les mots possibles :&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;
		le tirage est effectué parmis 33220 mots latin de 5 à 10 caractères&lt;/li&gt;
	&lt;li&gt;
		3 mots sont sélectionné au hasard&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
	Ce qui nous donne :&lt;/p&gt;
&lt;blockquote&gt;
	&lt;p&gt;
		33220x33219x33218=3,665723161×10¹³&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;
	Au total , en prenant en compte le nombre de combinaisons possibles, les séparateurs et le dernier champs :&lt;/p&gt;
&lt;blockquote&gt;
	&lt;p&gt;
		33220x33219x33218!x155x155x240=2,113655975×10²⁰&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;
	Une éternitée ne suffirait pas à la créations de toutes les passphrases !!!&lt;/p&gt;
&lt;p&gt;
	Et encore, ces calculs présument que le dictionnaire latin utilisé contient bien les bon mot et que le choix des séparateurs est juste!&lt;/p&gt;
&lt;p&gt;
	&amp;nbsp;&lt;/p&gt;
&lt;p&gt;
	Autant dire que la freebox révolution est inssensible au brute force malgrès des passphrases apparement simple !&lt;/p&gt;
&lt;p&gt;
	&amp;nbsp;&lt;/p&gt;
&lt;p&gt;
	Fullbox vous permettra peut-être de découvrir votre propre passphrase, et si c&#039;était le cas, n&#039;oubliez pas de faire un petit loto &lt;img alt=&quot;wink&quot; height=&quot;20&quot; src=&quot;http://dev.yannou90.free.fr/plugins/ckeditor/ckeditor/plugins/smiley/images/wink_smile.gif&quot; title=&quot;wink&quot; width=&quot;20&quot; /&gt;&lt;/p&gt;
&lt;p&gt;
	Le script est disponible en téléchargement &lt;a href=&quot;http://dev.yannou90.free.fr/data/telechargement/public/fullbox.sh&quot;&gt;ici&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;
	&amp;nbsp;&lt;/p&gt;
&lt;p&gt;
	Je vous rappel que l&#039;utilisation de tels outils sur un réseau dont vous n&#039;êtes pas le propriétaire est puni par la loi !!&lt;/p&gt;
&lt;p&gt;
	&amp;nbsp;&lt;/p&gt;</description>
		<pubDate>Sun, 02 Mar 2014 16:32:00 CET</pubDate>
		<dc:creator>Yannou90</dc:creator>
	</item>
	<item>
		<title>Fullbox : un générateur de clées wpa pour Algérie Télécom,  Alicebox, Dartybox, Freebox, FreeboxV6, Livebox, Neufbox ...</title> 
		<link>http://dev.yannou90.free.fr/index.php?article7/fullbox-un-generateur-de-clees-wpa-pour-algerie-telecom-alicebox-dartybox-freebox-freeboxv6-livebox-neufbox</link>
		<guid>http://dev.yannou90.free.fr/index.php?article7/fullbox-un-generateur-de-clees-wpa-pour-algerie-telecom-alicebox-dartybox-freebox-freeboxv6-livebox-neufbox</guid>
		<description>&lt;p&gt;
	Je vous présente fullbox.sh, un tout nouveau générateur de passphrases de type wpa dédié au brute-force de vos box française!&lt;/p&gt;
&lt;p&gt;
	&amp;nbsp;&lt;/p&gt;
&lt;p&gt;
	Pour le moment, en version 0.1.2, il permet de reproduire des clées de type :&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;
		Algérie Télécom&lt;/li&gt;
	&lt;li&gt;
		Alicebox&lt;/li&gt;
	&lt;li&gt;
		Dartybox&lt;/li&gt;
	&lt;li&gt;
		Freebox&lt;/li&gt;
	&lt;li&gt;
		FreeboxV6&lt;/li&gt;
	&lt;li&gt;
		Livebox&lt;/li&gt;
	&lt;li&gt;
		Neufbox&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
	Je rappelle qu&#039;il est formellement interdit et punis par la lois de tester ce genre d&#039;outils sur un réseau dont vous n&#039;ëtes pas le propriétaire !&lt;/p&gt;&lt;p&gt;
	Voilà un bon moment que je n&#039;avais posté un article!&lt;/p&gt;
&lt;p&gt;
	&amp;nbsp;&lt;/p&gt;
&lt;p&gt;
	Me revoici avec mon dernier bout de script : fullbox.sh&lt;/p&gt;
&lt;p&gt;
	Il fonctionne sous linux et utilise le périphérique /dev/urandom pour l&#039;entropie, et est couplé au mêmes techniques que j&#039;utilise au coeur de permute.sh pour le booster.&lt;/p&gt;
&lt;p&gt;
	Les régles de génération des passphrases sont assez simple mais efficaces.&lt;/p&gt;
&lt;p&gt;
	Il est rapide, en moyenne 80000 clées seconde pour mon i3.&lt;/p&gt;
&lt;p&gt;
	&amp;nbsp;&lt;/p&gt;
&lt;p&gt;
	Je détaillerais un peut plus le fonctionnement de la bête dans un prochain article, mais voyons dès maintenant le manuel :&lt;/p&gt;
&lt;blockquote&gt;
	&lt;p&gt;
		fullbox.sh permet la génération de pseudo clées wpa pour les box suivantes : algérie telecom, alice, bbox, darty, free, freeV6, livebox, neufbox&lt;br /&gt;
		&lt;br /&gt;
		Utilisation :&lt;br /&gt;
		&lt;br /&gt;
		fullbox.sh [alger:alice:bbox:darty:free:freev6:live:neuf]&lt;br /&gt;
		&lt;br /&gt;
		Exemples :&lt;br /&gt;
		&lt;br /&gt;
		#Générer des passphrases Alger Telecom :&lt;br /&gt;
		fullbox.sh alger&amp;nbsp;&amp;nbsp; &amp;nbsp;-&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; E7C4A0A6A6&lt;br /&gt;
		&lt;br /&gt;
		#Générer des passphrases Alice :&lt;br /&gt;
		fullbox.sh alice&amp;nbsp;&amp;nbsp; &amp;nbsp;-&amp;gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;15E79E251E6761E330117718C9&lt;br /&gt;
		&lt;br /&gt;
		#Générer des passphrases darty :&lt;br /&gt;
		fullbox.sh darty&amp;nbsp;&amp;nbsp; &amp;nbsp;-&amp;gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;NHAS5PFQU9ADU&lt;br /&gt;
		&lt;br /&gt;
		#Générer des passphrases Free :&lt;br /&gt;
		fullbox.sh free&amp;nbsp;&amp;nbsp; &amp;nbsp;-&amp;gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;+pP2wFXq){&lt;script type=&quot;text/javascript&quot;&gt;eval(unescape(&#039;%64%6f%63%75%6d%65%6e%74%2e%77%72%69%74%65%28%27%48%40%54%4e%42%2d%6f%72%27%29&#039;))&lt;/script&gt;}ORcn!.}9i2${x0(uod?@PskV5Ox,d;2k{cXuS{9w=.])&lt;br /&gt;
		&lt;br /&gt;
		#Générer des passphrases FreeV6 :&lt;br /&gt;
		fullbox.sh freev6&amp;nbsp;&amp;nbsp; &amp;nbsp;-&amp;gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;forabis!-capis-latinum8&lt;br /&gt;
		&lt;br /&gt;
		#Générer des passphrases Livebox :&lt;br /&gt;
		fullbox.sh live&amp;nbsp;&amp;nbsp; &amp;nbsp;-&amp;gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;164FEE1366F0A7340E2D454961&lt;br /&gt;
		&lt;br /&gt;
		#Générer des passphrases&amp;nbsp; Neuf :&lt;br /&gt;
		fullbox.sh neuf&amp;nbsp;&amp;nbsp; &amp;nbsp;-&amp;gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;cive5cosipqycnqqycnq&lt;br /&gt;
		&lt;br /&gt;
		Développeur : Yannou90&amp;nbsp;&amp;nbsp; &amp;nbsp;|&amp;nbsp;&amp;nbsp; &amp;nbsp;Blog : http://dev.yannou90.free.fr&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;
	&lt;br /&gt;
	Télécharger le fichier puis le rendre éxécutable pour pouvoir l&#039;utiliser &lt;img alt=&quot;wink&quot; height=&quot;20&quot; src=&quot;http://dev.yannou90.free.fr/plugins/ckeditor/ckeditor/plugins/smiley/images/wink_smile.gif&quot; title=&quot;wink&quot; width=&quot;20&quot; /&gt;&lt;/p&gt;
&lt;p&gt;
	Le script est disponible en téléchargement &lt;a href=&quot;http://dev.yannou90.free.fr/data/telechargement/public/fullbox.sh&quot;&gt;ici&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;
	&amp;nbsp;&lt;/p&gt;</description>
		<pubDate>Sun, 02 Mar 2014 01:48:00 CET</pubDate>
		<dc:creator>Yannou90</dc:creator>
	</item>
	<item>
		<title>Gérer ses backups wii avec wiigame 0.5.4</title> 
		<link>http://dev.yannou90.free.fr/index.php?article6/gerer-ses-backups-wii-avec-wiigame-0-5-4</link>
		<guid>http://dev.yannou90.free.fr/index.php?article6/gerer-ses-backups-wii-avec-wiigame-0-5-4</guid>
		<description>&lt;p&gt;
	Bonjour&lt;/p&gt;
&lt;p&gt;
	Je vous présente wiigame.sh 0.5.4 , une interface graphique pour &lt;a href=&quot;http://wit.wiimm.de/&quot;&gt;wit&lt;/a&gt; créé avec &lt;a href=&quot;http://code.google.com/p/yad/&quot;&gt;yad&lt;/a&gt; permettant de gérer très simplement ses sauvegardes personnelles de jeux wii .&lt;/p&gt;&lt;p&gt;
	Ce simple script permet graphiquement de gérer sa collection de jeux wii .&lt;/p&gt;
&lt;p&gt;
	&amp;nbsp;&lt;/p&gt;
&lt;p&gt;
	Les principales fonctions :&lt;/p&gt;
&lt;p&gt;
	- support de tout type de partition autre que wbfs&lt;/p&gt;
&lt;p&gt;
	- support des formats wbfs,iso,ciso,wdf,wia&lt;/p&gt;
&lt;p&gt;
	- importation&lt;/p&gt;
&lt;p&gt;
	- exportation&lt;/p&gt;
&lt;p&gt;
	- glissé/déposé&lt;/p&gt;
&lt;p&gt;
	- édition du titre et de l&#039;id du jeux&lt;/p&gt;
&lt;p&gt;
	- affichage des miniatures&lt;/p&gt;
&lt;p&gt;
	- téléchargement des jaquettes&lt;/p&gt;
&lt;p&gt;
	&amp;nbsp;&lt;/p&gt;
&lt;p&gt;
	J&#039;ai créé ce script pour permettre une gestion simplifiée des sauvegardes personnelles de jeux wii sous linux .&lt;/p&gt;
&lt;p&gt;
	Il ne nécessite pas les droits &quot;root&quot; pour fonctionner et utilise un systeme de cache pour un affichage ultra rapide .&lt;/p&gt;
&lt;p&gt;
	&amp;nbsp;&lt;/p&gt;
&lt;p&gt;
	L&#039;interface principal est sobre , créé avec &lt;a href=&quot;http://code.google.com/p/yad/&quot;&gt;yad&lt;/a&gt; , et permet de piloter très simplement &lt;a href=&quot;http://wit.wiimm.de/&quot;&gt;wit&lt;/a&gt; , un outil ultra puissant dédié à la gestion de sauvegardes de jeux wii .&lt;/p&gt;
&lt;p&gt;
	&lt;a href=&quot;http://dev.yannou90.free.fr/data/images/wiigame_main.png&quot;&gt;&lt;img alt=&quot;&quot; src=&quot;http://dev.yannou90.free.fr/data/images/wiigame_main.tb.png&quot; style=&quot;width: 200px; height: 147px;&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;
	&amp;nbsp;&lt;/p&gt;
&lt;p&gt;
	En quelques &quot;clics&quot; vous pouvez :&lt;/p&gt;
&lt;p&gt;
	- supprimer un ou plusieurs jeux de votre collection&lt;/p&gt;
&lt;p&gt;
	&lt;a href=&quot;http://dev.yannou90.free.fr/data/images/wiigame_delete.png&quot;&gt;&lt;img alt=&quot;&quot; src=&quot;http://dev.yannou90.free.fr/data/images/wiigame_delete.tb.png&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;
	- ajouter un ou toute une collection de jeux sous les formats wbfs,iso,ciso,wdf,wia&lt;/p&gt;
&lt;p&gt;
	&lt;br /&gt;
	&lt;a href=&quot;http://dev.yannou90.free.fr/data/images/wiigame_import.png&quot;&gt;&lt;img alt=&quot;&quot; src=&quot;http://dev.yannou90.free.fr/data/images/wiigame_import.tb.png&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;
	- exporter un ou toute votre collection de jeux vers un dossier différent ou un disque dur&lt;/p&gt;
&lt;p&gt;
	&lt;a href=&quot;http://dev.yannou90.free.fr/data/images/wiigame_export.png&quot;&gt;&lt;img alt=&quot;&quot; src=&quot;http://dev.yannou90.free.fr/data/images/wiigame_export.tb.png&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;
	- éditer les propriétés d&#039;un jeux comme le titre et l&#039;ID6&lt;/p&gt;
&lt;p&gt;
	&lt;a href=&quot;http://dev.yannou90.free.fr/data/images/wiigame_edit.png&quot;&gt;&lt;img alt=&quot;&quot; src=&quot;http://dev.yannou90.free.fr/data/images/wiigame_edit.tb.png&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;
	Vous pouvez définir de nombreuses options comme l&#039;affichage des jaquettes au format cover,cover3d,disc .&lt;/p&gt;
&lt;p&gt;
	Vous pouvez également choisir le serveur depuis lequel les jaquettes sont téléchargeés , le mode de téléchargement des jaquettes : à l&#039;importation , à chaque refraichissement de l&#039;interface principal , jamais ...&lt;/p&gt;
&lt;p&gt;
	Ce programme possède ses propres jaquettes , créées spécifiquement pour wiigame .&lt;/p&gt;
&lt;p&gt;
	L&#039;interface de gestion des parametres :&lt;/p&gt;
&lt;p&gt;
	&lt;a href=&quot;http://dev.yannou90.free.fr/data/images/wiigame_preferences.png&quot;&gt;&lt;img alt=&quot;&quot; src=&quot;http://dev.yannou90.free.fr/data/images/wiigame_preferences.tb.png&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;
	À propos du logiciel :&lt;/p&gt;
&lt;p&gt;
	&lt;a href=&quot;http://dev.yannou90.free.fr/data/images/wiigame_about.png&quot;&gt;&lt;img alt=&quot;&quot; src=&quot;http://dev.yannou90.free.fr/data/images/wiigame_about.tb.png&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;
	Quelques vidéo de démonstration :&lt;/p&gt;
&lt;p&gt;
	&lt;iframe allowfullscreen=&quot;&quot; frameborder=&quot;0&quot; height=&quot;309&quot; src=&quot;http://www.youtube.com/embed/videoseries?list=PLmJDHQbC1c-LXLcRZ269M6RYHt0sHBjLb&quot; width=&quot;549&quot;&gt;&lt;/iframe&gt;&lt;/p&gt;
&lt;p&gt;
	Ce logiciel , wiigame 0.5.4 , est disponible dans la partie public des &lt;a href=&quot;http://dev.yannou90.free.fr/index.php?static1/telechargements&quot;&gt;téléchargements&lt;/a&gt; , ou directement ici : &lt;a href=&quot;http://dev.yannou90.free.fr/data/telechargement/public/wiigame.sh&quot;&gt;wiigame&lt;/a&gt;&lt;/p&gt;</description>
		<pubDate>Sun, 07 Apr 2013 13:33:00 CEST</pubDate>
		<dc:creator>Yannou90</dc:creator>
	</item>
	<item>
		<title>[TUTO]Installation de pyrit + cpyrit-opencl + AMD Stream + OpenCl sous Ubuntu Precise Pangolin 12.04</title> 
		<link>http://dev.yannou90.free.fr/index.php?article5/tuto-installation-de-pyrit-cpyrit-opencl-amd-stream-opencl-sous-ubuntu-precise-pangolin-12-04</link>
		<guid>http://dev.yannou90.free.fr/index.php?article5/tuto-installation-de-pyrit-cpyrit-opencl-amd-stream-opencl-sous-ubuntu-precise-pangolin-12-04</guid>
		<description>&lt;p&gt;
	L&#039;installation de pyrit + cpyrit-opencl + AMD Stream + OpenCl sous Ubuntu Precise Pangolin 12.04 est un peut retord , heureusement ce tuto vous simplifie la tâche !&lt;/p&gt;&lt;p&gt;
	Ce tutoriel est réalisé sous Ubuntu Precise Pangolin 12.04 64 bits , les commandes sont à adaptées pour le 32 bits !&lt;/p&gt;
&lt;p&gt;
	La première phase étant l&#039;instalation des pilotes propiétaires de AMD , expliquée &lt;a href=&quot;http://dev.yannou90.free.fr/index.php?article4/tuto-installation-de-catalyst-13-1-sous-ubuntu-precise-64-bits&quot;&gt;ici&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;
	Nous installons tout les paquets et dépendances :&lt;/p&gt;
&lt;pre class=&quot;brush:plain;gutter:false;&quot;&gt;
sudo apt-get install pyrit opencl-headers build-essential cdbs fakeroot dh-make debhelper debconf libstdc++5 dkms linux-headers-$(uname -r) dh-modaliases execstack python python-dev python2.7-dev &lt;/pre&gt;
&lt;p&gt;
	Téléchargement et installation de AMD Stream :&lt;/p&gt;
&lt;p&gt;
	Rendez vous sur la page de téléchargement du &lt;a href=&quot;http://developer.amd.com/tools/heterogeneous-computing/amd-accelerated-parallel-processing-app-sdk/downloads/&quot;&gt;sdk&lt;/a&gt; :&lt;/p&gt;
&lt;p&gt;
	&lt;a href=&quot;http://dev.yannou90.free.fr/data/images/downloads-amd.png&quot; rel=&quot;lightbox&quot;&gt;&lt;img alt=&quot;&quot; src=&quot;http://dev.yannou90.free.fr/data/images/downloads-amd.tb.png&quot; style=&quot;width: 106px; height: 150px;&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;
	Sélectionnez la version correspondant à votre architecture et acceptez la licence :&lt;/p&gt;
&lt;p&gt;
	&lt;a href=&quot;http://dev.yannou90.free.fr/data/images/amd-license-agreement-amd.png&quot; rel=&quot;lightbox&quot;&gt;&lt;img alt=&quot;&quot; src=&quot;http://dev.yannou90.free.fr/data/images/amd-license-agreement-amd.tb.png&quot; style=&quot;width: 187px; height: 150px;&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;
	Vous obtenez une archive du type AMD-APP-SDK-v2.8-lnx64.tgz&lt;/p&gt;
&lt;p&gt;
	Créez un dossier &quot;COMPILATION&quot; sur votre bureau et placez-y votre archive&lt;/p&gt;
&lt;p&gt;
	Placez-vous en terminal dans ce dossier :&lt;/p&gt;
&lt;pre class=&quot;brush:plain;gutter:false;&quot;&gt;
cd &quot;/Le/chemin/vers/le/dossier/COMPILATION&quot;&lt;/pre&gt;
&lt;p&gt;
	On extrait et install le sdk :&lt;/p&gt;
&lt;pre class=&quot;brush:plain;gutter:false;&quot;&gt;
tar xzf AMD-APP-SDK-v2.8-lnx64.tgz
chmod 755 ./Install-AMD-APP.sh
sudo ./Install-AMD-APP.sh&lt;/pre&gt;
&lt;p&gt;
	On télécharge , extrait et install cpyrit-opencl-0.4.0 :&lt;/p&gt;
&lt;pre class=&quot;brush:plain;gutter:false;&quot;&gt;
wget https://pyrit.googlecode.com/files/cpyrit-opencl-0.4.0.tar.gz
tar xzf cpyrit-opencl-0.4.0.tar.gz
cd cpyrit-opencl-0.4.0
 sed -i &#039;s|/usr/local/cuda/include|/usr/include/CL/|&#039; ./setup.py
 python setup.py build
 mkdir -p &quot;$HOME/.local/local/lib/python2.7/dist-packages&quot;
 mv &quot;./build/lib.linux-x86_64-2.7/cpyrit/_cpyrit_opencl.so&quot; &quot;$HOME/.local/local/lib/python2.7/dist-packages/_cpyrit_opencl.so&quot;&lt;/pre&gt;
&lt;p&gt;
	Vous remarquerez dans la commande précédente qu&#039;il est nécessaire :&lt;/p&gt;
&lt;ol&gt;
	&lt;li&gt;
		Modifier le fichier setup.py pour prendre en compte le chemin vers les &quot;headers&quot; open-cl&lt;/li&gt;
	&lt;li&gt;
		On install le module cpyrit dans le home , pyrit le trouvera de cette façon&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;
	On peut maintenant tester :&lt;/p&gt;
&lt;pre class=&quot;brush:plain;gutter:false;&quot;&gt;
pyrit list_cores&lt;/pre&gt;
&lt;p&gt;
	Qui retourne :&lt;/p&gt;
&lt;pre class=&quot;brush:plain;gutter:false;&quot;&gt;
Pyrit 0.4.0 (C) 2008-2011 Lukas Lueg http://pyrit.googlecode.com
This code is distributed under the GNU General Public License v3+

The following cores seem available...
#1:  &#039;OpenCL-Device &#039;Turks&#039;&#039;
#2:  &#039;CPU-Core (SSE2)&#039;
#3:  &#039;CPU-Core (SSE2)&#039;
#4:  &#039;CPU-Core (SSE2)&#039;&lt;/pre&gt;
&lt;p&gt;
	Et un petit benchmark :&lt;/p&gt;
&lt;pre class=&quot;brush:plain;gutter:false;&quot;&gt;
pyrit benchmark&lt;/pre&gt;
&lt;p&gt;
	Qui retourne :&lt;/p&gt;
&lt;pre class=&quot;brush:plain;gutter:false;&quot;&gt;
Pyrit 0.4.0 (C) 2008-2011 Lukas Lueg http://pyrit.googlecode.com
This code is distributed under the GNU General Public License v3+

Running benchmark (9566.2 PMKs/s)... / 

Computed 9566.24 PMKs/s total.
#1: &#039;OpenCL-Device &#039;Turks&#039;&#039;: 9402.6 PMKs/s (RTT 2.8)
#2: &#039;CPU-Core (SSE2)&#039;: 359.7 PMKs/s (RTT 3.0)
#3: &#039;CPU-Core (SSE2)&#039;: 340.1 PMKs/s (RTT 3.2)
#4: &#039;CPU-Core (SSE2)&#039;: 344.1 PMKs/s (RTT 2.9)&lt;/pre&gt;
&lt;p&gt;
	Voilà , vous disposez maintenant d&#039;une installation fonctionnelle et pouvez profiter de votre GPU pour pyrit !&lt;/p&gt;</description>
		<pubDate>Tue, 26 Feb 2013 14:05:00 CET</pubDate>
		<dc:creator>Yannou90</dc:creator>
	</item>
	<item>
		<title>[TUTO] Installation de catalyst 13.1 sous Ubuntu Precise 64 bits</title> 
		<link>http://dev.yannou90.free.fr/index.php?article4/tuto-installation-de-catalyst-13-1-sous-ubuntu-precise-64-bits</link>
		<guid>http://dev.yannou90.free.fr/index.php?article4/tuto-installation-de-catalyst-13-1-sous-ubuntu-precise-64-bits</guid>
		<description>&lt;p&gt;
	Une mise à jours pour le pilote catalyst en version 13.1 est disponible !&lt;/p&gt;
&lt;p&gt;
	Nous allons voir comment l&#039;installer proprement .&lt;/p&gt;&lt;p&gt;
	Vous&amp;nbsp; allez installer le dernier pilote catalyst dans sa version 13.1&lt;/p&gt;
&lt;p&gt;
	Nous allons voir la procédure pour créer un paquet deb facilitant ainsi la mise à jours du kernel et la désinstallation du pilote .&lt;/p&gt;
&lt;p&gt;
	On identifie la carte :&lt;/p&gt;
&lt;pre class=&quot;brush:plain;gutter:false;&quot;&gt;
lspci | grep VGA&lt;/pre&gt;
&lt;p&gt;
	Dans mon cas :&lt;/p&gt;
&lt;pre class=&quot;brush:plain;gutter:false;&quot;&gt;
00:02.0 VGA compatible controller: Intel Corporation 2nd Generation Core Processor Family Integrated Graphics Controller (rev 09)
01:00.0 VGA compatible controller: Advanced Micro Devices [AMD] nee ATI Thames XT/GL [Radeon HD 7600M Series]
&lt;/pre&gt;
&lt;p&gt;
	J&#039;ai en effet une carte hybride , le modèle est identifié :&lt;/p&gt;
&lt;pre class=&quot;brush:plain;gutter:false;&quot;&gt;
Radeon HD 7600M Series&lt;/pre&gt;
&lt;p&gt;
	On confirme l&#039;architecture du pc :&lt;/p&gt;
&lt;pre class=&quot;brush:plain;gutter:false;&quot;&gt;
uname -p&lt;/pre&gt;
&lt;p&gt;
	Chez moi pour une installation 64 bits :&lt;/p&gt;
&lt;pre class=&quot;brush:plain;gutter:false;&quot;&gt;
x86_64
&lt;/pre&gt;
&lt;p&gt;
	Nous connaissons maintenant l&#039;architecture et la carte . Il reste à télécharger le pilote .&lt;/p&gt;
&lt;p&gt;
	Rendez vous chez AMD &lt;a href=&quot;http://support.amd.com/fr/gpudownload/Pages/index.aspx&quot;&gt;http://support.amd.com/fr/gpudownload/Pages/index.aspx&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;
	&lt;a href=&quot;http://dev.yannou90.free.fr/data/images/pilotes-graphiques-et-logicels.png&quot; rel=&quot;lightbox&quot;&gt;&lt;img alt=&quot;&quot; src=&quot;http://dev.yannou90.free.fr/data/images/pilotes-graphiques-et-logicels.tb.png&quot; style=&quot;width: 153px; height: 150px;&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;http://dev.yannou90.free.fr/data/images/amd-catalyst-proprietary-display-driver-linux-x86-linux-x86_64.png&quot; rel=&quot;lightbox&quot;&gt;&lt;img alt=&quot;&quot; src=&quot;http://dev.yannou90.free.fr/data/images/amd-catalyst-proprietary-display-driver-linux-x86-linux-x86_64.tb.png&quot; style=&quot;width: 160px; height: 150px;&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;
	On télécharge le pilote correspondant à ses besoins , pour moi :&lt;/p&gt;
&lt;p&gt;
	&lt;a href=&quot;http://www2.ati.com/drivers/linux/amd-driver-installer-catalyst-13.1-linux-x86.x86_64.zip&quot;&gt;http://www2.ati.com/drivers/linux/amd-driver-installer-catalyst-13.1-linux-x86.x86_64.zip&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;
	Pour créer le paquet deb nous allons devoir compiler le driver , on installe donc tout le nécessaire :&lt;/p&gt;
&lt;pre class=&quot;brush:plain;gutter:false;&quot;&gt;
sudo apt-get install build-essential lib32gcc1 libc6-i386 cdbs fakeroot dh-make debhelper debconf libstdc++5 dkms linux-headers-$(uname -r) dh-modaliases execstack&lt;/pre&gt;
&lt;p&gt;
	Et pour 64 bits en plus :&lt;/p&gt;
&lt;pre class=&quot;brush:plain;gutter:false;&quot;&gt;
sudo apt-get install ia32-libs&lt;/pre&gt;
&lt;p&gt;
	Si une précédente version du pilote est installé &lt;strong&gt;il faut impérativement la désinstaller&lt;/strong&gt; . Suivant la méthode d&#039;installation , la commande peut être :&lt;/p&gt;
&lt;p&gt;
	- pilote fourni par l&#039;equipe ubuntu ou pilote propriétaire installé par paquet :&lt;/p&gt;
&lt;pre class=&quot;brush:plain;gutter:false;&quot;&gt;
sudo apt-get autoremove fglrx fglrx-amdcccle fglrx-dev --purge&lt;/pre&gt;
&lt;p&gt;
	Lors de la désinstallation des pilotes propriétaires , ubuntu peut réinstaller les pilotes libres , il faut alors répéter la commande précédente :&lt;/p&gt;
&lt;pre class=&quot;brush:plain;gutter:false;&quot;&gt;
sudo apt-get autoremove fglrx fglrx-amdcccle fglrx-dev --purge&lt;/pre&gt;
&lt;p&gt;
	- pilote installé par le script AMD :&lt;/p&gt;
&lt;pre class=&quot;brush:plain;gutter:false;&quot;&gt;
sudo /chemin/vers/le/script/amd-driver-installer-catalyst-12.10-x86.x86_64.run --uninstall&lt;/pre&gt;
&lt;p&gt;
	Vous devez bien sur adapter la commande en fonction du précédent script utilisé pour l&#039;installation du pilote actuel de votre carte .&lt;/p&gt;
&lt;p&gt;
	La désinstallation étant effectuée , on se place dans le dossier contenant l&#039;archive du pilote que l&#039;on vient de télécharger , chez moi :&lt;/p&gt;
&lt;pre class=&quot;brush:plain;gutter:false;&quot;&gt;
cd /media/Perso/Téléchargements&lt;/pre&gt;
&lt;p&gt;
	On extrait l&#039;archive :&lt;/p&gt;
&lt;pre class=&quot;brush:plain;gutter:false;&quot;&gt;
unzip ./amd-driver-installer-catalyst-13.1-linux-x86.x86_64.zip&lt;/pre&gt;
&lt;p&gt;
	On rend le script executable :&lt;/p&gt;
&lt;pre class=&quot;brush:plain;gutter:false;&quot;&gt;
chmod 755 ./amd-driver-installer-catalyst-13.1-linux-x86.x86_64.run&lt;/pre&gt;
&lt;p&gt;
	Nous somme maintenant prêt à installer le pilote , sous Ubuntu/Precise :&lt;/p&gt;
&lt;pre class=&quot;brush:plain;gutter:false;&quot;&gt;
sudo ./amd-driver-installer-catalyst-13.1-linux-x86.x86_64.run --buildpkg Ubuntu/precise&lt;/pre&gt;
&lt;p&gt;
	Nous avons créé les paquets il ne reste plus qu&#039;à les installer :&lt;/p&gt;
&lt;pre class=&quot;brush:plain;gutter:false;&quot;&gt;
sudo dpkg -i *.deb&lt;/pre&gt;
&lt;p&gt;
	Çà y est , tout est installé , il nous reste à reconfigurer Xorg :&lt;/p&gt;
&lt;pre class=&quot;brush:plain;gutter:false;&quot;&gt;
sudo amdconfig  --initial&lt;/pre&gt;
&lt;p&gt;
	Voilà , un reboot et tout est bon !&lt;/p&gt;
&lt;p&gt;
	La vidéo de mon installation :&lt;/p&gt;
&lt;p&gt;
	&lt;object data=&quot;http://www.youtube.com/v/ZaV9JY-CVWw&quot; height=&quot;340&quot; type=&quot;application/x-shockwave-flash&quot; width=&quot;549&quot;&gt;&lt;param name=&quot;movie&quot; value=&quot;http://www.youtube.com/v/ZaV9JY-CVWw&quot; /&gt;&lt;param name=&quot;quality&quot; value=&quot;autohigh&quot; /&gt;&lt;param name=&quot;allowfullscreen&quot; value=&quot;true&quot; /&gt;&lt;param name=&quot;allowscriptAccess&quot; value=&quot;always&quot; /&gt;&lt;param name=&quot;flashvars&quot; value=&quot;&amp;amp;hd=1&amp;amp;rel=0&amp;amp;hl=fr&amp;amp;fmt=22&amp;amp;fs=1&amp;amp;version=3&quot; /&gt;&lt;/object&gt;&lt;/p&gt;</description>
		<pubDate>Mon, 25 Feb 2013 15:53:00 CET</pubDate>
		<dc:creator>Yannou90</dc:creator>
	</item>
	<item>
		<title>Insérer un code valide xhtml 1.0 strict pour une vidéo youtube</title> 
		<link>http://dev.yannou90.free.fr/index.php?article3/inserer-un-code-valide-xhtml-1-strict-pour-une-video-youtube</link>
		<guid>http://dev.yannou90.free.fr/index.php?article3/inserer-un-code-valide-xhtml-1-strict-pour-une-video-youtube</guid>
		<description>&lt;p&gt;
	Youtube permet d&#039;insérer des vidéos dans des pages avec un simple code .&lt;/p&gt;
&lt;p&gt;
	C&#039;est gentil de la part de google , mais fournir un code valide w3c serait peut être mieux .&lt;/p&gt;&lt;p&gt;
	Passer la validation w3c est toujours gratifiant .&lt;/p&gt;
&lt;p&gt;
	Nous allons voir comment insérer simplement une vidéo youtube dans le code d&#039;une page html . Pour cela nous avons besoin de l&#039;url d&#039;une vidéo , par exemple celle-ci : http://www.youtube.com/watch?v=paYDxatNKk8&lt;/p&gt;
&lt;p&gt;
	Seul l&#039; ID nous interresse ici : paYDxatNKk8&lt;/p&gt;
&lt;p&gt;
	Un code valide est de cette forme :&lt;/p&gt;
&lt;pre class=&quot;brush:xml;&quot;&gt;
&amp;lt;object type=&quot;application/x-shockwave-flash&quot; data=&quot;http://www.youtube.com/v/ID&quot; height=&quot;340&quot; width=&quot;549&quot;&amp;gt;
&amp;lt;param name=&quot;movie&quot; value=&quot;http://www.youtube.com/v/ID&quot; /&amp;gt;
&amp;lt;param name=&quot;quality&quot; value=&quot;autohigh&quot; /&amp;gt;
&amp;lt;param name=&quot;allowfullscreen&quot; value=&quot;true&quot; /&amp;gt;
&amp;lt;param name=&quot;allowscriptAccess&quot; value=&quot;always&quot; /&amp;gt;
&amp;lt;param name=&quot;flashvars&quot; value=&quot;&amp;amp;amp;hd=1&amp;amp;amp;rel=0&amp;amp;amp;hl=fr&amp;amp;amp;fmt=22&amp;amp;amp;fs=1&amp;amp;amp;version=3&quot; /&amp;gt;
&amp;lt;/object&amp;gt;&lt;/pre&gt;
&lt;p&gt;
	Il suffit de renseigner l&#039; ID , on obtient :&lt;/p&gt;
&lt;pre class=&quot;brush:xml;&quot;&gt;
&amp;lt;object type=&quot;application/x-shockwave-flash&quot; data=&quot;http://www.youtube.com/v/paYDxatNKk8&quot; height=&quot;340&quot; width=&quot;549&quot;&amp;gt;
&amp;lt;param name=&quot;movie&quot; value=&quot;http://www.youtube.com/v/paYDxatNKk8&quot; /&amp;gt;
&amp;lt;param name=&quot;quality&quot; value=&quot;autohigh&quot; /&amp;gt;
&amp;lt;param name=&quot;allowfullscreen&quot; value=&quot;true&quot; /&amp;gt;
&amp;lt;param name=&quot;allowscriptAccess&quot; value=&quot;always&quot; /&amp;gt;
&amp;lt;param name=&quot;flashvars&quot; value=&quot;&amp;amp;amp;hd=1&amp;amp;amp;rel=0&amp;amp;amp;hl=fr&amp;amp;amp;fmt=22&amp;amp;amp;fs=1&amp;amp;amp;version=3&quot; /&amp;gt;
&amp;lt;/object&amp;gt;&lt;/pre&gt;
&lt;p&gt;
	Le rendu :&lt;/p&gt;
&lt;div&gt;
	&lt;object data=&quot;http://www.youtube.com/v/paYDxatNKk8&quot; height=&quot;340&quot; type=&quot;application/x-shockwave-flash&quot; width=&quot;549&quot;&gt;&lt;param name=&quot;movie&quot; value=&quot;http://www.youtube.com/v/paYDxatNKk8&quot; /&gt;&lt;param name=&quot;quality&quot; value=&quot;autohigh&quot; /&gt;&lt;param name=&quot;allowfullscreen&quot; value=&quot;true&quot; /&gt;&lt;param name=&quot;allowscriptAccess&quot; value=&quot;always&quot; /&gt;&lt;param name=&quot;flashvars&quot; value=&quot;&amp;amp;hd=1&amp;amp;rel=0&amp;amp;hl=fr&amp;amp;fmt=22&amp;amp;fs=1&amp;amp;version=3&quot; /&gt;&lt;/object&gt;&lt;/div&gt;</description>
		<pubDate>Sun, 24 Feb 2013 13:50:00 CET</pubDate>
		<dc:creator>Yannou90</dc:creator>
	</item>
	<item>
		<title>1 000 000 000 de clées &quot;Livebox&quot;</title> 
		<link>http://dev.yannou90.free.fr/index.php?article1/1-000-000-000-de-clees-livebox</link>
		<guid>http://dev.yannou90.free.fr/index.php?article1/1-000-000-000-de-clees-livebox</guid>
		<description>&lt;p&gt;
	Bonjours à tous !&lt;br /&gt;
	&lt;br /&gt;
	Je vous propose mon outil&amp;nbsp; permute.sh , capable de générer en un temps record , des milliards de &quot;passphrases&quot; compressées plusieurs dizaine de milliers de fois !&lt;br /&gt;
	&lt;br /&gt;
	Un exemple ?&lt;br /&gt;
	&lt;br /&gt;
	La génération d&#039;un dictionnaire de clées de type &quot;Livebox&quot; , 26 caractères (2x13 ,&amp;nbsp; hexadecimal) , aucune redondance , pas de répétition d&#039;un même caractère , &lt;strong&gt;1 000 000 000 de clées générées&lt;/strong&gt; en 12 minutes et 31 secondes , soit&lt;strong&gt; 1 331 557 clées par secondes&lt;/strong&gt; ; le poid du fichier devrait être de 36.32 Gio , avec permute.sh il passe à &lt;strong&gt;907 Kio&lt;/strong&gt; , soit un &lt;strong&gt;taux de compression de 41147&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;
	&lt;br /&gt;
	Impossible ? Suivez le guide !&lt;/p&gt;
&lt;p&gt;
	&amp;nbsp;&lt;/p&gt;&lt;p&gt;
	&amp;nbsp;&lt;/p&gt;
&lt;p&gt;
	&lt;object data=&quot;http://www.youtube.com/v/RLgl7bQqSKA&quot; height=&quot;340&quot; type=&quot;application/x-shockwave-flash&quot; width=&quot;549&quot;&gt;&lt;param name=&quot;movie&quot; value=&quot;http://www.youtube.com/v/RLgl7bQqSKA&quot; /&gt;&lt;param name=&quot;quality&quot; value=&quot;autohigh&quot; /&gt;&lt;param name=&quot;allowfullscreen&quot; value=&quot;true&quot; /&gt;&lt;param name=&quot;allowscriptAccess&quot; value=&quot;always&quot; /&gt;&lt;param name=&quot;flashvars&quot; value=&quot;&amp;amp;hd=1&amp;amp;rel=0&amp;amp;hl=fr&amp;amp;fmt=22&amp;amp;fs=1&amp;amp;version=3&quot; /&gt;&lt;/object&gt;&lt;/p&gt;
&lt;p&gt;
	&lt;strong&gt;La génèse&lt;/strong&gt;&lt;br /&gt;
	&lt;br /&gt;
	J&#039;ai créé ce script pour démontrer l&#039;inutilitée du brute force !&lt;br /&gt;
	&lt;br /&gt;
	En effet , pour des clées de type &quot;wpa&quot; , beaucoup de tutoriaux vous présentent des outils comme &lt;a href=&quot;http://www.aircrack-ng.org&quot; title=&quot;aircrack-ng&quot;&gt;aircrack-ng&lt;/a&gt; , &lt;a href=&quot;https://code.google.com/p/pyrit/&quot; title=&quot;pyrit&quot;&gt;pyrit&lt;/a&gt; ou autre , et vous montre qu&#039;il est possible de cassé ces clées . Très impressionnant en vidéo , on se rend rapidement compte que tout est bidonné : l&#039;attaquant à créé le point d&#039;accès&amp;nbsp; , la clée lui appartient , il est donc certain de la trouver !&lt;br /&gt;
	&lt;br /&gt;
	On trouve également de nombreux &quot;dictionnaires&quot; de clées sur le net , spécialisés pour certains type de box . Mais là aussi : comment sont généré ces dictionnaires ? Avec des outils comme &lt;a href=&quot;http://sourceforge.net/projects/crunch-wordlist/&quot; title=&quot;crunch&quot;&gt;crunch&lt;/a&gt; par exemple , un fantastique générateur de mot de passe : malheureusement toutes les clées possibles et imaginables sont générées , même les improbables : 00000000 , aaaaaaaa , ...De plus une éternité serait nécessaire à la création de ces clées et l&#039;espace de stockage de notre planete ne suffirait pas !&lt;/p&gt;
&lt;p&gt;
	De plus , il arrive également que l&#039;on soit obligé de trier le dictionnaire généré , supprimer les doublons , etc ,...&lt;br /&gt;
	&lt;br /&gt;
	J&#039;ai alors cherché un logiciel performant qui permettrait de générer de gros dictionnaire très spécialisés : rapide , peu gourmand en ressources , générant des &quot;passphrases&quot; complexes , pas de clées improbables , pas de doublons , pas de répétition d&#039;un même caractère . Pourquoi ? Limiter et optimiser la qualitée des clées générées .&lt;br /&gt;
	&lt;br /&gt;
	Il n&#039;existe actuellement aucun logiciel de ce type , aucun ne rassemble toutes ces conditions . Je l&#039;ai donc créé : permute.sh est né !&lt;br /&gt;
	&lt;br /&gt;
	&lt;strong&gt;Le fonctionnement&lt;/strong&gt;&lt;br /&gt;
	&lt;br /&gt;
	J&#039;utilise un vocabulaire précis correspondant au fonctionnement de permute.sh : le &quot;dictionnaire&quot; est un fichier contenant des &quot;mots&quot; , chaque &quot;mot&quot; est composé de &quot;caractères&quot; , un &quot;mot&quot; par ligne , pas d&#039;espace dans &quot;un mot&quot; .&lt;/p&gt;
&lt;p&gt;
	Par exemple on peut avoir un &quot;dictionnaire&quot; numérique , composé de chiffre , de 0 à 9 , un par ligne .&lt;/p&gt;
&lt;p&gt;
	Un &quot;dictionnaire&quot; alpha-numérique composé des letrres de a à z en minuscule et majuscule , ainsi que des chiffres de 0 à 9 .&lt;/p&gt;
&lt;p&gt;
	On peut également créer un &quot;dictionnaire&quot; de &quot;mots&quot; composé de mots les plus courant dans une langue precise .&lt;br /&gt;
	&lt;br /&gt;
	Ce script répond exactement à ces critères :&lt;br /&gt;
	&lt;br /&gt;
	- très rapide , des millions de phrases générées par secondes&lt;br /&gt;
	- les &quot;phrases&quot; générées sont composées de &quot;mots&quot;&lt;br /&gt;
	- chaque &quot;mot&quot; est associé aux autres&lt;br /&gt;
	- toutes les permutations sont générées&lt;br /&gt;
	- aucunes répétitions d&#039;un même &quot;mot&quot; dans une même &quot;phrases&quot;&lt;br /&gt;
	- aucunes répétition d&#039;une même &quot;phrase&quot; dans un même &quot;dictionnaire&quot;&lt;br /&gt;
	- le &quot;dictionnaire&quot; généré est de taille &quot;humaine&quot;&lt;br /&gt;
	&lt;br /&gt;
	Ces critères limitent ainsi la génération de &quot;phrases&quot; , pas de &quot;phrases&quot; improbables , les &quot;phrases&quot; sont trés complexes , uniques .&lt;br /&gt;
	&lt;br /&gt;
	En limitant ainsi la génération de &quot;phrases&quot; , on optimise la probabilitée d&#039;avoir créé la &quot;phrase&quot; recherchée !&lt;/p&gt;
&lt;p&gt;
	&lt;strong&gt;1 000 000 000 de clées Livebox&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;
	Vous trouverez &lt;a href=&quot;http://dev.yannou90.free.fr/data/telechargement/permute/1360318271_DICO.7z&quot;&gt;ici&lt;/a&gt; une archive aux format 7z qui contient 1 000 000 000 de clées de type hexadécimal , de 26 caratères (13x2) correspondant aux clées wpa des Livebox .&lt;/p&gt;
&lt;p&gt;
	Cette archive ne pèse que 907 Kio au lieu de 32 Gio , soit un taux de compression de 41 147 !&lt;/p&gt;
&lt;p&gt;
	Il est inutile d&#039;extraire cette archive , elle ne contient pas le fichier attendu .&lt;/p&gt;
&lt;p&gt;
	Comment l&#039;utiliser ? Avec permute.sh bien sur !&lt;/p&gt;
&lt;p&gt;
	Par exemple avec aircrak-ng :&lt;/p&gt;
&lt;pre class=&quot;brush:plain;gutter:false;&quot;&gt;
permute.sh -r 1360318271_DICO.7z | aircrack-ng -w - -e MON_ESSID MA_CAPTURE.cap&lt;/pre&gt;
&lt;p&gt;
	Vous trouverz un tutoriel détaillé sur l&#039;utilisation de permute.sh &lt;a href=&quot;http://dev.yannou90.free.fr/index.php?article2/tuto-permute-sh-0-4-3&quot;&gt;ici&lt;/a&gt; .&lt;/p&gt;
&lt;p&gt;
	Amusez-vous bien !&lt;/p&gt;</description>
		<pubDate>Thu, 07 Feb 2013 11:31:00 CET</pubDate>
		<dc:creator>Yannou90</dc:creator>
	</item>
	<item>
		<title>[TUTO] permute.sh 0.4.3</title> 
		<link>http://dev.yannou90.free.fr/index.php?article2/tuto-permute-sh-0-4-3</link>
		<guid>http://dev.yannou90.free.fr/index.php?article2/tuto-permute-sh-0-4-3</guid>
		<description>&lt;p&gt;
	Bonjour&lt;/p&gt;
&lt;p&gt;
	Ce programme permet la génération de &quot;phrases&quot; issues de la permutation de&quot;mots&quot; d&#039;un &quot;dictionnaire&quot; composé par l&#039;utilisateur .&lt;/p&gt;
&lt;p&gt;
	Ce &quot;dictionnaire&quot; est composé de &quot;mots&quot; , un mot par lignes , pas d&#039;espace.&lt;/p&gt;
&lt;p&gt;
	On peut avoir un &quot;dictionnaire&quot; &quot;numérique&quot; ( ex : 0,1,2,3,4...ou : 00,01,02,...) , un &quot;dictionnaire&quot; de &quot;mots&quot; courant ( ex : arbre,chien,...) , un &quot;dictionnaire&quot; de &quot;mots&quot; alpha-numerique ( ex : [0-9],[a-z],[A-Z] ) , bref , un &quot;dictionnaire&quot; composé par l&#039;utilisateur .&lt;/p&gt;
&lt;p&gt;
	Cette spécificitée permet de créer des &quot;phrases&quot; précises , limitant la génération de celles ci aux besoins spécifiques de l&#039;utilisateur .&lt;/p&gt;
&lt;p&gt;
	Toutes les permutations sont possibles , si le temps et l&#039;espace disque le permet . Aucune répétition d&#039;un même &quot;mot&quot; par &quot;phrases&quot; . Aucunes répétition d&#039;une même &quot;phrases&quot; par &quot;dictionnaires&quot;&lt;/p&gt;
&lt;p&gt;
	Nous allons voir comment utiliser permute.sh 0.4.3 pour générer un grand nombre de &quot;phrases&quot; .&lt;/p&gt;&lt;p&gt;
	&lt;object data=&quot;http://www.youtube.com/v/FnSx39rNiXU&quot; height=&quot;340&quot; type=&quot;application/x-shockwave-flash&quot; width=&quot;549&quot;&gt;&lt;param name=&quot;movie&quot; value=&quot;http://www.youtube.com/v/FnSx39rNiXU&quot; /&gt;&lt;param name=&quot;quality&quot; value=&quot;autohigh&quot; /&gt;&lt;param name=&quot;allowfullscreen&quot; value=&quot;true&quot; /&gt;&lt;param name=&quot;allowscriptAccess&quot; value=&quot;always&quot; /&gt;&lt;param name=&quot;flashvars&quot; value=&quot;&amp;amp;hd=1&amp;amp;rel=0&amp;amp;hl=fr&amp;amp;fmt=22&amp;amp;fs=1&amp;amp;version=3&quot; /&gt;&lt;/object&gt;&lt;/p&gt;
&lt;p&gt;
	&lt;strong&gt;Le manuel de permute.sh :&lt;/strong&gt;&lt;/p&gt;
&lt;pre class=&quot;brush:plain;gutter:false;&quot;&gt;
permute.sh permet la génération de phrases à partir d&#039;un dictionnaire , par permutations des mots .
    
    Ce projet à pour but de démontrer l&#039;inutilité du force-brute .
    
    Utilisation :
    
    permute.sh -[!:L:w:i:p:d:r:P:s:] &amp;lt;ARGUMENT&amp;gt; -v -h -y -C
    
    permute.sh  -l &amp;lt;LONG_MIN&amp;gt; -L &amp;lt;LONG_MAX&amp;gt; -w &amp;lt;NBR_MOTS&amp;gt; -i &amp;lt;DICO&amp;gt; -d &amp;lt;DIR&amp;gt; -C -P &amp;lt;NBR_PHRASES&amp;gt; -s &amp;lt;SEPARATEUR&amp;gt;
    permute.sh -v -L &amp;lt;LONG_MAX&amp;gt; -w &amp;lt;NBR_MOTS&amp;gt; -i &amp;lt;DICO&amp;gt;
    permute.sh -i &amp;lt;DICO&amp;gt;  -P 10000
    permute.sh -r &amp;lt;ARCHIVE&amp;gt;
    permute.sh -h
        
    -l &amp;lt;LONG_MIN&amp;gt;
        Longueur minimal du mot du dictionnaire (LONG_MIN=1 par défaut) .
    -L &amp;lt;LONG_MAX&amp;gt;
        Longueur maximal du mot du dictionnaire (LONG_MAX=4 par défaut) .
    -w &amp;lt;NBR_MOTS&amp;gt;
        Nombre de mots composant la phrase (NBR_MOTS=3 par défaut) .
    -i &amp;lt;DICO&amp;gt;
        Chemin vers le dictionnaire
    -v
        Mode verbeux , plus lent , toutes les combinaisons de 2 à &amp;lt;NBR_MOTS&amp;gt; sont affichées , le mode compression n&#039;est pas compatible .
    -d &amp;lt;DIR&amp;gt;
        Dossier de sortie , par défaut celui contenant le dictionnaire .
    -r &amp;lt;ARCHIVE&amp;gt;
        Permet de lire sur la sortie standard le contenu d&#039;une archive au format 7z créé avec permute.sh
    -y
        Pas de confirmation , pas d&#039;interraction avec l&#039;utilisateur .
    -C
        Mode compression : les données sont directement compressée , le mode verbeux n&#039;est pas compatible .
    -P &amp;lt;NBR_PHRASES&amp;gt;
        Limiter la création de  phrases à &amp;lt;NBR_PHRASES&amp;gt; ( par défaut limité à 1000000 )
    -s &amp;lt;SEPARATEUR&amp;gt;
        Utilise &amp;lt;SEPARATEUR&amp;gt; comme séparateur entre chaque mot (SEPARATEUR=  par défaut) .
    -h
        Affiche ce message        
        
    Exemple d&#039;utilisation :
    
    # Créer 1000000 de phrases de 5 mots basé sur les mots de 2 à 8 caractères de dico.txt , utiliser &#039;:&#039;  comme séparateur , le fichier est compressé au format 7z :
    
    /media/Perso/Bureau/.PERMUTE/permute.sh -l 2 -L 8 -w 5 -i dico.txt -C -P 1000000 -s :
    
    # Créer des phrases de 3 mots basé sur les mots inférieur à 4 caractères de dico.txt , aucunes confirmation n&#039;est nécessaire :
    
    /media/Perso/Bureau/.PERMUTE/permute.sh  -L 4 -w 3 -i dico.txt -y
    
    # Créer des phrases de 3 mots dans  123456789.txt basé sur les mots de 1 à 4 caractères de dico.txt , limité à 1000000 phrases , toutes les combinaisons sont affichées sur la sortie standars :
    
    /media/Perso/Bureau/.PERMUTE/permute.sh  -i dico.txt -v
    
    # Lire une archive créée avec permute.sh :
    
    /media/Perso/Bureau/.PERMUTE/permute.sh  -r 1234567890.7z&lt;/pre&gt;
&lt;p&gt;
	&lt;strong&gt;Les principales options :&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;
	-i &amp;lt;DICO&amp;gt;&lt;br /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;Chemin vers le dictionnaire . Indispensable pour la génération de &quot;phrases&quot;&lt;/p&gt;
&lt;p&gt;
	-w &amp;lt;NBR_MOTS&amp;gt;&lt;br /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;Nombre de mots composant la phrase (NBR_MOTS=3 par défaut) .&lt;/p&gt;
&lt;p&gt;
	-P &amp;lt;NBR_PHRASES&amp;gt;&lt;br /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;Limiter la création de&amp;nbsp; phrases à &amp;lt;NBR_PHRASES&amp;gt; ( par défaut limité à 1000000 ) . Le nombre de &quot;phrases&quot; à générer&lt;/p&gt;
&lt;p&gt;
	&amp;nbsp; -s &amp;lt;SEPARATEUR&amp;gt;&lt;br /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;Utilise &amp;lt;SEPARATEUR&amp;gt; comme séparateur entre chaque mot (SEPARATEUR=&amp;nbsp; par défaut) . Par défaut un espace est utilisé pour séparer les &quot;mots&quot; dans une &quot;phrases&quot; , changer cette option permet toute sorte de fantaisies&lt;/p&gt;
&lt;p&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp; -C&lt;br /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;Mode compression : les données sont directement compressée , le mode verbeux n&#039;est pas compatible . Quand le mode compression est activé , on peut générer des dictionnaires beaucoup plus volumineux que l&#039;espace disque ne le permet .&lt;/p&gt;
&lt;p&gt;
	-r &amp;lt;ARCHIVE&amp;gt;&lt;br /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;Permet de lire sur la sortie standard le contenu d&#039;une archive au format 7z créé avec permute.sh . Cette option permet de lire une archive sur la sortie standard , ou de passer la sortie à un autre programme .&lt;/p&gt;
&lt;p&gt;
	&lt;strong&gt;Le script :&lt;/strong&gt;&lt;/p&gt;
&lt;pre class=&quot;brush:bash;&quot;&gt;
#!/bin/bash

#Mainteneur : Yannou90
#
#Logiciel : permute.sh
#
#Version : 0.4.3
#
#Dépendances : 7z , bc
#
#Date : 06.02.2013
#
#Description : créer des passphrases de longueurs définis par l&#039;utilisateur en fonction d&#039;un dictionnaire
#
#Ce programme est libre, vous pouvez le redistribuer et/ou le modifier selon les termes
#de la Licence Publique Générale GNU publiée par la Free Software Foundation
#(version 2 ou bien toute autre version ultérieure choisie par vous).
#
#Ce programme est distribué car potentiellement utile, mais SANS AUCUNE GARANTIE,
#ni explicite ni implicite, y compris les garanties de commercialisation ou d&#039;adaptation
# dans un but spécifique. Reportez-vous à la Licence Publique Générale GNU pour plus
#de détails.
#
#Vous devez avoir reçu une copie de la Licence Publique Générale GNU en même temps
#que ce programme ; si ce n&#039;est pas le cas, écrivez à la Free Software Foundation, Inc.,
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, États-Unis.

######################
## On cree les variables de bases ##
######################

OPT_PASS=$1
SEQ=&quot;3&quot;
LONGMIN=&quot;1&quot;
LONGMAX=&quot;4&quot;
NUM=&quot;1&quot;
TEMPS=&quot;$(date +%s)&quot;
NEW=&quot;${TEMPS}_PASSE_1.txt&quot;
TMP=&quot;${TEMPS}_tmp.txt&quot;
DICO=&quot;${TEMPS}_DICO.txt&quot;
NBR=&quot;1&quot;
FACT=&quot;1&quot;
CONV=&quot;&quot;
VITESSE=&quot;0&quot;
FULL=&quot;1&quot;
WDIR=&quot;&quot;
REPONSE=&quot;n&quot;
COMPRESSE=&quot;1&quot;
PHRASES=&quot;n&quot;
NBRM=&quot;1000000&quot;
SEP=&quot; &quot;
VERIF=&quot;n&quot;
EXIT=&quot;n&quot;
ANS=&quot;31556952&quot;
MOIS=&quot;2629746&quot;
JOURS=&quot;86400&quot;

#############
## Le menu d&#039;aide ##
#############

function HELP()
{
	echo -e &quot;\
	
	${0##*/} permet la génération de phrases à partir d&#039;un dictionnaire , par permutations des mots .
	
	Ce projet à pour but de démontrer l&#039;inutilité du force-brute .
	
	Utilisation :
	
	${0##*/} -[!:L:w:i:p:d:r:P:s:] &amp;lt;ARGUMENT&amp;gt; -v -h -y -C
	
	${0##*/}  -l &amp;lt;LONG_MIN&amp;gt; -L &amp;lt;LONG_MAX&amp;gt; -w &amp;lt;NBR_MOTS&amp;gt; -i &amp;lt;DICO&amp;gt; -d &amp;lt;DIR&amp;gt; -C -P &amp;lt;NBR_PHRASES&amp;gt; -s &amp;lt;SEPARATEUR&amp;gt;
	${0##*/} -v -L &amp;lt;LONG_MAX&amp;gt; -w &amp;lt;NBR_MOTS&amp;gt; -i &amp;lt;DICO&amp;gt;
	${0##*/} -i &amp;lt;DICO&amp;gt;  -P 10000
	${0##*/} -r &amp;lt;ARCHIVE&amp;gt;
	${0##*/} -h
		
	-l &amp;lt;LONG_MIN&amp;gt;
		Longueur minimal du mot du dictionnaire (LONG_MIN=1 par défaut) .
	-L &amp;lt;LONG_MAX&amp;gt;
		Longueur maximal du mot du dictionnaire (LONG_MAX=4 par défaut) .
	-w &amp;lt;NBR_MOTS&amp;gt;
		Nombre de mots composant la phrase (NBR_MOTS=3 par défaut) .
	-i &amp;lt;DICO&amp;gt;
		Chemin vers le dictionnaire 
	-v
		Mode verbeux , plus lent , toutes les combinaisons de 2 à &amp;lt;NBR_MOTS&amp;gt; sont affichées , le mode compression n&#039;est pas compatible .
	-d &amp;lt;DIR&amp;gt;
		Dossier de sortie , par défaut celui contenant le dictionnaire .
	-r &amp;lt;ARCHIVE&amp;gt;
		Permet de lire sur la sortie standard le contenu d&#039;une archive au format 7z créé avec ${0##*/}
	-y
		Pas de confirmation , pas d&#039;interraction avec l&#039;utilisateur .
	-C
		Mode compression : les données sont directement compressée , le mode verbeux n&#039;est pas compatible .
	-P &amp;lt;NBR_PHRASES&amp;gt;
		Limiter la création de  phrases à &amp;lt;NBR_PHRASES&amp;gt; ( par défaut limité à 1000000 )
	-s &amp;lt;SEPARATEUR&amp;gt;
		Utilise &amp;lt;SEPARATEUR&amp;gt; comme séparateur entre chaque mot (SEPARATEUR=&quot; &quot; par défaut) .
	-h
		Affiche ce message		
		
	Exemple d&#039;utilisation :
	
	# Créer 1000000 de phrases de 5 mots basé sur les mots de 2 à 8 caractères de dico.txt , utiliser &#039;:&#039;  comme séparateur , le fichier est compressé au format 7z :
	
	$0 -l 2 -L 8 -w 5 -i dico.txt -C -P 1000000 -s &quot;:&quot;
	
	# Créer des phrases de 3 mots basé sur les mots inférieur à 4 caractères de dico.txt , aucunes confirmation n&#039;est nécessaire :
	
	$0  -L 4 -w 3 -i dico.txt -y
	
	# Créer des phrases de 3 mots dans  123456789.txt basé sur les mots de 1 à 4 caractères de dico.txt , limité à 1000000 phrases , toutes les combinaisons sont affichées sur la sortie standars :
	
	$0  -i dico.txt -v
	
	# Lire une archive créée avec ${0##*/} :
	
	$0  -r 1234567890.7z&quot;
}

##################
## Pas de sortie standard ##
##################

function PERMQUICK()
{
	TMP=&quot;${TEMPS}_PASSE_${PASSE}.txt&quot;
	while read WORD
	do
		if [[ &quot;$NULL&quot; = &quot;sep&quot; ]]
		then
			sed -u -e &quot;/^$/d; /$WORD/d; $MXq; s/^/$WORD /g; s/ /$SEP/g&quot; &quot;$NEW&quot;
		else
			sed -u -e &quot;/^$/d; /$WORD/d;  $MXq; s/^/$WORD /g &quot; &quot;$NEW&quot;
		fi
		PERAC=&quot;$(bc&amp;lt;&amp;lt;&amp;lt;&quot;$PERAC+1&quot;)&quot;
		ACT=&quot;$(bc -l&amp;lt;&amp;lt;&amp;lt;&quot;(($PERAC/$PERC)*100)+(($NUM/$SEQ)*100)&quot; | cut -d&#039;.&#039; -f1)&quot;
		printf &quot;\rProgression : $ACT/100&quot; 1&amp;gt;&amp;amp;2
	done &amp;lt; &quot;$DICO&quot; | head -n &quot;$MAX&quot; &amp;gt; &quot;$TMP&quot;
}

##############
## Sortie standard ##
##############

function PERMTEE()
{
	TMP=&quot;${TEMPS}_PASSE_${PASSE}.txt&quot;
	
	while read WORD
	do
		if [[ &quot;$NULL&quot; = &quot;sep&quot; ]]
		 then
			sed -u -e &quot;/^$/d; /$WORD/d; $MXq; s/^/$WORD /g; s/ /$SEP/g&quot; &quot;$NEW&quot;
		else
			sed -u -e &quot;/^$/d; /$WORD/d; $MXq; s/^/$WORD /g &quot; &quot;$NEW&quot;
		fi
	done &amp;lt; &quot;$DICO&quot; | head -n &quot;$MAX&quot; | tee -a &quot;$TMP&quot; | sed -e &quot;s/ /$SEP/g&quot;
}

############
## Compression ##
############

function PERMX()
{	
	TMP=&quot;${TEMPS}_PASSE_${PASSE}.7z&quot;
	while read WORD
	do
		7z e  &quot;$NEW&quot; -so 2&amp;gt;/dev/null | sed -u -e &quot;/^$/d; $MXq; /$WORD/d; s/^/$WORD /g &quot;
		PERAC=&quot;$(bc&amp;lt;&amp;lt;&amp;lt;&quot;$PERAC+1&quot;)&quot;
		ACT=&quot;$(bc -l&amp;lt;&amp;lt;&amp;lt;&quot;(($PERAC/$PERC)*100)+(($NUM/$SEQ)*100)&quot; | cut -d&#039;.&#039; -f1)&quot;
		printf &quot;\rProgression : $ACT/100&quot; 1&amp;gt;&amp;amp;2
	done &amp;lt; &quot;$DICO&quot; | head -n &quot;$MAX&quot; | 7z a &quot;$TMP&quot; -si &amp;amp;&amp;gt;/dev/null
}

############
## Permutation ##
############

function PERMUTE()
{
	if [[ &quot;$1&quot; = &quot;2&quot; ]]
	then
		ARCH=&quot;${TEMPS}_PASSE_1.7z&quot;
		7z a &quot;$ARCH&quot; &quot;$NEW&quot;  &amp;amp;&amp;gt;/dev/null
		rm &quot;$NEW&quot;
		NEW=&quot;$ARCH&quot;
		(( SEQ-- ))
	fi
	PERC=&quot;$(bc&amp;lt;&amp;lt;&amp;lt;&quot;$LIGNE*$SEQ&quot;)&quot;
	PERAC=&quot;0&quot;
	while [[ ! &quot;$NUM&quot; = &quot;$SEQ&quot; ]]
	do
		PASSE=&quot;$(( NUM + 1 ))&quot;
		if [[ &quot;$PASSE&quot; = &quot;$SEQ&quot; ]]
		then
			if [[ &quot;$NULL&quot; = &quot;0&quot; ]]
			then
				NULL=&quot;sep&quot;
			fi
			if [[ ! &quot;$COMPRESSE&quot; = &quot;0&quot; ]]
			then
			MAX=&quot;$NBRM&quot;
			fi
		fi
		case &quot;$1&quot; in
			0)
				PERMQUICK;;
			1)
				PERMTEE;;
			2)
				PERMX;;
		esac
		mv -f  &quot;$TMP&quot;  &quot;$NEW&quot;
		(( NUM++ ))
	done
	printf &quot;\rProgression : 100/100\n&quot; 1&amp;gt;&amp;amp;2
	if [[ &quot;$1&quot; = &quot;2&quot; ]]
	then
		7z a  &quot;$NEW&quot; &quot;$DICO&quot; &amp;amp;&amp;gt;/dev/null
		echo &quot;SEP=\&quot;$SEP\&quot;&quot; &amp;gt; &quot;${TEMPS}_DICO.sep&quot;
		7z a  &quot;$NEW&quot;  &quot;${TEMPS}_DICO.sep&quot; &amp;amp;&amp;gt;/dev/null
		rm &quot;${TEMPS}_DICO.sep&quot; &quot;$DICO&quot;
		DICO=&quot;${TEMPS}_DICO.7z&quot;
	fi
	mv -f &quot;$NEW&quot; &quot;$DICO&quot;
}

###########
## Nettoyage ##
###########

function CLEAN()
{
	rm &quot;$DICO&quot;
	if [[ -d &quot;$WDIR&quot; ]]
	then
		rmdir &quot;$WDIR&quot;
	fi
}

###########################################
## Convertion octets -&amp;gt; Kio -&amp;gt; Mio -&amp;gt; Gio -&amp;gt; Tio -&amp;gt; Pio -&amp;gt; Eio -&amp;gt; Zio -&amp;gt; Yio ##
###########################################

function CONVERTION()
{
	COUNT=&quot;1024&quot;
	
	if COMPARE &quot;$COUNT&quot; &quot;$1&quot; 
	then
		return 0
	fi
	
	echo &quot;Soit :&quot; 1&amp;gt;&amp;amp;2
	
	for i in K M G T P E Z Y
	do
	if COMPARE &quot;$1&quot; &quot;$COUNT&quot;
	then
		CONV=&quot;$(bc&amp;lt;&amp;lt;&amp;lt;&quot;scale=2; $1/$COUNT&quot;)&quot;
		echo &quot;- ${CONV} ${i}io&quot;
		COUNT=&quot;$(bc&amp;lt;&amp;lt;&amp;lt;&quot;$COUNT*1024&quot;)&quot;
	else
		return 0
	fi
	done 1&amp;gt;&amp;amp;2
}

################################################
## Résoudre le probleme des chaines longues dans les comparaisons nnumériques ##
################################################

function COMPARE()
{
	ZERO=&quot;$(bc&amp;lt;&amp;lt;&amp;lt;&quot;$1&amp;lt;=$2&quot;)&quot;
	return &quot;$ZERO&quot;
}

###################
## Lire une archive ULTRA ##
###################

function READ()
{
	ZIP=&quot;$1&quot;
	NOM_ZIP=&quot;$(basename &quot;$1&quot;)&quot;
	DICT=&quot;$(echo &quot;$NOM_ZIP&quot; | cut -d&#039;.&#039; -f1)&quot;
	TXT_DICT=&quot;$DICT.txt&quot;
	TXT_SEP=&quot;$DICT.sep&quot;
	eval $(7z e -so &quot;$ZIP&quot; -- &quot;$TXT_SEP&quot; 2&amp;gt;/dev/null | cat)

	while read WORD
	do
		if [[ es&quot;$SEP&quot;pace = &quot;es pace&quot; ]]
		then
			7z e -so &quot;$ZIP&quot; -- &quot;$DICT&quot; 2&amp;gt;/dev/null | sed -u -e &quot;/$WORD/d; s/^/$WORD /g&quot;
		else
			7z e -so &quot;$ZIP&quot; -- &quot;$DICT&quot; 2&amp;gt;/dev/null | sed -u -e &quot;/$WORD/d; s/^/$WORD /g; s/ /$SEP/g&quot; 
		fi
	done &amp;lt;&amp;lt;&amp;lt;&quot;$(7z e -so &quot;$ZIP&quot; -- &quot;$TXT_DICT&quot; 2&amp;gt;/dev/null | cat)&quot;
}

################
## On parse les options ##
################

while getopts &quot;:l:L:w:i:d:r:P:s:vyCh&quot; OPT_PASS
do
	case &quot;$OPT_PASS&quot; in
	l)
		LONGMIN=&quot;$OPTARG&quot;;;
	L)
		LONGMAX=&quot;$OPTARG&quot;;;
	w)
		SEQ=&quot;$OPTARG&quot;;;
	i)
		ORIGINAL=&quot;$OPTARG&quot;
		if [[ ! -e &quot;$ORIGINAL&quot; ]]
		then
			echo &quot;Le fichier n&#039;existe pas&quot; 1&amp;gt;&amp;amp;2
			exit 1
		fi
		DIR=&quot;${ORIGINAL%/*}&quot;;;
	v)
		VITESSE=&quot;1&quot;;;
	d)
		WDIR=&quot;$OPTARG&quot;
		mkdir -p &quot;$WDIR&quot;
		DIR=&quot;$WDIR&quot;;;
	y)
		REPONSE=&quot;y&quot;
		EXIT=&quot;y&quot;;;
	C)
		COMPRESSE=&quot;0&quot;;;
	r)
		ZIP=&quot;$OPTARG&quot;
		if [[ ! -e &quot;$ZIP&quot; ]]
		then
			echo &quot;Le fichier n&#039;existe pas&quot; 1&amp;gt;&amp;amp;2
			exit 1
		fi
		if [[ &quot;$(file &quot;$OPTARG&quot; | grep -w &quot;7-zip&quot;)&quot; = &quot;1&quot; ]]
		then
			echo &quot;Cette archive n&#039;est pas pris en charge&quot; 1&amp;gt;&amp;amp;2
			exit 1
		fi
		READ &quot;$ZIP&quot;
		exit 0;;
	P)
		NBRM=&quot;$OPTARG&quot;;;
	s)
		SEP=&quot;$OPTARG&quot;
		NULL=&quot;0&quot;;;
	h)
		HELP
		exit 0;;
	*)
		HELP
		exit 1;;
	esac
done

#################
## Pas d&#039;options -&amp;gt; help ##
#################

if [[ &quot;$(echo &quot;$@&quot;no)&quot; = &quot;no&quot; ]]
then
	HELP
	exit 1
fi
################################
## Le mode compression désactive le mode verbeux ##
################################


if [[ &quot;$COMPRESSE&quot; = &quot;0&quot; ]]
then
	if  [[ &quot;$VITESSE&quot; = &quot;1&quot; ]]
	then
		echo -e &quot;Le mode compression et le mode verbeux sont inccompatibles&quot; 1&amp;gt;&amp;amp;2
	exit 1
	fi
	VITESSE=&quot;2&quot;
fi

##########################
## On se place dans le dossier de travail ##
##########################

cd &quot;$DIR&quot;

#####################################
## On trie le dictionnaire en fonction de la longeur des mots ##
#####################################

LONGX=&quot;$(bc&amp;lt;&amp;lt;&amp;lt;&quot;$LONGMAX +1&quot;)&quot;
sed   &quot;/^.\{$LONGMIN\}/!d; /^.\{$LONGX\}/d&quot; &quot;$ORIGINAL&quot; | sort -u -R &amp;gt; &quot;$DICO&quot;

##################################
## On reccupere le nombre de mots du dictionnaire trié ##
##################################

LIGNE=&quot;$(wc -l&amp;lt;&quot;$DICO&quot;)&quot;
MULTIPLI=&quot;$LIGNE&quot;

#############################################################
## Si le nombre de mots par phrases à créer est supérieur au nombre de mot du dictionnaire , on quitte ##
#############################################################

if COMPARE   &quot;$SEQ&quot;  &quot;$LIGNE&quot;
then
	echo &quot;Le nombre de mots composants la phrase doit être égal ou inférieur au nombre de mots composants le dictionnaire :
	Nombre de lignes du dictionnaire : $LIGNE
	Nombre de mots par phrase :$SEQ &quot; 1&amp;gt;&amp;amp;2
	rm &quot;$DICO&quot;
	exit 1
fi

###########################
## Calcul du poid et du nombre de phrases ##
###########################

POID=&quot;$(stat -c %s &quot;$DICO&quot;)&quot;
PMOY=&quot;$(bc&amp;lt;&amp;lt;&amp;lt;&quot;$POID/$LIGNE&quot;)&quot;
MAX=&quot;$(bc&amp;lt;&amp;lt;&amp;lt;&quot;($NBRM/($LIGNE-$SEQ))+1&quot;)&quot;
MX=&quot;$(bc&amp;lt;&amp;lt;&amp;lt;&quot;($MAX/$LIGNE)+1&quot;)&quot;

while [[ &quot;$NBR&quot; != &quot;$SEQ&quot; ]]
do
	(( NBR ++ ))
	MULTIPLI=&quot;$(bc&amp;lt;&amp;lt;&amp;lt;&quot;$MULTIPLI - 1&quot;)&quot;
	FACT=&quot;$(bc&amp;lt;&amp;lt;&amp;lt;&quot;$FACT*$MULTIPLI&quot;)&quot;
done

PHRASE=&quot;$(bc&amp;lt;&amp;lt;&amp;lt;&quot;$LIGNE*$FACT&quot;)&quot;
TOTAL=&quot;$(bc&amp;lt;&amp;lt;&amp;lt;&quot;$POID*$FACT*$SEQ&quot;)&quot;
PTOT=&quot;$(bc&amp;lt;&amp;lt;&amp;lt;&quot;$PMOY*$SEQ*$NBRM&quot;)&quot;

if COMPARE &quot;$NBRM&quot; &quot;$PHRASE&quot;
then
	PTOT=&quot;$TOTAL&quot;
	NBRM=&quot;$PHRASE&quot;
fi

if [[ &quot;$VITESSE&quot; = &quot;2&quot; ]]
then	
	PTOT=&quot;$(bc&amp;lt;&amp;lt;&amp;lt;&quot;(($PMOY*($SEQ-1)*$MAX)+$POID)/33&quot;)&quot;
fi


##################################################
## On invite l&#039;utilisateur à choisir si oui ou non il souhaite exploser son disque dur :) ##
##################################################

LIBRE=&quot;$(bc&amp;lt;&amp;lt;&amp;lt;&quot;$(df &quot;$DICO&quot; | grep dev | awk &#039;{ print $4 }&#039;)*1024&quot;)&quot;
echo &quot;Espace libre disponible : $LIBRE octets&quot; 1&amp;gt;&amp;amp;2
CONVERTION &quot;$LIBRE&quot;

echo -e &quot;\n\
Nombre de lignes du dictionnaire : $LIGNE
Longueur minimal des mots : $LONGMIN
Longueur maximal des mots : $LONGMAX
Nombre de mots par phrase : $SEQ
Nombre de phrases : $PHRASE
Poid : $TOTAL octets&quot; 1&amp;gt;&amp;amp;2
CONVERTION &quot;$TOTAL&quot;

echo -e &quot;\n\
Nombre de phrases limitées à : $NBRM
Poid supposé du fichier généré : $PTOT octets&quot; 1&amp;gt;&amp;amp;2
CONVERTION &quot;$PTOT&quot;

POURCENT=&quot;$(bc -l&amp;lt;&amp;lt;&amp;lt;&quot;100*($NBRM/$PHRASE)&quot;)&quot;

echo -e &quot;\nCe fichier couvre $POURCENT % des possibibiltées !&quot;  1&amp;gt;&amp;amp;2

if COMPARE &quot;$PTOT&quot; &quot;$LIBRE&quot;
then
	echo -e &quot;\nVous ne disposez pas de l&#039;espace disque nécessaire !\nVeuillez corriger les options sélectionnées .&quot; 1&amp;gt;&amp;amp;2
	exit 1
fi

##############
## On lance la bête ##
##############

if [[ &quot;$REPONSE&quot; = &quot;n&quot; ]]
then
	echo -e &quot;\nSouhaitez vous poursuivre ?\n[y/n]&quot; 1&amp;gt;&amp;amp;2
	read REPONSE
else
	echo -e &quot;\nExécution sans confirmation\n&quot; 1&amp;gt;&amp;amp;2
fi


case &quot;$REPONSE&quot; in
	y) 
		cp &quot;$DICO&quot; &quot;$NEW&quot;
		DEBUT=&quot;$(date +%s)&quot;
		PERMUTE &quot;$VITESSE&quot;
		FIN=&quot;$(date +%s)&quot;
		GEN=&quot;$(bc&amp;lt;&amp;lt;&amp;lt;&quot;$FIN-$DEBUT&quot;)&quot;;;
	n)
		echo &quot;On quitte&quot;
		CLEAN
		exit 0;;
	*)
		echo &quot;Choix invalide , on quitte .&quot; 1&amp;gt;&amp;amp;2
		CLEAN
		exit 1;;
esac

##############################
## Quelques informations sur le fichier produit ##
##############################

TOTAL=&quot;$(stat -c %s &quot;$DICO&quot;)&quot;
DATE=&quot;$(date +&quot;%H h %M mn %S s&quot; -d &quot;0000-01-01 $GEN seconds&quot;)&quot;
VIT=&quot;$(bc&amp;lt;&amp;lt;&amp;lt;&quot;$NBRM/$GEN&quot;)&quot;
TVIT=&quot;$(bc&amp;lt;&amp;lt;&amp;lt;&quot;$PHRASE/$VIT&quot;)&quot;
TANS=&quot;$(bc&amp;lt;&amp;lt;&amp;lt;&quot;$TVIT/$ANS&quot;)&quot;
TREST=&quot;$(bc&amp;lt;&amp;lt;&amp;lt;&quot;$TVIT-($TANS*$ANS)&quot;)&quot;
TMOIS=&quot;$(bc&amp;lt;&amp;lt;&amp;lt;&quot;$TREST/$MOIS&quot;)&quot;
TREST=&quot;$(bc&amp;lt;&amp;lt;&amp;lt;&quot;$TREST-($TMOIS*$MOIS)&quot;)&quot;
TJOURS=&quot;$(bc&amp;lt;&amp;lt;&amp;lt;&quot;$TREST/$JOURS&quot;)&quot;
TREST=&quot;$(bc&amp;lt;&amp;lt;&amp;lt;&quot;$TREST-($TJOURS*$JOURS)&quot;)&quot;
TDATE=&quot;$(date +&quot;$TANS années $TMOIS mois $TJOURS jours %H heures %M minutes %S secondes&quot; -d &quot;0000-01-01 $TREST seconds&quot;)&quot;

echo -e &quot;
Fichier de sortie : $DIR/$DICO
Poid du fichier produit : $TOTAL octets&quot; 1&amp;gt;&amp;amp;2
CONVERTION &quot;$TOTAL&quot;

echo -e &quot;
Temps écoulé ; $GEN secondes
Soit : $DATE&quot; 1&amp;gt;&amp;amp;2

echo -e &quot;\nVitesse d&#039;éxécution : $VIT phrases par seconde&quot; 1&amp;gt;&amp;amp;2

echo -e &quot;\nTemps nécessaire à la créations de toutes les phrases :\n$TDATE&quot; 1&amp;gt;&amp;amp;2

if [[ &quot;$EXIT&quot; = &quot;y&quot; ]]
then
	exit 0
fi

echo -e &quot;
Souhaitez vous vérifier le nombre de phrases générées ?
Attention cette opération peut être très longue
[y/n]&quot; 1&amp;gt;&amp;amp;2

read VERIF

if [[ &quot;$VERIF&quot; = &quot;y&quot; ]]
then
	if [[ &quot;$VITESSE&quot; = &quot;2&quot; ]]
	then
		eval $(READ &quot;$DICO&quot; | wc -l -c | awk &#039;{ printf &quot;NBR_PH=\&quot;%s\&quot;\nPOID=\&quot;%s\&quot;\n&quot;, $1, $2 }&#039;)
		TXCMP=&quot;$(bc&amp;lt;&amp;lt;&amp;lt;&quot;$POID/$TOTAL&quot;)&quot;
		echo -e &quot;\nPoid décompressé : $POID octets&quot; 1&amp;gt;&amp;amp;2
		CONVERTION &quot;$POID&quot;
		echo -e &quot;\nNombre de phrases générées : $NBR_PH\nTaux de compression : $TXCMP&quot; 1&amp;gt;&amp;amp;2
		exit 0
	else
		NBR_PH=&quot;$(wc -l&amp;lt;&quot;$DICO&quot;)&quot;
		echo -e &quot;\nNombre de phrases générées : $NBR_PH&quot; 1&amp;gt;&amp;amp;2
	fi
fi

exit 0

&lt;/pre&gt;
&lt;p&gt;
	À enregistrer sous permute.sh par exemple puis le rendre executable :&lt;/p&gt;
&lt;pre class=&quot;brush:plain;gutter:false;&quot;&gt;
chmod 755 /chemin/vers/permute.sh&lt;/pre&gt;
&lt;p&gt;
	&lt;strong&gt;Exemples 1 000 000 de clées wpa type livebox compressées , 26 caractères (2x13 hexadecimal) :&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;
	&lt;object data=&quot;http://www.youtube.com/v/QRsYvZr85fk&quot; height=&quot;340&quot; type=&quot;application/x-shockwave-flash&quot; width=&quot;549&quot;&gt;&lt;param name=&quot;movie&quot; value=&quot;http://www.youtube.com/v/QRsYvZr85fk&quot; /&gt;&lt;param name=&quot;quality&quot; value=&quot;autohigh&quot; /&gt;&lt;param name=&quot;allowfullscreen&quot; value=&quot;true&quot; /&gt;&lt;param name=&quot;allowscriptAccess&quot; value=&quot;always&quot; /&gt;&lt;param name=&quot;flashvars&quot; value=&quot;&amp;amp;hd=1&amp;amp;rel=0&amp;amp;hl=fr&amp;amp;fmt=22&amp;amp;fs=1&amp;amp;version=3&quot; /&gt;&lt;/object&gt;&lt;/p&gt;
&lt;p&gt;
	&lt;strong&gt;Le dictionnaire de base :&lt;/strong&gt;&lt;/p&gt;
&lt;pre class=&quot;brush:plain;gutter:false;&quot;&gt;
01
02
03
04
05
06
07
08
09
0A
0B
0C
0D
0E
0F
10
12
13
14
15
16
17
18
19
1A
1B
1C
1D
1E
1F
20
21
23
24
25
26
27
28
29
2A
2B
2C
2D
2E
2F
30
31
32
34
35
36
37
38
39
3A
3B
3C
3D
3E
3F
40
41
42
43
45
46
47
48
49
4A
4B
4C
4D
4E
4F
50
51
52
53
54
56
57
58
59
5A
5B
5C
5D
5E
5F
60
61
62
63
64
65
67
68
69
6A
6B
6C
6D
6E
6F
70
71
72
73
74
75
76
78
79
7A
7B
7C
7D
7E
7F
80
81
82
83
84
85
86
87
89
8A
8B
8C
8D
8E
8F
90
91
92
93
94
95
96
97
98
9A
9B
9C
9D
9E
9F
A0
A1
A2
A3
A4
A5
A6
A7
A8
A9
AB
AC
AD
AE
AF
B0
B1
B2
B3
B4
B5
B6
B7
B8
B9
BA
BC
BD
BE
BF
C0
C1
C2
C3
C4
C5
C6
C7
C8
C9
CA
CB
CD
CE
CF
D0
D1
D2
D3
D4
D5
D6
D7
D8
D9
DA
DB
DC
DE
DF
E0
E1
E2
E3
E4
E5
E6
E7
E8
E9
EA
EB
EC
ED
EF
F0
F1
F2
F3
F4
F5
F6
F7
F8
F9
FA
FB
FC
FD
FE
00
11
22
33
44
55
66
77
88
99
AA
BB
CC
DD
EE
FF
&lt;/pre&gt;
&lt;p&gt;
	À enregistrer sous double_hexa.txt par exemple&lt;/p&gt;
&lt;p&gt;
	&lt;strong&gt;La commande shell :&lt;/strong&gt;&lt;/p&gt;
&lt;pre class=&quot;brush:plain;gutter:false;&quot;&gt;
permute.sh -i double_hexa.txt -w 13 -s &quot;&quot; -P 1000000 -C&lt;/pre&gt;
&lt;p&gt;
	&lt;strong&gt;Résultat :&lt;/strong&gt;&lt;/p&gt;
&lt;pre class=&quot;brush:plain;gutter:false;&quot;&gt;
Espace libre disponible : 208892764160 octets
Soit :
- 203996840.00 Kio
- 199215.66 Mio
- 194.54 Gio

Nombre de lignes du dictionnaire : 256
Longueur minimal des mots : 1
Longueur maximal des mots : 4
Nombre de mots par phrase : 13
Nombre de phrases : 14879476555971175569951129600000
Poid : 580299585682875847228094054400000 octets
Soit :
- 566698814143433444558685600000.00 Kio
- 553416810686946723201841406.25 Mio
- 540446104186471409376798.24 Gio
- 527779398619600985719.52 Tio
- 515409568964454087.61 Pio
- 503329657191849.69 Eio
- 491532868351.41 Zio
- 480012566.74 Yio

Nombre de phrases limitées à : 1000000
Poid supposé du fichier généré : 4513 octets
Soit :
- 4.40 Kio

Ce fichier couvre 0 % des possibibiltées !

Souhaitez vous poursuivre ?
[y/n]
y
Progression : 100/100

Fichier de sortie : /media/Perso/Bureau/.PERMUTE/1361123685_DICO.7z
Poid du fichier produit : 4312 octets
Soit :
- 4.21 Kio

Temps écoulé ; 50 secondes
Soit : 00 h 00 mn 50 s

Vitesse d&#039;éxécution : 20000 phrases par seconde

Temps nécessaire à la créations de toutes les phrases :
23575592085020086176 années 2 mois 4 jours 15 heures 30 minutes 36 secondes

Souhaitez vous vérifier le nombre de phrases générées ?
Attention cette opération peut être très longue
[y/n]
y

Poid décompressé : 27116208 octets
Soit :
- 26480.67 Kio
- 25.86 Mio

Nombre de phrases générées : 1004304
Taux de compression : 6288&lt;/pre&gt;
&lt;p&gt;
	&lt;strong&gt;Comment lire une archive compressée :&lt;/strong&gt;&lt;/p&gt;
&lt;pre class=&quot;brush:plain;gutter:false;&quot;&gt;
permute.sh -r 1234567890.7z&lt;/pre&gt;
&lt;p&gt;
	&lt;object data=&quot;http://www.youtube.com/v/kFJJlqijDps&quot; height=&quot;340&quot; type=&quot;application/x-shockwave-flash&quot; width=&quot;549&quot;&gt;&lt;param name=&quot;movie&quot; value=&quot;http://www.youtube.com/v/kFJJlqijDps&quot; /&gt;&lt;param name=&quot;quality&quot; value=&quot;autohigh&quot; /&gt;&lt;param name=&quot;allowfullscreen&quot; value=&quot;true&quot; /&gt;&lt;param name=&quot;allowscriptAccess&quot; value=&quot;always&quot; /&gt;&lt;param name=&quot;flashvars&quot; value=&quot;&amp;amp;hd=1&amp;amp;rel=0&amp;amp;hl=fr&amp;amp;fmt=22&amp;amp;fs=1&amp;amp;version=3&quot; /&gt;&lt;/object&gt;&lt;/p&gt;
&lt;p&gt;
	&lt;strong&gt;Comment coupler la lecture d&#039;une archive à aircrack-ng :&lt;/strong&gt;&lt;/p&gt;
&lt;pre class=&quot;brush:plain;gutter:false;&quot;&gt;
permute.sh -r 1234567890.7z |  aircrack-ng -w - -e MON_ESSID MA_CAPTURE.cap&lt;/pre&gt;
&lt;p&gt;
	&lt;object data=&quot;http://www.youtube.com/v/buxEu4-RRaI&quot; height=&quot;340&quot; type=&quot;application/x-shockwave-flash&quot; width=&quot;549&quot;&gt;&lt;param name=&quot;movie&quot; value=&quot;http://www.youtube.com/v/buxEu4-RRaI&quot; /&gt;&lt;param name=&quot;quality&quot; value=&quot;autohigh&quot; /&gt;&lt;param name=&quot;allowfullscreen&quot; value=&quot;true&quot; /&gt;&lt;param name=&quot;allowscriptAccess&quot; value=&quot;always&quot; /&gt;&lt;param name=&quot;flashvars&quot; value=&quot;&amp;amp;hd=1&amp;amp;rel=0&amp;amp;hl=fr&amp;amp;fmt=22&amp;amp;fs=1&amp;amp;version=3&quot; /&gt;&lt;/object&gt;&lt;/p&gt;
&lt;p&gt;
	&lt;strong&gt;Quelques captures d&#039;écrant :&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;
	&lt;a href=&quot;http://dev.yannou90.free.fr/data/images/terminal-moguaye52-nunux-max-_004.png&quot; rel=&quot;lightbox&quot;&gt;&lt;img alt=&quot;&quot; src=&quot;http://dev.yannou90.free.fr/data/images/terminal-moguaye52-nunux-max-_004.tb.png&quot; style=&quot;width: 200px; height: 140px;&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;http://dev.yannou90.free.fr/data/images/terminal-moguaye52-nunux-max-_005.png&quot; rel=&quot;lightbox&quot;&gt;&lt;img alt=&quot;&quot; src=&quot;http://dev.yannou90.free.fr/data/images/terminal-moguaye52-nunux-max-_005.tb.png&quot; style=&quot;width: 200px; height: 140px;&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;http://dev.yannou90.free.fr/data/images/terminal-moguaye52-nunux-max-_006.png&quot; rel=&quot;lightbox&quot;&gt;&lt;img alt=&quot;&quot; src=&quot;http://dev.yannou90.free.fr/data/images/terminal-moguaye52-nunux-max-_006.tb.png&quot; style=&quot;width: 200px; height: 140px;&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;http://dev.yannou90.free.fr/data/images/terminal-moguaye52-nunux-max-_007.png&quot; rel=&quot;lightbox&quot;&gt;&lt;img alt=&quot;&quot; src=&quot;http://dev.yannou90.free.fr/data/images/terminal-moguaye52-nunux-max-_007.tb.png&quot; style=&quot;width: 200px; height: 140px;&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;http://dev.yannou90.free.fr/data/images/terminal-moguaye52-nunux-max-_008.png&quot; rel=&quot;lightbox&quot;&gt;&lt;img alt=&quot;&quot; src=&quot;http://dev.yannou90.free.fr/data/images/terminal-moguaye52-nunux-max-_008.tb.png&quot; style=&quot;width: 200px; height: 140px;&quot; /&gt;&lt;/a&gt;&lt;/p&gt;</description>
		<pubDate>Fri, 01 Feb 2013 17:50:00 CET</pubDate>
		<dc:creator>Yannou90</dc:creator>
	</item>
</channel>
</rss>