<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/atom10full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" xml:lang="fr">
  
  <title type="html">Le fourre-tout à Geo</title>
  <subtitle type="html">Software development, security, overkill solutions, and fun code!</subtitle>
  
  <link href="http://eleves.ec-lille.fr/~couprieg/" rel="alternate" type="text/html" title="Software development, security, overkill solutions, and fun code!" />
  <updated>2010-02-04T18:36:12+00:00</updated>
  <author>
    <name>Geoffroy Couprie</name>
  </author>
  <id>urn:md5:44b0c1e8ccee90287d69590aa283f20e</id>
  <generator uri="http://www.dotclear.net/">Dotclear</generator>
  
    
  <atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/atom+xml" href="http://feeds.feedburner.com/LeFourre-toutAGeo-atom" /><feedburner:info uri="lefourre-toutageo-atom" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><entry>
    <title>Utterly useless uses of VLC</title>
    <link href="http://feedproxy.google.com/~r/LeFourre-toutAGeo-atom/~3/LlZaFyL9lbQ/Flickr-diaporama-in-VLC" rel="alternate" type="text/html" title="Utterly useless uses of VLC" />
    <id>urn:md5:9da61235c84b13dade01bd21d46f16d9</id>
    <updated>2009-12-08T08:22:00+00:00</updated>
    <author><name>Geoffroy Couprie</name></author>
        <dc:subject>VideoLAN</dc:subject>
        <dc:subject>Lua</dc:subject><dc:subject>VLC media player</dc:subject>    
    <content type="html">    &lt;p&gt;Last time, I told you how to &lt;a href="http://eleves.ec-lille.fr/~couprieg/post/2009/04/11/55-vlc-tricks-lua-playlist"&gt;take a video from some website and see it in VLC media player&lt;/a&gt;. Pretty cool, huh?&lt;/p&gt;


&lt;p&gt;Yesterday, I was trying to think of funny and useless thing to do with VLC, and it occured to me that Lua gives a lot of opportunities to do that.&lt;/p&gt;


&lt;p&gt;So, it is my pleasure to present you with the "Flickr diaporama Lua script for VLC"!&lt;/p&gt;

&lt;pre&gt;
--[[

 Copyright © 2009 the VideoLAN team

 This program is free software; you can redistribute it and/or modify
 it under the terms of the GNU General Public License as published by
 the Free Software Foundation; either version 2 of the License, or
 (at your option) any later version.

 This program is distributed in the hope that it will be useful,
 but WITHOUT ANY WARRANTY; without even the implied warranty of
 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 GNU General Public License for more details.

 You should have received a copy of the GNU General Public License
 along with this program; if not, write to the Free Software
 Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
--]]

-- Probe function.
function probe()
    if vlc.access ~= &amp;quot;http&amp;quot; then
        return false
    end
    vlc.msg.info( vlc.path )
	koreus_site = string.match( vlc.path, &amp;quot;www.flickr.com&amp;quot; )
    if not koreus_site then
        return false
    end
    return (  string.match( vlc.path, &amp;quot;sets&amp;quot; )  )
end

-- Parse function.
function parse()
    _,_,artist = string.find( vlc.path, &amp;quot;photos/(.-)/sets/&amp;quot; )
    vlc.msg.info( artist )
    while true do
        line = vlc.readline()
        if not line then break end
        if string.match( line,&amp;quot;&amp;lt;div id=\&amp;quot;setThumbs\&amp;quot;&amp;quot;) then
            start = 0
            pl = {}
            line = vlc.readline()
            while true do
                _,start,url = string.find(line, &amp;quot;&amp;lt;img src=\&amp;quot;(.-)_s.jpg\&amp;quot;&amp;quot;, start)
                if start == nil then
                    return pl
                end
                _,_,description = string.find(line, &amp;quot;alt=\&amp;quot;(.-)\&amp;quot;&amp;quot;, start)
                opt = { &amp;quot;:fake-duration=5000&amp;quot;; &amp;quot;:fullscreen&amp;quot; }
                pth = &amp;quot;fake://&amp;quot; .. url .. &amp;quot;.jpg&amp;quot;
                table.insert(pl, {path = pth; name = start; title=description; 
                description = description; artist = artist;options=opt})
            end
        end
    end
end
&lt;/pre&gt;


&lt;p&gt;So, how does it work? Give some Flickr album url to VLC, like &lt;a href="http://www.flickr.com/photos/fernandofelix/sets/72157603899036321/" hreflang="en"&gt;this one&lt;/a&gt; with the funny cats. VLC will parse the page, find all the thumbnails urls (the ones finishing with _s.jpg), deduce the urls of the the full pictures (replacing "_s.jpg" by ".jpg"), and show them. As simple as that.&lt;/p&gt;


&lt;p&gt;The fake access module is used to tell VLC that "hey, this is not one picture, it's a video with a lot of frames like this picture". I added the "fake-duration" option, to choose how much time (in ms) the picture will be displayed, and the "fullscreen" option. You can of course tweak it, and, let's say, use the directx wallpaper mode to have a flickr diaporama as your wallpaper!&lt;/p&gt;


&lt;p&gt;To use this script, you can either place it in &lt;em&gt;C:\Program Files\VideoLAN\VLC\lua\playlist&lt;/em&gt;, or in &lt;em&gt;C:\Users\YOURUSERNAME\AppData\Roaming\vlc\lua\playlist&lt;/em&gt;.&lt;/p&gt;


&lt;p&gt;I strongly encourage you to try and write your own Lua scripts, it's really easy! Come to the &lt;a href="http://forum.videolan.org/viewforum.php?f=29" hreflang="en"&gt;Videolan forum&lt;/a&gt; to share your scripts or ask for help.&lt;/p&gt;


&lt;h3&gt;See also&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://eleves.ec-lille.fr/~couprieg/post/2009/04/11/55-vlc-tricks-lua-playlist"&gt;VLC tricks: Lua playlist&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;Copyright © 2007-2009 &lt;a href="http://eleves.ec-lille.fr/~couprieg"&gt;Geoffroy Couprie&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/LeFourre-toutAGeo-atom/~4/LlZaFyL9lbQ" height="1" width="1"/&gt;</content>
    
    

          <wfw:comment>http://eleves.ec-lille.fr/~couprieg/post/Flickr-diaporama-in-VLC#comment-form</wfw:comment>
      <wfw:commentRss>http://eleves.ec-lille.fr/~couprieg/feed/atom/comments/82</wfw:commentRss>
      <feedburner:origLink>http://eleves.ec-lille.fr/~couprieg/post/Flickr-diaporama-in-VLC</feedburner:origLink></entry>
    
  <entry>
    <title>VLC: now with DxVA support</title>
    <link href="http://feedproxy.google.com/~r/LeFourre-toutAGeo-atom/~3/en1ZTB2sRis/VLC-now-with-DxVA-support" rel="alternate" type="text/html" title="VLC: now with DxVA support" />
    <id>urn:md5:c930a99002af002a16892545c09bcbda</id>
    <updated>2009-11-25T22:55:00+00:00</updated>
    <author><name>Geoffroy Couprie</name></author>
        <dc:subject>VideoLAN</dc:subject>
        <dc:subject>DxVA</dc:subject><dc:subject>GPU</dc:subject><dc:subject>VLC media player</dc:subject>    
    <content type="html">    &lt;p&gt;So, this is it. My summer of code has been &lt;a href="http://git.videolan.org/?p=vlc.git;a=commitdiff;h=670ef981c72d124788cf5862562de6541428e7e6;hp=0c348182e3823d80f703518d6734222f3bdce825" hreflang="en"&gt;merged into the main tree&lt;/a&gt;, thanks to Laurent's &lt;a href="http://git.videolan.org/?p=vlc.git;a=commitdiff;h=e0028dbfcdf1671fb4c503336fe10684d3724d51" hreflang="en"&gt;hard work&lt;/a&gt;!&lt;/p&gt;


&lt;p&gt;You may test and enjoy the GPU acceleration for your H.264 videos using future &lt;a href="http://nightlies.videolan.org/build/win32/?C=M;O=D" hreflang="en"&gt;nightly builds&lt;/a&gt;!&lt;/p&gt;&lt;p&gt;Copyright © 2007-2009 &lt;a href="http://eleves.ec-lille.fr/~couprieg"&gt;Geoffroy Couprie&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/LeFourre-toutAGeo-atom/~4/en1ZTB2sRis" height="1" width="1"/&gt;</content>
    
    

          <wfw:comment>http://eleves.ec-lille.fr/~couprieg/post/VLC-now-with-DxVA-support#comment-form</wfw:comment>
      <wfw:commentRss>http://eleves.ec-lille.fr/~couprieg/feed/atom/comments/80</wfw:commentRss>
      <feedburner:origLink>http://eleves.ec-lille.fr/~couprieg/post/VLC-now-with-DxVA-support</feedburner:origLink></entry>
    
  <entry>
    <title>So you want to contribute...</title>
    <link href="http://feedproxy.google.com/~r/LeFourre-toutAGeo-atom/~3/n2wH5pN7Uck/So-you-want-to-contribute" rel="alternate" type="text/html" title="So you want to contribute..." />
    <id>urn:md5:f1df94e9ad900628b9563e5742c8299c</id>
    <updated>2009-11-23T20:30:00+00:00</updated>
    <author><name>Geoffroy Couprie</name></author>
        <dc:subject>VideoLAN</dc:subject>
        <dc:subject>development</dc:subject><dc:subject>VLC media player</dc:subject>    
    <content type="html">    &lt;p&gt;...But you don't want to go through the (sometimes painful) process of building the whole VLC. Well, you can  &lt;a href="http://wiki.videolan.org/OutOfTreeCompile" hreflang="en"&gt;build your own plugin separately&lt;/a&gt;. Here is how to do it (this tutorial is Windows centric because 1: I'm too lazy to launch my VM right now; 2:&lt;a href="http://www.jbkempf.com/blog/post/2009/03/03/Howto-build-VLC-1.0.0-git-in-Ubuntu-in-less-than-5-commands" hreflang="en"&gt;it's easy to do on Ubuntu&lt;/a&gt; for the linux trolls):&lt;/p&gt;


&lt;h4&gt;Ingredients&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;The plugin headers. You can find them in &lt;em&gt;C:\Program Files\VideoLAN\VLC\sdk\include\vlc\plugins&lt;/em&gt; on Windows.&lt;/li&gt;
&lt;li&gt;The libraries. Copy libvlc.dll and libvlccore.dll (you will find them in  &lt;em&gt;C:\Program Files\VideoLAN\VLC&lt;/em&gt;)&lt;/li&gt;
&lt;li&gt;A building environment (on Windows, use Mingw+MSYS)&lt;/li&gt;
&lt;li&gt;Some coffee&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;Recipe&lt;/h4&gt;

&lt;p&gt;At the time of writing, the &lt;a href="http://wiki.videolan.org/OutOfTreeCompile" hreflang="en"&gt;wiki page&lt;/a&gt; wasn't really explicit, so I'll detail all the steps, for an example audio filter that switch the left and right audio streams (adapted from the trivial channel mixer plugin).&lt;/p&gt;


&lt;p&gt;Let's begin by taking a look at what code you can find in a VLC plugin, like the &lt;a href="http://git.videolan.org/?p=vlc.git;a=blob;f=modules/audio_filter/channel_mixer/trivial.c;h=3ecc0dd8363a50c40f7f123a9e2724a943c0c83c;hb=HEAD" hreflang="en"&gt;trivial channel mixer plugin&lt;/a&gt;.&lt;/p&gt;


&lt;h5&gt;Preamble&lt;/h5&gt;

&lt;p&gt;First, the copyright and license:&lt;/p&gt;

&lt;pre&gt;
/*****************************************************************************
 * trivial.c : trivial channel mixer plug-in (drops unwanted channels)
 *****************************************************************************
 * Copyright (C) 2009 the VideoLAN team
 * $Id: 3ecc0dd8363a50c40f7f123a9e2724a943c0c83c $
 *
 * Authors: Name &amp;lt;email address&amp;gt;
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 2 of the License, or
 * (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
 *****************************************************************************/
&lt;/pre&gt;


&lt;p&gt;That's not useful to run the plugin, but you'll have to add it when you send a patch to VideoLAN.&lt;/p&gt;


&lt;p&gt;Next, the headers:&lt;/p&gt;

&lt;pre&gt;
#ifdef HAVE_CONFIG_H
# include &amp;quot;config.h&amp;quot;
#endif

#include &amp;lt;vlc_common.h&amp;gt;
#include &amp;lt;vlc_plugin.h&amp;gt;
#include &amp;lt;vlc_aout.h&amp;gt;
#include &amp;lt;vlc_filter.h&amp;gt;
&lt;/pre&gt;


&lt;p&gt;the &lt;em&gt;config.h&lt;/em&gt; file is generated from the configure step when you build the whole VLC. Each module must include  at least &lt;em&gt;vlc_common.h&lt;/em&gt; and &lt;em&gt;vlc_plugin.h&lt;/em&gt;. The other headers included depend on the type of plugin you want to build (find it in the code of plugins from the category you want).&lt;/p&gt;


&lt;p&gt;Note: you will probably need something more like the following for your audio plugin.&lt;/p&gt;

&lt;pre&gt;
#define _(str)  (str)
#define N_(str) (str)

#include &amp;lt;vlc_common.h&amp;gt;
#include &amp;lt;vlc_plugin.h&amp;gt;
#include &amp;lt;vlc_messages.h&amp;gt;
#include &amp;lt;vlc_aout.h&amp;gt;
#include &amp;lt;vlc_filter.h&amp;gt;
#include &amp;lt;vlc_fourcc.h&amp;gt;
#include &amp;lt;vlc_block.h&amp;gt;
&lt;/pre&gt;


&lt;p&gt;Don't hesitate to grep the include directory if you have some missing functions or unknown structures.&lt;/p&gt;


&lt;h5&gt;Module descriptor&lt;/h5&gt;
&lt;pre&gt;
static int  Create    ( vlc_object_t * );

static block_t *DoWork( filter_t *, block_t * );

vlc_module_begin ()
    set_description( N_(&amp;quot;Audio channel inverser&amp;quot;) )
    set_capability( &amp;quot;channel inverser&amp;quot;, 1 )
    set_category( CAT_AUDIO )
    set_subcategory( SUBCAT_AUDIO_MISC )
    set_callbacks( Create, NULL )
    add_shortcut( &amp;quot;channel_inverser&amp;quot; )
vlc_module_end ()
&lt;/pre&gt;


&lt;p&gt;First, you see the prototypes of functions used in this plugin. &lt;em&gt;Create&lt;/em&gt; is used, well, to create the plugin, and &lt;em&gt;DoWork&lt;/em&gt; will handle all the audio data.&lt;/p&gt;


&lt;p&gt;Then, the part between &lt;em&gt;vlc_module_begin&lt;/em&gt; and &lt;em&gt;vlc_module_end&lt;/em&gt; is a set of macros used to declare the plugin structure. This part is used to define which type of module it will be. These macros create a function exported by the plugin and called when VLC looks for a suitable plugin.&lt;/p&gt;


&lt;p&gt;If the module can be used, the core of VLC stores the callback (here, the &lt;em&gt;Create&lt;/em&gt; function) and calls it later to initialize the plugin.&lt;/p&gt;


&lt;h5&gt;Create function&lt;/h5&gt;

&lt;pre&gt;
static int Create( vlc_object_t *p_this )
{
    filter_t * p_filter = (filter_t *)p_this;

    if ( (p_filter-&amp;gt;fmt_in.audio.i_physical_channels
           == p_filter-&amp;gt;fmt_out.audio.i_physical_channels
           &amp;amp;&amp;amp; p_filter-&amp;gt;fmt_in.audio.i_original_channels
               == p_filter-&amp;gt;fmt_out.audio.i_original_channels)
          || p_filter-&amp;gt;fmt_in.audio.i_format != p_filter-&amp;gt;fmt_out.audio.i_format
          || p_filter-&amp;gt;fmt_in.audio.i_rate != p_filter-&amp;gt;fmt_out.audio.i_rate
          || (p_filter-&amp;gt;fmt_in.audio.i_format != VLC_CODEC_FL32
               &amp;amp;&amp;amp; p_filter-&amp;gt;fmt_in.audio.i_format != VLC_CODEC_FI32) )
    {
        return VLC_EGENERIC;
    }

    p_filter-&amp;gt;pf_audio_filter = DoWork;
    return VLC_SUCCESS;
}
&lt;/pre&gt;


