Kévin Subileau

Espace personnel

DSC01131_thumb

Sauvegarder et restaurer le MBR

Premier secteur d'un support de stockage, le Master Boot Record ou MBR concentre en 512 octets des données très précieuses pour le fonctionnement correct d'un disque dur, d'un SSD, ou d'une clé USB. De plus, si un système d'exploitation est installé sur le support, le MBR est également primordial pour le démarrage de celui-ci.

En effet, le MBR contient la table des partitions et une routine d’amorçage (un petit programme) permettant de charger le système d’exploitation ou le chargeur d’amorçage (bootloader).

Or parfois, il est possible que le MBR soit endommagé, suite à une erreur de partitionnement ou une infection virale par exemple. Les partitions peuvent alors devenir inaccessibles et le système peut ne plus démarrer en affichant un message d'erreur du type "Boot device not found". Dans ce cas, il suffit parfois de restaurer le MBR pour tout réparer. Encore faut-il avoir une sauvegarde sous la main...

Il y a donc tout intérêt à sauvegarder ces informations essentielles pour pouvoir les restaurer plus tard si nécessaire, d'autant que l'opération est très rapide. Vous devez simplement sauvegarder à nouveau le MBR après chaque repartitionnement ou installation d'un système d'exploitation, car ces opérations en modifient le contenu. La procédure, plutôt simple, est décrite ci-dessous pour Windows et Linux.

Attention toutefois : Les manipulations décrites dans cet article peuvent entrainer une perte de données et même rendre le support inutilisable si elles ne sont pas exécutées correctement ! Tournez 7 fois votre index au-dessus de votre souris avant de cliquer !

Notez également que, pour que la sauvegarde prenne tout son sens, je vous recommande très fortement de l'enregistrer sur un autre support que celui dont vous sauvegarder le MBR (autre disque dur, clé USB, CD-Rom, Google Drive...) pour pouvoir le récupérer lorsque le support sera en panne...
Lire la suite →

Oradour-sur-Glane

Il y a 70 ans, Oradour-sur-Glane

Souviens-toi. Il y a tout juste 70 ans, une division de l'armée nazie commettait un de ses pires crimes de guerre contre des civils en France en détruisant tout un village et en massacrant tous ses habitants sans exception : hommes, femmes et enfants. Ce village près de Limoges, c'est Oradour-sur-Glane, où, quelques jours après le débarquement de Normandie, 642 civils ont été tuées dans d'atroces souffrances en quelques heures sous le crible des balles et la chaleur des flammes.

Aujourd'hui, les ruines de ce village ont été conservées quasiment en l'état et il est possible de s'y rendre librement pour se rendre compte par soi-même de toute l'horreur de cette guerre.

Je m'y suis moi-même rendu il y a quelques années, et, pour commémorer aujourd'hui ce bien triste anniversaire, j'ai souhaité partager avec vous cette vidéo que j'ai réalisée à partir des photos prises lors de cette "visite".

Je vous recommande vivement de vous y rendre au moins une fois dans votre vie. Il est clair que ce n'est pas une visite comme les autres, il n'est pas question ici de tourisme ou de détente. Dès l'entrée dans le village en ruine, on est tout de suite pris d'une vive émotion à la vue de ce désastre. On en ressort bouleversé. Mais c'est pour moi un des plus fort témoignages restant en France de l'atrocité des crimes commis lors de la seconde guerre mondiale, et il est important de s'en souvenir pour perpétuer notre devoir de mémoire.

Et pour vous remettre de cette visite forte en émotion, vous pourrez également allez vous détendre au bord du très joli lac de Vassivière, distant d'environ 1H30 de route...

firefox-incognito-private

Firefox - Faire passer les requêtes DNS par le tunnel SSH

