<?xml version="1.0" encoding="utf-8"?><?xml-stylesheet title="XSL formatting" type="text/xsl" href="http://blog.unix4fun.net/feed/rss2/xslt" ?><rss version="2.0"
  xmlns:dc="http://purl.org/dc/elements/1.1/"
  xmlns:wfw="http://wellformedweb.org/CommentAPI/"
  xmlns:content="http://purl.org/rss/1.0/modules/content/"
  xmlns:atom="http://www.w3.org/2005/Atom">
<channel>
  <title>unix4fun</title>
  <link>http://blog.unix4fun.net/</link>
  <atom:link href="http://blog.unix4fun.net/feed/rss2" rel="self" type="application/rss+xml"/>
  <description>Just code, unix and stuff that matters to us.</description>
  <language>fr</language>
  <pubDate>Tue, 20 Jul 2010 01:04:39 +0200</pubDate>
  <copyright>(c) 2008 unix4fun</copyright>
  <docs>http://blogs.law.harvard.edu/tech/rss</docs>
  <generator>Dotclear</generator>
  
    
  <item>
    <title>VIM et 0x0a, grmlbmlbm $#!@$#@!</title>
    <link>http://blog.unix4fun.net/post/2010/07/18/VIM-et-0x0a%2C-grmlbmlbm-%24%21%40%24%40%21</link>
    <guid isPermaLink="false">urn:md5:59881b1ec68da2f1fe962c5a2bdca615</guid>
    <pubDate>Sun, 18 Jul 2010 00:53:00 +0200</pubDate>
    <dc:creator>eau</dc:creator>
        <category>geeking</category>
        <category>binary</category><category>editor</category><category>vim</category>    
    <description>    &lt;p&gt;Si vous aussi vous vous retrouvez a éditer des fichier binaires un peu a la
loyale et que vim vous casse les burnes a rajouter ce satane 0x0a a la fin sans
rien dire, voici les deux lignes magiques:&lt;/p&gt;
&lt;pre&gt;
:set noeol
:set binary
&lt;/pre&gt;
&lt;p&gt;Il y a évidement d'autres alternatives genre &lt;a href=&quot;http://hte.sourceforge.net/&quot; hreflang=&quot;en&quot;&gt;HTE&lt;/a&gt; ou &lt;a href=&quot;http://beye.sourceforge.net/en/beye_intro.html&quot; hreflang=&quot;en&quot;&gt;BEYE&lt;/a&gt;
(anciennement BIEW) ou d'autres, mais pas top top, mais je crois que d'autres
alternatives arrivent tranquillement, j'updaterai ou je posterais une news en
plus au moment venu, wait and see..&lt;/p&gt;
&lt;p&gt;bref voila...&lt;/p&gt;</description>
    
    
    
          <comments>http://blog.unix4fun.net/post/2010/07/18/VIM-et-0x0a%2C-grmlbmlbm-%24%21%40%24%40%21#comment-form</comments>
      <wfw:comment>http://blog.unix4fun.net/post/2010/07/18/VIM-et-0x0a%2C-grmlbmlbm-%24%21%40%24%40%21#comment-form</wfw:comment>
      <wfw:commentRss>http://blog.unix4fun.net/feed/atom/comments/533740</wfw:commentRss>
      </item>
    
  <item>
    <title>Le crochetage SSL avec ton serpent</title>
    <link>http://blog.unix4fun.net/post/2010/06/09/Le-crochetage-SSL-avec-ton-serpent</link>
    <guid isPermaLink="false">urn:md5:8a67e773d3fd8542f33e57f49e9d0bca</guid>
    <pubDate>Wed, 09 Jun 2010 11:43:00 +0200</pubDate>
    <dc:creator>frl</dc:creator>
        <category>geeking</category>
        <category>code</category><category>crypto</category><category>fun</category><category>python</category><category>security</category><category>win32</category><category>windows</category>    
    <description>    &lt;p&gt;Pour un premier post, désolé, c'est sur du win32 :). Je lisais dernièrement
&amp;quot;&lt;a href=&quot;http://nostarch.com/ghpython.htm&quot; hreflang=&quot;en&quot;&gt;GrayHat Python&lt;/a&gt;&amp;quot;
et je découvre Pydbg (un debugger écrit en python) que je ne connaissais pas
(bon je ne connais pas grand chose non plus, du coup c'est plus facile d'être
émerveillé) et dans le chapitre sur le hooking je tombe sur un exemple de
&amp;quot;soft-hooking&amp;quot; (le hooking avec un breakpoint soft (INT3) sur la fonction qui
t'intéresse) pour &amp;quot;sniffer&amp;quot; les connections SSL dans firefox (hook sur une
fontion specifique de firefox).&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;Ca me rappelle des discussions avec &lt;em&gt;eau&lt;/em&gt; qui avait déjà commence a
bosser dessus, en voyant comment le truc est tout con ca m'a donne envie de
voir si hooker les &amp;quot;CryptoAPI&amp;quot;s de MS que IE utilise est tout aussi
simple.&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;Donc une fois recup Pydbg, un petit &amp;quot;&lt;code&gt;import pydbg&lt;/code&gt;&amp;quot; et on peut
instancier un object debugger &lt;code&gt;mydbg=pybdg.pydbg()&lt;/code&gt;.&lt;br /&gt;
Et voila! maintenant qu'on a notre debugger instancié, on peut s'attacher a des
process, mettre des breakpoints, lire l'etats des registres etc.. Un peu comme
scripter a l'interieur d'IDA ou ImmunityDebugger.&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;Du coup c'est vrai que le soft hooking comme ca c'est tout bidon. Un petit
breakpoint dans la fonction qui nous intéresse, une callback fonction pour
effectuer des opérations sur cette fonction et on release le breakpoint pour
que le process continue normalement.&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;Bon, c'est pas efficace du tout côté perf, c'est clair...&lt;br /&gt;
Mais pour un ptit hooking rapido histoire de tester/fuzzer un truc ca peut etre
sympa et utile.&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;Alors voila j'ai matte les CryptoAPI de MS et j'ai pense d'abord hooker
&amp;quot;&lt;code&gt;CryptEncrypt()&lt;/code&gt;&amp;quot; et &amp;quot;&lt;code&gt;CryptDecrypt()&lt;/code&gt;&amp;quot; exportées par
&amp;quot;&lt;code&gt;Advapi32.dll&lt;/code&gt;&amp;quot;.&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;Ok finalement en cherchant un peu, il y a eut pleins de présentations sur le
hooking de ces 2 fonctions (par exemple &lt;a href=&quot;http://www.blackhat.com/presentations/bh-jp-08/bh-jp-08-Aiko/bh-jp-08-Aiko-EN.pdf&quot; hreflang=&quot;en&quot;&gt;celle-ci&lt;/a&gt;) et en effet c'est tout bon mais pour sniffer
uniquement.&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;Si on veut modifier les requêtes envoyées par exemple, alors la on voit
qu'on tombe sur un os, en tracant les appels un certain
&amp;quot;&lt;code&gt;CryptHashData()&lt;/code&gt;&amp;quot; est appelé avant &amp;quot;&lt;code&gt;CryptEncrypt()&lt;/code&gt;&amp;quot;
et donc dommage.. Difficile de modifier un truc hashe préalablement sans que ca
se voit! Et la ce cher &lt;em&gt;eau&lt;/em&gt; me dit qu'il avait regarde
&amp;quot;&lt;code&gt;EncryptMessage()&lt;/code&gt;&amp;quot; et &amp;quot;&lt;code&gt;DecryptMessage()&lt;/code&gt;&amp;quot; et il avait
raison le bougre!&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;En effet &amp;quot;&lt;code&gt;EncryptMessage()&lt;/code&gt;&amp;quot; prend la requête, appele
&amp;quot;&lt;code&gt;CryptHashData()&lt;/code&gt;&amp;quot; puis &amp;quot;&lt;code&gt;CryptEncrypt()&lt;/code&gt;&amp;quot; et balance
tout ca hashé/chiffré ensuite au fonctions résal(réseaux). Du coup hooker
&amp;quot;&lt;code&gt;EncryptMessage()&lt;/code&gt;&amp;quot; est bien plus intéressant puisqu'avant le hash
donc possible de modifier la requête.&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;Je n'ai pas encore réussi a faire tout ce que je voulais sur
&amp;quot;&lt;code&gt;EncryptMessage()&lt;/code&gt;&amp;quot;, modifier la requête...ok, mais uniquement si
sa nouvelle taille est &amp;lt;= a l'originale. Pour en générer une de taille &amp;gt;
a la requête originale, je coince.&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;J'ai essaye de mettre a jour la taille a plusieurs endroits, re-ecrire la
requête en allouant assez de place ailleurs et updater les pointeurs/références
sur ma nouvelle requête mais niet... je dois merder, quelque chose
m'échappe.&lt;/p&gt;
&lt;p&gt;Voyant que des fonctions appelées avant &amp;quot;&lt;code&gt;EncryptMessage()&lt;/code&gt;&amp;quot;
manipulaient aussi la requête HTTP et utilisaient la taille pour différents
trucs que je n'ai pas exploré je me suis résigné a hooker la dedans et c'est
passé. Enfin, j'ai finalement hooke une fonction qui se trouve dans
&amp;quot;&lt;code&gt;Wininet.dll&lt;/code&gt;&amp;quot; mais elle semble tres specifique a IE donc pas super
fonctionnel pour autre chose qu'IE... (i.e. Thick Client)...&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;Pour ceux que ca intéresse, voila un petit bout de code tout bidon (et pas
beau je sais :)..) mais c'est juste pour tester et voir comment jouer avec
pydbg et le soft-hooking:&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://blog.unix4fun.net/public/src/hook_ssl_pydbg.py&quot;&gt;hook_ssl_pydbg.py&lt;/a&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;J'ai teste ca sur XP SP2 en anglais avec IE7.&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;Un petit print screen aussi pour voir ce que ca donne:&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://blog.unix4fun.net/public/imgs/hook_ssl_pydbg.png&quot;&gt;&lt;img src=&quot;http://blog.unix4fun.net/public/imgs/.hook_ssl_pydbg_t.jpg&quot; alt=&quot;hook_ssl_pydbg.png&quot; title=&quot;hook_ssl_pydbg.png, Jun 2010&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;Pydbg fait parti du framework Paimei (du coup ca m'a donne envi de revoir
kill bill2..):&lt;br /&gt;
&lt;a href=&quot;http://pedram.redhive.com/PaiMei/docs/&quot;&gt;Paimei&lt;/a&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;&lt;code&gt;svn checkout http://paimei.googlecode.com/svn/trunk/pydbg
paimei-read-only&lt;/code&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://msdn.microsoft.com/en-us/library/aa379924(VS.85).aspx&quot;&gt;CryptEncrypt()&lt;/a&gt;,
&lt;a href=&quot;http://msdn.microsoft.com/en-us/library/aa379913(v=VS.85).aspx&quot;&gt;CryptDecrypt()&lt;/a&gt;,
&lt;a href=&quot;http://msdn.microsoft.com/en-us/library/aa375378(VS.85).aspx&quot;&gt;EncryptMessage()&lt;/a&gt;,
&lt;a href=&quot;http://msdn.microsoft.com/en-us/library/aa375211(v=VS.85).aspx&quot;&gt;DecryptMessage()&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Ca passe ok avec python 2.6 sur ma VM XP mais quelques posts disent que
pydasm ne passe bien qu'avec python 2.5.&lt;/p&gt;</description>
    
    
    
          <comments>http://blog.unix4fun.net/post/2010/06/09/Le-crochetage-SSL-avec-ton-serpent#comment-form</comments>
      <wfw:comment>http://blog.unix4fun.net/post/2010/06/09/Le-crochetage-SSL-avec-ton-serpent#comment-form</wfw:comment>
      <wfw:commentRss>http://blog.unix4fun.net/feed/atom/comments/525617</wfw:commentRss>
      </item>
    
  <item>
    <title>vers l'infini et au delà! java!</title>
    <link>http://blog.unix4fun.net/post/2010/05/30/vers-l-infini-et-au-del%C3%A0%21-java%21</link>
    <guid isPermaLink="false">urn:md5:e445c1e61ef6186efe2d3fd34826bd48</guid>
    <pubDate>Sun, 30 May 2010 16:56:00 +0200</pubDate>
    <dc:creator>eau</dc:creator>
        <category>geeking</category>
        <category>exploit</category><category>fun</category><category>hack</category><category>java</category>    
    <description>    &lt;p&gt;Un gentil et soyeux descriptif d'une vulnerabilite dans le code de parsing