&lt;p&gt;The initialization function is used to set some configuration options, initialize memory structures, etc. Look at other modules to see how you can store variables, and how to create preferences variables.&lt;/p&gt;


&lt;p&gt;Here, we verify that the number of channels, the format and the bitrate in the input and output are the same, and that the audio isn't stored in float numbers. If it's ok, we give to libvlc a pointer to the &lt;em&gt;DoWork&lt;/em&gt; function, which will be called when audio data is available.&lt;/p&gt;


&lt;h5&gt;DoWork function&lt;/h5&gt;
&lt;pre&gt;
static block_t *DoWork( filter_t * p_filter, block_t * p_in_buf )
{
    int i_input_nb = aout_FormatNbChannels( &amp;amp;p_filter-&amp;gt;fmt_in.audio );
    int i_output_nb = aout_FormatNbChannels( &amp;amp;p_filter-&amp;gt;fmt_out.audio );

    block_t *p_out_buf;
    if( i_input_nb &amp;gt;= i_output_nb )
    {
        p_out_buf = p_in_buf; /* mix in place */
        p_out_buf-&amp;gt;i_buffer = p_in_buf-&amp;gt;i_buffer / i_input_nb * i_output_nb;
    }
    else
    {
        p_out_buf = filter_NewAudioBuffer( p_filter,
                              p_in_buf-&amp;gt;i_buffer / i_input_nb * i_output_nb );
        if( !p_out_buf )
            goto out;
        p_out_buf-&amp;gt;i_nb_samples = p_in_buf-&amp;gt;i_nb_samples;
    }

    int32_t * p_dest = (int32_t *)p_out_buf-&amp;gt;p_buffer;
    const int32_t * p_src = (int32_t *)p_in_buf-&amp;gt;p_buffer;


    /* Reverse-stereo mode */
    int i;
    for ( i = p_in_buf-&amp;gt;i_nb_samples; i--; )
    {
        *p_dest = p_src[1];
        p_dest++;
        *p_dest = p_src[0];
        p_dest++;
        p_src += 2;
    }

out:
    if( p_in_buf != p_out_buf )
        block_Release( p_in_buf );
    return p_out_buf;
}
&lt;/pre&gt;


&lt;p&gt;The DoWork function manages the buffers and copy them from the input to the output.&lt;/p&gt;


&lt;h4&gt;Now in the oven&lt;/h4&gt;

&lt;p&gt;(No preheat please)&lt;/p&gt;


&lt;p&gt;Here is the content of my Makefile:&lt;/p&gt;
&lt;pre&gt;
all:
	gcc -I/home/Geal/module/include -L/home/Geal/module/ -lvlccore -shared -std=gnu99 \
	-DWIN32 -D__PLUGIN__ -DMODULE_STRING=\&amp;quot;channel_inverser\&amp;quot; module.c -o libchannel_inverser_plugin.dll
/// 

Adapt it to the name of your plugin, and to the path you use, or copy the one from the wiki. My Makefile only contains what is strictly necessary to build your plugin. Now:

&lt;/pre&gt;

&lt;p&gt;Geal@chezmoi ~/module
$ make
///&lt;/p&gt;


&lt;h4&gt;Eat it while it's still hot&lt;/h4&gt;

&lt;p&gt;Now, you just need to copy your dll in the plugins directory of VLC media player, and try your plugin! I don't guarantee that it will work (more like I know that it doesn't work and I'm too lazy to fix it because I won't commit it), I just gave you the structure and the Makefile you need to be up and running. Note that you can use the following command line options to help in your development:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;-vvv&lt;/em&gt;: displays a LOT of debug messages&lt;/li&gt;
&lt;li&gt;&lt;em&gt;--verbose-objects&lt;/em&gt;: helps you filter the messages (example: &lt;em&gt;./vlc -vvv --verbose-objects=-all,+direct3d&lt;/em&gt; to display only the messages related to the direct3d module)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Don't forget to send a patch to VideoLAN (subscribe to the vlc-devel mailing-list and attach it to a message). To integrate your module, please read the &lt;a href="http://git.videolan.org/?p=vlc.git;a=blob;f=HACKING;h=027000315d52f0042b7d7dd82ba4a6729278da7b;hb=HEAD" hreflang="en"&gt;HACKING&lt;/a&gt; file at the root of the VLC source tree.&lt;/p&gt;


&lt;p&gt;Now, show me your code!&lt;/p&gt;&lt;p&gt;Copyright © 2007-2009 &lt;a href="http://eleves.ec-lille.fr/~couprieg"&gt;Geoffroy Couprie&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/LeFourre-toutAGeo-atom/~4/n2wH5pN7Uck" height="1" width="1"/&gt;</content>
    
    

          <wfw:comment>http://eleves.ec-lille.fr/~couprieg/post/So-you-want-to-contribute#comment-form</wfw:comment>
      <wfw:commentRss>http://eleves.ec-lille.fr/~couprieg/feed/atom/comments/78</wfw:commentRss>
      <feedburner:origLink>http://eleves.ec-lille.fr/~couprieg/post/So-you-want-to-contribute</feedburner:origLink></entry>
    
  <entry>
    <title>HowTo: audits et logs</title>
    <link href="http://feedproxy.google.com/~r/LeFourre-toutAGeo-atom/~3/Ji2vP9PM3uE/Howto%3A-audits-et-logs" rel="alternate" type="text/html" title="HowTo: audits et logs" />
    <id>urn:md5:203d0b5974baec71e042e6e1bb92dfd7</id>
    <updated>2009-11-08T18:15:00+00:00</updated>
    <author><name>Geoffroy Couprie</name></author>
        <dc:subject>Sécurité</dc:subject>
        <dc:subject>logs</dc:subject><dc:subject>security</dc:subject><dc:subject>Windows</dc:subject>    
    <content type="html">    &lt;p&gt;Les logs, c'est une liste de messages datés vous indiquant ce qui se passe sur votre système (pour ceux qui ne le savaient pas).&lt;/p&gt;


&lt;p&gt;On va me dire: "les logs c'est pas de la sécu, ça protège rien". Et je vais répondre: "est-ce que vous savez si quelqu'un a essayé de se logguer sur votre machine aujourd'hui? Est-ce que cette personne a essayé de se connecter devant la machine, ou depuis le réseau?"&lt;/p&gt;


&lt;p&gt;Gérer ses logs, c'est savoir ce qui se passe sur sa machine et être alerté en cas de problèmes. Et puis ça alimente ma paranoïa, donc je suis content :)&lt;/p&gt;


&lt;p&gt;J'écris ce billet maintenant car dans les billets suivants, j'ajouterai des éléments aux logs. Si on sait comment ça marche dès le début, la pilule passera mieux.&lt;/p&gt;


&lt;p&gt;Allez, on va voir de quoi ça parle: tout d'abord, on va se rajouter les droits pour regarder les logs, parce que depuis l'article précédent, on n'a plus les droits d'admin :). Lancer la console "Local users and groups" (lusrmgr.msc), allez dans &lt;em&gt;Groupes&lt;/em&gt;, puis &lt;em&gt;Event log readers&lt;/em&gt;, clic droit et &lt;em&gt;Add to group&lt;/em&gt;. Rajoutez votre utilisateur. Maintenant, vous pouvez lancer la console de gestion des logs.&lt;/p&gt;


&lt;h4&gt;L'event viewer&lt;/h4&gt;


&lt;p&gt;"Démarrer-&amp;gt;exécuter" puis &lt;em&gt;eventvwr.msc&lt;/em&gt;. Vous pouvez voir plusieurs types de logs.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;Custom views&lt;/em&gt;: les autres logs passés au travers de filtres pour indiquer les infos qui vous intéressent&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Windows logs&lt;/em&gt;: les logs qui nous intéresseront ici. Tous les messages que Windows vous dépose gentiment, en espérant que vous les lirez...&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Applications and services logs&lt;/em&gt;: le reste des applications qui utilisent les logs de Windows.&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Subscriptions&lt;/em&gt;: pour récupérer des logs d'une autre machine.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Parmi les logs de la section Windows, on trouve:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Applications: reçoit les événements concernant les applications, comme les crashes (Windows Error Reporting)&lt;/li&gt;
&lt;li&gt;Security: on ne peut le voir qu'avec les droits d'admin (va falloir &lt;em&gt;Run as Administrator&lt;/em&gt; la console de logs, parce que c'est celui qu'on va regarder).&lt;/li&gt;
&lt;li&gt;Setup: reçoit les événements de mise à jour, installation de .msi, etc.&lt;/li&gt;
&lt;li&gt;System récupère les événements relatifs aux services, au kernel, etc.&lt;/li&gt;
&lt;li&gt;Forwarded events est lié à l'envoi de logs sur d'autres machines&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;img src="http://eleves.ec-lille.fr/~couprieg/images/secu_quotidien/events_tree.PNG" alt="events categories" style="display:block; margin:0 auto;" title="events categories, nov. 2009" /&gt;&lt;/p&gt;


&lt;p&gt;Prenez le temps de fouiner un peu, regarder quelles informations votre machine vous renvoie. Comme vous pouvez le voir, il se passe beaucoup de choses!&lt;/p&gt;


&lt;h4&gt;Rajoutons des événements&lt;/h4&gt;

&lt;p&gt;Supposons que je veuille vérifier si quelqu'un a tenté de se connecter à ma machine en mon absence. Je vais vérifier si quelqu'un a tapé un mauvais mot de passe, et je vais vérifier quel utilisateur a réussi à se logguer au cours de la journée.&lt;/p&gt;


&lt;p&gt;Lancez &lt;em&gt;secpol.msc&lt;/em&gt;. Allez dans &lt;em&gt;Local Policies&lt;/em&gt; puis &lt;em&gt;Audit Policy&lt;/em&gt;. Choisissez par exemple &lt;em&gt;Audit account logon events&lt;/em&gt; et indiquez &lt;em&gt;Failure&lt;/em&gt; et &lt;em&gt;Success&lt;/em&gt; dans les propriétés.&lt;/p&gt;


&lt;p&gt;&lt;a href="http://eleves.ec-lille.fr/~couprieg/images/secu_quotidien/log_secpol.PNG"&gt;&lt;img src="http://eleves.ec-lille.fr/~couprieg/images/secu_quotidien/.log_secpol_m.jpg" alt="secpol.msc" style="display:block; margin:0 auto;" title="secpol.msc, nov. 2009" /&gt;&lt;/a&gt;&lt;/p&gt;


&lt;p&gt;Essayez maintenant de vous connecter à un autre compte, en ratant délibérément le mot de passe. Vous verrez apparaître dans les logs &lt;em&gt;Security&lt;/em&gt; des lignes contenant le mot clef "Audit failure" pour la tâche "Credential validation". Cliquez sur l'une d'elles: vous verrez que le log indique la date, l'heure, la machine concernée et le compte qui a essayé de se logguer.&lt;/p&gt;


&lt;p&gt;&lt;a href="http://eleves.ec-lille.fr/~couprieg/images/secu_quotidien/audit_failure.PNG"&gt;&lt;img src="http://eleves.ec-lille.fr/~couprieg/images/secu_quotidien/.audit_failure_m.jpg" alt="login failed" style="display:block; margin:0 auto;" title="login failed, nov. 2009" /&gt;&lt;/a&gt;&lt;/p&gt;


&lt;p&gt;Marrant, non? Et on va peut rajouter des logs pour pas mal de choses. Suppsons que j'aie des documents compromettants (par exemple, la photo d'un prez de BDE complètement bourré). J'aimerais savoir si quelqu'un a essayé de la copier. Je vais donc ajouter un audit sur les accès à ce fichier, et donc afficher une ligne dans les logs si quelqu'un essaie d'ouvrir le fichier.&lt;/p&gt;


&lt;p&gt;Il suffit d'aller dans le dossier contenant ce fichier, clic droit puis &lt;em&gt;Propriétés -&amp;gt; Advanced -&amp;gt; Auditing&lt;/em&gt; et utiliser ses droits d'admin pour voir les propriétés d'audit.&lt;/p&gt;


&lt;p&gt;&lt;a href="http://eleves.ec-lille.fr/~couprieg/images/secu_quotidien/prez_bourre_auditing.PNG"&gt;&lt;img src="http://eleves.ec-lille.fr/~couprieg/images/secu_quotidien/.prez_bourre_auditing_m.jpg" alt="auditing" style="display:block; margin:0 auto;" title="auditing, nov. 2009" /&gt;&lt;/a&gt;&lt;/p&gt;


&lt;p&gt;Maintenant, on va ajouter des propriétés d'audit pour ce fichier. Je choisis de les mettre sur le groupe Users. Je veux auditer les accès en lecture, et les suppressions de fichier (au cas où quelqu'un voudrait faire disparaître les preuves de ses frasques). Vous pouvez voir de nombreuses options, le système d'audit est très flexible (peut-être trop pour être utilisé par une personne normale).&lt;/p&gt;


&lt;p&gt;&lt;a href="http://eleves.ec-lille.fr/~couprieg/images/secu_quotidien/prezbourre_auditingentries.PNG"&gt;&lt;img src="http://eleves.ec-lille.fr/~couprieg/images/secu_quotidien/.prezbourre_auditingentries_m.jpg" alt="auditing entries" style="display:block; margin:0 auto;" title="auditing entries, nov. 2009" /&gt;&lt;/a&gt;&lt;/p&gt;


&lt;p&gt;Maintenant, on va essayer d'ouvrir le fichier, et aller voir le contenu du log. L'event viewer nous indique que "an attempt was made to access an object", par Geal (moi), sur le fichier en question.&lt;/p&gt;


&lt;p&gt;&lt;a href="http://eleves.ec-lille.fr/~couprieg/images/secu_quotidien/prezbourre_log.PNG"&gt;&lt;img src="http://eleves.ec-lille.fr/~couprieg/images/secu_quotidien/.prezbourre_log_m.jpg" alt="log file access" style="display:block; margin:0 auto;" title="log file access, nov. 2009" /&gt;&lt;/a&gt;&lt;/p&gt;


&lt;p&gt;Et voilà! Maintenant, vous allez pouvoir en ajouter beaucoup plus! Il est possible d'auditer des clefs registre, l'usage de privilèges admin, le lancement de programmes, etc. Je proposerai quelques-uns de ces ajouts dans les prochains tutoriels.&lt;/p&gt;


&lt;p&gt;Notez bien que la génération des logs peut prendre pas mal de ressources et d'espace disque, donc évitez par exemple de mettre un audit sur toutes les lectures de fichiers sur c:\ et ses sous dossiers (j'ose même pas imaginer ce que ça donne pendant une compilation de vlc).&lt;/p&gt;&lt;p&gt;Copyright © 2007-2009 &lt;a href="http://eleves.ec-lille.fr/~couprieg"&gt;Geoffroy Couprie&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/LeFourre-toutAGeo-atom/~4/Ji2vP9PM3uE" height="1" width="1"/&gt;</content>
    
    

          <wfw:comment>http://eleves.ec-lille.fr/~couprieg/post/Howto%3A-audits-et-logs#comment-form</wfw:comment>
      <wfw:commentRss>http://eleves.ec-lille.fr/~couprieg/feed/atom/comments/76</wfw:commentRss>
      <feedburner:origLink>http://eleves.ec-lille.fr/~couprieg/post/Howto%3A-audits-et-logs</feedburner:origLink></entry>
    
  <entry>
    <title>HOWTO: la sécurité au quotidien</title>
    <link href="http://feedproxy.google.com/~r/LeFourre-toutAGeo-atom/~3/VId7J2W8xS4/HOWTO%3A-la-s%C3%A9curit%C3%A9-au-quotidien" rel="alternate" type="text/html" title="HOWTO: la sécurité au quotidien" />
    <id>urn:md5:2d1b41345a87a0bbbb73ecbd4f5b4ca9</id>
    <updated>2009-11-02T08:30:00+00:00</updated>
    <author><name>Geoffroy Couprie</name></author>
        <dc:subject>Sécurité</dc:subject>
        <dc:subject>ergonomie</dc:subject><dc:subject>security</dc:subject><dc:subject>Windows</dc:subject>    
    <content type="html">    &lt;p&gt;Je vois partout les mêmes recommandations: utilisez un antivirus, activez votre firewall, changez vos mots de passe régulièrement, ne cliquez pas sur n'importe quel lien, etc. J'en ai MARRE! On vous sort ces solutions à deux sous, qui ne font qu'adresser une partie du problème, qui est:&lt;/p&gt;

