Blog Haypo

Aller au contenu | Aller au menu | Aller à la recherche

HADOPI - Le Net en France : black-out

samedi 4 avril 2009

Projet de loi Hadopi : un nouveau succès de la démocratie !

Les tentatives de contrôler la diffusion des œuvres par l'industrie musicale et du cinéma sont vraiment navrantes. Malgré les moyens considérables déployées depuis une dizaine d'année (disons que Napster marque l'année zéro du P2P : 1999) dans cette croisade contre les réseaux pair à pair (P2P), ces réseaux existent toujours et au contraire gagnent en popularité chaque année.

Brêve histoire des réseaux pas tout à fait pair à pair

Les premiers réseaux P2P (années 2000) dépendaient de quelques nœuds centraux. Il suffisait de trouver les responsables de ces nœuds pour couper tout le réseau. Comme ils étaient américains, les maisons de disque (Internet était trop lent pour télécharger des films) n'ont pas eu de mal obtenir gain de cause.

Les réseaux évoluèrent pour ne plus dépendre de nœuds centraux, et la solution du procès ne fonctionnait plus. Il y a eu des procès d'internautes, aux États-Unis comme en France, mais l'impact sur les consciences semble peu efficace.

Tentative d'éradication du P2P par des moyens techniques

Une autre approche est la déception : tenter de polluer les réseaux en injectant des fichiers corrompus. Bien que des sociétés soient payées pour diffuser continuellement des chansons tronquées ou des vidéos pornographiques portant le nom de dessins animés pour enfant (ou du dernier film à succès), cette technique ne semble pas non plus porter ses fruits. Les internautes s'organisent, montent des forums, et la technologie évolue (BitTorrent ?).

Il existe aussi le tatouage numérique (watermarking) : technologie de pointe mais extrêmement coûteuse et pénible pour l'éditeur de contenu. Effectivement, les éditeurs de solution de tatouage sont paranoïaques car leur technologie repose sur le secret. Ils surveillent donc leurs clients (pas les internautes, les éditeurs de contenu) de très près (l'arroseur arrosé ?).

Bon bref, pas besoin d'en écrire des tas, il semble clair que ce n'est pas une solution technique qui va sauter l'industrie du disque et du cinéma.

Faire voter une loi, une solution de dernier recours ?

L'industrie attaque donc sur un nouveau front : la législation à grand coup de lobbyistes. Il y a d'abord eu une tentative en 2006 avec la « réponse graduée » dans la loi DADVSI, mais le conseil constitutionnel a censuré cette proposition.

Pendant ce temps (23 février) à l'autre bout du monde, la Nouvelle Zélande a suspendu un projet de loi similaire à Hadopi.

Plus récemment (le 26 mars), le parlement européen a adopté à 481 voix contre 25 (et 21 abstentions) un rapport intitulé « Renforcement de la sécurité et des libertés fondamentales sur Internet » qui dit justement que l'accès à Internet ne peut être refusé comme une sanction par des gouvernements ou des sociétés privées.

Qu'importe, le projet Hadopi est maintenu à l'assemblé nationale. Ça a fonctionné car la la loi a été acceptée à 23h. Elle a été votée par 16 députés : 10 pour, 4 contre, 2 abstentions, et hum... 528 absents (ils étaient tous à la piscine).

C'est marrant quand même, notre ministre de la culture se justifiait en disant qu'il n'y avait que « 5 gus dans un garage » opposés au projet de loi Hadopi. Alors que le mouvement « Blackout » lancé fin février a été suivi par plus de 12.200 sites Internet et que la pétition lancé par la magazine SVM a collecté 47.903 signatures (députés européens, associations, chefs d'entreprise, et même des artistes !).

L'industrie de la musique et du cinéma se porte bien

Bizzarement, j'apprend que le chiffre d'affaire global de la musique, en incluant les concerts, est en augmentation. Le cinéma a quant à lui battu des records d'entrées en 2008 (en France, aux USA et en Suède). Les jeux vidéo ont augmenté leur chiffre d'affaire de 22% en 2008 par rapport à 2007, qui était déjà une année exceptionnelle.

Résumé

Pour ceux qui n'ont rien suivi à Hadopi (comme moi), je vais tenter de résumer (maladroitement donc). C'est un projet de loi liberticide (donne le droit à des sociétés privées d'obtenir votre nom et adresse selon votre adresse IP) qui va provoquer une vague de censure (fermeture des points d'accès wifi, filtrage par liste blanche dans les écoles et bibliothèques, etc.), mais ne va pas éradiquer le P2P (au mieux, ça va se calmer pendant quelques mois). Les techniques est toujours la même : la déception (rendre le P2P plus difficile : réseaux anonymes chiffrés, plus lent) et la peur (bloquer par mesure préventive).

Je pense que la meilleure lutte contre Hadopi est d'informer les internautes. Quelques pointeurs : l'excellent résumé d'Hadopi (une page A4) par la Quadrature du Net et l'article Wikipédia.