midi de Java, marrant et une bonne lecture.&lt;/p&gt;
&lt;p&gt;C'est a lire par ici:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://vreugdenhilresearch.nl/2010/05/java-midi-parse-vulnerabilities/&quot; hreflang=&quot;en&quot;&gt;http://vreugdenhilresearch.nl/2010/05/java-midi-parse-vulnerabilities/&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description>
    
    
    
          <comments>http://blog.unix4fun.net/post/2010/05/30/vers-l-infini-et-au-del%C3%A0%21-java%21#comment-form</comments>
      <wfw:comment>http://blog.unix4fun.net/post/2010/05/30/vers-l-infini-et-au-del%C3%A0%21-java%21#comment-form</wfw:comment>
      <wfw:commentRss>http://blog.unix4fun.net/feed/atom/comments/522945</wfw:commentRss>
      </item>
    
  <item>
    <title>ASM reference</title>
    <link>http://blog.unix4fun.net/post/2010/04/26/ASM-reference</link>
    <guid isPermaLink="false">urn:md5:508cd84f6b68b0a1c31b16aeb9d7a1a7</guid>
    <pubDate>Mon, 26 Apr 2010 23:31:00 +0200</pubDate>
    <dc:creator>eau</dc:creator>
        <category>geeking</category>
        <category>assembly</category><category>code</category><category>OS</category><category>system</category>    
    <description>    &lt;p&gt;En ce moment je bricole des trucs en assembleur x86/x86-64 et MIPS (wouhouu
j'ai un loongson 2f!), alors du coup j'ai qqes liens:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://ref.x86asm.net/&quot; hreflang=&quot;en&quot;&gt;da x86 ref&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.cs.unibo.it/~solmi/teaching/arch_2002-2003/AssemblyLanguageProgDoc.pdf&quot; hreflang=&quot;en&quot;&gt;da MIPS ref&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://gicl.cs.drexel.edu/people/sevy/architecture/MIPSRef(SPIM).html&quot; hreflang=&quot;en&quot;&gt;un resume MIPS&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://logos.cs.uic.edu/366/notes/MIPS%20Quick%20Tutorial.htm&quot; hreflang=&quot;en&quot;&gt;un autre resume MIPS&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://oss.lzu.edu.cn/modules/lifetype/index.php?op=ViewArticle&amp;amp;articleId=90&amp;amp;blogId=6&quot; hreflang=&quot;en&quot;&gt;practical MIPS assembly&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Et j'en profite pour dire que pour tester il y a:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://gxemul.sourceforge.net/&quot; hreflang=&quot;en&quot;&gt;GXEMUL&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://wiki.qemu.org/download/qemu-doc.html#MIPS-System-emulator&quot; hreflang=&quot;en&quot;&gt;QEMU&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Et il y a aussi qqes petits liens classiques:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://www.logix.cz/michal/doc/i386/&quot; hreflang=&quot;en&quot;&gt;x86
ref&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://files.osdev.org/mirrors/geezer/osd/index.htm&quot; hreflang=&quot;en&quot;&gt;WYOOS (Write Your Own Operating System)&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description>
    
    
    
          <comments>http://blog.unix4fun.net/post/2010/04/26/ASM-reference#comment-form</comments>
      <wfw:comment>http://blog.unix4fun.net/post/2010/04/26/ASM-reference#comment-form</wfw:comment>
      <wfw:commentRss>http://blog.unix4fun.net/feed/atom/comments/511815</wfw:commentRss>
      </item>
    
  <item>
    <title>C'est dans les vieux pots...</title>
    <link>http://blog.unix4fun.net/post/2010/04/12/C-est-dans-les-vieux-pots...</link>
    <guid isPermaLink="false">urn:md5:b4ab7d1e32e8f5cd89b4927af190d936</guid>
    <pubDate>Mon, 12 Apr 2010 10:34:00 +0200</pubDate>
    <dc:creator>poz</dc:creator>
        <category>geeking</category>
        <category>algorithms</category><category>C</category>    
    <description>    &lt;p&gt;Suite à la mise à disponibilité de RE2, je suis tombé sur un article de Russ
Cox qui explique en quoi l'algorithme de matching de Ken Thompson (Thompson
NFA, pour Non Deterministic Algorithm) poutrait grave sa mère pour la
reconnaissance de certaines grammaires (face à PCRE ou Perl), avec moins de 500
lignes de C. C'est intéressant. On a même droit à une implémentation (assez
basique) en C. Yummy.&lt;/p&gt;
&lt;pre&gt;
o &lt;a href=&quot;http://swtch.com/%7Ersc/regexp/regexp1.html&quot;&gt;l'article&lt;/a&gt;
&lt;/pre&gt;</description>
    
    
    
          <comments>http://blog.unix4fun.net/post/2010/04/12/C-est-dans-les-vieux-pots...#comment-form</comments>
      <wfw:comment>http://blog.unix4fun.net/post/2010/04/12/C-est-dans-les-vieux-pots...#comment-form</wfw:comment>
      <wfw:commentRss>http://blog.unix4fun.net/feed/atom/comments/508014</wfw:commentRss>
      </item>
    
  <item>
    <title>OpenBench ! l'autre analyseur logique &quot;ouvert&quot;</title>
    <link>http://blog.unix4fun.net/post/2010/03/01/OpenBench-%21-the-logic-analyzer-%22ouvert%22</link>
    <guid isPermaLink="false">urn:md5:1a69fc1761bba6e5fa7083e86251a43c</guid>
    <pubDate>Mon, 01 Mar 2010 13:37:00 +0100</pubDate>
    <dc:creator>eau</dc:creator>
        <category>geeking</category>
        <category>fun</category><category>hardware</category><category>opensource</category><category>tools</category>    
    <description>    &lt;p&gt;La classe, il y a vraiment des gens poilus sur cette petite planete! Un