&lt;blockquote&gt;&lt;p&gt;&lt;em&gt;comment éviter à un boulet de perdre ses données, de se faire voler son n° de carte bleue ou son compte Facebook ou de servir de noeud dans un botnet? Et comment rendre ça user friendly (aka "éviter d'écrire le mot de passe sur un PostIt").&lt;/em&gt;&lt;/p&gt;&lt;/blockquote&gt;


&lt;p&gt;Je me lance dans une entreprise ambitieuse, qui consiste à trouver une série de solutions qui vont bien ensemble pour protéger une machine perso. Je ne parlerai pas de machines sur un réseau d'entreprise, mais j'aborderai éventuellement les problèmes du réseau @home et du WiFi, et de mobilité. Ah, et il s'agira uniquement de Windows: les utilisateurs Linux sont encore pas mal protégés, et les utilisateurs Mac n'écoutent pas quand on leur dit qu'ils ne sont pas à l'abri. Mes tests seront faits sous Windows 7 et Vista (XP si je combats la flemme de m'installer une autre machine) avec toutes les mises à jour effectuées (bien évidemment, si vous ne mettez pas à jour votre OS pour cause de paranoïa et/ou de piratage, je ne peux rien faire pour vous).&lt;/p&gt;


&lt;p&gt;J'écrirai une série de billets, sous la forme de tutoriels et/ou tests, sur les sujets suivants:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="http://eleves.ec-lille.fr/~couprieg/post/Utilisateurs-et-groupes"&gt;Utilisateurs et groupes d'utilisateurs&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://eleves.ec-lille.fr/~couprieg/post/Howto%3A-audits-et-logs"&gt;Logs&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Mots de passe&lt;/li&gt;
&lt;li&gt;Droits (UAC, LUA, Integrity Levels, SRP)&lt;/li&gt;
&lt;li&gt;Firewall&lt;/li&gt;
&lt;li&gt;Navigateurs&lt;/li&gt;
&lt;li&gt;virus, chevaux de troie, etc.&lt;/li&gt;
&lt;li&gt;Applications dangereuses et leurs alternatives&lt;/li&gt;
&lt;li&gt;Protection des applications&lt;/li&gt;
&lt;li&gt;Applications web&lt;/li&gt;
&lt;li&gt;Sauvegarde de données&lt;/li&gt;
&lt;li&gt;Mises à jour&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;J'essaierai (dans la mesure du possible) de rendre ces solutions faciles à mettre en place, (ça va être dur) pas trop restrictives à l'utilisation et bien intégrées dans L'OS (aka "pas de hook foireux qui traînent").&lt;/p&gt;&lt;p&gt;Copyright © 2007-2009 &lt;a href="http://eleves.ec-lille.fr/~couprieg"&gt;Geoffroy Couprie&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/LeFourre-toutAGeo-atom/~4/VId7J2W8xS4" height="1" width="1"/&gt;</content>
    
    

          <wfw:comment>http://eleves.ec-lille.fr/~couprieg/post/HOWTO%3A-la-s%C3%A9curit%C3%A9-au-quotidien#comment-form</wfw:comment>
      <wfw:commentRss>http://eleves.ec-lille.fr/~couprieg/feed/atom/comments/73</wfw:commentRss>
      <feedburner:origLink>http://eleves.ec-lille.fr/~couprieg/post/HOWTO%3A-la-s%C3%A9curit%C3%A9-au-quotidien</feedburner:origLink></entry>
    
  <entry>
    <title>Utilisateurs et groupes</title>
    <link href="http://feedproxy.google.com/~r/LeFourre-toutAGeo-atom/~3/AWS7Ufr6Vng/Utilisateurs-et-groupes" rel="alternate" type="text/html" title="Utilisateurs et groupes" />
    <id>urn:md5:413659088b61c311edb72c5686a85ced</id>
    <updated>2009-11-02T08:30:00+00:00</updated>
    <author><name>Geoffroy Couprie</name></author>
        <dc:subject>Sécurité</dc:subject>
        <dc:subject>security</dc:subject><dc:subject>Windows</dc:subject>    
    <content type="html">    &lt;p&gt;Pour ce premier tutoriel sur la protection de votre machine, on va parler des notions d'utilisateurs et de groupes d'utilisateurs dans Windows. Oui, ça existe, on n'est pas obligé de prendre le compte "Administrateur" pour pouvoir utiliser sa machine.&lt;/p&gt;


&lt;p&gt;Pourquoi est-ce que tout le monde tourne sous le compte admin de sa machine? Parce que c'est plus simple pour le constructeur de vous donner le compte admin et vous laisser pourrir votre machine, que de vous donner plusieurs compte et ainsi s'exposer aux nombreux appels de clients en colère parce qu'ils n'arrivent pas à installer une application. Et c'est aussi plus simple, vu que pas mal d'applications supposent encore qu'elles peuvent écrire dans &lt;em&gt;C:\Program Files&lt;/em&gt;.&lt;/p&gt;


&lt;p&gt;Que va-t-on faire aujourd'hui? Pas compliqué: on va créer deux comptes utilisateurs: un "normal", que vous pourrez utiliser tous les jours, et un compte "Administrateur" qui vous permettra d'effectuer certaines tâches nécessitant plus de droits comme l'installation d'applications.&lt;/p&gt;


&lt;p&gt;Tout d'abord, lancez la console de gestion des "Local users and groups" en allant dans &lt;em&gt;Démarrer-&amp;gt;exécuter&lt;/em&gt; et en tapant &lt;em&gt;lusrmgr.msc&lt;/em&gt;.&lt;/p&gt;


&lt;p&gt;&lt;img src="http://eleves.ec-lille.fr/~couprieg/images/secu_quotidien/.lusrmgr_m.jpg" alt="Local Users and Groups" style="display:block; margin:0 auto;" title="Local Users and Groups, nov. 2009" /&gt;&lt;/p&gt;


&lt;p&gt;Cliquez sur le dossier &lt;em&gt;Users&lt;/em&gt; (ou &lt;em&gt;Utilisateurs&lt;/em&gt; si vous aimez votre version française). Vous devriez maintenant voir une liste de comptes, dont &lt;em&gt;Administrator&lt;/em&gt; (qui est pour l'instant désactivé), &lt;em&gt;Guest&lt;/em&gt;, le (les) vôtre(s), ainsi que &lt;em&gt;AlphaUser$&lt;/em&gt; et &lt;em&gt;HomeGroup$&lt;/em&gt; si vous avez créé un &lt;em&gt;Homegroup&lt;/em&gt; (c'est pas particulièrement important pour le moment).&lt;/p&gt;


&lt;p&gt;&lt;img src="http://eleves.ec-lille.fr/~couprieg/images/secu_quotidien/.lusr2_m.jpg" alt="Users" style="display:block; margin:0 auto;" title="Users, nov. 2009" /&gt;&lt;/p&gt;


&lt;p&gt;Ce que l'on va faire maintenant:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Désactiver le compte &lt;em&gt;Guest&lt;/em&gt; (si c'est pas déjà fait)&lt;/li&gt;
&lt;li&gt;Activer le compte &lt;em&gt;Administrateur&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;Ajouter un mot de passe au compte &lt;em&gt;Administrateur&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;Retirer votre compte du groupe &lt;em&gt;Administrateurs&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Très simple: clic droit sur les comptes, puis &lt;em&gt;propriétés&lt;/em&gt;. Pour &lt;em&gt;Administrateur&lt;/em&gt;, clic droit, puis &lt;em&gt;changer le mot de passe&lt;/em&gt;, et indiquez un mot de passe de votre choix (non, on ne choisit pas "123456" ou "admin", c'est MAL), puis à nouveau clic droit, &lt;em&gt;propriétés&lt;/em&gt; et activez le compte.
Pour &lt;em&gt;Guest&lt;/em&gt;, faites l'inverse (désactivez-le).
Pour votre compte, clic droit, &lt;em&gt;propriétés&lt;/em&gt;, puis allez dans l'onglet "Membre de". Cet onglet liste les groupes dont le compte fait partie. Cliquez sur &lt;em&gt;Administrateurs&lt;/em&gt; puis cliquez sur &lt;em&gt;Retirer&lt;/em&gt;.&lt;/p&gt;


&lt;p&gt;&lt;img src="http://eleves.ec-lille.fr/~couprieg/images/secu_quotidien/.lusr3_m.jpg" alt="Member of" style="display:block; margin:0 auto;" title="Member of, nov. 2009" /&gt;&lt;/p&gt;


&lt;p&gt;Voilà, c'est fait! Bon, euh, qu'est-ce qu'on a fait en fait? Avant, vous pouviez, avec votre compte normal, installer des applications, supprimer des fichiers de &lt;em&gt;C:\Windows&lt;/em&gt;,tripoter votre base de registres, etc. XP ne vous indiquait même pas que vous alliez bousiller votre système. Vista et 7 vous montraient la fameuse fenêtre UAC vous demandant si vous vouliez vraiment faire une connerie. Maintenant, cette fameuse fenêtre va vous demander de vous identifier avec le compte &lt;em&gt;Administrateur&lt;/em&gt; pour aller trifouiller dans votre système.&lt;/p&gt;


&lt;p&gt;Oui, je sais, ça paraît relou. Mais vous verrez que &lt;strong&gt;90% du temps, on n'a pas besoin des droits d&lt;em&gt;'Administrateur&lt;/em&gt;&lt;/strong&gt; (surtout depuis Windows 7). Avec cette modification, si une application ressent tout à coup le besoin d'aller vous installer des cochonneries, vous serez averti!&lt;/p&gt;


&lt;p&gt;Quid de l'UAC? &lt;a href="http://www.pretentiousname.com/misc/win7_uac_whitelist2.html" hreflang="en"&gt;C'est pas une protection&lt;/a&gt;! Lorsque vous utilisez avec votre compte de base, vous avez deux casquettes: celle de l'utilisateur normal, et celle de l'administrateur. Lorsque vous voulez effectuer une action nécessitant plus de droits, Windows vous demande de changer de casquette. Certains programmes changeront même votre casquette sans vous demander... Avec la manip' que vous venez de faire, Windows vous demande systématiquement l'autorisation de l'administrateur :)&lt;/p&gt;


&lt;p&gt;Ah, et un effet de bord sympa: c'est pas n'importe qui qui peut installer une application derrière mon dos quand je le laisse utiliser mon ordi cinq minutes (valable aussi et surtout si vous avez des gosses).&lt;/p&gt;


&lt;p&gt;Bon, manifestement, c'est pas fini, on peut encore faire pas mal de conneries sur ma machine, avec suffisamment de motivation. On en rajutera dans le prochain article :)&lt;/p&gt;&lt;p&gt;Copyright © 2007-2009 &lt;a href="http://eleves.ec-lille.fr/~couprieg"&gt;Geoffroy Couprie&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/LeFourre-toutAGeo-atom/~4/AWS7Ufr6Vng" height="1" width="1"/&gt;</content>
    
    

          <wfw:comment>http://eleves.ec-lille.fr/~couprieg/post/Utilisateurs-et-groupes#comment-form</wfw:comment>
      <wfw:commentRss>http://eleves.ec-lille.fr/~couprieg/feed/atom/comments/74</wfw:commentRss>
      <feedburner:origLink>http://eleves.ec-lille.fr/~couprieg/post/Utilisateurs-et-groupes</feedburner:origLink></entry>
    
  <entry>
    <title>test d'EMET, un nouvel outil pour protéger vos programmes</title>
    <link href="http://feedproxy.google.com/~r/LeFourre-toutAGeo-atom/~3/vYFw5bvAIXE/test-EMET-prot%C3%A9gez-vos-programmes" rel="alternate" type="text/html" title="test d'EMET, un nouvel outil pour protéger vos programmes" />
    <id>urn:md5:6752afc14fee8eb7295603f4f1a1f2ba</id>
    <updated>2009-10-28T15:50:00+00:00</updated>
    <author><name>Geoffroy Couprie</name></author>
        <dc:subject>Sécurité</dc:subject>
        <dc:subject>ASLR</dc:subject><dc:subject>DEP</dc:subject><dc:subject>EMET</dc:subject><dc:subject>security</dc:subject><dc:subject>Windows</dc:subject>    
    <content type="html">    &lt;p&gt;L'annonce est parue hier sur le blog de &lt;a href="http://blogs.technet.com/srd/archive/2009/10/27/announcing-the-release-of-the-enhanced-mitigation-evaluation-toolkit.aspx" hreflang="en"&gt;Microsoft Security Research &amp;amp; Defense&lt;/a&gt;: la release d'&lt;a href="http://www.microsoft.com/downloads/details.aspx?displaylang=en&amp;amp;FamilyID=4a2346ac-b772-4d40-a750-9046542f343d" hreflang="en"&gt;EMET&lt;/a&gt;(Enhanced Mitigation Evaluation Toolkit), un outil gratuit permettant d'appliquer des protections comme DEP sur vos programmes.&lt;/p&gt;


&lt;p&gt;Jusqu'ici, l'ajout de ces protections était soumis au bon vouloir du développeur. Soit on activait les options dans Visual Studio, soit on utilisait &lt;a href="http://eleves.ec-lille.fr/~couprieg/post/Enable-DEP-and-ASLR-on-your-applications-built-with-MinGW" hreflang="en"&gt;ma bidouille avec peflags&lt;/a&gt;. EMET permet d'activer les protections chez vous, sur les processus que vous voulez de façon très simple: &lt;code&gt;EMET_conf --add &amp;lt;executable&amp;gt;&lt;/code&gt;. Quel que soit le dossier contenant votre programme, EMET se chargera de le lancer avec les protections choisies.&lt;/p&gt;


&lt;p&gt;EMET gère ainsi une liste de processus et leur apporte les protections suivantes:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://blogs.technet.com/srd/archive/2009/02/02/preventing-the-exploitation-of-seh-overwrites-with-sehop.aspx" hreflang="en"&gt;SEHOP&lt;/a&gt; (Structured Exception Handler Overwrite Protection): validation de la chaines des gestionnaires d'exception&lt;/li&gt;
&lt;li&gt;&lt;a href="http://en.wikipedia.org/wiki/Data_Execution_Prevention" hreflang="en"&gt;DEP&lt;/a&gt; (Data Execution Prevention): marque certaines parties de la mémoire, par exemple la stack, comme non exécutables&lt;/li&gt;
&lt;li&gt;NULL page allocation: protection contre les "NULL dereferences" en résevant la première page mémoire&lt;/li&gt;
&lt;li&gt;&lt;a href="http://en.wikipedia.org/wiki/Heap_spraying" hreflang="en"&gt;Heap spray&lt;/a&gt; allocation: "heap spray" est une attaque qui consiste à balancer du shellcode un peu partout dans la mémoire, et à sauter plus ou moins au hasard dans les zones mémoires affectées en espérant pouvoir exécuter le shellcode. EMET réserve les adresses mémoire généralement utilisées dans les exploits pour les empêcher d'y écrire.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Bon, maintenant, les critiques (j'ai bien appris la présentation classique thèse/antithèse/synthèse à l'école, maintenant, j'applique!):&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;J'aurais bien aimé voir &lt;a href="http://en.wikipedia.org/wiki/Address_space_layout_randomization" hreflang="en"&gt;ASLR&lt;/a&gt;(Address Source Layout Randomization) là-dedans, parce que ça va bien avec DEP et SEHOP.&lt;/li&gt;
&lt;li&gt;On ne peut pas choisir quelle protection on applique à quel binaire: les options sont dans des clefs registres dans HKLM/Software/Microsoft/EMET, et quand on en désactive une, on la désactive pour tous les programmes. Par contre, il y a une clef registre assez fun nommée "heap_pages", qui permet d'indiquer à EMET quelles adresses réserver pour la partie heap spray allocation.&lt;/li&gt;
&lt;li&gt;Ce serait sympa d'avoir une interface "oh, look, shiny!", même si ça sert à rien :)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Comparé à peflags, EMET apporte la protection contre les null pointer dereferences et les heap sprays, et permet de protéger un exécutable en se basant sur son nom. Par contre, peflags permet d'appliquer les protections beaucoup plus finement (par exemple, SEHOP pour un programme et pas pour l'autre), et peut ajouter le flag ASLR (qui doit être appliqué sur toutes les DLLs chargées par un programme pour fonctionner correctement).&lt;/p&gt;


&lt;p&gt;En résumé, un outil sympa, mais qui  devrait être travaillé encore un peu. Ca reste un programme utile pour les développeurs qui veulent tester le comportement de leur application lorsque les protections sont activées. Dommage, &lt;a href="http://git.videolan.org/?p=vlc.git;a=commitdiff;h=60aa14b737e0f00d34c5785b7e7c62557dd7a10d;hp=54104ba864c568d95b52587bb481529401317d9e" hreflang="en"&gt;c'est déjà fait avec VLC media player&lt;/a&gt;!&lt;/p&gt;&lt;p&gt;Copyright © 2007-2009 &lt;a href="http://eleves.ec-lille.fr/~couprieg"&gt;Geoffroy Couprie&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/LeFourre-toutAGeo-atom/~4/vYFw5bvAIXE" height="1" width="1"/&gt;</content>
    
    

          <wfw:comment>http://eleves.ec-lille.fr/~couprieg/post/test-EMET-prot%C3%A9gez-vos-programmes#comment-form</wfw:comment>
      <wfw:commentRss>http://eleves.ec-lille.fr/~couprieg/feed/atom/comments/72</wfw:commentRss>
      <feedburner:origLink>http://eleves.ec-lille.fr/~couprieg/post/test-EMET-prot%C3%A9gez-vos-programmes</feedburner:origLink></entry>
    
  <entry>
    <title>Enable DEP and ASLR with MinGW</title>
    <link href="http://feedproxy.google.com/~r/LeFourre-toutAGeo-atom/~3/EprlblhTDV4/Enable-DEP-and-ASLR-on-your-applications-built-with-MinGW" rel="alternate" type="text/html" title="Enable DEP and ASLR with MinGW" />
    <id>urn:md5:e6f7794df6b8b1d19f50b11f92c5b6fd</id>
    <updated>2009-09-21T14:42:00+01:00</updated>
    <author><name>Geoffroy Couprie</name></author>
        <dc:subject>Sécurité</dc:subject>
        <dc:subject>ASLR</dc:subject><dc:subject>DEP</dc:subject><dc:subject>GCC</dc:subject><dc:subject>MinGW</dc:subject><dc:subject>security</dc:subject><dc:subject>VLC media player</dc:subject>    
    <content type="html">    &lt;p&gt;Every now and then, we see reports about vulnerabilities in numerous applications: buffer overflows and heap overflows are unfortunately very common. Until we find a way to teach all the developers how to think about security while coding (and then, there will still be a lot of programs to fix), we can try some tricks to prevent exploitation of vulnerabilities.These tricks have been Visual Studio only for a long time (and even with VS, &lt;a href="http://blogs.msdn.com/david_leblanc/archive/2008/03/14/use-of-aslr-nx-etc.aspx" hreflang="en"&gt;not everybody uses them&lt;/a&gt;), but now, we have tools to protect as well  programs built with GCC.&lt;/p&gt;


&lt;h3&gt;DEP and ASLR?&lt;/h3&gt;

&lt;p&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/aa366553%28VS.85%29.aspx" hreflang="en"&gt;DEP&lt;/a&gt; provides support for &lt;a href="http://en.wikipedia.org/wiki/NX_bit" hreflang="en"&gt;NX bit&lt;/a&gt; since Windows XP SP2 and Windows 2003 SP1. This feature flags some part of the memory, like the heap and the stack, as not executable. Then, the shellcodes stored in buffers will have a hard time trying to run.&lt;/p&gt;


&lt;p&gt;&lt;a href="http://blogs.msdn.com/michael_howard/archive/2006/05/26/address-space-layout-randomization-in-windows-vista.aspx" hreflang="en"&gt;ASLR&lt;/a&gt; randomizes the address of function entry points. This way, exploits with hardcoded functions address like &lt;em&gt;ret2libc&lt;/em&gt; attacks won't work.&lt;/p&gt;


&lt;p&gt;These two mechanisms are not silver bullets: they can be bypassed. But it makes the process of writing an exploit much harder.&lt;/p&gt;


&lt;h3&gt;Using it&lt;/h3&gt;

&lt;p&gt;If you build your program with Visual Studio, it's easy and &lt;a href="http://blogs.msdn.com/vcblog/archive/2009/05/21/dynamicbase-and-nxcompat.aspx" hreflang="en"&gt;documented&lt;/a&gt;. If you're using MinGW to build for Windows, it's not really documented, but it's easy too.&lt;/p&gt;


&lt;p&gt;To mark an executable as DEP and/or ASLR compatible, you have to change the &lt;em&gt;DllCharacteristic&lt;/em&gt;s field in the &lt;a href="http://msdn.microsoft.com/en-us/library/ms680339%28VS.85%29.aspx" hreflang="en"&gt;Portable Executable header&lt;/a&gt;. You can write your own PE modification software, or use one of these two solutions:&lt;/p&gt;


&lt;h4&gt;Peflags&lt;/h4&gt;

&lt;p&gt;Peflags is a program you can find in the &lt;em&gt;rebase&lt;/em&gt; package from &lt;a href="http://www.cygwin.com" hreflang="en"&gt;Cygwin&lt;/a&gt;. Peflags builds fine with MinGW in MSYS, but you have to tweak a bit the source if you want to run it from Linux, or directly take &lt;a href="http://people.videolan.org/~geal/peflags.c" hreflang="en"&gt;my modified source&lt;/a&gt;.&lt;/p&gt;


&lt;p&gt;It is really easy to use:&lt;/p&gt;

&lt;pre&gt;peflags --dynamicbase=true --nxcompat=true myexecutable&lt;/pre&gt;


&lt;p&gt;You can add this command to your Makefile. It has to run on the executable and all the dlls it loads, to be effective.
If you want to verify that your program has enabled the flags, do:&lt;/p&gt;

&lt;pre&gt;objdump -p myexecutable&lt;/pre&gt;


&lt;p&gt;And look for the DllCharacteristics flag. If its value is 140, congratulations! Your executable is now compatible. You can also verify with &lt;a href="http://technet.microsoft.com/fr-fr/sysinternals/bb896653.aspx" hreflang="en"&gt;Process Explorer&lt;/a&gt;, from SysInternals. Here is the line for VLC media player:&lt;/p&gt;


&lt;p&gt;&lt;a href="http://eleves.ec-lille.fr/~couprieg/images/DEP-ASLR.PNG"&gt;&lt;img src="http://eleves.ec-lille.fr/~couprieg/images/.DEP-ASLR_m.jpg" alt="DEP and ASLR" style="display:block; margin:0 auto;" title="DEP and ASLR, sept. 2009" /&gt;&lt;/a&gt;&lt;/p&gt;


&lt;h4&gt;LD&lt;/h4&gt;

&lt;p&gt;In March 2009, the support for this DllCharacteristics flag was added to ld, but the new binutils package containing the updated ld hasn't been released (yet). The command line is more or less the same.&lt;/p&gt;


&lt;h3&gt;Remarks&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;You have to add the flags to &lt;strong&gt;every&lt;/strong&gt; executable used by your program. If you load a vulnerable dll without DEP, it won't protect you.&lt;/li&gt;
&lt;li&gt;I'll say it again: it's no silver bullet. You still have to fix your bugs. It's a lot harder to exploit, but some may be able to do it.&lt;/li&gt;
&lt;li&gt;VLC media player now has peflags in &lt;a href="http://git.videolan.org/?p=vlc.git;a=commitdiff;h=60aa14b737e0f00d34c5785b7e7c62557dd7a10d;hp=54104ba864c568d95b52587bb481529401317d9e" hreflang="en"&gt;its building toolchain&lt;/a&gt;! I'm waiting for the release of the next binutils, and then I'll use the new ld.&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;Copyright © 2007-2009 &lt;a href="http://eleves.ec-lille.fr/~couprieg"&gt;Geoffroy Couprie&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/LeFourre-toutAGeo-atom/~4/EprlblhTDV4" height="1" width="1"/&gt;</content>
    
    

          <wfw:comment>http://eleves.ec-lille.fr/~couprieg/post/Enable-DEP-and-ASLR-on-your-applications-built-with-MinGW#comment-form</wfw:comment>
      <wfw:commentRss>http://eleves.ec-lille.fr/~couprieg/feed/atom/comments/70</wfw:commentRss>
      <feedburner:origLink>http://eleves.ec-lille.fr/~couprieg/post/Enable-DEP-and-ASLR-on-your-applications-built-with-MinGW</feedburner:origLink></entry>
    
  <entry>
    <title>Je bidouille Firefox et j'aime ça</title>
    <link href="http://feedproxy.google.com/~r/LeFourre-toutAGeo-atom/~3/VjertJWMuyo/Je-bidouille-Firefox-et-j-aime-%C3%A7a" rel="alternate" type="text/html" title="Je bidouille Firefox et j'aime ça" />
    <id>urn:md5:1b3653564606aabfa891bb5b71ae4c89</id>
    <updated>2009-09-17T09:10:00+01:00</updated>
    <author><name>Geoffroy Couprie</name></author>
        <dc:subject>Geekeries</dc:subject>
        <dc:subject>Browsers</dc:subject>    
    <content type="html">    &lt;p&gt;Ceux qui ont déjà jeté un oeil à ma machine savent que j'ai un gros problème avec les navigateurs web: le nombre d'onglets. Pour donner une idée, j'ai souvent plusieurs projets en cours, avec à chaque fois les onglets pour la documentation que je garde ouverts, j'ai un aggrégateur RSS avec beaucoup de flux pour lesquels j'ouvre un nouvel onglet (c'est lourd, ces sites qui ne mettent qu'un extrait dans le RSS) que j'oublie de lire, et j'ai &lt;a href="http://xkcd.com/214/" hreflang="en"&gt;comme tout le monde&lt;/a&gt; des séances sur Wikipedia où je clique compulsivement sur tous les liens de la page. Je me suis déjà retrouvé avec trois fenêtres contenant chacune plus de 50 onglets.&lt;/p&gt;


&lt;p&gt;Résultat: je les perds régulièrement, j'oublie de les lire et ça s'accumule. Et en plus, Firefox aime bien la RAM, et en prend de plus en plus. Au bout de 600 Mo, il est très lent... Et si en plus, on ajoute des sites avec du Flash et du Javascript dans tous les sens, et une tendance à chercher le gros uptime, on court vers la catastrophe!&lt;/p&gt;


&lt;p&gt;&lt;a href="http://eleves.ec-lille.fr/~couprieg/images/bidouille_ffx/start.PNG"&gt;&lt;img src="http://eleves.ec-lille.fr/~couprieg/images/bidouille_ffx/.start_m.jpg" alt="Interface de base Firefox" style="display:block; margin:0 auto;" title="Interface de base Firefox, sept. 2009" /&gt;&lt;/a&gt;&lt;/p&gt;


&lt;p&gt;Bien sûr, on me proposera quelques solutions évidentes du genre:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;lire les pages dès qu'on les ouvre&lt;/li&gt;
&lt;li&gt;mettre en bookmark celles qu'on veut garder (j'ai jamais réussi à organiser les bookmarks)&lt;/li&gt;
&lt;li&gt;ne pas passer autant de temps à glander sur Internet...&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Mais ce serait trop facile! Quelque chose en moi me pousse à trouver une solution technique à ma flemme, me permettant de ne pas changer mes très mauvaises habitudes. Oui, c'est mal. Mais le résultat est plutôt efficace.&lt;/p&gt;