MISE À JOUR : J'ai corrigé la phrase « acceptée à 23h par 16 députés, 1 contre (Lionel Tardy, merci à lui !), et hum... 560 absents (ils étaient tous à la piscine) ». Merci à Arcaik de m'avoir indiqué le bon nombre de votants.

vendredi 20 février 2009

Bibliothèque mathématique avec arrondi correct : crlibm

L'INRIA développe actuellement une bibliothèque mathématique avec arrondi correct : crlibm. Il existe déjà des bibliothèques similaires comme libultim, libmcr ou MPFR, mais elles sont peu performantes. Un arrondi correct signifie que tous les chiffres du résultat sont exacts, alors que les bibliothèques mathématiques standards ne calculent qu'un résultat approché (chiffres les moins significatifs). En l'occurrence, il s'agit des fonctions cos(x), sqrt(x), log(x), etc.

libultim

Abraham Ziv est l'auteur du premier algorithme de calcul avec arrondi correct : la stratégie de l'oignon. Elle consiste à calculer avec une certaine précision : si on peut déterminer l'arrondi correct on s'arrête, sinon on recalcule avec une précision plus importante. On recommence jusqu'à ce qu'on puisse arrondir correctement. Ziv a implémenté cette technique dans la bibliothèque libultim (Accurate Portable Mathlib) pour IBM. La méthode a été publiée en 1991 : Fast evaluation of elementary mathematical functions with correctly rounded last bit.

libultim souffre de plusieurs défauts : le calcul est lent (particulièrement dans les « pires cas »), les algorithmes ne sont pas prouvés, et seul l'arrondi au plus près (nearest) est implémenté (il existe 3 autres modes : zéro, -inf, +inf).

libultim est distribué sous licence LGPL, mais je n'ai pas réussi à retrouver sa trace. Son site web est accessible par les archives du web : http://oss.software.ibm.com/mathlib/ (archives de 2005).

MPFR

La bibliothèque MPFR permet de faire des calculs sur des nombres flottants multi précision. Elle contient les fonctions trigonométriques, la fonction exponentielle, etc. avec arrondi correct. Les calculs utilisent des nombres entiers multi précision (bibliothèque GMP).

MPFR est développé par l'INRIA et distribué sous licence LGPL. La dernière version date de janvier 2009.

scslib

Les processeurs récents ont des unités de calcul en nombre flottant très rapides, parfois plus rapides que les calculs en nombres entiers. La bibliothèque scslib (The Software Carry-Save Multiple-Precision Library) permet de faire des calculs (a + b, a × b, etc.) multi précision sur des nombres flottants en stockant chaque valeur dans plusieurs nombres flottants. La conversion entre un nombre multi précision et un flottant IEEE 754 est très rapide, en comparaison de MPFR (qui utilise des nombres entiers) par exemple. L'article Software carry-save for fast multiple-precision algorithms (2002) présente en détail les concepts et astuces utilisées.

scslib est distribué sous licence LGPL. La dernière version date de 2003.

crlibm

Le travail sur crlibm (correctly rounded mathematical library) a débuté par l'étude des pires cas par Jean-Michel Muller et Vincent Lefèvre. Ils ont par exemple calculé que l'arrondi arrondi correct en double précision (53 bits) nécessite au maximum un calcul sur 118 bits pour le logarithme. crlibm utilise la bibliothèque scslib pour le calcul multi précision sur les nombres flottants. Les algorithmes sont prouvés, un logiciel de génération de preuve a été écrit pour l'occasion. Les performances sont bonnes en comparaison des autres bibliothèques de calcul en arrondi correct, mais restent plus faibles que celles des bibliothèques mathématiques standards (arrondi inexact).

Publications liées à crlibm :

Fin 2007, crlibm a été proposé pour l'inclusion dans GCC, mais a été refusé : Using crlibm as the default math library in GCC sources.

crlibm est distribué sous licence LGPL. La dernière version date d'octobre 2008. Voir aussi la page du projet sur LipForge.

vendredi 13 février 2009

FOSDEM, Fusil, bières, python-ptrace et conférences

Triple Carmelite Le week-end dernier se tenait à Bruxelles l'édition 2009 de FOSDEM, LA rencontre européenne des développeurs de logiciel libre. J'y ai présenté Fusil le fuzzer qui a été inclus dans le Main track. La vidéo de la conférence devrait être bientôt disponible. En attendant, j'ai mis le diaporama en ligne : fosdem_2009.pdf (je me suis remis à Beamer !).

Pour l'occasion, j'ai publié Fusil 1.2 avant l'événement (suivi rapidement par Fusil 1.2.1), et python-ptrace 0.6 aujourd'hui. La nouvelle version de Fusil arrive avec une meilleure documentation, en particulier avec un guide d'utilisation et un index des documentations, de nombreuses corrections de bugs, des améliorations des agents réseaux, etc. Du côté de python-ptrace, strace.py peut maintenant afficher le pointeur d'instruction, Mark Seaborn a écrit une extension (itrace.py) à strace.py (pour déboguer la libc dans le bac à sable de Google Chrome), PtraceSignal donne des informations plus précises, etc..