Mise à jour du 28/02/2015 : Je viens de m'apercevoir que les dernières versions de Firefox (>= 34 je crois) proposent désormais une case à cocher "DNS distant" dans l'écran de configuration du proxy. Cette case à cocher agit sur la même variable de configuration que l'astuce ci-dessous, et a donc le même effet. Plus la peine de bidouiller dans about:config ! Mais bon, je laisse quand même l'astuce si vous utilisez une ancienne version ou si vous aimez vous compliquer la vie :D

Vous pensiez avoir mis votre navigation Web bien à l'abri des regards indiscrets grâce à votre proxy SOCKS réalisé par exemple via un tunnel SSH ? Détrompez-vous ! En réalité, par défaut, seule une partie de vos communications Web sont protégées par cette méthode. L'essentiel des informations nécessaires pour connaitre les sites Web que vous avez visités passent toujours en clair.

C'est le cas notamment des requêtes DNS, qui ne passent pas par le proxy avec la configuration par défaut de Firefox. Le genre de détail qui tue... En effet, à chaque fois que vous visitez un site, un message indiquant son nom est envoyé en clair ! Il suffit d'intercepter ces messages pour avoir un historique assez détaillé de votre navigation.

Heureusement, il est plutôt simple d'y remédier. Sur Firefox, ouvrez une nouvelle fenêtre ou un nouvel onglet et tapez about:config dans la barre d’adresse, comme ci-dessous, puis validez en tapant sur la touche Entrée.

Firefox - Accès à about:config

Vous arrivez alors sur un message d’avertissement vous signalant qu’il peut être dangereux d’apporter des modifications.

Firefox - Avertissement about:config

Prenez note de cet avertissement, puis cliquez sur « Je ferai attention, promis ! ». Dans la nouvelle page qui s’affiche, recherchez la clé network.proxy.socks_remote_dns en utilisant le champ prévu à cet effet.

firefox-about-config-socks-remote-dns

Par défaut cette clé a pour valeur false (désactivé). Pour masquer vos requêtes DNS, faites passer la valeur à true (activé) en double-cliquant sur la ligne ou en cliquant dessus avec le bouton droit de la souris puis sur Inverser. Si la clé n'existe pas, vous pouvez la créer en faisant un clic droit sur une zone blanche de la fenêtre, puis en cliquant sur Nouvelle / Valeur Booléenne.

Vous pouvez ensuite fermer la fenêtre ou l'onglet, les modifications sont immédiatement prises en compte.

Attention, si vous utilisez simultanément Google Chrome, le même problème existe également et il faut lancer le navigateur en précisant le paramètre --proxy-server pour le corriger. Idem pour Internet Explorer, où il n'existe en revanche pas de solution à ma connaissance.

Vos requêtes DNS sont maintenant protégées, mais sachez toutefois que d'autres contenus peuvent continuer à être transmis en clair, notamment les contenus Flash comme les vidéos ou les jeux, et vous ne pourrez pas être sûr à 100% que vous êtes totalement intraçable. Si vous souhaitez vraiment vous assurer autant que possible de masquer toutes les communications de votre PC, alors il est préférable de se tourner vers d'autres solutions, comme le VPN ou le réseau Tor.

festival-of-colors

Color Thief PHP : extraire les couleurs dominantes d'une image

Color Thief PHP est une classe PHP qui vous permet d'extraire la couleur dominante ou une palette de couleurs à partir d'une image JPEG, GIF, ou PNG. Le projet est disponible sur GitHub, et sur Packagist. Vous pouvez également voir le code en fonctionnement sur cette page de démonstration.

La particularité de cette classe est qu'elle n'utilise pas une simple moyenne arithmétique pour déterminer la couleur dominante, contrairement à de nombreux scripts disponibles sur le web. En effet, cette méthode donne souvent des résultats plutôt aberrants, avec une couleur moche qui ne ressemble à rien de ce que l'on perçoit dans l'image. Ici, un algorithme avancé de quantification de couleurs est utilisé. Cet algorithme, nommé "Modified Mean Cut Quantizer", est comparable à celui utilisé par la compression JPEG. L'avantage est que les couleurs calculées sont le plus souvent visuellement très proches de celles présentes dans l'image d'origine, comme vous pouvez le voir sur l'exemple ci-dessous :