&lt;h3&gt;Affichage&lt;/h3&gt;

&lt;h4&gt;Premier essai: Colorful Tabs&lt;/h4&gt;

&lt;p&gt;La première extension que j'ai essayée pour m'aider à m'y retrouver dans tous mes onglets est &lt;a href="https://addons.mozilla.org/fr/firefox/addon/1368" hreflang="fr"&gt;Colorful Tabs&lt;/a&gt;. Elle colore chaque onglet, ce qui se révèle très pratique pour la reconnaissance des pages que l'on veut consulter.&lt;/p&gt;


&lt;p&gt;&lt;a href="http://eleves.ec-lille.fr/~couprieg/images/bidouille_ffx/colorfultabs.PNG"&gt;&lt;img src="http://eleves.ec-lille.fr/~couprieg/images/bidouille_ffx/.colorfultabs_m.jpg" alt="Colorful Tabs" style="display:block; margin:0 auto;" title="Colorful Tabs, sept. 2009" /&gt;&lt;/a&gt;&lt;/p&gt;


&lt;p&gt;Malheureusement, ça limite toujours le nombre de tabs visibles.&lt;/p&gt;


&lt;h4&gt;La suite: TabKit&lt;/h4&gt;

&lt;p&gt;&lt;a href="https://addons.mozilla.org/fr/firefox/addon/5447" hreflang="fr"&gt;TabKit&lt;/a&gt; est une extension très puissante pour gérer les onglets dans Firefox. Le réglage par défaut (onglets colorés à gauche organisés en arbre) contentera pas mal de gens (dont moi). Notons que ColorfulTabs n'est pas nécessaire car TabKit colore les boutons tout seul. Par contre, les boutons sont plus jolis quand on rajoute ColorfulTabs :)&lt;/p&gt;


&lt;p&gt;&lt;a href="http://eleves.ec-lille.fr/~couprieg/images/bidouille_ffx/tabkit.PNG"&gt;&lt;img src="http://eleves.ec-lille.fr/~couprieg/images/bidouille_ffx/.tabkit_m.jpg" alt="Tab Kit" style="display:block; margin:0 auto;" title="Tab Kit, sept. 2009" /&gt;&lt;/a&gt;&lt;/p&gt;


&lt;h4&gt;Gagner encore un peu de place&lt;/h4&gt;

&lt;p&gt;&lt;a href="http://lifehacker.com/5360263/maximize-firefox-35s-viewing-area-for-your-netbook" hreflang="en"&gt;Vue aujourd'hui sur LifeHacker&lt;/a&gt;, une astuce toute simple permet de gagner un peu de place. Il suffit de droitcliquer (ça se conjugue comme doublecliquer: je droitclique, tu droitcliques...) sur la barre de menu et gauchecliquer sur "Personnaliser". J'ai décoché la "barre personnelle" dont je ne me servais pas, j'ai mis tous les boutons sur la ligne du haut, et j'ai supprimé le bouton Home (pas très utile, quand on a 150 onglets au démarrage).&lt;/p&gt;


&lt;p&gt;&lt;a href="http://eleves.ec-lille.fr/~couprieg/images/bidouille_ffx/LH.PNG"&gt;&lt;img src="http://eleves.ec-lille.fr/~couprieg/images/bidouille_ffx/.LH_m.jpg" alt="Lifehacker Firefox tip" style="display:block; margin:0 auto;" title="Lifehacker Firefox tip, sept. 2009" /&gt;&lt;/a&gt;&lt;/p&gt;


&lt;p&gt;On gagne encore de la place en décochant aussi "Barre de navigation".&lt;/p&gt;


&lt;h3&gt;AAAAH Il y a trop d'onglets!&lt;/h3&gt;

&lt;p&gt;Bon, ok, c'est joli. On passe d'un affichage d'une dizaine d'onglets à 25 onglets colorés. Quand on en a 150, cette solution ne suffit pas.&lt;/p&gt;


&lt;h4&gt;Profils Firefox&lt;/h4&gt;

&lt;p&gt;Je peux résoudre le problème de la durée de vie des onglets avec une astuce pas très compliquée, et &lt;strong&gt;TRES&lt;/strong&gt; utile (ça mérite le gras en majuscule). Firefox peut gérer plusieurs profils utilisateur. Généralement, personne n'a besoin de ça, et utilise directement le profil par défaut. Mais on peut en créer plusieurs. Ils se trouvent dans &lt;em&gt;%APPDATA%\Mozilla\Firefox\Profiles\xxxxxxxx.default'' aka &lt;/em&gt;c:\Users\MOI\AppData\Mozilla\Firefox\Profiles\xxxxxxxx.default'' sur Windows, ou &lt;em&gt;~/.mozilla/firefox/xxxxxxxx.default/&lt;/em&gt; (et les utilisateurs de Mac peuvent crever la bouche ouverte ou aller consulter la &lt;a href="http://support.mozilla.com/fr/kb/Profiles" hreflang="fr"&gt;doc&lt;/a&gt;).&lt;/p&gt;