À FOSDEM, j'ai essentiellement bu des bières et travaillé sur ma présentation (je déconne ! elle était prête depuis des semaines !). Je vous conseille d'ailleurs la Triple Carmélite (que m'a conseillée Jean) et la Rochefort niveau 8 (découverte par hasard, la 10 est trop forte).

Rochefort

Niveau conférences, j'ai retenu les présentations :

  • LLVM et Gallium3D par Stéphane Marchesin : utilisation du compilateur LLVM dans les pilotes 3D d'Xorg pour optimiser les shaders (micro-programmes utilisés dans les GPU de nos cartes graphiques)
  • Nemiver par Dodji Seketeli : jolie interface graphique à GDB en Gtk+ avec une vue du code orientée debug (ex: survoler une variable affiche sa valeur) qui semble très fonctionnelle
  • L'introduction à XMPP (Jabber) par Remko Tronçon et Peter Saint-Andre était jolie, fluide et bien préparée. Par contre, je n'ai pas appris grand chose. Ça confirme juste que Jabber est vraiment bien conçu (Peter est l'un des auteurs des spécifications XMPP) et très largement extensible.

Le « petit » monde du logiciel libre est de plus en plus actif. La fréquentation et la taille de FOSDEM ne cesse d'augmenter. D'ailleurs, Debian Lenny devrait sortir ce week-end, en même temps que Python 2.6.2 et 3.0.1.

mardi 27 janvier 2009

Hors-série Linux Mag : Explorez les richesses du langage Python

Depuis un an, Philippe Biondi parcourait la France sans relâche à la recherche d'auteurs pour écrire un hors-série dédié à Python. Grâce à sa persévérance, le hors-série dédié à Python est enfin en vente dans toutes les librairies (en France) !

J'ai écrit quatre articles dans ce hors-série.

Nouveautés de Python 2.6

Version améliorée, corrigée et illustrée (d'exemples) de ma dépêche linuxfr.org (elle-même basé sur What’s New in Python 2.6 que j'ai traduit).

Nouveautés de Python 3.0

Article écrit avant la sortie de Python 3 par ma propre expérience, et avant que la documentation What’s New In Python 3.0 ne soit écrite par Guido van Rossum (... mais finalement publié après).

Trucs et astuces

Article écrit co-écrit par Philippe Biondi même s'il est trop humble pour l'avouer !

Ctypes et Python

Guide pratique pour écrire un binding C en Python avec ctypes. C'est aussi un retour d'expérience sur mes bindings pynetfilter_conntrack et python-ptrace.

--

Ruez-vous en librairie, il n'y en aura pas pour tout le monde ! Je me suis déjà empressé d'acheter mon exemplaire. J'ai particulièrement apprécié l'article de Gaël Varoquaux : Python comme langage scientifique, article qui sent le vécu et l'utilisation concrète de Python.

lundi 19 janvier 2009

Installer Ubuntu Ibex depuis un disque dur USB externe

Remplacer Debian Sid par Ubuntu Ibex

Il y a 3 mois, j'installais Debian Sid sur mon PC portable à partir d'une clé USB. Je suis assez déçu de Debian Sid car les touches « multimédias » (monter/baisser le son) du clavier ne sont pas détectées, la sortie vidéo (écran externe ou vidéo projecteur) ne fonctionne plus, et KDE est moins joli. D'une manière générale : Debian exige beaucoup de temps pour être configuré. Il y a quelques années, ça m'amusait de bidouiller. Aujourd'hui, je veux juste un système d'exploitation « qui marche ».

Préparer une partition sur le disque externe

Mon lecteur de CD-Rom étant toujours hors-service, j'ai choisi mon disque dur USB externe (500 Go) comme support d'installation. J'ai crée une nouvelle partition (j'avais de l'espace libre non partitionné) ext3 et j'y ai placé les fichiers :

  • /boot/vmlinuz : noyau Ubuntu (téléchargé depuis archive.ubuntu.com/.../hd-media/ étant donné que la version dans l'ISO est destinée booter depuis un CD-Rom)
  • /boot/initrd.gz : configuration du noyau en mode « hd-media » et pilotes (également téléchargé depuis archive.ubuntu.com)
  • /boot/grub/(...) : copie du contenu de /boot/grub/* (Debian)
  • /ubuntu-8.10-alternate-i386.iso : ISO d'Ubuntu Ibex avec l'installeur en mode texte (alternate) pour processeur i386
  • /preseed/ubuntu.preseed : Sélection de paquets à installer (fichier extrait de l'ISO)

Je pense qu'on peut utiliser une partition ext3 existante (ou autre système de fichier reconnu par GRUB).

Configuration de Grub

J'ai choisi Grub pour booter le disque car il permet de modifier la configuration au chargement, et possède un terminal texte avec accès au disque dur. La configuration (boot/grub/menu.lst) minimale est :

title Install Ubuntu
root (hd0,7)
kernel /boot/vmlinuz file=/hd-media/preseed/ubuntu.seed
initrd /boot/initrd.gz

Sous Debian, mon disque externe est reconnu comme /dev/sdb8. Comme Grub compte à partir de zéro (hd0,0), il faut soustraire un au numéro de partition : (hd0,7). Je pensais que c'était (hd1,7), mais comme je boote depuis ce disque, Grub le reconnaît comme hd0 et non hd1, soit.

Pour installer Grub, j'ai lancé grub --config-file=/mnt/install/boot/grub/menu.lst et dans le terminal Grub j'ai tapé setup (hd1).

Lancement de l'installation

Je redémarre ma machine en demandant au BIOS de booter sur ce disque. Et hop, l'installeur se lance !

Quelques remarques :

  • Linux est incroyable, on peut vraiment l'installer de plein de manières différentes et ça marche !
  • Ubuntu ne met pas à jour ses ISO avec des mises à jour. Du coup, quand l'installation est terminée il faut installer 219 mises à jour (!), c'est dommage.
  • J'ai choisi Gnome plutôt que KDE pour changer. Comme ma seconde machine est sous Kubuntu, je vais pouvoir jongler entre Gnome et KDE ;-)

Pour en savoir plus

J'ai fait beaucoup de raccourcis dans cet article pour aller à l'essentiel. Pour les détails, lisez l'article How to install from CF media/USB drive using the grub bootloader sur le wiki d'aide officiel d'Ubuntu.

L'installation d'un nouveau système d'exploitation est dangereuse : vous risquez de perdre des données à la moindre fausse manipulation ! Ne le faites pas si vous ne comprenez pas ce que vous faites. Ou alors faites vous aider !

Un gros merci à phh sur IRC qui m'a bien aidé pour cette installation ;-)

vendredi 16 janvier 2009

Broadcast IPv4, socket RAW et multicast DNS

Pour tester l'interface de configuration de parefeu sur laquelle je travaille, j'ai mis en place des règles de filtrage strictes sur ma machine. Stricte car par défaut rien ne passe : il faut accepter chaque service explicitement avec une nouvelle règle. Cet article présente les cas particuliers que sont les sockets RAW et le multicast IPv4.

DHCP et table raw

Sur ma machine, l'attribution d'une adresse IPv4 est dynamique et utilise le protocole DHCP (niveau 4). Le premier paquet (DHCP Discover) est envoyé à destination de 255.255.255.255 (adresse de broadcast : envoi à tout le monde) avec comme source 0.0.0.0, et l'adresse MAC destination est aussi du broadcast (ff:ff:ff:ff:ff:ff). Bizzarement, même en bloquant tout en sortie avec iptables (iptables -F; iptables -P OUTPUT DROP), DHCP continue à fonctionner.

Ceci vient du fait que le programme dhclient utilise une socket de type RAW. les paquets sont forgés et n'entrent pas dans le suivi de connexion (conntrack) de Netfilter. On peut néanmoins loguer ou filtrer ces paquets en utilisant la table « raw ». Le schéma suivant montre que raw est le premier traitement pour les paquets entrant (chaîne PREROUTING) et sortant (OUTPUT) : schéma synthétique d'iptables.

Multicast DNS

Ubuntu active le démon avahi par défaut, système de découverte de services sur le réseau local. Il embarque un serveur DNS multicast qui n'est pas utilisé pour résoudre les noms de domaine Internet (comme google.com), mais pour la découverte de services. Ce système permet sans aucune configuration manuelle d'échanger des fichiers, d'écouter de la musique, de dialoguer, etc. avec les ordinateurs du réseau local.

Côté technique, avahi envoie et reçoit des paquets UDP sur le port « mDNS » (port 5353 vers 5353) et des des paquets IGMP (Internet Group Management Protocol, à ne pas confondre avec ICMP) en utilisant l'adresse destination 224.0.0.251. Cette adresse fait parti du réseau 224.0.0.0/24 : multicast local (réseau privé).

Note au sujet d'IPv6 : les paquets ICMPv6 multicast sont détectés comme invalides par -m state --state INVALID. Refuser tous les paquets invalides revient donc à se couper d'Internet... J'ai rapporté le bug à Netfilter.

lundi 5 janvier 2009

Obtention d'une adresse IPv6 auprès du routeur

En jouant avec les règles de filtrage IPv4 et IPv6 de Netfilter, je perd régulièrement ma connectivité IPv6. J'ai supprimé mes règles de filtrage et lancé sudo tcpdump -p -i any -s 0 -w snif.pcap 'ip6' pour observer quels paquets sont envoyés au routeur pour obtenir une adresse IPv6. Pour renouveller mon adresse IPv6, j'ai démonté (sudo ifconfig eth0 down) puis remonté (sudo ifconfig eth0 up) mon interface réseau.

Questions

En 1,5 secondes, Linux envoie 3 paquets ICMPv6 en multicast :

  • (t=0,0 sec) Multicast Listener Report Message v2 (type 143)
    • De :: vers ff02::16:
    • Avec « Changed to exclude: ff02::1:ffab:79ed »
    • Annonce au routeur qu'on écoute sur le canal multicast « ff02::16: »
  • (t=0,5 sec) Neighbor solicitation (type 135)
    • De :: vers ff02::1:ffab:79ed:
    • Avec « Target: fe80::216:76ff:feab:79ed »
    • Vérifie auprès des voisins que mon adresse de lien (fe80::216:76ff:feab:79ed) est unique : qu'elle n'est utilisée par aucun autre équipement
  • (t=1,5 sec) Router solicitation (type 133)
    • De fe80::216:76ff:feab:79ed vers ff02::2:
    • Demande au routeur les informations sur le réseau IPv6

Réponse

Le routeur (dans mon cas, une Freebox) répond en 10 ms par un message ICMPv6 « Router advertisement » (type 134), de fe80::207:cbff:fe3c:edd8 vers ff02::1. Les informations les plus importantes sont celles relatives au préfixe : longueur (64), préfixe (2a01:e35:8a04:25b0::), durée de vie/durée de vie préférée (86400 secondes = 1 jour). Le paquet contient également le MTU (1480 octets) et l'adresse MAC du routeur.

Création de l'adresse

Avec ses informations, mon ordinateur peut calculer sa propre adresse IPv6 publique à partir du préfixe (2a01:e35:8a04:25b0::/64) et de l'adresse MAC de mon interface réseau (00:16:76:AB:79:ED). L'adresse résultante est 2a01:e35:8a04:25b0:216:76ff:feab:79ed.

Enfin, un paquet ICMPv6 de type Neighbor solicitation est envoyé aux voisins pour vérifier que la nouvelle adresse (2a01:e35:8a04:25b0:216:76ff:feab:79ed) est bien unique.

Pour plus d'informations, lisez l'article Découverte de voisins.

mardi 16 décembre 2008

Aliens versus Predator : Requiem

Fan des films Aliens (1, 2, 3 et 4), j'étais curieux de voir à quoi ressemble le film « Aliens versus Predator ». Manque de bol, je me suis trompé et j'ai regardé la suite (Aliens versus Predator : Requiem) ! Allez, va pour le deuxième.

Un vaisseau infesté d'aliens s'écrase sur la Terre

Un vaisseau Predator contient un laboratoire qui analyse des spécimens d'Aliens... tiens, le laboratoire me rappelle Aliens 4. Les aliens sortent de leurs cages et tuent les Predator... l'histoire se répète encore et encore. L'univers est infini et pourtant le vaisseau dérive et tombe pile sur la Terre (aux USA en plus !). Là un papa et son fils chassent en forêt. Ils meurent et leurs corps serviront de cocon pour un couple d'aliens. Un predator revoit le crash de sa planète et prend un vaisseau pour aller faire le ménage sur Terre avec un liquide bleu qui fait disparaître les traces. Un predator et plusieurs aliens sont sur Terre, le carnage peut commencer.

Stéréotypes et minorités

Le film se déroule sur Terre aux alentours des années 2000. C'est bizzare étant donné qu'Alien 1 (Le huitième passager) se déroule en 2122 et les humains ont des vaisseaux spaciaux sophistiqués et non pas des pickups qui roulent à l'essence. Disons que pour fusionner les séries Predator et Aliens, il fallait bien faire des concessions.

On retrouve un jeune américain du style « pauvre type » qui bosse dans une pizzeria. Il aime en secret une blonde à gros seins qui sort avec un crétin costaux. Pour rendre le livreur de pizza plus attachant, on va lui coller un frère qui vient de sortir de prison. Photo de groupe : je vous laisse deviner qui est qui !

Comme il y a un noir (qui ne dit rien mais meurt rapidement), les minorités sont présentes : on peut continuer !

Gestuelle du predator

Il n'y a pas à dire, le predator a du mal à cacher que c'est un acteur qui porte un costume. Il saute dans l'eau comme un gros patapouf et a une gestuelle pitoyable. Regardez combien il est méchant, grrr !

Heureusement qu'il a sa vision de nuit, ses armes issues d'une technologie avancée avec des symboles dans un alphabet inconnu, et sa sale gueule pour rattraper un peu le reste.

On va mourir n'est-ce pas ?

Alors que la ville est à feu et à sang, un groupe de survivants se réfugie dans un magasin pour y chercher des armes. Après un long silence, notre blonde lache un mémorable :

On va mourir n'est-ce pas ?

Nouveau silence... et là un cri strident retentit ! En fait non, c'est juste deux hommes qui sortent de la pénombre :

1er homme — Tirez pas, ok ! Vous pouvez tout prendre.

2e homme — Je suis pas prêt à mourir pour ce que je gagne.

Le flic — Nous sommes attaqués.

2e homme — Les terroristes attaquent Galisson ? [à l'autre] Je t'avais dit que ça arriverait.

Le flic — Vous êtes stones ou quoi ?

Reproduction anormalement rapide des aliens

Les aliens sont toujours aussi effrayants avec leur double machoire, jet d'acide, déplacement au plafond et une manière si particulière de se reproduire (petite innovation dans l'hôpital d'ailleurs). Par contre, ils se reproduisent vraiment trop vite ! Alors que ça prend plusieurs heures habituellement, là ils se reproduisent en une dizaine de minutes.

Autre problème technique : étant donné qu'un drame hollywoodien doit se dérouler la nuit sous une pluie battante, il est difficile de distinguer les aliens du predator durant les affrontement. Face à face final :

Un bon nanar

Assez bon nanar (c'est-à-dire film pitoyable). Alors que dans les autres films Aliens les monstres sont habillement suggérés, ici on les voit sans arrêt, ce qui laisse le temps d'en analyser tous les défauts. Fort heureusement, on a notre dose de gore dans l'hôpital. La présence d'enfants, durant tout le film, censé renforcer le côté dramatique n'ajoute pas grand chose à part quelques cris. La fin heureuse et la scène finale (à la Hypercube) sont assez nulles, et dont cohérents avec le reste.

mardi 25 novembre 2008

Petite histoire du temps universel

La définition d'un temps universel a duré des dizaines d'années, c'est le temps qu'il a fallu aux scientifiques pour comprendre quels phénomènes influençaient la mesure du temps et donc de pouvoir corriger les erreurs de mesure. Cet article retrace l'histoire de la création du temps universel coordonnée (UTC) depuis l'heure moyenne de Greenwich en passant par les horloges atomiques et les marées.

Lire la suite

mardi 11 novembre 2008

Achat d'un nouvel ordinateur de bureau

Suite au décès prématuré de mon ordinateur portable (un Compaq de 2003), je me suis décidé à acheter un ordinateur de bureau monté moi-même. Tout fonctionne sous Ubuntu en 64 bits, et je suis agréablement surpris de la réactivité de la bête.

Lire la suite

mercredi 5 novembre 2008

Create a git repository of a svn source tree using git-svn

When you're not allowed to commit in a svn repository, it's sometimes difficult to write an huge patch or to maintain an old patch. If the svn is updated while you're working on your patch (or after you wrote your patch), it will be difficult to update your patch. The main problem is that a patch has no reference to the revision number of the patched files. Your patch may apply to svn rev 67001 but not on svn trunk (rev 67103).

That's why I want to try git to be able to easily update a patch to the svn trunk. This article is a quick tutorial to setup your local git repository using git-svn.

Lire la suite

samedi 11 octobre 2008

Retour aux sources : installation de Debian Sid

Après avoir pas mal utilisé Ubuntu pendant plusieurs années, j'ai décidé de réinstaller Debian Sid sur mon portable histoire de voir si je sais encore m'en servir.

Installer Debian par clé USB

Une fois que j'ai compris que le lecteur de CD était mort (j'ai cramé 3 CDR pour m'en rendre compte), je me suis essayé à l'installation par clé USB.

  • Il faut une clé USB d'au moins 100 Mo
  • Sauvegardez les données de votre clé USB car toutes les données seront détruites par cette procédure.
  • Télécharger un booteur ISOLINUX (hd-media/boot.img.gz, 16 Mo) et une image ISO d'un installeur Debian (netinst/mini.iso, 59 Mo) depuis la page netinst.
  • Installer le booteur sur la clé USB : « zcat boot.img.gz > /dev/sdb » où /dev/sdb est le périphérique de votre clé USB
  • Un système de fichier ext2 a été crée sur la clé USB. Montez le et copiez-y l'image ISO téléchargée.
  • Démonter la clé et rebooter.
  • Booter sur la clé USB, et voilà.

Installation de paquets

J'ai choisi de n'installer aucun paquet, c'est-à-dire avoir l'installation la plus minimaliste possible histoire de contrôler ce qui est installé sur ma machine. Les commandes qui suivent permettent d'installer certaines catégories de logiciels.

Fichier /etc/apt/sources.list

deb http://debian.revolsys.fr/debian/ sid main contrib non-free
deb http://www.debian-multimedia.org sid main
  • non-free est nécessaire pour Flash
  • debian-multimedia.org est nécessaire pour mplayer

Le minimum vital

apt-get install less vim

Serveur graphique (Xorg) et KDE

apt-get install kde kdm kde-i18n-fr kde-style-polyester yakuake
  • Je n'ai pas réussi à reproduire le joli thème KDE de Kubuntu, mais le style Polyester est déjà pas mal
  • yakuake est un terminal qui se déplie/se cache à la demande (comme la console Quake pour les connaisseurs)

Pour partager souris et clavier entre mes deux ordinateurs :

apt-get install synergy

Firefox (Iceweasel) et Flash

apt-get install mozilla-noscript iceweasel iceweasel-l10n-fr flashplugin-nonfree
  • Le greffon NoScript est un parefeu Javascript
  • Note : Thunderbird s'appelle Icedove

Son et vidéo

apt-get install alsa-utils mplayer

Certains préféreront vlc, xine ou encore totem.

Gestion des clés SSH

apt-get install ssh-askpass-fullscreen keychain

Diagnostic et bidouilles réseau

apt-get install nmap netcat

Compilation

apt-get install gcc make autoconf automake libtool fakeroot
  • fakeroot est utile pour recompiler un paquet Debian

Écriture de code source

apt-get install manpages-dev manpages-fr subversion exuberant-ctags meld
  • ctags est un indexeur de code source permettant d'aller à la définition d'un symbole (variable, fonction, classe) dans vim avec « CTRL + ] »
  • meld est un excellent outil pour comparer deux fichiers textes ou deux dossiers contenant des fichiers textes (et donc utilisable pour du code source)

Débogage

apt-get install gdb strace ltrace lsof
  • strace trace les appels systèmes
  • ltrace trace les appels de fonctions de bibliothèques externes
  • lsof liste les fichiers ouverts

Analyse de code Python

apt-get install pyflakes pylint pychecker

OpenOffice

apt-get install openoffice.org openoffice.org-l10n-fr ttf-mscorefonts-installer

Utilisez DicOOo pour installer des dictionnaires français plus complets

Wifi

apt-get install network-manager-kde
  • Il semble que je doive exécuter knetworkmanager en tant que root (problème de permission ?)

Firmware pour mon chipset Intel 3945 :

apt-get install firmware-iwlwifi

Cet article concis et fouilli me servira de notes au cas où je réinstalle la machine. J'espère que vous découvrerez de chouettes paquets parmis ceux que j'ai listé. C'est enfin le moment tant attendu pour placer cette URL : Debian Package of the Day.

mardi 23 septembre 2008

Acheter un billet ou trouver des horaires SNCF

Aujourd'hui, un collègue m'a demandé quel était le meilleur moyen d'acheter un billet de TGV sur Internet. Bien que j'effectue régulièrement des aller-retours Strasbourg-Paris en TGV, je ne connais pas LA solution idéale. Néanmoins je connais quelques astuces.

voyages-sncf.com

Le site de référence pour acheter des billets de train en France est voyages-sncf.com. Accessoirement, il semble que ça soit le seul site Internet permettant d'acheter des billets SNCF en ligne. C'est également le pire site Internet que je connaisse : bugs d'affichage avec mon navigateur (Konqueror) empêchant parfois de naviguer dans le site, indisponibilités régulières (parfois pendant plusieurs heures), difficultés pour trouver le bon train (absence de réponse ou réponses aberrantes), formulaires compliqués (choix du train et achat en ligne), etc.

Ce site existe depuis 2000 et est géré par le Groupe Voyages-sncf.com (VSC, AVSC et VSCT). Le site utiliserait Oracle sous Solaris, et les bornes (en gare) sont sous Windows XP. Le groupe VSC emploie plus de 260 personnes.

Sites web SNCF alternatifs

Il existe une version allégée de voyages-sncf : voyages-sncf.mobi, version destinée aux téléphones mobiles mais utilisable sur un ordinateur. Je ne l'ai jamais utilisé pour acheter un billet, mais il semble beaucoup plus simple. Notez l'absence de publicité !

Il existe également tgv.com qui propose des informations sur les trains TGV. On peut rechercher des horaires ou acheter un billet, mais on est fatalement redirigé sur voyages-sncf.com.

Bah tiens, il existe aussi ter-sncf.com, peut-être enfin un site SNCF simple pour trouver des horaires ? Mis à part un petit bug (il me demande de choisir entre la gare et la commune de Sélestat, or c'est la même chose), l'affichage des résultats est propre et la navigation dans les horaires suivantes / précédentes est agréable. Il n'est pas possible d'acheter de billet en ligne. En même temps, pas besoin de réserver pour un TER.

Il existe aussi les sites d'information sncf.com (informations générales sur la SNCF) et infolignes.com (état actuel et prévisions du trafic).

Agences SNCF

Il existe aussi des agences SNCF dans les centres villes (dans les grandes villes en tout cas) qui évitent d'aller en gare pour acheter des billets. À Paris, j'avais également vu des bornes (les gros trucs jaunes) en super-marché (Monoprix), mais leur disponibilité est loin du 100%.

Horaires des trains sur les sites étrangers

  • bahn.fr (Allemagne) : site de la Deutsche Bahn simple, efficace et disponible dans trois langues (allemand, français et anglais). Il demande juste de préciser son âge pour calculer le prix du billet.
  • sbb.ch (Suisse) : site des Chemins de fer fédéraux suisses disponible en quatre langues (français, allemand, italien et anglais). La page d'accueil est très sobre et n'affiche qu'un moteur de recherche.

Ce qui me choque aussi bien sur bahn.de ou sbb.ch, c'est la vitesse à laquelle apparaissent les résultats d'une recherche. Ils n'ont besoin que d'une seconde alors que voyages-sncf.com prend environ cinq secondes pendant lesquelles il nous impose une publicité ! D'ailleurs, la navigation sur voyages-sncf.com est lente de manière générale, pas uniquement lors d'une recherche. Il faut s'armer de patience pour « modifier tous les souhaits ».

Pour finir

Un ami m'a parlé du site trocdesprems.com qui permet de revendre ou d'acheter des billets Prems (non échangeables ni remboursables). Je n'ai jamais acheté de billet sur ce site, mais je suis sûr qu'on peut y faire de bonnes affaires.

dimanche 21 septembre 2008

Fusil en version 1.0 et article dans MISC (pan!)

Après 3 versions béta, le projet Fusil est enfin sorti en version 1.0 ! La version 1.0beta3 a été annoncée dans un journal linuxfr, et sur les listes de diffusions Full Disclosure et Pen test.

Nouveautés de Fusil 1.0

Entre la version 0.9.1 et la 1.0, la liste des changements est longue, mais voici les plus importants :

  • Fusil exécute maintenant les processus fils sous un autre utilisateur UNIX (fusil) pour éviter qu'il supprime vos fichiers ou tue vos processus !
  • Création d'un script replay.py pour pouvoir rejouer une session. Il permet de rejouer une session dans gdb, Valgrind ou gdb.py.
  • Possibilité de créer un fichier de configuration (~/.config/fusil.conf) pour modifier de nombreuses options (ex: désactiver le débogueur)
  • Renomme le dossier d'une session avec le type d'erreur pour pouvoir regrouper les sessions similaires (ex: « invalid_read-null », « div_by_zero », « timeout », etc.).
  • Chaque fuzzer est un programme qui a ses propres options en ligne de commande : utilisez l'option --help pour obtenir l'aide de chaque fuzzer
  • Création de fusil-vlc : teste le lecteur multimédia VLC
  • Création de fusil-zzuf : réutilise la bibliothèque zzuf de Sam Hocevar. Contrairement aux outils Fusil, zzuf mute les fichiers en mémoire, ce qui est plus rapide et permet de travailler avec de très gros fichier (plusieurs giga-octets).
  • Support de Python 3000 avec le script de conversion conv_python3.0.sh qui utilise le programme 2to3 puis applique quelques patchs supplémentaires
  • Support minimal de Windows

Fusil fonctionne sous Linux, FreeBSD et Windows. Il nécessite Python 2.4, supporte CPython et PyPy. Des paquets Debian, Mandriva, et d'autres distributions Linux sont disponibles.

Article dans le magazine MISC

J'ai écrit l'article « Pratique du fuzzing avec Fusil » dans le dernier numéro du magazine MISC (#39). L'article fait parti du dossier dédié au fuzzing.

D'ailleurs, j'ai bien aimé aimé l'article sur Sulley (fuzzer similaire à Fusil) de Gabriel Campana et Laurent Butti (deux dingues de fuzzing qui vous envoyent des exploits noyaux par le wifi !). J'y ai appris qu'ils ont réutilisé python-ptrace (binding Python de ptrace) pour porter Sulley sous Linux.

jeudi 11 septembre 2008

Phobies des nombres

Alors que je recherchais une liste des numéro de commit pour lesquels il faut payer son coup (exemples : 1000, 1664, 5000), je suis tombé sur une liste des phobies sur Wikipédia. J'apprend qu'il existe la triskaidékaphobie, peur du nombre 13, et l'hexakosioihexekontahexaphobie, la peur du nombre 666. Alors comme ça il existe des avions sans place numéro 13, j'avais jamais fait attention :-) Photo des boutons d'un ascenseur sans étage 4 ni 13 :

J'avais aussi lu que les appartements numéro 13 se vendent moins bien, en y réfléchissant, ça se comprend. Ça me rappelle un article sur l'absence de quatrième étage : c'est la tetraphobie, peur du nombre 4 venue de Chine où la prononciation du nombre 4 (四) sonne comme le mot « mort » (死). Un bande dessinée sur ces phobies :

(lire la BD en grand format : 600x720 pixels)

Bon, avec tout ça, je ne suis pas avancé pour savoir si je dois ou non payer mon coup pour le commit numéro 2175 ;-) Je devrais peut-être le décomposer en nombre premiers pour voir, ou alors séparer chaque chiffre et en calculer la somme modulo 17, ou .... euh, je vais arrêter ça tout de suite avant de finir en tuant ma copine (histoire de placer une référence au chouette film « 23 » avec Jim Carrey) !