nouveau projet de &lt;a href=&quot;http://fr.wikipedia.org/wiki/Analyseur_logique&quot;&gt;logic analyzer&lt;/a&gt; opensource
(on avait deja poste une petite news sur un &lt;a href=&quot;http://blog.unix4fun.net/post/2009/11/10/l-electronique-digitale-et-son-MUST-HAVE-pour-debugger/sniffer-des-bus/chips-etc...&quot;&gt;
autre projet de logic analyzer opensource&lt;/a&gt;) qui affiche des fonctionnalites
sympathiques, en tout cas ca fait un bel exemple d'une architecture materielle
a base de FPGA &amp;quot;from scratch&amp;quot; et la possibilite d'etudier comment on &amp;quot;enchaine&amp;quot;
du signal digital proprement!&lt;/p&gt;
&lt;p&gt;Et hop un nouveau projet pour sniffer du bus!&lt;/p&gt;
&lt;p&gt;J'y connais rien mais ca me fait tripper de lire leur sources meme si je
pige que 1%&lt;br /&gt;
Enjoy!&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://hackaday.com/2010/02/28/open-source-logic-analyzer-2/&quot; hreflang=&quot;en&quot;&gt;Le delateur&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.gadgetfactory.net/gf/project/butterflylogic/&quot; hreflang=&quot;en&quot;&gt;Le project OpenBench&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description>
    
    
    
          <comments>http://blog.unix4fun.net/post/2010/03/01/OpenBench-%21-the-logic-analyzer-%22ouvert%22#comment-form</comments>
      <wfw:comment>http://blog.unix4fun.net/post/2010/03/01/OpenBench-%21-the-logic-analyzer-%22ouvert%22#comment-form</wfw:comment>
      <wfw:commentRss>http://blog.unix4fun.net/feed/atom/comments/490828</wfw:commentRss>
      </item>
    
  <item>
    <title>Graphique sur le recencement des impacts de foudre survenus depuis 1963 sur la cordillère des Andes</title>
    <link>http://blog.unix4fun.net/post/2010/02/13/Graphique-sur-le-recencement-des-impacts-de-foudre-survenus-depuis-1963-sur-la-cordillere-des-Andes</link>
    <guid isPermaLink="false">urn:md5:57c62cfc8cdfea0fa59dddf38421b124</guid>
    <pubDate>Sat, 13 Feb 2010 13:15:00 +0100</pubDate>
    <dc:creator>mgu</dc:creator>
        <category>geeking</category>
        <category>analysis</category><category>ggplot2</category><category>gnuplot</category><category>graphiques</category><category>opensource</category><category>R</category><category>statistiques</category>    
    <description>    &lt;p&gt;Dans un registre bien différent de celui du précedent billet, je suis ammené
de temps en temps a produire des statistiques sous forme graphique. Jusqu'a
présent, j'utilisais &lt;a href=&quot;http://www.gnuplot.info/&quot; hreflang=&quot;en&quot;&gt;gnuplot&lt;/a&gt; qui fait bien son boulot, mais il faut le reconnaitre, nous
pond des &lt;a href=&quot;http://gnuplot.sourceforge.net/demo_4.3/simple.1.png&quot; hreflang=&quot;en&quot;&gt;graphiques un peu oldschool&lt;/a&gt; qui pourraient choquer quelques
&lt;em&gt;flans&lt;/em&gt; et par la meme occasion décrédibiliser tout le travail realisé
en amont (dans un contexte professionnel).&lt;/p&gt;
&lt;p&gt;Généralement je fais fi de ce genre de considérations, mais en tombant sur
un &lt;a href=&quot;http://four.livejournal.com/955976.html&quot; hreflang=&quot;en&quot;&gt;comparatif
rezal&lt;/a&gt; qui utilise &lt;a href=&quot;http://had.co.nz/ggplot2/&quot; hreflang=&quot;en&quot;&gt;ggplot2&lt;/a&gt;, jme suis dit que cela valait le coup de creuser l'affaire
(certainement plus par curiosité que pour la raison énoncée ci-dessus).&lt;/p&gt;
&lt;p&gt;Et en effet, ggplot2 utilise &lt;a href=&quot;http://www.r-project.org/&quot; hreflang=&quot;en&quot;&gt;le langage R&lt;/a&gt; qui est trés utilisé, semble-t'il, pour générer des
statistiques avancées / mathematiques.&lt;/p&gt;
&lt;p&gt;Pour moi c'est un peu tout nouveau, et donc je découvre les immenses
possibilités offertes par ce langage.&lt;/p&gt;
&lt;p&gt;Et voila, il existe sur le net, &lt;a href=&quot;http://learnr.wordpress.com/&quot; hreflang=&quot;en&quot;&gt;quelques&lt;/a&gt; &lt;a href=&quot;http://www.r-bloggers.com/&quot; hreflang=&quot;en&quot;&gt;ressources interéssantes&lt;/a&gt; que je souhaitais vous faire partager (et qui
vous permettrons peut-etre de mieux comprendre le titre).&lt;/p&gt;</description>
    
    
    
          <comments>http://blog.unix4fun.net/post/2010/02/13/Graphique-sur-le-recencement-des-impacts-de-foudre-survenus-depuis-1963-sur-la-cordillere-des-Andes#comment-form</comments>
      <wfw:comment>http://blog.unix4fun.net/post/2010/02/13/Graphique-sur-le-recencement-des-impacts-de-foudre-survenus-depuis-1963-sur-la-cordillere-des-Andes#comment-form</wfw:comment>
      <wfw:commentRss>http://blog.unix4fun.net/feed/atom/comments/484300</wfw:commentRss>
      </item>
    
  <item>
    <title>Je suis pas docteur en crypto, mais ca m'empeche pas de chier droit!</title>
    <link>http://blog.unix4fun.net/post/2010/02/05/Je-suis-pas-docteur-en-crypto%2C-mais-ca-m-empeche-pas-de-chier-droit%21</link>
    <guid isPermaLink="false">urn:md5:9bb91372460a67135b4e56d46ac10038</guid>
    <pubDate>Fri, 05 Feb 2010 04:05:00 +0100</pubDate>
    <dc:creator>eau</dc:creator>
        <category>geeking</category>
        <category>analysis</category><category>crypto</category><category>fun</category><category>hack</category>    
    <description>    &lt;p&gt;Il y a quelques semaines, une connaissance postait &lt;a href=&quot;http://www.reverse-engineering.net/viewtopic.php?f=6&amp;amp;t=7415&quot; hreflang=&quot;en&quot;&gt;ce truc la&lt;/a&gt; en discutant, après avoir jeté un oeil, je ne trouve pas de
solution triviale et je me dis bon... c'est juste je suis une quiche en crypto
y a un truc incroyable a faire, j'y comprendrais rien... j'apprends ensuite
qu'un pote qui mattait aussi l'a pété en 30 minutes... alors bon ok c'est une
grosse brute poilue qui a une sorte de &amp;quot;don&amp;quot; pour voir la matrice, mais voilà,
ca me fait chier de me sentir comme une merde et pourquoi pas ? je suis
peut-être moins mediocre que je pense.&lt;/p&gt;
&lt;p&gt;Je me suis dit bon faudra que j'essaye, le temps passe, je tourne autour un
peu comme un puceau autour de sa premiere meuf, je flippe et quand je commence
a m'approcher, oula trop dur beaucoup trop dur et je rebrousse chemin !&lt;/p&gt;
&lt;p&gt;Après quelque temps a tergiverser, à me fouetter et a me sentir comme un
clochard, je m'y suis mis hier soir et comme je suis un gros newbie en crypto,
je me suis dit que j'allais ecrire comment j'avais attaqué la chose, sans la
paperasse de &amp;quot;docteur en crypto&amp;quot; (ou chiffrement, j'en sais rien, j'm'en
fous).&lt;/p&gt;
&lt;h2&gt;Etape 1 - Le probleme&lt;/h2&gt;
&lt;pre&gt;
#include &amp;lt;iostream&amp;gt;
#include &amp;lt;cstdlib&amp;gt;

using namespace std;

char *key = &amp;quot;????????&amp;quot;;
//char secret[] = &amp;quot;ZJ]]_Y2ec%_hXH]P\\%k_eS2OSW4n\\]f+RJincNUS.QU_eLW].Ngn7F^^.IY17XUSZZYmjJ^!&amp;quot;;
//char out[100];

void decrypt(char *secret, char *key){
char c;
char *k = key;
while ((c = *secret) != 0){
*secret++ = (c-32) - ((*k)-64) + 32;
k = *(k+1) ? k+1 : key;
}
}

int main(int argc, char *argv[]){

strcpy(secret, &amp;quot;ZJ]]_Y2ec%_hXH]P\\%k_eS2OSW4n\\]f+RJincNUS.QU_eLW].Ngn7F^^.IY17XUSZZYmjJ^!&amp;quot;);
decrypt(secret,key);
cout &amp;lt;&amp;lt; &amp;quot;SECRET MESSAGE: &amp;quot; &amp;lt;&amp;lt; secret &amp;lt;&amp;lt; endl;