&lt;p&gt;L'idée ici est de créer un profil par thème. Je peux ainsi garder le profil par défaut pour lire les RSS et les webcomics, et autres distractions, et créer un profil pour chaque projet sur lequel je travaille. J'ai par exemple un profil pour stocker les onglets en rapport avec VLC, et un autre pour mes bidouilles en électronique. Ainsi, je garde des fenêtres avec peu d'onglets, je n'ai pas besoin de scroller constamment pour trouver les pages qui m'intéressent, j'ai moins de chances de perdre mes onglets, Firefox utilise moins de RAM, et avoir tous les liens en rapport avec un sujet sur la même fenêtre aide à ne pas se laisser distraire (surtout si je ferme le profil &lt;em&gt;default&lt;/em&gt;).&lt;/p&gt;


&lt;p&gt;Comment faire ça? &lt;a href="http://support.mozilla.com/fr/kb/Gestion+des+profils" hreflang="fr"&gt;Pas compliqué!&lt;/a&gt; En gros, &lt;em&gt;Démarrer-&amp;gt;Exécuter&lt;/em&gt; puis tapez:
&lt;code&gt;firefox.exe -ProfileManager&lt;/code&gt;&lt;/p&gt;


&lt;p&gt;Créez ensuite le profil que vous voulez. Quittez Firefox et redémarrez-le. Il va charger le profil par défaut. Lancez une seconde instance de Firefox. Il devrait vous présenter la fenêtre suivante:&lt;/p&gt;


&lt;p&gt;&lt;a href="http://eleves.ec-lille.fr/~couprieg/images/bidouille_ffx/chooseprofile.PNG"&gt;&lt;img src="http://eleves.ec-lille.fr/~couprieg/images/bidouille_ffx/chooseprofile.PNG" alt="Choisissez votre profil" style="display:block; margin:0 auto;" title="Choisissez votre profil, sept. 2009" /&gt;&lt;/a&gt;&lt;/p&gt;


&lt;p&gt;Si non, faites  &lt;em&gt;Démarrer-&amp;gt;Exécuter&lt;/em&gt; puis tapez:
&lt;code&gt;firefox.exe -P -no-remote&lt;/code&gt;&lt;/p&gt;


&lt;p&gt;&lt;em&gt;-P&lt;/em&gt; étant un alias pour &lt;em&gt;-ProfileManager&lt;/em&gt; et &lt;em&gt;-no-remote&lt;/em&gt; indiquant à Firefox qu'il ne doit pas charger le nouveau processus dans le même profil.&lt;/p&gt;


&lt;p&gt;Vous pouvez maintenant gérer vos profils (créer, supprimer, etc.) et lancer ceux qui vous intéressent. Vous pouvez même créer des raccourcis pour chacun des profils, par exemple en indiquant:&lt;/p&gt;


&lt;p&gt;&lt;code&gt;firefox.exe -P VLC -no-remote&lt;/code&gt;&lt;/p&gt;


&lt;h4&gt;Configurer chaque profil&lt;/h4&gt;

&lt;p&gt;Le problème, c'est que les nouveaux profils sont vierges. Vous voudrez peut-être copier vos bookmarks, mots de passe, historique d'un profil à l'autre. Pour ça, l'extension &lt;a href="https://addons.mozilla.org/fr/firefox/addon/2109" hreflang="fr"&gt;FEBE&lt;/a&gt; s'occupe de tout, même de la migration de vos extensions. Vous n'avez plus qu'à exporter les informations qui vous intéressent d'un profil à l'autre.&lt;/p&gt;


&lt;h3&gt;Et après?&lt;/h3&gt;

&lt;p&gt;Maintenant, je dois faire attention à garder un nombre d'onglets par profil limité. Pour le profil "distractions", il suffit de lire les pages qui sortent de l'aggrégateur RSS, et pour les autres profils, quand j'ai de trop nombreuses pages, soit je m'arrange pour bosser suffisamment et les supprimer, soit la documentation est importante, et je l'insère dans un logiciel de &lt;a href="http://fr.wikipedia.org/wiki/Carte_heuristique" hreflang="fr"&gt;Mind Mapping&lt;/a&gt;. Ca fait un peu pipo comme outil, mais c'est très pratique!&lt;/p&gt;


&lt;p&gt;Voilà, je vous ai livré mon secret pour corriger mes mauvaises manières grâce à la technologie. Si maintenant, vous voulez un dernier avis sur ce qu'il faut utiliser avec Firefox, voici quelques trucs:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;utilisez &lt;a href="https://addons.mozilla.org/fr/firefox/addon/722" hreflang="fr"&gt;NoScript&lt;/a&gt;. Je sais que&lt;a href="http://adblockplus.org/blog/attention-noscript-users" hreflang="en"&gt; le développeur ne s'est pas comporté très correctement&lt;/a&gt;, mais ça n'empêche pas l'extension d'être pratique.&lt;/li&gt;
&lt;li&gt;Après NoScript, pour rendre la navigation encore moins intuitive, utilisez &lt;a href="https://addons.mozilla.org/fr/firefox/addon/9727" hreflang="fr"&gt;RequestPolicy&lt;/a&gt; qui vous protègera contre les CSRF.&lt;/li&gt;
&lt;li&gt;Et comme j'aime décidément rendre les sites que je consulte illisibles et inutilisables, j'ajoute &lt;a href="https://addons.mozilla.org/fr/firefox/addon/748" hreflang="en"&gt;GreaseMonkey&lt;/a&gt; pour modifier les pages qui s'affichent.&lt;/li&gt;
&lt;li&gt;Ajoutons encore &lt;a href="https://addons.mozilla.org/fr/firefox/addon/748" hreflang="en"&gt;Add N Edit Cookies&lt;/a&gt; pour surveiller un peu mes cookies.&lt;/li&gt;
&lt;li&gt;Et j'utilise &lt;a href="https://addons.mozilla.org/fr/firefox/addon/1843" hreflang="en"&gt;Firebug&lt;/a&gt; quand j'ai le malheur de faire du HTML et du CSS.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;La combinaison NoScript/RequestPolicy/GreaseMonkey peut paraître overkill et inutilisable, mais elle accélère la navigation (moins de Flash et de Javascript), les listes de sites à autoriser sont vites faites, et c'est marrant de voir les interactions entre sites, du genre vol d'images, publicités, séparation des services selon le nom de domaine, etc.&lt;/p&gt;&lt;p&gt;Copyright © 2007-2009 &lt;a href="http://eleves.ec-lille.fr/~couprieg"&gt;Geoffroy Couprie&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/LeFourre-toutAGeo-atom/~4/VjertJWMuyo" height="1" width="1"/&gt;</content>
    
    

          <wfw:comment>http://eleves.ec-lille.fr/~couprieg/post/Je-bidouille-Firefox-et-j-aime-%C3%A7a#comment-form</wfw:comment>
      <wfw:commentRss>http://eleves.ec-lille.fr/~couprieg/feed/atom/comments/69</wfw:commentRss>
      <feedburner:origLink>http://eleves.ec-lille.fr/~couprieg/post/Je-bidouille-Firefox-et-j-aime-%C3%A7a</feedburner:origLink></entry>
    
  <entry>
    <title>VLC tricks: get comfortable</title>
    <link href="http://feedproxy.google.com/~r/LeFourre-toutAGeo-atom/~3/3WqMTe8_1UQ/VLC-tricks%3A-get-comfortable" rel="alternate" type="text/html" title="VLC tricks: get comfortable" />
    <id>urn:md5:a3323804f9a658f84894203e74c4950e</id>
    <updated>2009-09-12T21:02:00+01:00</updated>
    <author><name>Geoffroy Couprie</name></author>
        <dc:subject>VideoLAN</dc:subject>
        <dc:subject>VLC media player</dc:subject>    
    <content type="html">    &lt;p&gt;&lt;a href="http://eleves.ec-lille.fr/~couprieg/post/VLC-tricks%3A-customize-your-interface"&gt;Last time&lt;/a&gt;, I showed you how to customize your interface with new skins. I hope you are happy with it :)&lt;/p&gt;


&lt;p&gt;Now, I will tell you how to tune VLC to meet your needs. I like it when it just runs, with no tweaking. But what I would like even more is customizing the way it runs once and for all, and forget about it.&lt;/p&gt;


&lt;p&gt;So, here is a compilation of VLC settings you may find useful, and info on where you can find them in the preferences:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Always on top:  in &lt;em&gt;Video&lt;/em&gt;. If, like me, you often watch a video while coding/reading/chatting, having a small video window on top of the others in a corner of the screen is convenient.&lt;/li&gt;
&lt;li&gt;Deinterlacing: in &lt;em&gt;Video-&amp;gt;Filters-&amp;gt;Deinterlace&lt;/em&gt;. I have some DVDs with interlaced videos, and it's annoying to set deinterlacing for each video. Here, choose the deinterlacing algorithm you prefer (test with multiple videos).&lt;/li&gt;
&lt;li&gt;Sharpening: in &lt;em&gt;Video-&amp;gt;Filters-&amp;gt;Sharpen video&lt;/em&gt;. Here again, set as you see fit (videos will appear a bit more clear).&lt;/li&gt;
&lt;li&gt;Subtitles: in &lt;em&gt;Video-&amp;gt;Subtitles/OSD&lt;/em&gt;. You can choose the folder where VLC will search for subtitles, and choose the color and font in &lt;em&gt;Video-&amp;gt;Subtitles/OSD-&amp;gt;Text renderer&lt;/em&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;Interface tweaks: in &lt;em&gt;Interface-&amp;gt;Main interfaces-&amp;gt;Qt&lt;/em&gt;. Use &lt;em&gt;Automatically save the volume on exit&lt;/em&gt;. you can uncheck &lt;em&gt;Show notification popup on track change&lt;/em&gt; if the systray popup bothers you.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Last but not least, the hotkeys: you can control VLC directly from your keyboard. You can see them and change them in &lt;em&gt;Hotkeys&lt;/em&gt; in the preferences (not that hard to find...). Here are the handy ones:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Play/Pause: space&lt;/li&gt;
&lt;li&gt;Fullscreen: F&lt;/li&gt;
&lt;li&gt;Leave fullscreen: Esc&lt;/li&gt;
&lt;li&gt;Next: N&lt;/li&gt;
&lt;li&gt;Previous: P&lt;/li&gt;
&lt;li&gt;Mute: M&lt;/li&gt;
&lt;li&gt;Increase subtitle delay: H&lt;/li&gt;
&lt;li&gt;Decrease subtitle delay: G&lt;/li&gt;
&lt;li&gt;Increase audio delay: K&lt;/li&gt;
&lt;li&gt;Decrease audio delay: J&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;There's a lot of configuration settings, so feel free to test the remaining ones and tweak your VLC :)&lt;/p&gt;&lt;p&gt;Copyright © 2007-2009 &lt;a href="http://eleves.ec-lille.fr/~couprieg"&gt;Geoffroy Couprie&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/LeFourre-toutAGeo-atom/~4/3WqMTe8_1UQ" height="1" width="1"/&gt;</content>
    
    

          <wfw:comment>http://eleves.ec-lille.fr/~couprieg/post/VLC-tricks%3A-get-comfortable#comment-form</wfw:comment>
      <wfw:commentRss>http://eleves.ec-lille.fr/~couprieg/feed/atom/comments/67</wfw:commentRss>
      <feedburner:origLink>http://eleves.ec-lille.fr/~couprieg/post/VLC-tricks%3A-get-comfortable</feedburner:origLink></entry>
    
  <entry>
    <title>Trojan.PWS.Legmir.AD / W32.Ahlem.A@mm: not really a virus for me</title>
    <link href="http://feedproxy.google.com/~r/LeFourre-toutAGeo-atom/~3/RIy7LJYWScY/-W32.Ahlem.A%40mm%3A-not-really-a-virus-for-me" rel="alternate" type="text/html" title="Trojan.PWS.Legmir.AD / W32.Ahlem.A@mm: not really a virus for me" />
    <id>urn:md5:6ffeece43ffb9e51f6edc93b1cb6a710</id>
    <updated>2009-08-23T21:18:00+01:00</updated>
    <author><name>Geoffroy Couprie</name></author>
        <dc:subject>General</dc:subject>
            
    <content type="html">    &lt;p&gt;Today, I got the scary message:&lt;/p&gt;

&lt;pre&gt;&lt;/pre&gt;

&lt;blockquote&gt;&lt;p&gt;Virus alert: Run antivirus software on your computer
This problem was caused by Trojan.PWS.Legmir.AD / W32.Ahlem.A@mm, a known computer virus.&lt;/p&gt;
&lt;p&gt;
To prevent this problem from occurring again, install and run an up-to-date antivirus program on your computer.&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/blockquote&gt;


&lt;p&gt;Oh, crap! I'm infected, what should I do? Quick, quick, run the AV. What, it didn't find anything? OHCRAPOHCRAPOHCRAP!&lt;/p&gt;


&lt;p&gt;Well, let's calm down and look up the issue... W32.Ahlem.A@mm is a mass-mailing worm written in VB. It sends itself to all the contacts in the Windows address book, with an e-mail and its attachment, "a.exe".&lt;/p&gt;


&lt;p&gt;Mmmmh, wait a minute... I create plenty of those a.exe, because I'm often too lazy to add a "-o name" to my gcc command line. Let's click on "View all problems this applies to"... Here it is, a small crashing program that I wrote, named "a.exe".&lt;/p&gt;


&lt;p&gt;&lt;strong&gt;*sounds of head smashing against the keyboard*&lt;/strong&gt;&lt;/p&gt;


&lt;p&gt;If anyone runs into the same problem, check if you're not a developer using gcc, it helps :)&lt;/p&gt;&lt;p&gt;Copyright © 2007-2009 &lt;a href="http://eleves.ec-lille.fr/~couprieg"&gt;Geoffroy Couprie&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/LeFourre-toutAGeo-atom/~4/RIy7LJYWScY" height="1" width="1"/&gt;</content>
    
    

          <wfw:comment>http://eleves.ec-lille.fr/~couprieg/post/Trojan.PWS.Legmir.AD-/-W32.Ahlem.A%40mm%3A-not-really-a-virus-for-me#comment-form</wfw:comment>
      <wfw:commentRss>http://eleves.ec-lille.fr/~couprieg/feed/atom/comments/65</wfw:commentRss>
      <feedburner:origLink>http://eleves.ec-lille.fr/~couprieg/post/Trojan.PWS.Legmir.AD-/-W32.Ahlem.A%40mm%3A-not-really-a-virus-for-me</feedburner:origLink></entry>
    
  <entry>
    <title>VLC tricks: customize your interface</title>
    <link href="http://feedproxy.google.com/~r/LeFourre-toutAGeo-atom/~3/R3zc6hLPNhc/VLC-tricks%3A-customize-your-interface" rel="alternate" type="text/html" title="VLC tricks: customize your interface" />
    <id>urn:md5:f73b80e4468be20cc576d652c8384e88</id>
    <updated>2009-08-20T22:20:00+01:00</updated>
    <author><name>Geoffroy Couprie</name></author>
        <dc:subject>VideoLAN</dc:subject>
            
    <content type="html">    &lt;p&gt;VLC media player is full of nice features, but the interface is a bit "geeky". It's minimalistic, grey... but you can change it!&lt;/p&gt;


&lt;h3&gt;Customizing Qt4&lt;/h3&gt;


&lt;h4&gt;Default profiles&lt;/h4&gt;


&lt;p&gt;In the Qt4 interface, there are a few different looks you can choose. Go to &lt;em&gt;Tools-&amp;gt;Preferences-&amp;gt;Interface Type-&amp;gt;Native-&amp;gt;Display mode&lt;/em&gt; and then select one of the following profiles:
&lt;img src="http://eleves.ec-lille.fr/~couprieg/images/.basic_s.jpg" alt="basic VLC interface" style="display:block; margin:0 auto;" title="Basic interface" /&gt;&lt;/p&gt;


&lt;p&gt;&lt;img src="http://eleves.ec-lille.fr/~couprieg/images/.complet_s.jpg" alt="Full VLC interface" style="display:block; margin:0 auto;" title="Full interface" /&gt;&lt;/p&gt;


&lt;p&gt;&lt;img src="http://eleves.ec-lille.fr/~couprieg/images/.minimal_s.jpg" alt="Minimal VLC interface" style="display:block; margin:0 auto;" title="Minimal interface" /&gt;&lt;/p&gt;


&lt;h4&gt;Make your own profiles&lt;/h4&gt;