color-thief-example

Un exemple de palette de couleurs obtenue grâce à Color Thief PHP

L'utilisation de la classe est très simple, surtout si vous utilisez Composer, mais peut être assez gourmande en ressources en fonction de la taille de l'image et de la qualité demandée. Je vous conseille donc de conserver le résultat en base de données plutôt que d’exécuter le script à chaque chargement de page. Pour plus d'informations, je vous invite à vous reporter à la documentation sur GitHub.

Les applications de cette classe ne sont limitées que par votre imagination : moteur de recherche par couleur, adaptation des couleurs de l'interface graphique en fonction de l'image affichée... Alex P. Gates a même développé un script PHP capable de modifier la couleur d'une lampe en fonction des couleurs d'une image, en utilisant Color Thief PHP et une lampe Philips Hue.

Enfin, si vous avez besoin de cet outil coté client en Javascript, sachez qu'il s'agit en fait d'un portage d'un script javascript. Vous pouvez donc utiliser le script Color Thief original réalisé par Lokesh Dhakar.

Maintenir une connexion SSH inactive ouverte

Avec certains serveurs, il arrive parfois de subir des déconnexions intempestives après une période d'inactivité plus ou moins longue. Vous ouvrez la connexion SSH, vous l'utilisez un peu, vous faites autre chose pendant un certain temps en laissant votre connexion ouverte, puis, quand vous revenez, vous constatez que la connexion SSH s'est interrompue.

En fait, le plus souvent, il ne s'agit pas d'un problème au niveau du serveur SSH, ni même du réseau de votre fournisseur d'accès Internet. Dans la plupart des cas, la connexion inactive est interrompue par les routeurs NAT (comme votre box Internet par exemple).

En effet, SSH utilise une connexion TCP, et les routeurs NAT conservent une table des connexions TCP actives, et suppriment de cette table les connexions inactives depuis trop longtemps pour faire un peu de ménage, ce qui provoque la déconnexion.

Pour contourner ce problème, il faut faire en sorte que des données (quelques octets suffisent) transitent de manière régulière sur la connexion, même lorsque vous ne tapez rien au clavier ou qu'il ne doit rien être affiché. Les routeurs NAT percevront ainsi la connexion comme étant active, et la conserveront dans leurs tables. La bonne nouvelle, c'est que cette solution est très simple à mettre en place, que ce soit sur Windows avec PuTTY ou sur Linux avec le client SSH de base. Lire la suite →

DSC01131_thumb

Autopsie d'un disque dur

Il y a quelques semaines, j'ai malencontreusement fait chuter un de mes disques durs sur le carrelage... Évidemment ça ne pardonne pas, et immédiatement des sifflements, des claquements et la disparition du volume sous Windows m'ont fait comprendre que je pouvais craindre le pire pour mes données.

On ne sait jamais, j'ai quand même tenté de le passer au congélateur. Cette technique un peu risquée peut fonctionner certaines fois, mais ce ne fut pas mon cas. J'ai alors décidé de l'ouvrir pour voir ce qu'il s'était passé exactement à l'intérieur du disque au moment du choc. L'occasion également d'observer de manière concrète le fonctionnement d'un disque dur, et de faire cette petite vidéo pour vous montrer tout cela :

On voit tout d'abord que ce disque dur de 500 Go (un Toshiba MK5059GSXP) est composé de 2 plateaux et donc 4 têtes de lecture/écriture. Malgré le choc, tous les éléments semblent en bon état à première vue. Mais en y regardant de plus près, on remarque qu'une des têtes s'est décrochée de son support, comme on peut le voir dans la vidéo et sur la photo ci-dessous. Lire la suite →

wordpress-hack

Vulnérabilité mfunc dans W3 Total Cache et WP Super Cache