return EXIT_SUCCESS;
}
&lt;/pre&gt;
&lt;p&gt;Et là faut retrouver le plaintext.&lt;/p&gt;
&lt;h2&gt;Etape 2 - C'est quoi ce bordel..?!&lt;/h2&gt;
&lt;p&gt;On se dit : première hypothèse, si c'est un &amp;quot;challenge&amp;quot; la taille de la clef
dans le code source doit bien etre de 8 chars et le &amp;quot;plaintext&amp;quot; doit etre un
texte standard en anglais. Ensuite on matte la routine de decryption, on voit
que ca &amp;quot;rotate&amp;quot; sur la taille de la key, donc des blocs encrypted de 8 chars à
chaque fois, chaque bloc est chiffré avec la même clef.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;c'est un &amp;quot;challenge&amp;quot; donc le plaintext est certainement une phrase, donc
des caractères imprimables.&lt;/li&gt;
&lt;li&gt;c'est un &amp;quot;challenge&amp;quot; donc la clef est probablement un mot anglais un truc
du genre (vu le language du forum).&lt;/li&gt;
&lt;li&gt;c'est un &amp;quot;challenge&amp;quot; donc le \?\?\?\?\?\?\?\? veut aussi probablement dire
que la clef fait 8 bytes&amp;quot;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Etape 3 - Par où je commence !?&lt;/h2&gt;
&lt;p&gt;Première idée... bon-je-sais-pas-quoi-faire, &amp;quot;when in doubt, use brute
force&amp;quot;, alors hop on bricole &lt;a href=&quot;http://blog.unix4fun.net/public/src/rc.c&quot; hreflang=&quot;en&quot;&gt;un bruteforcer&lt;/a&gt; en carton avec un trombonne, un chewing gum et
de l'ammoniac et on se dit que &amp;quot;youpi youpi&amp;quot; dans 10 minutes on a la reponse et
pfiou je suis pas trop une grosse tanche comme je pensais, après tout, mon
bruteforcer, il est recursif, il verifie que pour chaque byte de clef teste, le
&amp;quot;plaintext&amp;quot; sur tous les blocs reste un caractere &amp;quot;possible&amp;quot; (comprendre
printable à l'ecran soit entre 0x20 et 0x7D ou 0x7E} et la récursivité arrive
pour aller bruteforcer le bytes de clef suivant, si j ai verifié cette
condition.&lt;/p&gt;
&lt;p&gt;Naif que j'étais je me suis dit... &amp;quot;wai tranquille, devrait pas trop y en
avoir&amp;quot;, mes fesses wai.. lancant le bruteforce et en loggant dans un fichier,
je me suis retrouve avec un file de plus de 18 Go de candidats possibles
(./bruteforcer^C^C^C^C^C) qui matchaient mes conditions, pleins de garbage et
wai... il fallait tester rien que :&lt;/p&gt;
&lt;pre&gt;
$ bc
bc 1.06.94
Copyright 1991-1994, 1997, 1998, 2000, 2004, 2006 Free Software Foundation, Inc.
This is free software with ABSOLUTELY NO WARRANTY.
For details type `warranty'. 
255^8
17878103347812890625
&lt;/pre&gt;
&lt;p&gt;hmm merde...je pensais pas autant...hmm et pis ma machine est sur les genoux
avec tout ça et mon disque en prends plein la gueule... bruteforce..meme apres
triturage pas une bonne idée...&lt;/p&gt;
&lt;h2&gt;Etape 4 - Le *plaign* et le-pote-qui-connaît-la-crypto (tm)&lt;/h2&gt;
&lt;p&gt;Un vague optimisation apres exposition du problème a votre &amp;quot;local guru
crypto&amp;quot;, equation bla, limiter le range des bytes a tester, verifier
correlations binaire bla, ne pas bruteforcer tout les chars, effectivement,
j'enlève un TAS de candidats, je sais plus je crois que j'etais descendu aux
alentours des 12 Go pour le file et la aussi ./bruteforcer-DrCrypto^C^C^C^C,
bon j'ai aucun bagage en math, ni aucune technique pour trouver des super algo
de pétage de crypto, donc hopla retour case depart, ma bite et mon couteau.&lt;/p&gt;
&lt;p&gt;Entre temps j'ai dû passer deja 8 heures effectives sur cette
connerie...c'etait il y a 1 ou 2 semaines.&lt;/p&gt;
&lt;h2&gt;Etape 5 - La bonne vieille haine des familles ou l'envie profonde de
soumission !&lt;/h2&gt;
&lt;p&gt;Alors ma bite et mon couteau, hmm j'ai un cerveau, regardons ça de plus pres
a nouveau...je me ré-ouvre tout ca (Featuring la grosse haine) hier soir... je
regarde curieusement le ciphertext et je commence par le séparer en bloc comme
au debut..&lt;/p&gt;
&lt;pre&gt;
ZJ]]_Y2e  c%_hXH]P  \%k_eS2O  SW4n\]f+  RJincNUS  .QU_eLW]  .Ngn7F^^  .IY17XUS  ZZYmjJ^! 
&lt;/pre&gt;
&lt;p&gt;Hmm pas top lisible.. comme ca so..ouais beaucoup mieux..&lt;/p&gt;
&lt;pre&gt;
0 1 2 3 4 5 6 7

Z J ] ] _ Y 2 e    
c % _ h X H ] P 
\ % k _ e S 2 O 
S W 4 n \ ] f + 
R J i n c N U S 
. Q U _ e L W ] 
. N g n 7 F ^ ^ 
. I Y 1 7 X U S 
Z Z Y m j J ^ ! 

&lt;/pre&gt;
&lt;p&gt;Je reviens a mes hypotheses.. je me dis bon, si c'est une phrase, il y aura
des espaces et peut etre des virgules, mais pour un challenge mettre de la
ponctuation ca me parait chiant.. alors je me dis ok, espaces seulements...
ensuite mon oeil est attiré par les 3 . . . sur la colonne du byte 0 de la
clef.. en mattant la ligne plus haut je me dis que ca passe pas mal si c'est un
espace ca separe bien des mots.., je me bricole vite fait 2 ptits tools a la
con... pour bruteforcer la valeur de la clef pour obtenir le plaintext et un
autre juste pour encoder 1 byte en lui filant le byte de la clef.&lt;/p&gt;
&lt;p&gt;alors, si '.' est un espace quelle est la clef necessaire pour
l'obtenir:&lt;/p&gt;
&lt;pre&gt;
$ ./findk . &amp;quot; &amp;quot;
cipher: . -&amp;gt; plain:  
key: 0x4e (N)
&lt;/pre&gt;
&lt;p&gt;Ok &amp;quot;N&amp;quot; bon ca serait eventuellement le premier byte de la clef, c'est
possible c'est &amp;quot;printable&amp;quot;, on va verifier avec les autres bytes de la meme
colonne:&lt;/p&gt;
&lt;pre&gt;
$ ./usek Z N
cipher: Z - N -&amp;gt; plain: 4c(L)
$ ./usek c N
cipher: c - N -&amp;gt; plain: 55(U)
$ ./usek \\ N
cipher: \ - N -&amp;gt; plain: 4e(N)
$ ./usek S N
cipher: S - N -&amp;gt; plain: 45(E)
$ ./usek R N
cipher: R - N -&amp;gt; plain: 44(D)
$ ./usek . N
cipher: . - N -&amp;gt; plain: 20( )
$ ./usek Z N
cipher: Z - N -&amp;gt; plain: 4c(L)
&lt;/pre&gt;
&lt;p&gt;Hmm là je me dis, intéressant, il n'y a pas un seul caractère relou, genre
virgule, caractères de contrôles a la noix, #, @ etc... que des chars et
étrangement ils sont tous en majuscule. Je me refais une petite ligne :&lt;/p&gt;
&lt;pre&gt;
//char dasecret[] = &amp;quot;ZJ]]_Y2ec%_hXH]P\%k_eS2OSW4n\]f+RJincNUS.QU_eLW].Ngn7F^^.IY17XUSZZYmjJ^!&amp;quot;;
//                   =       =       =       =       =       =       =       =       =            
//                   L       U       N       E       D       .       .       .       L          KEY: N???????
&lt;/pre&gt;
&lt;p&gt;Je représente les &amp;quot;espaces&amp;quot; par des &amp;quot;.&amp;quot; histoire de rendre ça un peu plus
lisible pour mon cerveau de mollusque ! Je reviens sur ma petite matrice de
caractères, je matte la colonne #2 et je me dis, tiens les &amp;quot;%&amp;quot; ca pourrait être
les espaces du début de la phrase, vu que j'ai trouvé les espaces de la fin de
la phrase (enfin je crois), alors j'essaye..&lt;/p&gt;
&lt;pre&gt;
$ ./findk % &amp;quot; &amp;quot;
cipher: % -&amp;gt; plain:  
key: 0x45 (E)
$ ./usek J E
cipher: J - E -&amp;gt; plain: 45(E)
$ ./usek % E
cipher: % - E -&amp;gt; plain: 20( )
$ ./usek W E
cipher: W - E -&amp;gt; plain: 52(R)
$ ./usek Q E
cipher: Q - E -&amp;gt; plain: 4c(L)
$ ./usek N E
cipher: N - E -&amp;gt; plain: 49(I)
$ ./usek I E
cipher: I - E -&amp;gt; plain: 44(D)
$ ./usek Z E
cipher: Z - E -&amp;gt; plain: 55(U)
&lt;/pre&gt;
&lt;p&gt;Et là je me dis, ca sent le mouflon ! J'ai de nouveau que des lettres
capitales et le second byte de ma clef est aussi en lettre capitale, ca ne me
semble plus etre une coincidence... Yes j'ai 2 bytes de la clef ! NE.. hmm&lt;/p&gt;
&lt;pre&gt;
//char dasecret[] = &amp;quot;ZJ]]_Y2ec%_hXH]P\%k_eS2OSW4n\]f+RJincNUS.QU_eLW].Ngn7F^^.IY17XUSZZYmjJ^!&amp;quot;;
//                   =       =       =       =       =       =       =       =       =            
//                   LE      U.      N.      ER      DE      .L      .I      .D      LU         KEY: NE??????
&lt;/pre&gt;
&lt;p&gt;Bon première idée qui me vient en tête, NE, NET ?! 'vais essayer donc &amp;quot;T&amp;quot;
pour la 3ème lettre...&lt;/p&gt;
&lt;pre&gt;
//                   LEI     U.K     N.W     ER.     DEU     .LA     .IS     .DE     LUE        KEY: NET????? NET could be a word but..
&lt;/pre&gt;
&lt;p&gt;Alors je cherche des mots anglais commencant par NET (comme NETWORK) pour la
clef, mais je ne trouve rien dont la 4ème lettre passe..hmm Ensuite en mattant
de le plaintext avec 3 lettres, LEI, DEU, LUE, je trouve pas ou peu de mots en
anglais.. j'ai pas ou peu d'idées de comment passer à la prochaine étape, hmm
mais j'ai dit que j'allais te soumettre alors tu m'echapperas pas
$#@!$#@!$!@$!&lt;/p&gt;
&lt;h2&gt;Etape 6 - Le breakthrough&lt;/h2&gt;
&lt;p&gt;Grmlgrmlgrm, quelques verres dans le nez avec une copine, une bonne
discussion, du vibe... je rentre chez moi vers 0h00, je mange rapidos, je
rouvre mon petit fichier.. et hmm Je commence à douter de ma 3ème lettre... je
fais marche arrière pour la 3ème lettre et je réfléchis...&lt;/p&gt;
&lt;pre&gt;
0 1 2 3 4 5 6 7

N E ? ? ? ? ? ?

Z J ] ] _ Y 2 e    
c % _ h X H ] P 
\ % k _ e S 2 O 
S W 4 n \ ] f + 
R J i n c N U S 
. Q U _ e L W ] 
. N g n 7 F ^ ^ 
. I Y 1 7 X U S 
Z Z Y m j J ^ ! 
&lt;/pre&gt;
&lt;p&gt;4ème colonne 3 x n, hmm le coup des espaces peut-être, je retente, groumpf
je tombe sur des caractères relous en decodant la colonne.. pas la bonne partie
de la clef, je refais la même chose pour le reste... 2x7, 2x_, etc... ca passe
pas.. grmlbmlbmb..&lt;/p&gt;
&lt;p&gt;Je me dis bon... qu'est-ce que j'ai là.. et je me rends compte que j'ai de
nouvelles hypothèses de base sur mes trouvailles précédentes..&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;phrase entièrement en majuscules.&lt;/li&gt;
&lt;li&gt;clef entièrement en majuscules.&lt;/li&gt;
&lt;li&gt;1 byte de clef valide devrait vérifier une colonne entière en majuscule ou
avec un espace&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Chassez le naturel, il revient au galop : when in doubt, use brute force!
Cette fois je bruteforce uniquement 2 blocs de ciphertext, je prends entre 0x41
et 0x5A pour les bytes de la clef, je ne teste que isupper(), isblank() et
isdigit() on sait jamais si il y a du &amp;quot;leet speak&amp;quot;..&lt;/p&gt;
&lt;pre&gt;
$ ./bf2 &amp;gt; bf2results
$ ls -la bf2results 
-rw------- 1 eau users 41570100 2010-02-05 01:33 bf2results
&lt;/pre&gt;
&lt;p&gt;Hmm 41 Mo de results, ca va, c'est très très loin des 12 Go, je dois pas
être loin! Je matte le contenu :&lt;/p&gt;
&lt;pre&gt;
key: NEITVARW, index: 8 buffer: LETIIX NU VTBGK9N
key: NEITVARX, index: 8 buffer: LETIIX MU VTBGK8N
key: NEITVARY, index: 8 buffer: LETIIX LU VTBGK7N
key: NEITVARZ, index: 8 buffer: LETIIX KU VTBGK6N
key: NEITVBRK, index: 8 buffer: LETIIW ZU VTBFKEN
key: NEITVBRL, index: 8 buffer: LETIIW YU VTBFKDN
key: NEITVBRM, index: 8 buffer: LETIIW XU VTBFKCN
key: NEITVBRN, index: 8 buffer: LETIIW WU VTBFKBN
&lt;/pre&gt;
&lt;p&gt;Bon signe, les candidats font à peu pres tous la meme taille, et y a ces 2
chars partout, ensuite je commence par virer les trucs improbables à coup de
grep&lt;/p&gt;
&lt;pre&gt;
$ cat bf2results | grep -v QQ | grep -v GKD | grep -v VXM | grep -v KDN \
   | grep -v K9N | grep -v K8N | grep -v K[0-9]N | grep -v YSN | grep -v EZX \
   | grep -v XTF | grep -v KBN | grep -v NTT | grep -v KCN | grep -v YRF \
   | grep -v SQL
[...]
key: NETYPSRO, index: 8 buffer: LEIDOF VU KOH5KAN
key: NETYPTRK, index: 8 buffer: LEIDOE ZU KOH4KEN
key: NETYPTRO, index: 8 buffer: LEIDOE VU KOH4KAN
key: NETYPURK, index: 8 buffer: LEIDOD ZU KOH3KEN
key: NETYPURO, index: 8 buffer: LEIDOD VU KOH3KAN
key: NETYPVRK, index: 8 buffer: LEIDOC ZU KOH2KEN
[...]
&lt;/pre&gt;
&lt;h2&gt;Etape 7 - Finish HIM!!&lt;/h2&gt;
&lt;p&gt;Et la je me dit tiens c'est bizarre... VU ca veut rien dire en anglais, mais
ZU en ALLEMAND.. c'est TO... et la je commence a me dire merde, c'etait pas en
anglais, on va verifier... je filtre que les &amp;quot; ZU &amp;quot;, du coup je vois que les 2
derniers bytes de la clef sont toujours &amp;quot;RK&amp;quot; :&lt;/p&gt;
&lt;pre&gt;
key: NEZZWRRK, index: 8 buffer: LECCHG ZU ENA6KEN
key: NEZZWSRK, index: 8 buffer: LECCHF ZU ENA5KEN
&lt;/pre&gt;
&lt;p&gt;Et là ca devient de plus en plus des mots, alors je m'excite, mais peut-être
que mon &amp;quot;T&amp;quot; pour le 3ème char était bon !!!!!! Hop hop hop!&lt;/p&gt;
&lt;pre&gt;
$ cat bf2results | grep -v QQ | grep -v GKD | grep -v VXM \
  | grep -v KDN | grep -v K9N | grep -v K8N | grep -v K[0-9]N \
  | grep -v YSN | grep -v EZX | grep -v XTF | grep -v KBN \
  | grep -v NTT | grep -v KCN | grep -v YRF | grep -v SQL \
  | grep &amp;quot; ZU &amp;quot; | grep &amp;quot;key: NET&amp;quot; | wc -l
4146
&lt;/pre&gt;
&lt;p&gt;Je matte vite fait les results :&lt;/p&gt;
&lt;pre&gt;
key: NETZWDRK, index: 8 buffer: LEICHU ZU KNADKEN
__key: NETZWERK, index: 8 buffer: LEICHT ZU KNACKEN__
key: NETZWFRK, index: 8 buffer: LEICHS ZU KNABKEN
key: NETZWGRK, index: 8 buffer: LEICHR ZU KNAAKEN
key: NETZWORK, index: 8 buffer: LEICHJ ZU KNA9KEN
&lt;/pre&gt;
&lt;p&gt;Et là je me dis BORDEL C'EST DE L'ALLEMAND DE MERDE $#@! $#@!$#@!$!#@$#@! Je
vérifie sur translate bidule.... &amp;quot;Easy to crack&amp;quot; RAH $#@ $ #@!$ #@! $#@! $ #@!$
#@! Hop je passe le tout avec la super clef que je viens de recover, NETZWERK
:&lt;/p&gt;
&lt;p&gt;Et voilà le plaintext :&lt;/p&gt;
&lt;pre&gt;
&amp;quot;LEICHT ZU KNACKEN WENN DER TEXT DEUTLICH LAENGER IST ALS DE SCHLUESSEL&amp;quot;
&lt;/pre&gt;
&lt;p&gt;Et sa traduction :&lt;/p&gt;
&lt;pre&gt;
&amp;quot;Easy to crack WHEN THE TEXT IS SIGNIFICANTLY LONGER THAN DE KEY&amp;quot;
&lt;/pre&gt;
&lt;p&gt;Juste pour les relous, il y a certainement 10000321432 moyens de faire mieux
et plus simple, les commentaires sont les bienvenus pour les critiques
constructives ! N'hesitez pas, c'etait certainement pas la methode la plus
élégante, mais c'est passé et le temps effectif passé dessus est de bien une 15
aines d'heures, pas vraiment les quelques jours que je pensais... mais je suis
toujours très loin des 30 minutes :)&lt;/p&gt;
&lt;p&gt;Enjoy !&lt;/p&gt;</description>
    
    
    
          <comments>http://blog.unix4fun.net/post/2010/02/05/Je-suis-pas-docteur-en-crypto%2C-mais-ca-m-empeche-pas-de-chier-droit%21#comment-form</comments>
      <wfw:comment>http://blog.unix4fun.net/post/2010/02/05/Je-suis-pas-docteur-en-crypto%2C-mais-ca-m-empeche-pas-de-chier-droit%21#comment-form</wfw:comment>
      <wfw:commentRss>http://blog.unix4fun.net/feed/atom/comments/481970</wfw:commentRss>
      </item>
    
  <item>
    <title>mechante deadlock! vilaine! booouuu mechante! a la niche!</title>
    <link>http://blog.unix4fun.net/post/2010/01/29/mechante-deadlock%21</link>
    <guid isPermaLink="false">urn:md5:68f448480cf1e0ab265b607b5d0ba738</guid>
    <pubDate>Fri, 29 Jan 2010 22:57:00 +0100</pubDate>
    <dc:creator>eau</dc:creator>
        <category>geeking</category>
        <category>algorithms</category><category>behaviour</category><category>code</category><category>fun</category><category>lib</category>    
    <description>    &lt;p&gt;Un projet marrant et que je trouve super drole, j'ai a peine commence a lire
et j ai pas poste depuis des lustres, allez hop c'est la fete :)&lt;/p&gt;
&lt;p&gt;Un projet pour &amp;quot;eviter&amp;quot; les deadlock sans avoir a recompiler quoique ce
soit, vais tester ca gentillement ce soir!&lt;/p&gt;
&lt;p&gt;Le project:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://dslab.epfl.ch/proj/dimmunix&quot; hreflang=&quot;en&quot;&gt;http://dslab.epfl.ch/proj/dimmunix&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Le paper:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://dslab.epfl.ch/pubs/dimmunix&quot; hreflang=&quot;en&quot;&gt;http://dslab.epfl.ch/pubs/dimmunix&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Le code:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://code.google.com/p/dimmunix/&quot; hreflang=&quot;en&quot;&gt;http://code.google.com/p/dimmunix/&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description>
    
    
    
          <comments>http://blog.unix4fun.net/post/2010/01/29/mechante-deadlock%21#comment-form</comments>
      <wfw:comment>http://blog.unix4fun.net/post/2010/01/29/mechante-deadlock%21#comment-form</wfw:comment>
      <wfw:commentRss>http://blog.unix4fun.net/feed/atom/comments/480215</wfw:commentRss>
      </item>
    
  <item>
    <title>Vas-y, montre moi tes doigts ?!</title>
    <link>http://blog.unix4fun.net/post/2009/12/31/Vas-y%2C-montre-moi-tes-doigts-%21</link>
    <guid isPermaLink="false">urn:md5:67a377f6dd2e41a23e07c866b354ec5c</guid>
    <pubDate>Thu, 31 Dec 2009 10:55:00 +0000</pubDate>
    <dc:creator>jr</dc:creator>
        <category>geeking</category>
        <category>admin</category><category>fun</category><category>linux</category><category>network</category><category>system</category><category>tips</category>    
    <description>    &lt;p&gt;Tu aimes Netfilter mais voilà, tu voudrais bien aussi faire... de l'OS
fingerprinting ? C'est possible depuis la version 2.6.31, grâce au module
xt_osf qui a été inclu officiellement. Donc voilà comment ça marche, un petit
exemple :&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;insmod ./xt_osf.ko&lt;/li&gt;
&lt;li&gt;./nfnl_osf -f ./pf.os&lt;/li&gt;
&lt;li&gt;iptables -I INPUT -j ACCEPT -p tcp -m osf &lt;del&gt;log 0&lt;/del&gt; ttl 2&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Tout d'abord un commentaire sur pf.os, c'est le fichier utilisé par packet
filter, donc le fichier de définition de p0f, le tool de mister Zalewski.
Ensuite on fait un test de connexion, et on voit dans les logs :&lt;/p&gt;
&lt;p&gt;Windows &lt;a href=&quot;http://blog.unix4fun.net/post/2009/12/31/#&quot; title=&quot;2000:SP4&quot;&gt;2000:SP4&lt;/a&gt; :
192.168.028.131:2007 -&amp;gt; 192.168.028.124:22 hops=0&lt;/p&gt;
&lt;p&gt;L'archive pour le programme userland (nfnl_osf) et les infos sont sur le
bleurg de l'auteur du patch initial : http://ioremap.net/projects/osf&lt;/p&gt;</description>
    
    
    
          <comments>http://blog.unix4fun.net/post/2009/12/31/Vas-y%2C-montre-moi-tes-doigts-%21#comment-form</comments>
      <wfw:comment>http://blog.unix4fun.net/post/2009/12/31/Vas-y%2C-montre-moi-tes-doigts-%21#comment-form</wfw:comment>
      <wfw:commentRss>http://blog.unix4fun.net/feed/atom/comments/471660</wfw:commentRss>
      </item>
    
  <item>
    <title>he HARP project: Have you ever wanted to build a CPU?</title>
    <link>http://blog.unix4fun.net/post/2009/12/17/he-HARP-project</link>
    <guid isPermaLink="false">urn:md5:5efdfc80609594a0ecc3e5d2444652c0</guid>
    <pubDate>Thu, 17 Dec 2009 23:26:00 +0100</pubDate>
    <dc:creator>eau</dc:creator>
        <category>geeking</category>
        <category>architecture</category><category>code</category><category>fun</category><category>hardware</category>    
    <description>    &lt;p&gt;Un projet super poilu, qui a pour but de construire une machine entiere &amp;quot;au
travers d'&amp;quot;/&amp;quot;via&amp;quot; un FPGA, alors que je commence a peine a comprendre les debut
de bases de VHDL et a faire mes premiers debuts d'embryons de tests, de trucs
tout moisis, on me souffle ce lien, je vois ca et la pouf, je bande....mais j'y
comprends encore rien, je vous rassure..&lt;/p&gt;
&lt;p&gt;Le lien erectile:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://harp-project.com/&quot; hreflang=&quot;en&quot;&gt;harp project&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description>
    
    
    
          <comments>http://blog.unix4fun.net/post/2009/12/17/he-HARP-project#comment-form</comments>
      <wfw:comment>http://blog.unix4fun.net/post/2009/12/17/he-HARP-project#comment-form</wfw:comment>
      <wfw:commentRss>http://blog.unix4fun.net/feed/atom/comments/469380</wfw:commentRss>
      </item>
    
  <item>
    <title>c'est une tendance tres claire! les epidemies progressent...</title>
    <link>http://blog.unix4fun.net/post/2009/12/05/c-est-une-tendance-tres-claire%21-les-epidemies-progressent...</link>
    <guid isPermaLink="false">urn:md5:aba6645c3a4d9d3fcd494bca69d798f3</guid>
    <pubDate>Sat, 05 Dec 2009 12:25:00 +0100</pubDate>
    <dc:creator>eau</dc:creator>
        <category>geeking</category>
        <category>analysis</category><category>behaviour</category><category>user</category>    
    <description>    &lt;p&gt;Alors ca n'est pas vraiment un truc &amp;quot;technique&amp;quot;, mais c'est drole alors
autant en faire une nouvelle. En ces periodes d'epidemies et de panique, de
contagion massive, mr poz nous a trouve un paper sur une autre epidemie tres
repandue et bien decrite, une analyse empirique du syndrome de &amp;quot;la grosse tete&amp;quot;
(ca c'est moi qui appele ca comme ca...) ou des &amp;quot;grosses chevilles&amp;quot;, bon je
raconte n'importe quoi... lisez, c'est bien de lire:&lt;br /&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://www.apa.org/journals/features/psp7761121.pdf&quot; hreflang=&quot;en&quot;&gt;das paper!&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description>
    
    
    
          <comments>http://blog.unix4fun.net/post/2009/12/05/c-est-une-tendance-tres-claire%21-les-epidemies-progressent...#comment-form</comments>
      <wfw:comment>http://blog.unix4fun.net/post/2009/12/05/c-est-une-tendance-tres-claire%21-les-epidemies-progressent...#comment-form</wfw:comment>
      <wfw:commentRss>http://blog.unix4fun.net/feed/atom/comments/464944</wfw:commentRss>
      </item>
    
  <item>
    <title>l'electronique digitale et son MUST HAVE pour debugger/sniffer des bus/chips etc...</title>
    <link>http://blog.unix4fun.net/post/2009/11/10/l-electronique-digitale-et-son-MUST-HAVE-pour-debugger/sniffer-des-bus/chips-etc...</link>
    <guid isPermaLink="false">urn:md5:396b015a00957b7124768d82cf010d18</guid>
    <pubDate>Tue, 10 Nov 2009 23:44:00 +0100</pubDate>
    <dc:creator>eau</dc:creator>
        <category>geeking</category>
        <category>fun</category><category>hack</category><category>hardware</category><category>tools</category>    
    <description>    &lt;p&gt;Je decouvre pleins de trucs (pas difficile je connais rien), je me suis
achete un &lt;a href=&quot;http://fr.wikipedia.org/wiki/Analyseur_logique&quot; hreflang=&quot;fr&quot;&gt;analyseur logique&lt;/a&gt; ou &lt;a href=&quot;http://en.wikipedia.org/wiki/Logic_analyzer&quot; hreflang=&quot;en&quot;&gt;logic analyzer&lt;/a&gt;
pour matter les signaux qui passent pour un petit projet a la con et surtout
comprendre l'arsenal des outils pour designer et comprendre l'electronique de
base.&lt;/p&gt;
&lt;p&gt;Au fil des liens je suis tombe sur &lt;a href=&quot;http://minila.sourceforge.net/index.php&quot; hreflang=&quot;en&quot;&gt;ce projet&lt;/a&gt;
opensource qui semble plutot pas mal, a tester et a suivre...&lt;/p&gt;
&lt;p&gt;Alors je vais essayer de commencer a lire (j'ai tellement de trucs a
lire...$#@$#@! et si peu de temps.. $#@!$#@ :() bref au moins je sais que
j'aurais mis le lien qqes part :) et j'essayerais d'updater ou de poster si
j'ai quelque chose d'interessant a dire :)&lt;/p&gt;</description>
    
    
    
          <comments>http://blog.unix4fun.net/post/2009/11/10/l-electronique-digitale-et-son-MUST-HAVE-pour-debugger/sniffer-des-bus/chips-etc...#comment-form</comments>
      <wfw:comment>http://blog.unix4fun.net/post/2009/11/10/l-electronique-digitale-et-son-MUST-HAVE-pour-debugger/sniffer-des-bus/chips-etc...#comment-form</wfw:comment>
      <wfw:commentRss>http://blog.unix4fun.net/feed/atom/comments/459155</wfw:commentRss>
      </item>
    
  <item>
    <title>meme vieux on continue d'apprendre</title>
    <link>http://blog.unix4fun.net/post/2009/11/06/meme-vieux-on-continue-d-apprendre</link>
    <guid isPermaLink="false">urn:md5:6791f31e787d55db5aaa6ef77631dab4</guid>
    <pubDate>Fri, 06 Nov 2009 16:02:00 +0100</pubDate>
    <dc:creator>eau</dc:creator>
        <category>geeking</category>
        <category>C</category><category>code</category><category>linux</category>    
    <description>    &lt;p&gt;Je rentre dans ma 65 eme annee et je continue encore d'apprendre de
nouvelles choses.. Au cours d'une discussion avec un pote sur &amp;quot;l'intrawebz&amp;quot;
(tm) j'ai appris l'existence des register_printf_functions.. comme decrit dans
les liens suivants:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://codingrelic.geekhold.com/2008/12/printf-acular.html&quot; hreflang=&quot;en&quot;&gt;print-acular&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.gnu.org/software/libtool/manual/libc/Registering-New-Conversions.html#Registering-New-Conversions&quot; hreflang=&quot;en&quot;&gt;register_printf_function&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.gnu.org/software/libtool/manual/libc/Printf-Extension-Example.html#Printf-Extension-Example&quot; hreflang=&quot;en&quot;&gt;printf extension example&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://sourceware.org/git/?p=glibc.git;a=blob;f=stdio-common/reg-modifier.c;h=ea3bdada134d77db6b8dcb8c82a833cbdd9dd940;hb=debafa10bcf2dd52392739a3aa6aff54f044fcd8&quot; hreflang=&quot;en&quot;&gt;les src du bidule&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Et au passage qqqes docs sur les attributes GCC et des ptits examples:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://www.ddj.com/cpp/184401956?pgno=5&quot; hreflang=&quot;en&quot;&gt;exemple
d'attributs&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://gcc.gnu.org/onlinedocs/gcc/Function-Attributes.html&quot; hreflang=&quot;en&quot;&gt;GCC function attributes&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Edit de poz:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;on note au passage que dans le premier lien, l'auteur ne sait pas comment
virer un warning gênant à la compilation (dû à -Wformat, lui-même inclu dans
-Wall) ; pour s'en débarrasser, il suffit de passer l'option -Wno-format à gcc.
Ceci dit, il faut faire attention, parce qu'il ne râlera plus quand vous
utiliserez le mauvais /specifier/ (genre %s au lieu de %zu), donc
méfiance...&lt;/li&gt;
&lt;li&gt;bon alors bien sûr c'est quand on migre son code que la merde arrive par
tombereaux entiers :). Alors, register_printf_function() est deprecated à
partir de glibc 2.10, il faut donc utiliser register_printf_specifier() à la
place. Un coup de #if __GLIBC_PREREQ(2,10) sous linux devrait faire
l'affaire... je mets au conditionnel parce que chez moi le printf() segfault
:)&lt;/li&gt;
&lt;/ul&gt;</description>
    
    
    
          <comments>http://blog.unix4fun.net/post/2009/11/06/meme-vieux-on-continue-d-apprendre#comment-form</comments>
      <wfw:comment>http://blog.unix4fun.net/post/2009/11/06/meme-vieux-on-continue-d-apprendre#comment-form</wfw:comment>
      <wfw:commentRss>http://blog.unix4fun.net/feed/atom/comments/458142</wfw:commentRss>
      </item>
    
  <item>
    <title>IMDb le retour de la mOOooOOort</title>
    <link>http://blog.unix4fun.net/post/2009/10/27/IMDb-le-retour-de-la-mOOooOOort</link>
    <guid isPermaLink="false">urn:md5:229b4a03bd2d8e154f098126d2c40291</guid>
    <pubDate>Tue, 27 Oct 2009 15:31:00 +0100</pubDate>
    <dc:creator>poz</dc:creator>
        <category>geeking</category>
        <category>fun</category><category>shell</category>    
    <description>    &lt;p&gt;Bon alors, il y a presque deux ans j'avais écrit un script tout pourri, cf
&lt;a href=&quot;http://blog.unix4fun.net/post/2007/08/28/Le-fnu-cest-la-vie&quot;&gt;cette
news&lt;/a&gt;. Je disais &amp;quot;ouiiiii, après j'vais ajouter des graphes et tout tu vas
voir c'est trop de la boulette kikoolol&amp;quot;, et... ben rien. Parce que je suis une
grosse bouse j'ai arrêté d'y toucher. Ben à ma pause de midi là, j'ai écrit un
script tout moche qui utilise l'output de &lt;a href=&quot;http://blog.unix4fun.net/public/imdb.sh&quot;&gt;imdb.sh&lt;/a&gt; pour générer des graphes
d'évolution des notes d'un acteurs en fonction du temps, etc. On peut même en
afficher plusieurs en même temps ! Trop puissant ! Bon en fait c'est
tout naze hein, mais c'est juste que ça fait marrer de comparer bruce lee et
chuck norris, exemple :&lt;/p&gt;
&lt;pre&gt;
&lt;img src=&quot;http://blog.unix4fun.net/public/imgs/bruce_lee_chuck_norris.png&quot; alt=&quot;&quot; /&gt;
&lt;/pre&gt;
&lt;p&gt;Bon... si vous voulez *vraiment* le script, c'est ici :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://blog.unix4fun.net/public/imdb-graph.sh&quot;&gt;imdb-graph.sh&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Il suffit de l'appeler comme ceci :&lt;/p&gt;
&lt;pre&gt;
$ imdb-graph.sh &amp;quot;brad pitt&amp;quot;
&lt;/pre&gt;
&lt;p&gt;Ou pour avoir plusieurs courbes superposées&lt;/p&gt;
&lt;pre&gt;
$ imdb-graph.sh &amp;quot;brad pitt&amp;quot; &amp;quot;edward norton&amp;quot;
&lt;/pre&gt;
&lt;p&gt;Il produira alors le fichier 'brad pitt edward norton.png'&lt;/p&gt;</description>
    
    
    
          <comments>http://blog.unix4fun.net/post/2009/10/27/IMDb-le-retour-de-la-mOOooOOort#comment-form</comments>
      <wfw:comment>http://blog.unix4fun.net/post/2009/10/27/IMDb-le-retour-de-la-mOOooOOort#comment-form</wfw:comment>
      <wfw:commentRss>http://blog.unix4fun.net/feed/atom/comments/454770</wfw:commentRss>
      </item>
    
  <item>
    <title>*Real* High level languages are Un!X</title>
    <link>http://blog.unix4fun.net/post/2009/10/08/%2AReal%2A-High-level-languages-are-Un%21X</link>
    <guid isPermaLink="false">urn:md5:f247073f0da10dabdb2f86f5b7f78bba</guid>
    <pubDate>Thu, 08 Oct 2009 01:22:00 +0200</pubDate>
    <dc:creator>sbz</dc:creator>
        <category>geeking</category>
        <category>code</category><category>perl</category><category>python</category>    
    <description>    &lt;p&gt;Nous aimons tous le C, l'asm, Unix et Linux, c'est un fait. Mais voilà
pourquoi on aime aussi le &lt;a href=&quot;http://jacobian.org/writing/python-is-unix/&quot; hreflang=&quot;en&quot;&gt;Python&lt;/a&gt; et le &lt;a href=&quot;http://plasmasturm.org/log/547/&quot; hreflang=&quot;en&quot;&gt;Perl&lt;/a&gt; qui sont aussi des *vrais* langages.&lt;/p&gt;
&lt;p&gt;Vous en doutez encore ? Allez jeter un oeil &lt;a href=&quot;http://pleac.sourceforge.net/pleac_python/index.html&quot; hreflang=&quot;en&quot;&gt;ici&lt;/a&gt; et
&lt;a href=&quot;http://pleac.sourceforge.net/pleac_perl/index.html&quot; hreflang=&quot;en&quot;&gt;là&lt;/a&gt;.&lt;/p&gt;</description>
    
    
    
          <comments>http://blog.unix4fun.net/post/2009/10/08/%2AReal%2A-High-level-languages-are-Un%21X#comment-form</comments>
      <wfw:comment>http://blog.unix4fun.net/post/2009/10/08/%2AReal%2A-High-level-languages-are-Un%21X#comment-form</wfw:comment>
      <wfw:commentRss>http://blog.unix4fun.net/feed/atom/comments/447918</wfw:commentRss>
      </item>
    
  <item>
    <title>TCP/IP for dummies</title>
    <link>http://blog.unix4fun.net/post/2009/09/30/TCP/IP-for-dummies</link>
    <guid isPermaLink="false">urn:md5:261b9cb55ff74405bef5bb7f9e2c4c2e</guid>
    <pubDate>Wed, 30 Sep 2009 08:38:00 +0200</pubDate>
    <dc:creator>poz</dc:creator>
        <category>geeking</category>
        <category>C</category><category>fun</category><category>network</category><category>TCPIP</category>    
    <description>    &lt;p&gt;Je ne sais pas pour vous, mais le réseau, je trouve ça assez intéressant.
Comment fonctionnent les protocoles, leurs implémentations, etc. Alors voici un
petit lien, présentant une implémentation de TCP/IP très légère, mais assez
intéressante d'un point de vue didactique. Il s'agit de lwIP (light-weight IP),
une stack TCP/IP ne faisant pas de copie de buffer afin de ne pas perdre trop
en performances (mais avec une abstraction manquante, car chaque layer peut
taper dans la couche sous-jacente), et où les principaux comportements attendus
sont implémentés : silly window avoidance, demultiplexage, contrôle de
checksum, retransmission rapide, calcul de RTT, contrôle de congestion, etc. La
pile propose même une API BSD compliant :) Bon, il s'agit d'un PoC
d'universitaire, hein, c'est pas ça qui va remplacer les piles des OS, mais
encore une fois, ça se comprend vite et bien.&lt;/p&gt;
&lt;p&gt;Ah, oui, le code (C, oeuf corse) tient en moins de 2600 lignes, et le code
objet produit pèse 13.5 KiB.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;c'est &lt;a href=&quot;http://www.sics.se/~adam/lwip/index.html&quot;&gt;ici&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;PS : Dernière chose, il n'y a pas de support IPv6. Haaan, la grosse
honte.&lt;/p&gt;</description>
    
    
    
          <comments>http://blog.unix4fun.net/post/2009/09/30/TCP/IP-for-dummies#comment-form</comments>
      <wfw:comment>http://blog.unix4fun.net/post/2009/09/30/TCP/IP-for-dummies#comment-form</wfw:comment>
      <wfw:commentRss>http://blog.unix4fun.net/feed/atom/comments/445792</wfw:commentRss>
      </item>
    
  <item>
    <title>GDB et sa belle super conviviale nouveaute!</title>
    <link>http://blog.unix4fun.net/post/2009/09/27/GDB-et-sa-belle-super-conviviale-nouveaute%21</link>
    <guid isPermaLink="false">urn:md5:d54d9ecb02ff22235f1cda8a187f2ea8</guid>
    <pubDate>Sun, 27 Sep 2009 00:12:00 +0200</pubDate>
    <dc:creator>eau</dc:creator>
        <category>geeking</category>
        <category>code</category><category>debug</category><category>tools</category>    
    <description>    &lt;p&gt;Eh ouiii, on m'a averti cette semaine GDB a une nouvelle super
fonctionnalite conviviale qui permet de faire (grossierement) &amp;quot;marche-arriere&amp;quot;
et donc et revenir a l'etat d'execution precedent et puis le precedent et puis
le precedent en gros de runner le code a l'envers... voila c'est fait GDB
fonctionne comme un magnetoscope VHS et ca se passe &lt;a href=&quot;http://www.gnu.org/software/gdb/news/reversible.html&quot; hreflang=&quot;en&quot;&gt;par
ici&lt;/a&gt;.&lt;/p&gt;</description>
    
    
    
          <comments>http://blog.unix4fun.net/post/2009/09/27/GDB-et-sa-belle-super-conviviale-nouveaute%21#comment-form</comments>
      <wfw:comment>http://blog.unix4fun.net/post/2009/09/27/GDB-et-sa-belle-super-conviviale-nouveaute%21#comment-form</wfw:comment>
      <wfw:commentRss>http://blog.unix4fun.net/feed/atom/comments/445060</wfw:commentRss>
      </item>
    
  <item>
    <title>Piccolo-SAN!!!</title>
    <link>http://blog.unix4fun.net/post/2009/09/02/Piccolo-SAN%21%21%21</link>
    <guid isPermaLink="false">urn:md5:78d3e98e2457dd36f8232c63bdf7af20</guid>
    <pubDate>Wed, 02 Sep 2009 11:12:00 +0200</pubDate>
    <dc:creator>eau</dc:creator>
        <category>geeking</category>
        <category>network</category><category>security</category><category>storage</category>    
    <description>    &lt;p&gt;On m'a pose une question ce matin et je me suis rappele que j'avais ecris un
tools a la noix pour l'iSCSI, mais du coup j ai vite cherche 2-3 trucs divers
sur &amp;quot;l'intarwebs&amp;quot; ( (c) unpote ) a propos des autres trucs sur les SANs, et
j'ai trouve qqes autres trucs marrant a lire:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://media.techtarget.com/searchStorageChannel/downloads/Dwivedi_ch02.pdf&quot; hreflang=&quot;en&quot;&gt;http://media.techtarget.com/searchStorageChannel/downloads/Dwivedi_ch02.pdf&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://searchstoragechannel.techtarget.com/generic/0,295582,sid98_gci1250196,00.html&quot; hreflang=&quot;en&quot;&gt;http://searchstoragechannel.techtarget.com/generic/0,295582,sid98_gci1250196,00.html&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.blackhat.com/presentations/bh-usa-05/bh-us-05-Dwivedi-update.pdf&quot; hreflang=&quot;en&quot;&gt;https://www.blackhat.com/presentations/bh-usa-05/bh-us-05-Dwivedi-update.pdf&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;bref c'est pas nouveau, mais ca fait du bien a relire et ca me donne presque
envie de bidouiller 2,3 ameliorations a mon bidule, si je le retrouve
grbmlmblmb..&lt;/p&gt;
&lt;p&gt;enjoy!&lt;/p&gt;</description>
    
    
    
          <comments>http://blog.unix4fun.net/post/2009/09/02/Piccolo-SAN%21%21%21#comment-form</comments>
      <wfw:comment>http://blog.unix4fun.net/post/2009/09/02/Piccolo-SAN%21%21%21#comment-form</wfw:comment>
      <wfw:commentRss>http://blog.unix4fun.net/feed/atom/comments/436639</wfw:commentRss>
      </item>
    
  <item>
    <title>Oh oui, montre-moi ton gros paquet !</title>
    <link>http://blog.unix4fun.net/post/2009/08/27/Oh-oui%2C-montre-moi-ton-gros-paquet-%21</link>
    <guid isPermaLink="false">urn:md5:0a06c3dfc9a210e5bc894cbf1e4dfdec</guid>
    <pubDate>Thu, 27 Aug 2009 14:40:00 +0200</pubDate>
    <dc:creator>poz</dc:creator>
        <category>geeking</category>
        <category>debug</category><category>network</category>    
    <description>    &lt;p&gt;Je vais probablement enfoncer des portes ouvertes mais c'est pas grave.
Récemment j'ai écouté le trafic d'une machine qui streamait du son via le
protocole DAAP (le truc de iTunes) sous un linux (donc une approximation de
DAAP en fait, car les specs ne sont pas releasées). Bref, le linux envoie de la
musique sur un LAN via le soft rhythmbox. Ça passe par un LAN, et arrive au
client. En faisant un coup de tcpdump sur le serveur, je m'aperçois que les
datagrammes IP font régulièrement plus de 1500 bytes. Souvent 5 ou 7 KB.
Curieux... Je me demande d'où ça vient. Qui plus est, le checksum TCP est
incorrect. Vraiment chelou, ça.&lt;/p&gt;
&lt;pre&gt;
$ ip link ls eth0
3: eth0: &amp;lt;BROADCAST,MULTICAST,PROMISC,UP,LOWER_UP&amp;gt; mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:12:3f:71:57:a1 brd ff:ff:ff:ff:ff:ff
&lt;/pre&gt;
&lt;p&gt;La MTU est bien à 1500. Si j'écoute sur le client, je vois bien des paquets
fragmentés. Bizarre bizarre. Le switch ferait ça ? Je mirror les ports et
j'écoute : paquets fragmentés. Boooon, après avoir cherché à droite à
gauche, je tombe sur ces liens :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://www.linuxfoundation.org/en/Net:GSO&quot;&gt;Generic Segment
Offload&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://kb.pert.geant.net/PERTKB/LargeSendOffloadLSO&quot;&gt;Large Send
Offload&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;L'explication est que la fragmentation est réalisée par la carte réseau,
hypothèse que j'avais exclue d'emblée, parce que ça me semblait overkill. Et
pourtant ! Un patch avec des benches envoyés sur la ml netdev du noyau
linux montre que ça améliore significativement les performances (dans le cas où
le firmware permet de le faire, bien sûr), et ça semble intégré depuis le
2.6.18.&lt;/p&gt;
&lt;p&gt;C'est tout. Je voulais juste poster ça pour éviter aux ignares comme moi de
chercher pendant des plombes le pourquoi du comment. Enfin... encore faut-il
qu'ils connaissent ce site. :-)&lt;/p&gt;
&lt;p&gt;PS : pour le checksum erroné, c'est visiblement parce que la stack
TCP/IP sait que le device va regragmenter, et donc invalider le checksum
calculé (et en mettre un autre à la place). Donc pas la peine de se fatiguer à
le calculer. C'est mon hypothèse, il faudrait que je regarde les sources.&lt;/p&gt;</description>
    
    
    
          <comments>http://blog.unix4fun.net/post/2009/08/27/Oh-oui%2C-montre-moi-ton-gros-paquet-%21#comment-form</comments>
      <wfw:comment>http://blog.unix4fun.net/post/2009/08/27/Oh-oui%2C-montre-moi-ton-gros-paquet-%21#comment-form</wfw:comment>
      <wfw:commentRss>http://blog.unix4fun.net/feed/atom/comments/431102</wfw:commentRss>
      </item>
    
</channel>
</rss>