&lt;p&gt;OK, that's not enough. You want more? Then go to &lt;em&gt;View-&amp;gt;Customize Interface...&lt;/em&gt; and you'll see the Qt customization interface:
&lt;img src="http://eleves.ec-lille.fr/~couprieg/images/.new_perso_m.jpg" alt="My interface personalization" style="display:block; margin:0 auto;" title="My interface personalization" /&gt;&lt;/p&gt;


&lt;p&gt;Go to &lt;em&gt;Select profile&lt;/em&gt;, name it like you want, and then choose what buttons will go in your interface. Here, I have removed some buttons from the "advanced controls" line, and added the frame-per-frame and snapshots buttons to the fullscreen controller.&lt;/p&gt;


&lt;p&gt;That's neat, but it's still that grey interface... Now take a look at the skins interface.&lt;/p&gt;


&lt;h3&gt;Skins&lt;/h3&gt;

&lt;p&gt;Go to &lt;em&gt;Tools-&amp;gt;Preferences-&amp;gt;Interface Type-&amp;gt;Skins&lt;/em&gt; and you'll have a new look for VLC! This theme you see is named "SubX", and was selected in a contest 2 months ago.&lt;/p&gt;


&lt;p&gt;&lt;img src="http://eleves.ec-lille.fr/~couprieg/images/.default_skin_m.jpg" alt="SubX VLC skin" style="display:block; margin:0 auto;" title="SubX VLC skin" /&gt;&lt;/p&gt;


&lt;p&gt;Do you like it? If not, you can use another skin. Download it from &lt;a href="http://www.videolan.org/vlc/skins.php" hreflang="en"&gt;videolan.org&lt;/a&gt; and save it in c:\Users\yourlogin\AppData\Roaming\vlc\skins then go to ''View-&amp;gt;Themes" and choose it. As an example, here is the Winamp theme:
&lt;img src="http://eleves.ec-lille.fr/~couprieg/images/.winamp_s.jpg" alt="VLC Winamp skin" style="display:block; margin:0 auto;" title="VLC Winamp skin" /&gt;&lt;/p&gt;


&lt;p&gt;There are a lot of skins to download and try! But if you're not pleased yet, you can create your own with the &lt;a href="http://www.videolan.org/vlc/skineditor.html" hreflang="en"&gt;VLC skin editor&lt;/a&gt;:
&lt;img src="http://eleves.ec-lille.fr/~couprieg/images/.skin_editor_m.jpg" alt="VLC Skin editor" style="display:block; margin:0 auto;" title="VLC Skin editor" /&gt;&lt;/p&gt;


&lt;p&gt;If you create a nice theme, feel free to send it to VideoLAN, we will add it to the list of downloadable skins :)&lt;/p&gt;&lt;p&gt;Copyright © 2007-2009 &lt;a href="http://eleves.ec-lille.fr/~couprieg"&gt;Geoffroy Couprie&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/LeFourre-toutAGeo-atom/~4/R3zc6hLPNhc" height="1" width="1"/&gt;</content>
    
    

          <wfw:comment>http://eleves.ec-lille.fr/~couprieg/post/VLC-tricks%3A-customize-your-interface#comment-form</wfw:comment>
      <wfw:commentRss>http://eleves.ec-lille.fr/~couprieg/feed/atom/comments/64</wfw:commentRss>
      <feedburner:origLink>http://eleves.ec-lille.fr/~couprieg/post/VLC-tricks%3A-customize-your-interface</feedburner:origLink></entry>
    
  <entry>
    <title>Bypass addslashes with UTF-8 characters</title>
    <link href="http://feedproxy.google.com/~r/LeFourre-toutAGeo-atom/~3/33jlrhfefLQ/Bypass-addslashes-with-UTF-8-characters" rel="alternate" type="text/html" title="Bypass addslashes with UTF-8 characters" />
    <id>urn:md5:dcf955e1edfe61c4b3b04358391dfb79</id>
    <updated>2009-08-12T22:59:00+01:00</updated>
    <author><name>Geoffroy Couprie</name></author>
        <dc:subject>Sécurité</dc:subject>
        <dc:subject>PHP</dc:subject><dc:subject>security</dc:subject><dc:subject>SQL</dc:subject>    
    <content type="html">    &lt;p&gt;Yes, I know, that's not something new. &lt;a href="http://shiflett.org/blog/2006/jan/addslashes-versus-mysql-real-escape-string" hreflang="en"&gt;Chris Shiflett&lt;/a&gt; already explained how you can use the backslash with the previous character to create a new character, and leave the quote unharmed. But that's not really satisfying, because you need MySQL to use some multibyte character sets like GBK, SJIS or BIG5.&lt;/p&gt;


&lt;p&gt;What I present here seems new (no trace of it on the Internet) but I won't be surprised if someone already thought about this. In short: you can send a quote through addslashes by "swallowing" the backslash with an UTF-8 character (don't be too happy, it's not working in all cases).&lt;/p&gt;


&lt;h3&gt;Multibyte characters?&lt;/h3&gt;

&lt;p&gt;From the &lt;a href="http://www.ietf.org/rfc/rfc3629.txt" hreflang="en"&gt;rfc 3629&lt;/a&gt; (UTF-8):&lt;/p&gt;


&lt;blockquote&gt;&lt;p&gt;In a sequence of n octets, n&amp;gt;1, the initial octet has the n higher-order bits set to 1, followed by a bit set to 0.  The remaining bit(s) of that octet contain bits from the number of the character to be encoded.&lt;/p&gt;&lt;/blockquote&gt;


&lt;p&gt;Here is a table of what it means:&lt;/p&gt;

&lt;pre&gt;
   Char. number range  |        UTF-8 octet sequence
      (hexadecimal)    |              (binary)
   --------------------+---------------------------------------------
   0000 0000-0000 007F | 0xxxxxxx
   0000 0080-0000 07FF | 110xxxxx 10xxxxxx
   0000 0800-0000 FFFF | 1110xxxx 10xxxxxx 10xxxxxx
   0001 0000-0010 FFFF | 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx

&lt;/pre&gt;