Le week-end dernier, j'ai reçu simultanément trois commentaires plutôt originaux à modérer sur ce site. En effet, ces derniers tentaient d'exploiter une vulnérabilité connue sur les deux plugins de cache les plus populaires, W3 Total Cache et WP Super Cache. Cette faille de sécurité a été reportée il y a un an environ par kisscsaby sur le forum WordPress, et a fort heureusement été totalement corrigée depuis. J'ai tout de même souhaité vous en parler car je l'ai trouvée intéressante à étudier et aussi parce qu'elle reste active sur les nombreux sites non mis à jour...

wp_mfunc_vulnerability

Voilà un commentaire plus que suspect...

Cette attaque s'appuie sur plusieurs fonctions (mfunc, mclude, et dynamic-cached-content) présentes sur les versions vulnérables (W3TC ≤ 0.9.2.8 ou WPSC ≤ 1.2), et permet d'exécuter un code PHP arbitraire sur le serveur. Autant dire que l'on peut tout faire ! Pour comprendre, il faut savoir qu'un site WordPress avec une version vulnérable d'un de ces plugins va exécuter le code PHP situé à l'intérieur de la balise ouvrante mfunc. Par exemple, le code <!--mfunc echo PHP_VERSION; -–><!–-/mfunc-–> va afficher la version de PHP utilisé.

Cette fonctionnalité permet initialement au développeur du site d'indiquer les éléments qui ne doivent pas être mis en cache par le plugin, comme par exemple la date ou le temps de génération de la page. Le code compris dans cette balise est alors exécuté à chaque fois, tandis que le reste de la page est mis en cache.

Lire la suite →

windows-network

Supprimer les anciennes connexions réseau de Windows

Au fur et à mesure que vous ajoutez des connexions réseau (carte réseau, clé USB Wi-Fi) de même type, Windows ajoute un numéro à la fin du nom de la connexion réseau afin que ce nom soit unique. Par exemple, si vous connectez une première clé Wi-Fi, Windows la baptisera probablement Connexion réseau sans fil (ou Wi-Fi sous Windows 8). Si par exemple cette clé tombe en panne et que vous en brancher une seconde pour la remplacer, Windows la nommera Connexion réseau sans fil 2, et ainsi de suite.

Si vous souhaitez renommer cette nouvelle connexion pour lui donner le nom de l'ancienne (c'est à dire retirer le chiffre), Windows le refusera en indiquant qu'une connexion avec le nom spécifié existe déjà. En fait, Windows ne sait pas que l'ancienne connexion ne sera plus jamais utilisée, et la garde donc en mémoire à vie afin de lui attribuer le même nom dans l'hypothèse où elle serait à nouveau utilisée.

connexions_reseau_windows

Pour pouvoir attribuer à nouveau un nom précédemment utilisé pour une autre carte réseau, il faut donc indiquer à Windows que cette carte ne sera plus jamais utilisée en la désinstallant. Pour cela, ouvrez une fenêtre d'invite de commande (Menu Démarrer/Tous les programmes/Accessoires/Invite de commandes), puis tapez les commandes suivantes :

set DEVMGR_SHOW_NONPRESENT_DEVICES=1
devmgmt.msc

Dans la fenêtre du gestionnaire de périphérique qui s'affiche alors, cliquez sur Affichage puis Afficher les périphériques cachés. Cela permet d'afficher les cartes réseau déconnectées mais toujours installées. Dans la liste des périphériques, déroulez la rubrique Cartes réseau, puis supprimer les cartes qui ne vous sont plus utiles en effectuant un clic droit puis Désinstaller. Attention toutefois à ne pas désinstaller une carte encore utilisée sous peine de devoir la réinstaller ! Pour vous y retrouver, sachez que la petite icône à gauche du nom de la carte réseau apparait légèrement plus claire si cette carte n'est pas physiquement connectée à l'ordinateur.

Une fois ce nettoyage correctement effectué, vous devriez désormais pouvoir renommer vos connexions réseau en attribuant des noms précédemment utilisés.