&lt;p&gt;So, the first character indicates how many bytes after it are part of the UTF-8 character. This first character can be anything from C0 to FF. Now, imagine what happens when a quote (0x27) follows, say, 0xC8. If the string passes through addslashes, it becomes 0xC8C527 (È\' if you can read this). Ok, there's still a backslash, now what? I see that some people are doing &lt;em&gt;utf8_decode(addslashes($string))&lt;/em&gt; (instead of &lt;em&gt;addslashes(utf8_decode($string))&lt;/em&gt; which is much more common). What happens now? utf8_decode happily destroys the backslash and tells us that it translates to ?' with ? meaning that it encountered an invalid character. It works with nearly all bytes from C0 to FF (and you can delete more than one character like that).&lt;/p&gt;


&lt;h3&gt;What can I do with that?&lt;/h3&gt;

&lt;p&gt;Not much: you can do a straightforward SQL injection only if you find &lt;em&gt;utf8_decode(addslashes&lt;/em&gt; somewhere (you will find it, I have faith in you and in Google code search).&lt;/p&gt;


&lt;p&gt;Now, If you want to work a bit more, There's something else you can do. If there's no &lt;em&gt;utf8_decode&lt;/em&gt;, you can still send your 0xC8C527 to MySQL. This will not be an SQL injection, but you will have a È' somewhere in the database waiting to be used in a second stage SQL injection (I told you you would have to work). Fun fact: &lt;strong&gt;mysql_real_escape_string doesn't seem to protect you there&lt;/strong&gt;. I have more tests to do, but &lt;strong&gt;it works with Apache, PHP and MySQL in default configuration&lt;/strong&gt;.&lt;/p&gt;


&lt;h3&gt;Conclusion&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;STOP SAYING THAT ADDSLASHES PROTECTS YOU&lt;/strong&gt;. It will, in most cases. But most developers won't know about the cases where it can't help.&lt;/li&gt;
&lt;li&gt;You have to understand what is UTF-8, what are the charsets, etc. Read at least &lt;a href="http://joelonsoftware.com/articles/Unicode.html" hreflang="en"&gt;The Absolute Minimum Every Software Developer Absolutely, Positively Must Know About Unicode and Character Sets (No Excuses!)&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Use prepared statements to (nearly) stop worrying about quotes Don't stop worrying about user input though).&lt;/li&gt;
&lt;li&gt;This is not the exploit of the year, but I'm pretty happy with my nice little bug :)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;UPDATE:&lt;/strong&gt; it looks like Eduardo Vela Nava &amp;amp;and David Lindsay discussed this bug at &lt;a href="http://www.blackhat.com/presentations/bh-usa-09/VELANAVA/BHUSA09-VelaNava-FavoriteXSS-SLIDES.pdf" hreflang="en"&gt;BlackHat USA 09&lt;/a&gt;, but for XSS filters. Sorry guys, I wasn't trying to steal your bug: I wasn't at BlackHat and I didn't know someone did an exposé about it. At the time of the presentation, my code was already exploiting this type of bug, so I'm pretty sure I didn't copy it :P&lt;/p&gt;&lt;p&gt;Copyright © 2007-2009 &lt;a href="http://eleves.ec-lille.fr/~couprieg"&gt;Geoffroy Couprie&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/LeFourre-toutAGeo-atom/~4/33jlrhfefLQ" height="1" width="1"/&gt;</content>
    
    

          <wfw:comment>http://eleves.ec-lille.fr/~couprieg/post/Bypass-addslashes-with-UTF-8-characters#comment-form</wfw:comment>
      <wfw:commentRss>http://eleves.ec-lille.fr/~couprieg/feed/atom/comments/62</wfw:commentRss>
      <feedburner:origLink>http://eleves.ec-lille.fr/~couprieg/post/Bypass-addslashes-with-UTF-8-characters</feedburner:origLink></entry>
    
  <entry>
    <title>Authenticode, code signing, c'est quoi?</title>
    <link href="http://feedproxy.google.com/~r/LeFourre-toutAGeo-atom/~3/Fs_Z3OnMSdk/Authenticode_intro" rel="alternate" type="text/html" title="Authenticode, code signing, c'est quoi?" />
    <id>urn:md5:3adfd7c5fed4d59f2a2d8b84354ad50f</id>
    <updated>2009-07-28T18:34:00+01:00</updated>
    <author><name>Geoffroy Couprie</name></author>
        <dc:subject>Développement</dc:subject>
            
    <content type="html">    &lt;p&gt;Allez, on va encore parler de ces systèmes qui font hurler les journalistes incompétents qui recopient les messages de développeurs qui ne savent pas lire la doc. Cette fois, c'est&lt;a href="http://msdn.microsoft.com/en-us/library/ms537359%28VS.85%29.aspx" hreflang="en"&gt; Authenticode&lt;/a&gt;, la signature des programmes et drivers qui nous intéresse. Aussi, je ne parlerai que de l'utilisation sous Windows. Tant pis pour les utilisateurs d'Iphone (et ils ont suffisamment de doc qui traîne sur le net).&lt;/p&gt;


&lt;h3&gt;En gros, c'est quoi?&lt;/h3&gt;

&lt;p&gt;C'est un système d'&lt;strong&gt;authentification&lt;/strong&gt;. Le terme est important, car c'est ce que les journalistes n'ont pas compris. Signer un fichier, c'est utiliser un certificat (oui, les mêmes que SSL, vous voyez, vous connaissez!), pour indiquer que le fichier vient bien de vous. Comme pour SSL, les certificats sont signés par des autorités de certification, comme Thawte ou Verisign. Ce sont elles qui vous assurent que le certificat correspond bien à l'identité affichée.&lt;/p&gt;


&lt;p&gt;Avec les certificats, on peut signer tout et n'importe quoi. On peut par exemple signer des mails, des PDF ou des documents Office. Ici, le cas qui nous intéresse, c'est les programmes, DLLs, drivers, et extensions Internet Explorer. Au lancement du programme, Windows vérifie la signature, et vous indique si elle est présente (avec un gros warning jaune en cas d'absence), si l'éditeur est connu (en gros, si, le certificat de l'éditeur est signé par une CA connue), si le certificat a expiré, et si la signature est valide. Vous verrez la même chose à l'installation de drivers, avec un warning rouge si le driver n'est pas signé (mode kernel, faire gaffe, toussa).&lt;/p&gt;


&lt;h3&gt;Quelle utilité?&lt;/h3&gt;

&lt;p&gt;Tout d'abord, la démystification: il s'agit d'authentification, pas de sécurité. Si quelqu'un écrit un virus et le signe avec un certificat venant de Verisign, votre PC ne dira rien, et ce sera quand même un virus. De plus, c'est pas vraiment boulet-proof: monsieur Toulemonde (oui, le nom existe) aura tendance à cliquer ok même avec le warning.&lt;/p&gt;


&lt;h4&gt;Les Software Restrictions policies&lt;/h4&gt;

&lt;p&gt;Là où ça devient marrant,c'est quand vous utilisez des SRP pour embêter vos utilisateurs. Les SRP vous permette de choisir quels programmes vos utilisateurs peuvent ou ne peuvent pas exécuter. Avec des signatures, vous pouvez carrément autoriser certains éditeurs de logiciels et pas d'autres (par exemple, vous pourrez autoriser Adobe et exposer vos utilisateurs aux toutes dernières failles dans Flash et Reader). Avec un peu de configuration, seuls les programmes signés avec un certificat connu pourront être lancés. Il est même possible de signer vous-mêmes des programmes non signés que vous avez testés et auxquels vous faites confiance.&lt;/p&gt;


&lt;h4&gt;Les drivers&lt;/h4&gt;

&lt;p&gt;Tout le monde (ou au moins, ceux qui sont un peu renseignés) sait qu'un driver, ça s'exécute en mode kernel, et donc que ça a beaucoup plus de privilèges qu'un programme normal. Donc, quand vous installez des drivers, c'est pas mal de savoir à qui vous faites confiance. C'est pour ça que maintenant, Windows demande des drivers signés. Encore une fois, ça ne vous protège pas de quelqu'un qui crée une signature pour un driver rootkit.&lt;/p&gt;


&lt;h4&gt;Side by side assemblies&lt;/h4&gt;

&lt;p&gt;Bon, ça, c'est un cas très particulier. Pour résoudre le problème de "DLL hell", Microsoft a mis en place un système un peu complexe. En gros, avec SxS, les DLLs sont installées dans C:\Windows\winsxs. Elles sont accompagnées de fichiers XML les décrivant: nom, n° de version, éditeur, signature... Pour pouvoir les installer, elles doivent être signées (hum, bon, note pour moi-même: faire un article complet sur SxS plus tard).&lt;/p&gt;


&lt;h4&gt;Windows CE&lt;/h4&gt;

&lt;p&gt;Là, c'est intéressant pour une utilisation en entreprise: vous pouvez refuser l'installation de programmes non signés sur, par exemple, le téléphone de votre patron (on va rire). C'est une méthode très efficace, comme les SRP: vous choisissez quels programmes peuvent être installés, et lesquel peuvent être lancés.&lt;/p&gt;


&lt;h3&gt;Les problèmes&lt;/h3&gt;


&lt;p&gt;Il y a pas mal de problèmes avec le code signé:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;D'abord, comme je l'ai dit, c'est pas boulet-proof. Vous pourrez jamais empêcher quelqu'un de cliquer sur OK quand il y a un gros message rouge clignotant. Faut avoir un réseau ou une machine qu'on est seul à administrer pour que ça ait un effet.&lt;/li&gt;
&lt;li&gt;Pareil pour les téléphones sous WinMo. Mais là, on va voir ce que ça donne avec la Marketplace que Microsoft met en place. Ils utiliseront probablement des certificats pour identifier les développeurs, comme pour l'AppStore. Avec ça, on verra peut-être arriver des téléphones qui n'accepteront que les programme de Marketplace. A quand le jailbreak pour Windows Mobile?&lt;/li&gt;
&lt;li&gt;Pour les drivers, de nombreux fabricants n'ont pas voulu payer les certificats...&lt;/li&gt;
&lt;li&gt;Je le répète: &lt;strong&gt;rien n'empêche un développeur de virus d'acheter un certificat.&lt;/strong&gt; Il y a des chances qu'il soit facilement identifiable grâce au certificat, mais il y a beaucoup trop d'autorités de certification reconnues par défaut par Windows, et il se peut que certaines ne soient pas très regardantes quant à l'identité de la personne demandant un certificat.&lt;/li&gt;
&lt;li&gt;Il est possible d'utiliser MD5 pour la signature, et &lt;a href="http://blog.didierstevens.com/2009/01/17/playing-with-authenticode-and-md5-collisions/" hreflang="en"&gt;c'est mal&lt;/a&gt;&amp;nbsp;!&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;Copyright © 2007-2009 &lt;a href="http://eleves.ec-lille.fr/~couprieg"&gt;Geoffroy Couprie&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/LeFourre-toutAGeo-atom/~4/Fs_Z3OnMSdk" height="1" width="1"/&gt;</content>
    
    

          <wfw:comment>http://eleves.ec-lille.fr/~couprieg/post/Authenticode_intro#comment-form</wfw:comment>
      <wfw:commentRss>http://eleves.ec-lille.fr/~couprieg/feed/atom/comments/58</wfw:commentRss>
      <feedburner:origLink>http://eleves.ec-lille.fr/~couprieg/post/Authenticode_intro</feedburner:origLink></entry>
    
  <entry>
    <title>UAC fail... ou pas?</title>
    <link href="http://feedproxy.google.com/~r/LeFourre-toutAGeo-atom/~3/eVmwBxp172Q/UAC-fail-ou-pas" rel="alternate" type="text/html" title="UAC fail... ou pas?" />
    <id>urn:md5:8477d0fa62818e79b6d04c0d7c1066a0</id>
    <updated>2009-06-23T11:27:00+01:00</updated>
    <author><name>Geoffroy Couprie</name></author>
        <dc:subject>Microsoft</dc:subject>
        <dc:subject>security</dc:subject><dc:subject>Windows</dc:subject>    
    <content type="html">    &lt;p&gt;Ca y est,&lt;a href="http://www.pretentiousname.com/misc/win7_uac_whitelist2.html" hreflang="en"&gt; le code source pour l'UAC injection est distribué&lt;/a&gt;, tout le monde se plaint, on a peur des virus autoélevés sous win, ouiiiin, ouiiin. Sauf moi! Parce que moi, contrairement à une majorité de gens qui se promènent sur internet, je vérifie un minimum avant de dire des sottises :P&lt;/p&gt;


&lt;h2&gt;L'UAC, pourquoi?&lt;/h2&gt;

&lt;p&gt;L'UAC (User Account Control) est un mécanisme introduit dans Windows Vista, qui sert à demander l'autorisation à l'utilisateur avant d'effectuer une action requérant des privilèges d'administrateur. Pourquoi créer un tel système, alors qu'on pouvait déjà utiliser Windows en standard user, sans droit admin, et se connecter en admin uniquement lorsqu'on en a besoin? &lt;strong&gt;PARCE QUE LES DEVELOPPEURS D'APPLICATIONS POUR WINDOWS SONT DES BOULETS&lt;/strong&gt;.&lt;/p&gt;


&lt;p&gt;A l'époque de Windows XP, de nombreuses applications avaient besoin de droits administrateur pour fonctionner, pour diverses raisons: écriture des fichiers de configuration dans Program Files, lecture/écriture de clés registre spéciales, modification de paramètres windows discrète... Du coup, pour que la plupart des applications fonctionnent, il fallait tourner constamment en administrateur. Là, je vois les manchots qui se gaussent, en disant que sous linux, y a pas ce problème... &amp;lt;troll&amp;gt;A l'époque où ce problème a été rencontré pour la première fois, personne n'utilisait Linux en desktop de toute façon&amp;lt;/troll&amp;gt;. Enfin bref, pour Vista, Microsoft a décidé que ça commençait à bien faire, et que les développeurs devraient apprendre à se débrouiller sans les droits admin. Et la méthode choisie pour les forcer à changer leurs applications, c'est l'UAC. Ils ont supposé qu'en mettant plein de warnings ennuyeux, ils allaient pousser les développeurs à se prendre en main. Bien sûr, ça a provoqué un tollé, les développeurs se sont mis à blâmer Vista au lieu de se remettre en question, et même les entreprises "sérieuses" (avec de très gros guillemets) comme les créateurs d'antivirus se sont mises à conseiller aux gens de désactiver l'UAC... Bilan quelques années plus tard: les utilisateurs ne sont pas contents, mais la plupart des développeurs ont fini par se dire que demander à joe six pack de désactiver l'UAC, c'était déjà trop compliqué, donc ils ont du modifier leurs applications. C'est pas trop tôt!&lt;/p&gt;


&lt;h2&gt;L'UAC et la sécurité&lt;/h2&gt;

&lt;p&gt;Bon, alors, pourquoi, dans ce cas, a-t-on entendu pas mal de gens, dont des bloggers de chez Microsoft, dire que l'UAC était un mécanisme de sécurité? Parce que, eux aussi, ce sont des boulets! Mais là, c'est preque excusable, car les systèmes de sécu présents dans Windows sont assez complexes à comprendre, peut-être trop pour des gens qui font de la comm' et du marketing (10 contre 1 que ce sont eux qui ont choisi le bouclier pour l'icône). L'UAC n'apporte rien niveau sécu: l'autoélévation par injection ne sert à rien, quand il suffit de demander l'autorisation à joe six pack avec un prompt... Il y a bien &lt;a href="http://msdn.microsoft.com/en-us/library/ms644950%28VS.85%29.aspx" hreflang="en"&gt;l'UIPI&lt;/a&gt;, qui permet d'empêcher un programme qui tourne en low integrity d'envoyer des messages à un programme en medium ou high integrity, pour éviter les &lt;em&gt;shatter attacks&lt;/em&gt;, mais c'est pas le moyen le plus propre et efficace de le faire. En gros, ne croyez pas que l'UAC va vous protéger. Même si vous la réglez sur le niveau maximum, ça reste un système mis en place pour empêcher les développeurs de se planter, pas pour éviter qu'un virus s'amuse sur votre machine (même sans être élevé, le virus pourra toujours se connecter à un botnet, lire vos fichiers, etc.).&lt;/p&gt;


&lt;p&gt;La véritable amélioration apportée niveau sécurité par l'UAC, c'est que maintenant, beaucoup d'applications peuvent tourner sans droits admin, et peuvent donc être restreintes plus facilement, réduisant ainsi la surface d'attaque.&lt;/p&gt;


&lt;h2&gt;Comment se protéger, alors?&lt;/h2&gt;

&lt;p&gt;Il y a des systèmes très sympas, qui marchent bien, comme les &lt;em&gt;Group Policies&lt;/em&gt; et les &lt;em&gt;Software Restriction Policies&lt;/em&gt;, pour restreindre les applications non autorisées. Avoir un compte utilisateur ne faisant pas partie du groupe Administrateurs peut aider aussi. Vous pouvez utilisre des logiciels comme &lt;a href="http://eleves.ec-lille.fr/~couprieg/post/www.sandboxie.com" hreflang="en"&gt;Sandboxie&lt;/a&gt;.&lt;/p&gt;


&lt;p&gt;Encore une fois, &lt;strong&gt;ne croyez pas tout ce qu'on vous dit sur Internet&lt;/strong&gt;. De nombreux bloggers se disent professionnels, mais bien souvent, leur professionnalisme consiste à être le premier à sortir un article, pas à vérifier ses sources. Si en plus, ils peuvent déclencher un bon gros troll, ça fera du traffic sur leur site, donc ils seront contents.&lt;/p&gt;&lt;p&gt;Copyright © 2007-2009 &lt;a href="http://eleves.ec-lille.fr/~couprieg"&gt;Geoffroy Couprie&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/LeFourre-toutAGeo-atom/~4/eVmwBxp172Q" height="1" width="1"/&gt;</content>
    
    

          <wfw:comment>http://eleves.ec-lille.fr/~couprieg/post/UAC-fail-ou-pas#comment-form</wfw:comment>
      <wfw:commentRss>http://eleves.ec-lille.fr/~couprieg/feed/atom/comments/56</wfw:commentRss>
      <feedburner:origLink>http://eleves.ec-lille.fr/~couprieg/post/UAC-fail-ou-pas</feedburner:origLink></entry>
    
  <entry>
    <title>Windows Seven sans Internet explorer: on est pas sortis de l'auberge</title>
    <link href="http://feedproxy.google.com/~r/LeFourre-toutAGeo-atom/~3/NDTg4oFKsc0/Windows-Seven-sans-Internet-Explorer" rel="alternate" type="text/html" title="Windows Seven sans Internet explorer: on est pas sortis de l'auberge" />
    <id>urn:md5:1d59c1388a18b535fa61baf32dae2209</id>
    <updated>2009-06-12T15:40:00+01:00</updated>
    <author><name>Geoffroy Couprie</name></author>
        <dc:subject>Web</dc:subject>
        <dc:subject>Browsers</dc:subject><dc:subject>security</dc:subject>    
    <content type="html">    &lt;p&gt;Comme on le sait, Il y a eu une grande bataille autour du monopole de Microsoft, qui installe Internet explorer de base avec son OS. Suite à ça, Microsoft a décidé que pour toutes les versions de Windows Seven vendues en Europe, &lt;a href="http://arstechnica.com/microsoft/news/2009/06/windows-7-to-be-shipped-in-europe-sans-internet-explorer.ars" hreflang="en"&gt;il n'y aurait aucun navigateur préinstallé&lt;/a&gt;. Bah oué, si vous voulez télécharger Firefox avec votre Seven tout juste installé, vous ne pouvez pas... Bon, en fait, si, les constructeurs auront le choix du navigateur à installer.&lt;/p&gt;


&lt;p&gt;Maintenant, il y a quelque chose qui m'inquiète un peu... Cette info signifie que des constructeurs vont préinstaller Chrome, Firefox ou Opera. Bah oui, c'est quand même le but du lobbying de Mozilla et Google auprès de l'Union Européenne. Le problème, c'est que Firefox ou Opera installés sur beaucoup plus de machines, ça va pousser des gens mal intentionnés à chercher beaucoup plus d'exploits dans ces navigateurs. Heureusement, avec Windows, on peut faire tourner les navigateurs dans une sandbox, pour réduire la surface attaquable en cas de pourrissage du navigateur. Mais c'est là que le bât blesse.&lt;/p&gt;


&lt;p&gt;Internet explorer utilise le "protected mode", qui permet de faire tourner le processus chargé de l'analyse des pages web avec beaucoup moins de droits (en le faisant tourner en "low integrity"). De même, Chrome fournit un système de sandbox complet. Ces fonctions permettent de diminuer les accès du processus aux autres processus, à l'OS, etc. L'utilisateur est ainsi mieux protégé en cas de faille dans le navigateur (il y aura de toute façon des failles, quel que soit le browser, donc vaut mieux protéger derrière).&lt;/p&gt;


&lt;p&gt;Et pour Firefox et Opera? Rien. J'ai pas beaucoup d'infos à propos d'Opera, mais en tout cas, pour Firefox, je sais que &lt;a href="https://bugzilla.mozilla.org/show_bug.cgi?id=266533" hreflang="en"&gt;ça fait plus de quatre ans&lt;/a&gt; qu'ils auraient du se mettre au boulot de ce côté là. Ils ont même été &lt;a href="http://arstechnica.com/microsoft/news/2006/10/5508.ars" hreflang="en"&gt;invités à Redmond&lt;/a&gt; pour discuter de l'intégration de Firefox dans Vista. Et maintenant? Toujours rien. Firefox peut tourner en low IL, certes, mais ça ne va pas tellement plus loin. Bien sûr, c'est plus facile de faire comme Chrome, et tout réécrire en prévoyant la sandbox, plutôt que modifier du vieux code. Mais l'équipe d'Internet explorer l'a fait pour IE 8. Alors pourquoi pas Mozilla?&lt;/p&gt;


&lt;p&gt;En résumé,  à la sortie de Windows Seven, si vous voulez éviter les problèmes, utilisez Internet Explorer 8 ou Chrome (en espérant que d'ici là, on aura NoScript partout).&lt;/p&gt;&lt;p&gt;Copyright © 2007-2009 &lt;a href="http://eleves.ec-lille.fr/~couprieg"&gt;Geoffroy Couprie&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/LeFourre-toutAGeo-atom/~4/NDTg4oFKsc0" height="1" width="1"/&gt;</content>
    
    

          <wfw:comment>http://eleves.ec-lille.fr/~couprieg/post/Windows-Seven-sans-Internet-Explorer#comment-form</wfw:comment>
      <wfw:commentRss>http://eleves.ec-lille.fr/~couprieg/feed/atom/comments/55</wfw:commentRss>
      <feedburner:origLink>http://eleves.ec-lille.fr/~couprieg/post/Windows-Seven-sans-Internet-Explorer</feedburner:origLink></entry>
    
  <entry>
    <title>Boucher les trous du htaccess passoire</title>
    <link href="http://feedproxy.google.com/~r/LeFourre-toutAGeo-atom/~3/IBAO3DpadOY/57-boucher-les-trous-du-htaccess-passoire" rel="alternate" type="text/html" title="Boucher les trous du htaccess passoire" />
    <id>urn:md5:2cad15d4f3140c00463e80d40da6e77d</id>
    <updated>2009-05-19T01:20:00+00:00</updated>
    <author><name>Geoffroy Couprie</name></author>
        <dc:subject>General</dc:subject>
            
    <content type="html">    &lt;p&gt;Il n'y a pas que Limit pour protéger du contenu dans un htaccess. Il y a aussi LimitExcept. Pourquoi? &lt;a href="http://www.ghostsinthestack.org/article-26-bypasser-les-htaccess-avec-limit.html" hreflang="fr"&gt;Parce que&lt;/a&gt;. L'article a plus d'un an, oui. Et pourtant, ça marche encore...&lt;/p&gt;


&lt;h4&gt;La faille&lt;/h4&gt;


&lt;p&gt;Vous venez de faire votre site web. Trop cool, vous avez votre espace à vous. Mais vous voulez peut-être une partie privée, où vous pourrez stocker, euuuuh, ce que vous voulez. Vous avez consulté les tutoriels sur internet (enfin, les premiers qui apparaissent sur google quoi...), et vous obtenez à peu près ceci:&lt;/p&gt;


&lt;p&gt;&lt;code&gt;AuthType Basic&lt;/code&gt;&lt;/p&gt;


&lt;p&gt;&lt;code&gt;AuthName "Accès restreint"&lt;/code&gt;&lt;/p&gt;


&lt;p&gt;&lt;code&gt;AuthUserFile /chemin/vers/.htpasswd&lt;/code&gt;&lt;/p&gt;


&lt;p&gt;&lt;code&gt;AuthGroupFile /dev/null&lt;/code&gt;&lt;/p&gt;


&lt;p&gt;&lt;code&gt;&amp;lt;Limit GET POST&amp;gt;&lt;/code&gt;&lt;/p&gt;


&lt;p&gt;&lt;code&gt;Require valid-user&lt;/code&gt;&lt;/p&gt;


&lt;p&gt;&lt;code&gt;&amp;lt;/Limit&amp;gt;&lt;/code&gt;&lt;/p&gt;


&lt;p&gt;(ceci étant dit, si votre .htaccess n'est pas dans le dossier restreint, vous pouvez jouer avec Location). Vous êtes content, vous avez restreint toutes les requêtes vers votre dossier privé. Toutes? Non! Un énorme ensemble (dénombrable) de requêtes peut encore passer: il suffit de mettre une suite de caractères sans signification à la place de GET ou POST, et Apache interprétera ça comme un GET. Et devinez quoi? Les règles de Limit ne s'appliquent qu'aux requêtes indiquées, donc GET ou POST ici. Si quelqu'un de (forcément) mal intentionné cherche à rentrer sur votre site, il n'aura qu'à envoyer "POUET /partie_privee/" au lieu de "GET /partie_privee/",et n'aura aucun mal à naviguer dans votre dossier et consulter tout votre... enfin bref.&lt;/p&gt;


&lt;h4&gt;La solution&lt;/h4&gt;


&lt;p&gt;Utilisez &lt;strong&gt;LimitExcept&lt;/strong&gt;. Cette directive Apache applique les règles à toutes les requêtes sauf celles mentionnées. Donc, pour protéger votre dossier, il vous suffit d'écrire:&lt;/p&gt;


&lt;p&gt;&lt;code&gt;AuthType Basic&lt;/code&gt;&lt;/p&gt;


&lt;p&gt;&lt;code&gt;AuthName "Accès restreint"&lt;/code&gt;&lt;/p&gt;


&lt;p&gt;&lt;code&gt;AuthUserFile /chemin/vers/.htpasswd&lt;/code&gt;&lt;/p&gt;


&lt;p&gt;&lt;code&gt;AuthGroupFile /dev/null&lt;/code&gt;&lt;/p&gt;


&lt;p&gt;&lt;code&gt;&amp;lt;LimitExcept GET POST&amp;gt;&lt;/code&gt;&lt;/p&gt;


&lt;p&gt;&lt;code&gt;Deny from all&lt;/code&gt;&lt;/p&gt;


&lt;p&gt;&lt;code&gt;&amp;lt;/LimitExcept&amp;gt;&lt;/code&gt;&lt;/p&gt;


&lt;p&gt;&lt;code&gt;&lt;/code&gt;&lt;/p&gt;


&lt;p&gt;&lt;code&gt;&amp;lt;Limit GET POST&amp;gt;&lt;/code&gt;&lt;/p&gt;


&lt;p&gt;&lt;code&gt;Require valid-user&lt;/code&gt;&lt;/p&gt;


&lt;p&gt;&lt;code&gt;&amp;lt;/Limit&amp;gt;&lt;/code&gt;&lt;/p&gt;


&lt;p&gt;Et voilà! Ce htaccess enverra bouler ceux qui ne font pas des requêtes correctes.&lt;/p&gt;


&lt;h4&gt;Bon, y avait plus simple&lt;/h4&gt;


&lt;p&gt;Si vous mettez le htaccess directement dans le dossier concerné, au lieu de jouer avec Location, il suffit de mettre "require valid-user" sans s'embêter avec Limit, et toutes les requêtes devront être authentifiées.&lt;/p&gt;



&lt;p&gt;&lt;em&gt;Note: le Geo cité sur la page de GITS, c'est pas moi. Raaah, les collisions de pseudos...&lt;/em&gt;&lt;/p&gt;&lt;p&gt;Copyright © 2007-2009 &lt;a href="http://eleves.ec-lille.fr/~couprieg"&gt;Geoffroy Couprie&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/LeFourre-toutAGeo-atom/~4/IBAO3DpadOY" height="1" width="1"/&gt;</content>
    
    

          <wfw:comment>http://eleves.ec-lille.fr/~couprieg/post/2009/05/19/57-boucher-les-trous-du-htaccess-passoire#comment-form</wfw:comment>
      <wfw:commentRss>http://eleves.ec-lille.fr/~couprieg/feed/atom/comments/53</wfw:commentRss>
      <feedburner:origLink>http://eleves.ec-lille.fr/~couprieg/post/2009/05/19/57-boucher-les-trous-du-htaccess-passoire</feedburner:origLink></entry>
    
  <entry>
    <title>DxVA in VLC!</title>
    <link href="http://feedproxy.google.com/~r/LeFourre-toutAGeo-atom/~3/fHZw1T8JkS8/dxva-in-vlc" rel="alternate" type="text/html" title="DxVA in VLC!" />
    <id>urn:md5:d2319a0920bb7b36cced308e01b7bc4c</id>
    <updated>2009-05-04T01:24:00+00:00</updated>
    <author><name>Geoffroy Couprie</name></author>
        <dc:subject>VideoLAN</dc:subject>
            
    <content type="html">    &lt;p&gt;I'm doing again a Google Summer of Code, and this time, I'll work on DxVA integration in VLC: decoding MPEG2 or H264 with the graphic card! This plugin will reduce the load on the CPU and speed up decoding. It looks like I'll have to see lots of HD videos this summer, "for testing purpose" 0:-)&lt;/p&gt;&lt;p&gt;Copyright © 2007-2009 &lt;a href="http://eleves.ec-lille.fr/~couprieg"&gt;Geoffroy Couprie&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/LeFourre-toutAGeo-atom/~4/fHZw1T8JkS8" height="1" width="1"/&gt;</content>
    
    

          <wfw:comment>http://eleves.ec-lille.fr/~couprieg/post/dxva-in-vlc#comment-form</wfw:comment>
      <wfw:commentRss>http://eleves.ec-lille.fr/~couprieg/feed/atom/comments/52</wfw:commentRss>
      <feedburner:origLink>http://eleves.ec-lille.fr/~couprieg/post/dxva-in-vlc</feedburner:origLink></entry>
    
  <entry>
    <title>VLC tricks: Lua playlist</title>
    <link href="http://feedproxy.google.com/~r/LeFourre-toutAGeo-atom/~3/aOXF_4pJRzY/55-vlc-tricks-lua-playlist" rel="alternate" type="text/html" title="VLC tricks: Lua playlist" />
    <id>urn:md5:1eec0070b59139a7c4cf4a313a6dd217</id>
    <updated>2009-04-11T19:33:00+00:00</updated>
    <author><name>Geoffroy Couprie</name></author>
        <dc:subject>VideoLAN</dc:subject>
            
    <content type="html">    &lt;h3&gt;Try it!&lt;/h3&gt;
&lt;p&gt;You certainly know that VLC media player can play your videos and musics if you make it open your file. But what happens when you try to open a Google Video or Youtube webpage? If you don't know, try it! Cool, huh? And now, I'll show you how to do it for other video websites, using the Lua interpreter embedded in VLC.&lt;/p&gt;
&lt;p&gt;In your VLC installation directory, you will find the subdirectory lua/playlist. In this directory, you will find the Lua scripts responsible for finding the video content in the website page.&lt;/p&gt;
&lt;h3&gt;Create the Script&lt;/h3&gt;
&lt;p&gt;I chose &lt;a href="http://www.koreus.com"&gt;Koreus&lt;/a&gt; to do my script, because there's a great deal of funny and weird videos, like &lt;a href="http://www.koreus.com/video/tortue-pigeon.html"&gt;this one&lt;/a&gt; :p&lt;/p&gt;
&lt;p&gt;First, create koreus.lua in this directory. Your file must contain two functions: probe and parse.&lt;/p&gt;
&lt;h4&gt;The probe function&lt;/h4&gt;
&lt;p&gt;Probe tests if the website is the good one and if it's the URL of a video. Here is the small code I wrote, for an URL like http://www.koreus.com/video/pouet.html :&lt;/p&gt;
&lt;p&gt;&lt;code&gt;-- Probe function.&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;code&gt;function probe()&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;code&gt;    if vlc.access ~= "http" then&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;code&gt;        return false&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;code&gt;    end&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;code&gt;    koreus_site = string.match( vlc.path, "koreus" )&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;code&gt;    if not koreus_site then&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;code&gt;        return false&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;code&gt;    end&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;code&gt;    return (  string.match( vlc.path, "video" )  )&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;code&gt;end&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;That's really simple: just a test, to know if it's HTTP, on a koreus website, containing video in the url, you return true if you found what you want.&lt;/p&gt;
&lt;h4&gt;The parse function&lt;/h4&gt;
&lt;p&gt;Parse looks into the HTML code, finds the metadata and the video url, and send it to VLC media player. That's a bit more code, but nothing really hard.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;-- Parse function.&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;code&gt;function parse()&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;code&gt;	while true do&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;code&gt;		line = vlc.readline()&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;code&gt;		if not line then break end&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;code&gt;		if string.match( line, "&amp;lt;meta name=\"title\"" ) then&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;code&gt;			_,_,name = string.find( line, "content=\"(.-)\"" )&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;code&gt;		end&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;code&gt;		if string.match( line, "&amp;lt;meta name=\"description\"" ) then&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;code&gt;			_,_,description = string.find( line, "content=\"(.-)\"" )&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;code&gt;		end&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;code&gt;		if string.match( line, "&amp;lt;meta name=\"author\"" ) then&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;code&gt;			_,_,artist = string.find( line, "content=\"(.-)\"" )&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;code&gt;		end&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;code&gt;		if string.match( line, "link rel=\"image_src\"" ) then&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;code&gt;			_,_,arturl = string.find( line, "href=\"(.-)\"" )&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;code&gt;		end&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;code&gt;		if string.match( line, "videoDiv\"%)%.innerHTML" ) then&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;code&gt;			vid_url = string.match( line, '(http://media%d?%.koreus%.com/%d+/%d+/[%w-]*%.mp4)' )&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;code&gt;			if vid_url then&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;code&gt;				return { { path = vid_url; name = name; description = description; artist = artist; arturl = arturl } }&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;code&gt;			end&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;code&gt;		end&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;code&gt;	end&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;code&gt;end&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Yep, if you look into the source of a koreus webpage, you see that they send an mp4 file to their flash player. You can also get the flv and play it in VLC, but I prefer mp4. About the small regexp: we loo, for a string like "http://media9.koreus.com/00067/200903/tortue-pigeon.mp4", with media{number}.koreus.com or media.koreus.com. That's easy, isn't it?&lt;/p&gt;
&lt;p&gt;You can download the whole file &lt;a href="http://eleves.ec-lille.fr/%7Ecouprieg/divers/koreus.lua"&gt;here&lt;/a&gt;. Enjoy!&lt;/p&gt;
&lt;h4&gt;See also&lt;/h4&gt;
&lt;ul&gt;&lt;li&gt;&lt;a href="http://eleves.ec-lille.fr/%7Ecouprieg/post/Flickr-diaporama-in-VLC"&gt;Utterly useless uses of VLC&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://eleves.ec-lille.fr/%7Ecouprieg/post/VLC-tricks%3A-customize-your-interface"&gt;VLC tricks: customize your interface&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;br /&gt;&lt;p&gt;Copyright © 2007-2009 &lt;a href="http://eleves.ec-lille.fr/~couprieg"&gt;Geoffroy Couprie&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/LeFourre-toutAGeo-atom/~4/aOXF_4pJRzY" height="1" width="1"/&gt;</content>
    
    

          <wfw:comment>http://eleves.ec-lille.fr/~couprieg/post/2009/04/11/55-vlc-tricks-lua-playlist#comment-form</wfw:comment>
      <wfw:commentRss>http://eleves.ec-lille.fr/~couprieg/feed/atom/comments/51</wfw:commentRss>
      <feedburner:origLink>http://eleves.ec-lille.fr/~couprieg/post/2009/04/11/55-vlc-tricks-lua-playlist</feedburner:origLink></entry>
    
  <entry>
    <title>3ème forum international sur la cybercriminalité: buzzwords, FUD and boredom</title>
    <link href="http://feedproxy.google.com/~r/LeFourre-toutAGeo-atom/~3/Wtnfoxb2_H4/54-3eme-forum-international-sur-la-cybercriminalite-buzzwords-fud-and-boredom" rel="alternate" type="text/html" title="3ème forum international sur la cybercriminalité: buzzwords, FUD and boredom" />
    <id>urn:md5:8bcf476c5e8f9cd215f7f588c256d7e5</id>
    <updated>2009-03-27T00:31:27+00:00</updated>
    <author><name>Geoffroy Couprie</name></author>
        <dc:subject>General</dc:subject>
            
    <content type="html">    &lt;p&gt;Le 24 Mars a eu lieu à Lille &lt;a href="http://www.fic2009.fr"&gt;un forum sur la cybercriminalité&lt;/a&gt;. Sous ce joli nom se cache en fait un rassemblement d'intervenants pour la plupart sérieux, venant apprendre aux chefs d'entreprise plein de nouveaux mots comme DoS, chiffrement ou firewall, pour qu'ils puissent ensuite taper sur leur DSI ou RSSI pour lui dire "oh, look, it's shiny, I want it, I want it!"&lt;/p&gt;


&lt;p&gt;Plus sérieusement, la plupart des conférences n'étaient pas vraiment techniques (ça, je m'y attendais), mais on peut en retenir quelques idées:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;L'armée française commence plus ou moins à reconnaître Internet comme étant un lieu de "bataille", comme l'air, la terre et la mer. Beaucoup d'intervenants ont insisté sur le fait qu'avant de pouvoir attaquer dans ce domaine, il faut pouvoir se défendre. Faut pas avoir fait Normale Sup' pour penser ça, mais c'est vrai qu'il y a beaucoup de travail à faire, et les ressources vont être surtout dirigées dans ce sens pour les prochaines années.&lt;/li&gt;
&lt;li&gt;En fin de journée, la conférence qui m'a plu: "Biométrie, quelles applications pour l'entreprise?" La présence d'une personne de la CNIL a rendu le débat intéressant: ce n'est pas tout de mettre en place un système de reconnaissance d'empreintes digitales, iris, il faut le déclarer à la CNIL qui peut refuser si la solution est démesurée. Exemple cité par l'intervenant: une entreprise de 50 personnes ne gagne pas grand chose en remplaçant des clefs ou des cartes pour la porte d'entrée par une reconnaissance des empreintes digitales. Et garder une base des informations biométriques de tous ses employés quelque part pose bien évidemment des problèmes de vie privée. C'est pour ce genre de raisons que la CNIL a des critères assez stricts en matière de biométrie. En gros: il faut que l'utilisation soit justifiée (pas comme &lt;a href="http://www.cnil.fr/index.php?id=2524"&gt;dans certaines cantines&lt;/a&gt;).&lt;/li&gt;
&lt;li&gt;J'ai découvert l'existence de &lt;a href="http://www.dhimyotis.com/"&gt;Dhimyotis&lt;/a&gt;, une autorité de certification française, située à deux pas de ma résidence étudiante.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;La mention spéciale va à Websense, qui m'a bien fait rire. Globalement, ils animaient une conférence pour vendre leur solution de filtrage de contenu. Leurs arguments de vente se basaient sur des statistiques sorties du chapeau, des études qu'ils essayaient de faire passer pour des travaux de Gartner, et des killer features comme la possibilité pour l'employé de consulter Facebook depuis son poste (bah oui, Facebook, c'est Web 2.0, donc le contenu diffère entre les utilisateurs pour une même url, alors c'est dur à monitorer, qu'ils disent). Et ils ne s'arrêtent pas là! Leur système de filtrage du web utilise une base de données qui est mise à jour par leurs bots, qui explorent le web constamment. Cette base de données est envoyée dans les petites boîtes firewall qu'ils installent chez le client. Là où ça devient marrant, c'est que ces petite boîtes aident à remplir la base de données à partir du contenu filtré. Et au passage, ils ont bien réfléchi, et se sont dits que le traffic SSL, c'était embêtant, parce qu'à cause du chiffrement, on ne peut pas monitorer le traffic et protéger l'employé des menaces du web. Ils ont donc trouvé une solution très astucieuse, qui consiste à déchiffrer le contenu dans la boî-boîte, le vérifier, puis le rechiffrer pour l'envoyer sur le web. Ye who enter here, abandon all privacy.&lt;/p&gt;


&lt;p&gt;A côté de ça, ils ont un autre produit qui, lui, est intéressant: un système fait pour empêcher la fuite de données de l'entreprise. Il suffit d'indiquer les contenus "sensibles", et le logiciel se chargera de vérifier si les données sont présentes à chaque communication, quelqu'en soit la forme (HTTP, FTP, mail, plain text, PDF, imprimante, et même SSL *hem*). Le logiciel vérifie alors si la personne recevant les informations a le droit de les consulter, et notifie l'utilisateur en cas de problème de droits.&lt;/p&gt;


&lt;p&gt;Ca reste du monitoring sauvage des communications des employés, mais bon, si des entreprises sont capables de l'assumer et leurs employés de vivre avec, pourquoi pas. Mais ça me fait quand même rire de voir un type vendre un système comme ça avec l'argument massue "vous ne pouvez pas monitorer le contenu reçu par les employés sur Facebook, sauf avec notre système" quand on sait que Facebook n'a pas vraiment de justification comme outil de travail...&lt;/p&gt;&lt;p&gt;Copyright © 2007-2009 &lt;a href="http://eleves.ec-lille.fr/~couprieg"&gt;Geoffroy Couprie&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/LeFourre-toutAGeo-atom/~4/Wtnfoxb2_H4" height="1" width="1"/&gt;</content>
    
    

          <wfw:comment>http://eleves.ec-lille.fr/~couprieg/post/2009/03/27/54-3eme-forum-international-sur-la-cybercriminalite-buzzwords-fud-and-boredom#comment-form</wfw:comment>
      <wfw:commentRss>http://eleves.ec-lille.fr/~couprieg/feed/atom/comments/50</wfw:commentRss>
      <feedburner:origLink>http://eleves.ec-lille.fr/~couprieg/post/2009/03/27/54-3eme-forum-international-sur-la-cybercriminalite-buzzwords-fud-and-boredom</feedburner:origLink></entry>
  
</feed>
