Passer un disque NTFS en lecture seule

De nos jours (j’ai l’impression de commencer une mauvaise rédaction avec un lieu commun de merde…), pas mal de gens utilisent des disques durs externes pour sauvegarder leurs données. Pour ceux qui en utilisent plusieurs pour du stockage profond (c’est-à-dire des données qu’on ne modifiera plus), une problématique se pose parfois : comment faire en sorte qu’on ne puisse pas modifier par erreur les données du disque ?

Sous Windows, c’est possible en rendant un disque formaté NTFS accessible en lecture seule (read only). Un disque dur configuré de cette manière ne peut plus être modifié par qui que ce soit.

La manipulation se fait en ligne de commande via l’utilitaire DISKPART intégré notamment dans Windows 7.

Lancez la ligne de commande en mode Administrateur. Pour cela tapez « cmd » ou « powershell » dans la recherche du menu démarrer et faites un clic droit sur l’exécutable puis « Exécuter en tant qu’administrateur ». Perso je conseille Powershell mais ça marche aussi très bien avec le vieux cmd 🙂

Tapez DISKPART et appuyez sur [Entrée]
Vous rentrez alors dans l’utilitaire diskpart, l’invite de commande change :

DISKPART>

Les commandes suivantes peuvent être tapées indifféremment en majuscules ou minuscules.

Tout d’abord il faut démonter le volume, c’est à dire enlever sa lettre de lecteur Windows. Pour commencez, listez tous les volumes actuellement connus du système :

DISKPART> LIST VOL

Vous aurez une liste dans le genre :

  Volume ###  Ltr  Label        Fs
  ----------  ---  -----------  -----
  Volume 0     D   Données      NTFS
* Volume 1     C   Système      NTFS
  Volume 2     E   Mon backup   NTFS

L’étoile (*) indique sur quelle volume on est en train de travailler. Pour sélectionner le volume qui nous intéresse (ici le n°2) :

DISKPART> SELECT VOL 2

Vous pouvez retaper LIST VOL pour vous assurer que vous avez bien changé de volume.

Ensuite pour enlever la lettre de lecteur et démonter le disque :

DISKPART> REMOVE

DiskPart successfully removed the drive letter our mount point.

Pour passer le disque en lecture seule :

DISKPART> ATT VOL SET READONLY

Volume attributes set successfully.

Vous pouvez voir que l’attribut lecture seule est bien mis :

DISKPART> ATT VOL

Read-only              : Yes
Hidden                 : No
No Default Drive Letter: No
Shadow Copy            : No

La commande inverse (repasser le disque en lecture/écriture) est la suivante :
DISKPART> ATT VOL CLEAR READONLY

Et pour finir on remonte le disque avec une lettre de lecteur, ici E:

DISKPART> ASSIGN LETTER=E

DiskPart successfully assigned the drive letter or mount point.

Et on quitte

DISKPART> EXIT

Leaving DiskPart...

Et voilà 🙂

Vous noterez que comme le volume est en lecture seule, vous pouvez désormais le débrancher sans avoir à le démonter à travers la manipulation pénible d’éjection de disque. En effet le système n’écrit plus du tout sur le volume vu qu’il est en lecture seule, donc vous n’avez plus à craindre de perte de données à cause d’un problème de cache d’écriture. De toute façon l’éjection normale se passera en général sans problème vu qu’aucun processus ne pourra accéder au disque en écriture.
Vous pouvez aussi protéger l’ensemble d’un disque plutôt qu’un seul volume (partition) en utilisant les mêmes manipulations sauf qu’il faut remplacer VOL par DISK dans chaque commande. C’est utile si votre disque possède plusieurs volumes.

Au passage j’en profite pour donner une autre astuce très pratique pour forcer le démontage d’un disque qui ne veut pas s’éjecter (c’est assez pénible et ça arrive souvent). Il suffit en fait de le démonter manuellement en enlevant sa lettre de lecteur. Pour ça vous pouvez utiliser DISKPART mais vous pouvez aussi le faire directement à l’invite de commande classique de la façon suivante (ici pour le disque E:) :

MOUNTVOL E: /D

Et vous pouvez alors débrancher votre disque qui refusait de s’éjecter avec la façon classique. Évidemment je vous conseille de bien vérifier qu’un programme n’y accédait vraiment pas en écriture avant de faire cette manipulation.

Passez votre Samsung Galaxy S2 sous CyanogenMod 9

Avant-hier j’ai voulu faire un truc de dingue : passer mon téléphone Android, un Samsung Galaxy S2, sous CyanogenMod 9 (CM9). En effet Google Android est un système dont le code source est libre et certaines équipes en dehors de Google font des versions alternatives de très bonne qualité, un peu comme c’est le cas pour Linux. CyanogenMod est une des versions alternative les plus réputée, qui en plus permet souvent d’avoir la dernière version d’Android pour votre téléphone même si votre fabricant ne fait plus de mise à jour pour votre modèle.

Dans le cas du SGSII, l’avantage est d’avoir un système plus joli et plus réactif que la version de Samsung. Ce dernier rajoute en effet une grosse surcouche avec sa propre interface graphique et plein d’applis Samsung dont on se tape pas mal en général.

La difficulté majeure de l’opération est qu’elle n’est pas aussi simple que de cliquer sur un bouton pour faire une mise à jour (comme le fait iTunes pour l’iPhone). Mais de façon générale les mise à jour Android se font toujours dans la douleur, c’est d’ailleurs une des grandes faiblesses de cet OS. Pour passer à CyanogenMod il y a une difficulté supplémentaire qui est qu’on passe d’un firmware officiel (Samsung) à un firmware alternatif (CyanogenMod). Les deux versions étant différentes, il faut d’abord « rooter » le téléphone et installer un logiciel permettant de faire une mise à jour non-officielle.

Malheureusement je dois avouer que pratiquement tous les tutos sur le net sont vraiment HYPER MAL BRANLÉS. En plus il y en a des dizaines, souvent obsolètes, qui se renvoient les uns vers les autres, vers des wikis, des forums… Vraiment rien n’est fait pour vous aider, au final.

Commençons donc par la base, allons sur la page de CyanogenMod pour le Samsung Galaxy S2. On y trouve le lien de téléchargement, un lien vers le forum et un wiki. Et c’est TOUT. Absolument AUCUNE EXPLICATION sur comment installer le merdier n’est donnée sur cette page.

[edit]
On m’avait aussi indiqué de « bons tutos ». En voici un SENSÉ être pour les noob. Je l’adore, celui-ci. Je vous le copie/colle (avec les liens) :

– Make sure you’re running ICS bootloaders lower than LPH! (if you’re unsure, flash the CM9 Resurrection Edition)
– Make sure you’re running a proper working ClockworkMod-Recovery
– Copy GApps and CM9 ZIPs to your internal SDCard
– Boot into Recovery
– Flash CM9 zip
– Flash GApps zip
– DO A DATA WIPE / FACTORY RESET (otherwise your calendar sync will not work)
– Reboot
– Don’t restore Apps using Titanium Backup!

Et le pire c’est qu’ils sont sérieux.
[/edit]

Comme en général les forums sont de véritables fourre-tout mal branlés (et celui de CM9 n’est pas une exception, quand on clique sur le lien on trouve un message qui explique que la version stable n’est pas stable et des appels au secours de gens qui cherchent comment installer le firmware), direction le wiki pour savoir comment installer c’te truc sur votre téléphone.

Étape 0 : Pré-requis

Pré-requis pour comprendre ce tutoriel :
– Comprendre l’anglais
– Savoir qu’en France le modèle de Samsung Galaxy S2 est le « GT-I9100 », « GT-I9100P » ou « GT-I9100G », vérifiez bien votre numéro de modèle dans les informations système.
– Savoir que « Ice Cream Sandwich » (ou ICS) est le nom d’Android 4.0
– Comprendre que sur ce téléphone, le dossier « sdcard » renvoie en fait à une mémoire intégrée à votre téléphone. Si vous avez rajouté une SD Card, son contenu se trouve en fait dans le dossier « external_sd ». Vous ne trouverez cette explication nulle part.
– Que votre téléphone soit déjà sous ICS. Si vous avez un téléphone datant d’il y a un an pas mis à jour, ça n’est pas le cas. Mais en fait je suis pas sûr que ça compte (vous n’aurez pas la réponse sur le tuto).
– Avoir installé disponible sur cette page (cherchez « Odin »).

Débranchez le câble USB de votre téléphone, éteignez-le et ensuite maintenez les touches [Volume Bas] + [Power] + [Home] jusqu’à ce qu’un message apparaisse. Appuyez sur la touche [Volume Haut]. Votre téléphone se met en mode d’attente de téléchargement USB.
Lancez Odin sur le PC.
Branchez le câble USB sur votre téléphone. Attention : dans mon cas j’ai galéré comme un con car Odin ne marche pas avec les prises USB3 (elles sont bleues). Choisissez plutôt une vieille prise USB pourrie sur votre PC.
Dans Odin cliquez sur le bouton PDA et choisissez le fichier tar que vous avez téléchargé plus tôt. Cochez PDA, les cases « Auto Reboot », « F. Reset Time » doivent être cochées.
Odin a normalement détecté votre téléphone, une case en haut est devenue jaune.
Cliquez sur « Start ». Votre téléphone se met à jour et redémarre, c’est rapide.

Étape 2 : Root

Maintenant vous devez rooter votre téléphone, c’est à dire débloquer un mode spécial qui vous donne accès à des fonctions normalement interdites de mise à jour et de modification système. Une fois rooté certaines applis pourront avoir accès à ces fonctions, mais le système vous demandera toujours une confirmation (comme sur un ordinateur de bureau, une alerte s’affichera). Évidemment vous n’accepterez pas systématiquement car vous êtes intelligent et que vous ne voulez pas de virus.

Le tutoriel de CyanogenMod vous envoie complètement chier sur ce sujet, il est absolument useless.

Il vous faut donc un autre tutoriel mieux foutu pour rooter votre téléphone.

Comme indiqué trouvez votre version de système en tapant sur le clavier d’appel du téléphone le numéro mystère suivant : *#1234. Seuls trois caractères de la ligne « PDA » sont importants : les trois derniers. Dans l’exemple « I9100XWKE7 », c’est « KE7 ». Il s’agit d’un code indiquant la date et la version de votre système actuel.

Le tuto sur le root vous envoie lui aussi chier (surprise !) et vous renvoie sur un forum pour trouver le fichier qui vous sera utile. Comme je l’ai dit plutôt, plus bordélique et merdique tu meurs. Ma méthode : y aller et faire une recherche sur les trois caractères (dans mon exemple, « KE7 »). Téléchargez le zip correspondant qui doit contenir un TAR, et vous avez ce qu’il vous faut pour finir le tuto sur le root. Si vous trouvez plusieurs fichiers qui correspondent, prenez celui que vous voulez, on s’en tape (en tout cas je suis tombé dans ce cas et j’ai fait au pif, et ça a marché).

Ensuite la manipulation est exactement la même que celle que vous avez faite pour installer ClockWorkMod Recovery plus haut (éteindre le téléphone, Odin, etc). Le tuto sur le root vous donne en plus de jolies captures d’écran.

Étape 3 : CyanogenMod. Ah en fait, non.

Dernière étape, installer CyanogenMod. Pour cette étape j’ai voulu ne pas m’emmerder et j’ai téléchargé l’application ROM Manager sur Google Play (la version gratuite). L’avantage c’est qu’elle télécharge tous les fichiers nécessaires et qu’elle fait tout automatiquement.

Par exemple, vous pouvez installer ou mettre à jour ClockworkMod Recovery directement à partir de ROM Manager, ce qui nous aurait épargné l’étape 1. Ça, ça a bien marché chez moi.

Et ensuite, vous POURRIEZ télécharger et installer CyanogenMod dirrectement à partir de cette appli. Le problème c’est que ça n’a pas marché (CWM me faisait une erreur à la con : impossible de monter /sdcard/).

Donc laissez tomber cette solution, vraiment, ça ne sert à rien, j’ai perdu 30mn là-dessus.

Étape 3 : CyanogenMod

Téléchargez le zip de CyanogenMod (la dernière stable).
Téléchargez les Google Apps qui correspondent à la version de CyanogenMod que vous venez de télécharger.

Foutez les deux zip à la racine de votre téléphone (par USB à partir de votre PC).

Éteignez votre téléphone, puis maintenez les touches [Volume Haut] + [Power] + [Home] jusqu’à ce qu’un petit menu bleu apparaisse : c’est ClockworkMod Recovery, le truc que vous avez installé au tout début.
Les touches pour se déplacer sont [Volume Haut] et [Volume Bas] et pour valider la touche [Power].

Choisissez « wipe data/factory reset », ce qui effacera vos applications et toutes vos préférences système.
Choisssez « wipe cache partition », ce qui efface un truc qui s’appelle le « dalvik cache » (qui sert à accélérer le fonctionnement des applications, rien à voir avec les daleks).
Allez dans « install zip from sdcard » puis « choose zip from internal sdcard ». Choissez le zip de CyanogenMod que vous avez mis sur votre téléphone, faites la mise à jour.
Recommencez « choose zip from internal sdcard » pour installer le zip des Google Apps.
Revenez au menu principal et choisssez « reboot system now ».

CyanogenMod est installé.

Entrez les informations de votre compte Google puis allez dans Google Play. Toutes vos informations et applications synchronisées avec Google vont se réinstaller.

Voilà.

Pas compliqué. Mais apparemment personne n’est capable d’expliquer ça simplement chez CyanogenMod.

Apple/Amazon : Perdez votre vie numérique en 30mn

Mat Honan est un journaliste chez Wired à qui il est arrivé la désagréable mésaventure d’être la cible d’un hacker qui voulait prendre le contrôle de son compte Twitter. Ce hacker a pu, par un enchaînement de recherches et de coups de fils, pu réinitialiser les mots de passe des comptes de sa victime suivants :
– Amazon
– Apple (Apple ID : iCloud, iTunes…)
– Google (Gmail)
– Twitter

Le hacker n’a effectué aucun achat avec les comptes Amazon ou Apple ou Google, mais il aurait pu par exemple commander des télés sur Amazon ou des applis sur les App Store… Par contre, en accédant au compte iCloud, il a pu effacer toutes les données que le journaliste stockait en ligne ET sur son Macbook via le service « Find My Mac » d’Apple (qui permet de bloquer le Mac à distance et d’y effacer toutes les données). Le journaliste a perdu un an et demi de données personnelles, notamment toutes ses photos qu’il n’avait pas sauvegardé ailleurs, car il avait trop confiance dans iCloud.

Son aventure et ses recherches sont toutes expliquées ici (en anglais).

Cet article explique de façon détaillée comment le hacker s’est introduit dans ses différents comptes. Et contrairement à ce qu’on pourrait penser, c’est vraiment à la portée de tous. Je n’ai pas moi-même effectué les manipulations mais Mat Honan a pu les vérifier lui-même. Je les traduis ici pour les non-anglophones afin de vous montrer que malgré tout ce que vous pouvez penser, vous n’êtes pas à l’abri de ce genre de mésaventure.

À l’origine, le hacker veut donc avoir accès au compte Twitter de Mat Honan. Tout d’abord il va prendre comme hypothèse que le journaliste a utilisé son adresse e-mail normale pour ouvrir le compte Twitter. Il trouve l’adresse du site web du journaliste, et sur ce site web, trouve l’adresse mhonan@gmail.com. Si le hacker veut accéder au compte Twitter, il doit avoir accès à ce compte Google pour faire un changement de mot de passe du compte Twitter.

Comment avoir accès au compte Gmail ? De la même manière, le hacker va chercher un moyen de changer le mot de passe de ce compte. Pour cela, il va lancer une procédure de récupération de mot de passe oublié. Google propose alors d’envoyer un e-mail à une des adresses e-mail alternatives que le journaliste avait indiquées à Gmail. Une de ces adresses est m****n@me.com (Google cache volontairement certains caractères). Il ne faut pas être informaticien pour deviner que cette adresse est mhonan@me.com, celle d’un compte iCloud (anciennement Mobile Me) de chez Apple. Le hacker va donc devoir avoir accès au compte Apple Me pour changer le mot de passe du compte Google.

C’est là que tout va se jouer car changer le mot de passe d’un compte iCloud n’est pas très compliqué. Le hacker, qui a par la suite contacté le journaliste, a indiqué qu’il était systématiquement possible de rentrer dans un compte Apple. Cette adresse de récupération qui devait sauver le journaliste a en fait entraîné sa perte.

Pour récupérer un mot de passe d’un compte iCloud, Apple ne demande « que » l’adresse de facturation du compte ainsi les 4 derniers chiffres du numéro de carte de crédit enregistrée sur ce compte. Comment faire pour obtenir ces deux informations très privées ?

Pour ce qui est de l’adresse, il faut faire jouer Google et toutes les bases de données possibles. Le journaliste ayant acheté un nom de domaine, son adresse était dans le Whois. Première étape terminée.

Deuxième étape, les 4 derniers chiffres du numéro de carte bleue. Le hacker a pris comme hypothèse que le journaliste avait déjà acheté sur Amazon et va rajouter une carte bancaire sur le compte Amazon de Mat Honan. Il suffit pour cela d’appeler Amazon, de leur donner un nom de détenteur de compte, une adresse e-mail, l’adresse de facturation (qu’on a déjà), et le numéro de la carte bancaire que l’on veut rajouter. Le hacker a pour cette dernière utilisé un générateur de faux numéro de carte bancaire.

Ensuite, une fois la conversation terminée, le hacker rappelle Amazon et dit qu’il a oublié le mot de passe de son compte Amazon. Il donne le nom de Mat Honan, l’e-mail, l’adresse de facturation, et Amazon demande en plus un numéro de carte bancaire associée au compte. Il a suffit au hacker de donner le numéro de la carte qu’il venait d’ajouter et bingo, Amazon lui donne accès au compte.

Une fois sur le compte Amazon, le hacker liste les moyens de paiements enregistrés : il y a en dernier la fausse carte qu’il vient de rajouter, et au-dessus, la carte bancaire du journaliste. Bien sûr, Amazon masque les numéros de cartes bancaire, sauf… les 4 derniers chiffres.

Notre hacker appelle donc Apple en donnant l’adresse e-mail de l’Apple ID, le nom, l’adresse de facturation et les 4 derniers chiffres de la carte bancaire du journaliste. Apple réinitialise le mot de passe, et le hacker a accès au compte Apple du journaliste. Au passage, il accède à distance au Mac du journaliste, y efface tout et le bloque (en rajoutant un code PIN sur le Mac), afin de bloquer toute tentative pour le journaliste de comprendre ce qui se passe.

Ensuite, il lance la procédure de changement de mot de passe de Google grâce au compte Apple, et fait de même avec le compte Twitter. Sur ce dernier, il fait de la merde et Twitter bloque le compte du journaliste.

Que nous apprend cette mésaventure ?

Tout d’abord qu’il faut éviter de lier les comptes les uns aux autres. Le hacker aurait eu beaucoup plus de peine à hacker le compte Gmail si l’adresse e-mail de restauration n’avait pas été une adresse d’un autre service facilement hackable.

Au passage, Google propose maintenant un système de « validation en deux étapes » vraiment, vraiment plus strict, qui demande un code envoyés par SMS pour toute connexion à partir d’un ordinateur inconnu. Je vous conseille fortement de l’activer : si Mat Honan avait activé la validation en deux étapes, le hacker n’aurait jamais pu pénétrer le compte Gmail.

Ensuite, on apprend aussi avec stupéfaction que les comptes Apple se hackent en deux coups de cuillère à pot. Interrogé, Apple a répondu que ses procédures de sécurité n’avaient pas été respectées, ce que le hacker et le journaliste démentent (Mat Honan a tenté plusieurs fois la manipulation et ça a marché à chaque fois).

Enfin, que Amazon aussi a une sécurité de merde qu’on peut faire sauter en 5mn, ce qui est TRÈS inquiétant. C’est pas comme si la moitié de la planète y avait enregistré son n° de carte bleue.

Je rappelle que Google, Apple et Amazon sont tous les trois des marchands et que le hacker aurait vraiment pu faire pleins d’achats pour foutre la merde.

Et, enfin, évidemment, les services clients des différentes sociétés ont été incapables de comprendre ce qui se passait.

Un autre résumé en français sur 01net

J’en profite pour signaler au passage que toutes les protections à base de questions du genre « Comment s’appelle votre mère ? » sont DE LA MERDE. Dans la majorité des cas, il suffit d’aller sur Facebook pour trouver ces informations.

Pensez-y.

Modification du 10/08 : Remplacement des références à Mobile Me par iCloud.
À priori Apple a bloqué toutes les procédures de récupération de mot de passe depuis hier, le temps de refaire un audit de leurs procédures de sécurité.

Free Mobile : Moi aussi ! Moi aussi !

Oui, moi aussi je veux mettre mon grain de sel pour dire ce que je pense des nouvelles offres de Free.

En fait ce qui m’a fait réagir, c’est cet article d’UFC Que Choisir qui détaille certains frais des offres de Free Mobile. Loin de moi l’idée de les critiquer, ils sont parfaitement dans leur rôle d’aller éplucher les offres de Free et de les comparer avec ceux de la concurrence : d’ailleurs, ladite concurrence devrait s’en inspirer au lieu de mentir comme des arracheurs de dents.

Pour ma part je me suis penché sur le coût du changement de mobile et celui, que l’on étudie plus rarement, des appels non pas À l’international mais DE l’international (quand vous êtes en déplacement à l’étranger). Le fait d’avoir eu une facture avec un surcoût de 70€ parce que j’ai eu à utiliser Google Maps pendant 5mn m’a définitivement convaincu de vérifier systématiquement ces tarifs avant de partir à l’étranger – et accessoirement, de préférer prévoir son trajet AVANT de se perdre aux USA.

En ce qui concerne le renouvellement de mobile, vous pouvez trouver des exemples un peu partout sur internet, mais le calcul est vite fait :
– Prenez un abonnement TOUT ILLIMITÉ avec engagement chez un opérateur X : ajoutez le prix que vous allez payer pour le mobile (exemple : 199€) à la totalité de ce que vous allez payer d’abonnement pendant toute la durée de votre engagement (tarif au mois x 12 ou x24). C’est ce que le tout vous coûtera.
– Prenez le forfait Free (ex. 19,99€) que vous multipliez par le même nombre de mois (x12 ou x24). Ensuite, trouvez votre mobile au meilleur prix, dans une version SANS ABONNEMENT, dans une boutique quelconque (ex. The Phone House, Apple…).

Comparez les deux. Souvent, la différence est minime, voire nulle. De plus vous pouvez souvent payer le mobile en 3 ou 10 fois sans frais. Attention par contre, il y a un piège : ce crédit sera compté dans l’endettement de votre ménage, ce qui n’est pas le cas des offres avec mobile et engagement.
Prenez aussi en compte le fait que si vous cassez votre mobile (comme le signalait UFC Que Choisir), vous avez perdu votre argent si vous l’achetez vous-même. Cependant c’est souvent aussi le cas lorsque vous l’achetez avec un abonnement : si vous cassez un iPhone 4S SFR au bout d’un mois, je vous assure que vous aurez peu de chance d’en obtenir un autre gratuitement…

edit : On me signale toutefois qu’avec les points de fidélité il est souvent moins cher de changer de mobile en se réengageant. Franchement, j’ai une faible consommation (= peu de points de fidélité) et je change de terminal tous les 18 mois environ. Et pour moi, les points de fidélité, ça ne m’a jamais été rentable. Après, à vous de faire le calcul.

En ce qui concerne les forfaits, rappelez-vous que celui de Free est tout illimité : voix, SMS, MMS, Internet (sans aucun bridage, uniquement un fair use). Les forfaits à 20€ de la concurrence, même illimités, ont souvent mis en place des bridages abusifs qui ne sont indiqués nulle part ; par exemple, Bouygues bride la taille maximale des fichiers que vous pouvez télécharger et interdit certains usages (UDP…), et ce depuis des années, et malgré les plaintes répétées de leurs abonnés.

Venons-en maintenant aux tarifs à l’international. Pour ça j’ai comparé le forfait Eden de Bouygues avec le forfait Free à 20€ sur quelques-unes de mes destinations de ces dernières années.

Vous l’aurez compris hein, j’ai mis en vert ce qui est bien, et en rouge ce qui est caca.

Ce qui saute aux yeux, c’est le prix de la data : Free est souvent plus de deux fois moins cher que Bouygues ! Même si, encore une fois, je vous déconseille plus que fortement d’y avoir recours – le simple fait d’activer la data en roaming et si vous avez un smartphone il va se mettre à télécharger tous vos e-mails, synchroniser vos contacts, télécharger des mises à jour… ou comment vider votre compte bancaire en 30s.

Du point de vue des SMS, Free est légèrement plus cher que Bouygues sauf pour les USA. On peut mettre ça sur le fait qu’ils ont dû réussir à négocier un meilleur tarif de gros.

Au niveau de la voix, pour tout ce qui est Europe on est dans du gros « c’est tout pareil » (à 1 centime près). Pour certains pays comme l’Afrique du Nord, comme le signalait UFCQC, Free est beaucoup plus cher, alors que – enfin ! – pour les USA et le Japon, on commence à avoir des tarifs humains : 0,50 € par minute en appel local ou vers la France.
Free est aussi jusqu’à 3x moins cher sur les appels reçus, ce qui est une bonne nouvelle : combien de fois ai-je du décrocher mon téléphone juste pour expliquer à la personne au bout du fil d’arrêter de m’appeler en boucle et que si je ne décrochais pas c’est que j’étais à l’étranger (je rappelle que quand vous appelez un numéro en 06 ou 07 alors que la personne se trouve à l’étranger, c’est votre destinataire qui paye la différence). Dans ce cas, aux USA par exemple, vous payez 1 € direct chez Bouygues, alors chez Free vous n’en aurez que pour 30 centimes.

Les appels d’étranger à étranger sont eux particulèrement chers dans tous les cas, donc là aussi appeler un pays autre que la France ou le pays dans lequel vous vous trouvez est à proscrire complètement (ce n’est pas 60 centimes de différence qui sauveront votre facture). Notez que chez Bouygues vous devez activer cette possibilité, si vous êtes partis à l’étranger sans avoir activé l’option correspondante, vous ne pourrez pas appeler d’autre pays que la France (et celui où vous vous trouvez).

Enfin, pour les MMS, j’ai pris comme hypothèse la taille maximale d’un MMS (100Ko), car Bouygues facture à la taille. Donc si vous recevez un MMS vide cela ne vous coûtera rien, mais avouez que cela a peu de chance d’arriver !

Conclusion : les communications de l’étranger restent toujours chères et doivent rester l’exception plutôt que la règle. Certaines destinations sont clairement de gros TRAPS quand on est chez Free, et je ne saurais que vous conseiller de consulter les tarifs de Free Mobile à l’international. Mais la bonne nouvelle, c’est qu’ils sont clairs et lisibles ! La seconde bonne nouvelle, c’est que même si vous vous retrouvez avec une facture de 100€ au lieu de 20€, pensez que cela reste ponctuel… comparé à un forfait Eden à 35~50 € PAR MOIS…

Nolife, les outils (5) : Papoum

Après Marvin, Logolife et Time Attack, au tour d’un autre logiciel propriétaire de Nolife de se voir dévoilé ici : Papoum. Ce sera un peu plus long… car le sujet est plus complexe 🙂

La situation mi-2008, plus d’un an après le début de la diffusion de Nolife, était que la chaîne avait un sérieux soucis à la diffusion : les personnes en charge de la conduite antenne (à l’époque, principalement Alex Pilot) n’avaient aucun moyen automatisé de vérifier qu’un programme était actuellement online sur la régie de diffusion ou pas. Le seul moyen était manuel : il fallait y accéder par ftp et vérifier, parmi des centaines de fichiers, que les émissions qui avaient dernièrement été uploadées étaient bien présentes.

Tout le problème résidait dans le système d’upload, qui n’était pas trivial : la première étape était d’uploader les fichiers par FTP dans un dossier dans lequel Nolife possédait des droits d’écriture. Ensuite lorsque l’upload était terminé, un script distant était sensé détecter que le fichier était uploadé (en réalité que sa taille ne changeait plus…) et faisait une vérification d’intégrité de la vidéo. Si la vidéo était ok, elle était copiée automatiquement dans le dossier contenant tous les fichiers disponible pour la diffusion (vidéos dites « PAD » pour « Prêt À Diffuser »), sur lequel Nolife n’avait qu’un droit en listing+lecture, une règle imposée par Cognacq-Jay pour des raisons de sécurité. Sinon, le fichier partait dans un dossier « quarantaine » de vidéos non-viables pour la diffusion.

Le système s’arrêtait là : pas d’alerte, pas d’avertissement. Si jamais il y avait une interruption lors de l’upload (ce qui était fréquent…), le script se lançait, en concluait que la vidéo était incorrecte et la mettait en quarantaine. De plus, un autre script était régulièrement lancé qui allait nettoyer le dossier en effaçant des vidéos PAD en fonction de règles prédéfinies (exemple : les 101% qui ont plus d’un mois), car la place disque était extrêmement limitée.

Au niveau de la diffusion à proprement parler, lorsqu’un fichier de la playlist courante n’était pas présent, la régie passait simplement au fichier suivant – un comportement qui est normalement interdit en diffusion télé : les régies génèrent normalement un noir équivalent à la durée du programme manquant pour ne pas décaler le reste de la programmation. Lorsqu’il s’agissait de clips ou de rediffusions de courtes rubriques, ce n’était pas grave. Mais lorsqu’il s’agissait du 101% du jour, c’était un problème évidemment très gênant, et en général la saute d’une émission se traduisait par un décalage catastrophique de l’enchaînement des playlists (se terminant souvent, encore une fois, par un coup de fil à Cognacq-Jay pour sauter un programme).

Autrement dit, il fallait absolument trouver un moyen de vérifier automatiquement si tous les programmes d’une playlist étaient bien « online » en régie. L’idée a commencé à germer en juin 2008 : en effet, sur la fin de saison l’équipe de Nolife est en général très fatiguée et les erreurs humaines se multiplient, ce qui a été le cas à cette période. Peu de temps auparavant, si mes souvenirs sont bons, Sébastien avait développé Time Attack, dont on a déjà parlé ici. À la rentrée de septembre 2008, après de nouvelles erreurs d’émissions non diffusées, je me suis mis au travail.

Ce fût ma première contribution à la création des outils de Nolife. Ça n’était pas si évident que ça : ma dernière vraie expérience de développement datait de 7 ans plus tôt. De plus, j’ai choisi de travailler en C# (.NET 3.0 à l’époque) et en WPF, ce qui n’était pas répandu (le WPF sont les nouvelles API d’interface homme-machine de Microsoft qui ont été introduites avec Windows Vista). Seb n’ayant pas l’expérience du WPF, il n’a pas pu m’aider et je me suis souvent bien fait chier pour comprendre la logique du bouzin. Mais au final je ne l’ai pas regretté… comme vous pourrez le voir plus tard.

Papoum 0.1 – L’origine
(septembre 2008)

Papoum, dans sa version 0.1, avait été développé sur le modèle d’interface de Time Attack que je trouvais très pratique et qu’Alex connaissait déjà.

Le fonctionnement était relativement simple : Papoum téléchargeait au lancement la liste des fichiers par FTP sur la régie de diffusion. Ensuite, il suffisait de glisser sur la fenêtre un m3u généré par Marvin et retouché par Alex. Papoum affichait alors la playlist à la façon de Time Attack, sauf qu’il vérifiait que le fichier était bien en ligne sur la régie. Dans le cas contraire, la ligne apparaissait en rouge. C’était tout, mais cela a suffit pour qu’Alex l’utilise immédiatement ! Évidemment, à partir de fin septembre 2008, les erreurs de diffusion dues à des fichiers offline ont baissé de façon spectaculaire (c’est toujours un peu gratifiant de voir un résultat quasi-immédiat ^^).

(Je fais une petite parenthèse sur le nom : au départ ce devait être un tout petit projet et je m’étais imaginé mettre un petit son qui faisait « Papoum ! » lorsqu’on droppait une playlist. Le son n’est jamais arrivé mais par contre le nom est resté. C’est toujours un peu délicat du coup quand on le présente à des professionnels :))

Papoum 0.1 permettait aussi d’afficher la liste complète des fichiers disponibles en régie (bouton « Afficher CJI » sur l’interface), ce qui évitait d’avoir à utiliser un client FTP pour vérifier des uploads manuellement.


Version 0.2a de Papoum. Ici, tous les fichiers de la playlist apparaissent offline. Je ne peux plus le faire fonctionner car ses paramètres sont entièrement hardcodés et la configuration de Nolife a changé.

Dès le départ, Papoum intégrait certains bout de code de Marvin, comme celui qui permettait de déduire la durée d’une vidéo de la taille du fichier, ce qui lui donnait un air de « Time Attack ++ ». Puis Alex a commencé à demander plus de fonctions, comme par exemple éviter de charger le listing du ftp à chaque lancement.

La version 0.3 (renommée ensuite 0.30) permettait de scanner les fichiers stockés localement à Nolife afin de les comparer avec ceux en ligne. Cela permettait de détecter les différences de versions car les émissions étaient parfois recompressées ; c’est notamment arrivé lorsque Nolife a commencé à être diffusée sur Neufbox, car la compression utilisée par Nolife jusque-là était incompatible avec ce réseau.

Pour éviter le scan des fichiers systématique à chaque lancement, les metadatas des médias de Nolife étaient sauvegardés en XML : la base de données de Papoum était née. Cela permettait de faire des stats (du genre : tous les 101% additionnés font tant d’heure, etc), mais surtout cela a eu une incidence notable par la suite sur le fonctionnement de Nolife.

Papoum a ensuite continué à évoluer avec deux mises à jour majeures.


Papoum 0.31 : les stats de durée totale des émissions, disponibles pour la première fois, ont également servi pour faire la promotion de Nolife.

Papoum 0.40 – Rock the Playlist
(décembre 2008)

La version 0.40 a intégré une véritable simulation de la diffusion des playlists par IPPlay. Pour résumer, au lieu de glisser une seule playlist, on pouvait désormais en glisser plusieurs ; Papoum affichait ensuite ce qui allait effectivement être diffusé à l’antenne en simulant le comportement de la régie, y compris les enchaînement foirés et les playlists qui bouclaient (avec un avertissement quand ça arrivait).
Cette fonctionnalité est, après encore bien des améliorations, celle qui sert encore actuellement pour checker les playlists et les envoyer en régie (cf les screenshots en fin d’article).

Papoum 0.50 – De bien belles assets
(janvier 2009)

La seconde étape majeure a été la transformation de logiciel de vérification de playlist à celle de MAM (Media Asset Management), fin janvier 2009.

Je m’étais en effet rendu compte que je pouvais récupérer les infos de Marvin (via une passerelle intégrée à Papoum) et en faire une espèce de base de données un peu mieux foutue. De plus, je disposais d’informations supplémentaires : par exemple, la simulation de playlists implémentée dans Papoum 0.40 me permettait de déduire les heures de premières et dernières diffusions d’un programme.
Je me suis donc dit qu’en structurant un peu tout ça, il serait peut-être possible de centraliser un minimum les informations que l’on avait sur les émissions de Nolife tout en ajoutant d’autres, comme par exemple lier un titre à chaque type d’émission (CU : « 101% », CM : « Chez Marcus », etc), donner des numéros, des sous-titres, des descriptions, la couleur du logo, etc.

Donc, d’une base stockée sur un fichier XML, Papoum est passé à plusieurs. Comme je viens de le dire, il était possible de rentrer des informations sur chaque émission. Une autre nouveauté, plus discrète mais essentielle, était que ces metadatas n’étaient plus liées au fichier media mais à une entité de plus haut niveau : l’émission (« show »). À la base, l’idée était de préparer Papoum à la connexion avec une vraie base de donnée relationnelle (type MySQL). De plus je caressais l’espoir de pouvoir envoyer les infos un jour ou l’autre aux différents EPG (guide des programmes), et également d’indiquer sur le site web les programmes en cours de diffusion ; la centralisation des informations était essentielle pour cela.

D’autres fonctions sont apparues dans cette version : la recherche, la possibilité de donner un niveau d’importance aux émissions…

Bien sûr un travail de nettoyage et de réécriture a dû également être fait en parallèle pour supporter tout ça, et c’est à ce moment-là par exemple que la maintenance (debuggage…) a commencé à prendre du temps, et que la configuration via des fichiers externes est apparue (fin du paramétrage « en dur » dans le code).


Papoum 0.50. Beaucoup de choses étaient déjà prévues dans la structure de cette version, qui ont été implémentées dans les versions 0.5x suivantes.

Papoum 0.60 – L’apogée
(mars 2009)

La base de code de la version 0.60 de Papoum a été la plus stable et la plus aboutie techniquement, ce qui a fait d’elle la version qui a le mieux fonctionné, et ce pendant 15 mois. Je crois que c’est un record dans la vie de ce logiciel !

Principalement il s’agissait de grosses améliorations techniques ou la réutilisation de fonctionnalités déjà existantes. Par exemple est arrivée la possibilité de « lier » virtuellement plusieurs médias pour en faire une émission (principalement pour le J-Top et Ami Ami Idol). Mais la première fonctionnalité « publique » de Papoum, celle qui l’a un peu fait connaître des gens suivant assidûment la chaîne, fût NoAir, en avril 2009 (Papoum 0.63).

NoAir part du principe qu’on pouvait faire un « guide des programmes » avec tout ce que j’avais déjà dévelopé pour Papoum. Cela consistait tout simplement à aller chercher les playlists déjà entrées en régie (on en a toujours conservé une copie en local), et faire une simulation de diffusion sur celles correspondants aux 12 dernières et 24 prochaines heures. De là on garde les programmes uniquement marqués comme « importants », et hop ! On a la liste des programmes qu’on peut partager avec les téléspectateurs. Ceci s’est fait par l’upload d’un XML sur le site web (qu’il fallait déclencher via un bouton dans Papoum). NoAir existe toujours à l’heure actuelle même s’il n’est plus généré de la même manière : vous pouvez en avoir un exemple et apprendre comment créer votre propre client.


L’implémentation de Nolife de NoAir, disponible sur le site officiel.

Un autre amélioration technique concernait le scan des médias car le format de compression avait encore changé pour s’adapter à des modifications dans IPPlay. Du coup, on se retrouvait avec une multitude de formats différents (MPEG2 en 544×576 4/3 et 16/9, 720×576 16/9, upper field first, lower field first et deux bitrates différents) et le scan « à l’arrache » ne suffisait plus. Papoum a donc intégré un vrai scan des médias grâce à l’excellent mediainfo.dll et pouvait sonner l’alerte dès qu’un fichier non compatible avec la diffusion était programmé, car chaque type de fichier était reconnu et classifié. L’algorithme de scan a dû être pas mal affiné à cette occasion car mediainfo prend son temps et il est hors de question de rescanner intégralement 16000 fichiers à chaque fois.

La version 0.60 a aussi introduit le multi-utilisateur qui était TRÈS bancal. En fait les XML étaient centralisés sur le réseau et au démarrage, Papoum en chargeait une copie. L’utilisateur pouvait ensuite centraliser les informations de son poste vers le réseau (en écrasant les anciennes)… j’ai dit que c’était bancal ?

Ensuite, et c’est plus subtil, la terminologie a évolué. Par exemple on a vu apparaître la notion de « stocks » pour définir les emplacements des médias. Ce changement vient du fait que Nolife, avec l’aide d’Ankama, avait déposé des dossiers pour la reprise sur le câble et le satellite ; or IPPlay n’était pas une régie suffisamment fiable pour ces réseaux – de toute façon, IPPlay était une bonne solution pour démarrer, mais pas sur le long terme. Ankama avait donc lancé l’achat d’une nouvelle régie pour Nolife, construite par la société MBT et avec laquelle, à terme, Papoum devait s’interfacer. La terminologie s’est donc adaptée à celle en vigueur dans le milieu.

Pour finir, une sombre version 0.70 est sortie mi-juillet 2009. En fait la seule vraie nouveauté était une passerelle écrite pour récupérer toutes les informations concernant les clips japonais et français qui étaient stockées dans un tableau Excel et que Seb recopiait à la main dans Marvin (comme vous le voyez, on partait de loin). Le but était de centraliser toutes les informations concernant les émissions de Nolife dans Papoum, car la véritable base de données à été construite durant l’été 2009 à partir des XML de ce dernier.

Papoum 0.90 – Adieu IPPlay… Adieu Papoum ?
(octobre 2009)

Mais, mais mais, où est la version 0.80 ?

En fait, la 0.80 n’a jamais été déployée sous ce nom. Il s’agit d’un « fork », une branche parallèle dans le développement de Papoum qui s’est créée mi-2009. Elle sera mise en production durant l’été mais déployée sur l’ensemble des postes de Nolife uniquement début 2010. Je vous laisse deviner ce qui a motivé cette bifurcation soudaine ! 🙂

La branche 0.60 de Papoum a tout de même continué à évoluer sous le numéro « 0.9x » pour la différentier de la nouvelle branche (qui sera finalement numérotée 1.0). Au départ, la 0.60 devait être abandonnée, mais elle est restée, jusqu’à ce jour, le seul outil que l’on avait pour vérifier les playlists avant diffusion. Elle est donc encore en production et curieusement, est revenue à sa fonction de base.
Les autres fonctions de Papoum ont été progressivement désactivées ou modifiées car Papoum et ses XML n’était plus la référence. Par exemple, les métadatas des émissions sont désormais automatiquement récupérés de la nouvelle base de données, mais Papoum ne peut pas les renvoyer dans l’autre sens. C’est en quelque sorte devenu une « impasse » logicielle.

Entre temps, les choses avaient pas mal changées au niveau de la diffusion.

Car même si Nolife n’a finalement pas été reprise sur le câble et le satellite, Médiamétrie a commencé à mesurer l’audience sur l’ADSL dès février 2010… mais le signal envoyé par IPPlay interdisait à Nolife de se faire mesurer. Donc la régie de MBT (le « Chameleon »), qui était restée en sommeil, a finalement été mise en production en juin 2010, et IPPlay complètement abandonné.

Or, le Chameleon ne fonctionne pas du tout comme IPPlay ! Le principe est absolument contraire : le player vidéo est asservi par un logiciel (« Phoenix ») qui gère une seule playlist (dite « playlist antenne »).
Autrement dit, c’est la playlist antenne qui définit à quelle moment précis chaque média doit être joué, et à quel moment il doit s’arrêter, et ce, à l’image près. Il faut évidemment que ces données correspondent au média qu’on veut jouer… donc on ne peut plus simplement donner une liste de fichiers, il faut aussi donner un timecode de début de lecture (par exemple le 20/05/2011 à 14:35:24:12, soit 14h 35mn 24s et 12 images) et une durée précise pour chaque média. Le player qui joue le média est dans une couche plus basse et si le média joué est en réalité plus long que ce qui est indiqué dans la playlist, il sera coupé ; s’il est plus court, il y aura un écran noir à l’antenne.

Du coup, impossible de balancer nos m3u moisis dans ce système. La solution, encore une fois, a été d’utiliser la simulation IPPlay intégrée à Papoum et tout simplement d’exporter une playlist antenne au bon format, avec tous les TC, pour la nouvelle régie. Pour être vraiment précis sur cette partie, MBT nous a aussi aidé en développant de leur côté une autre passerelle pour nous permettre de fusionner la playlist exportée de Papoum dans la playlist antenne de Phoenix.

C’est donc Papoum qui fait la passerelle entre Marvin et le Chameleon, alors qu’au départ il avait un simple rôle de vérification. Ce qui explique en partie sa longévité en production, car il est assez difficile de changer un composant critique de la diffusion.

Enfin (ouf !), la dernière modif a concerné l’arrivée toute récente de la publicité, le challenge ici étant que les noms des médias et leur durée nous sont communiqués par France Télévision Publicités bien avant leur diffusion, mais que Papoum n’a pas accès aux médias pour les scanner. Or ce dernier n’a pas été prévu pour gérer des émissions sans média (par défaut quand ça arrive la durée est ramenée à 0).

Le problème là-dedans, c’est que la nouvelle régie, la publicité et d’autres changement structurels à Nolife n’étaient pas du tout prévus dans la mécanique originale de Papoum. Du coup depuis début 2010 les patchs s’enchaînent, le rendant de moins en moins stable, et chaque nouveau patch génère des comportement imprévisibles. La branche 1.0 ayant considérablement évolué depuis, sa retraite est donc très proche et il sera vraisemblablement entièrement remplacé dans le courant de l’été 2011 par… Shin Papoum !

Et pour finir, voici quelques screenshots de Papoum 0.98 :


Papoum 0.98, qui devrait être la version finale.
Notez le fichier offline (non disponible en régie pour une diffusion immédiate) et les petites images dans l’interface qui sont là grâce à la souplesse de WPF ! De plus, un clic droit sur un média ouvre un menu contextuel permettant soit de localiser le média sur le réseau, soit de le jouer dans VLC. La colonne de gauche est la liste des types d’émissions, générée à partir des noms de l’ensemble des médias trouvés.


Un exemple de recherche qui s’effectue en live, « à la iTunes ». Le niveau de vert des émission correspond à leur niveau de visibilité publique (pour NoAir). Notez qu’un scan des médias est effectué en parallèle (en bas).


Les metadatas d’émissions sont désormais principalement importées d’une source extérieure mais sont toujours dispo dans l’ancienne fenêtre d’édition pour consultation. Le rouge indique que toute modification sera perdue.


Voici le fameux simulateur de conduite antenne IPPlay, introduit dans Papoum 0.40.
Ici il y a trois playlists, et on voit que la simulation est correcte (la playlist de 18h33 commence à 18h55 à cause du Chez Marcus). Les pubs sont en violet pour qu’elles soient bien visibles (Nolife a l’obligation de les diffuser dans certaines plages horaires). Trois fichiers sont actuellement offline sur la régie, mais la playlist antenne peut tout de même être générée avec les bons timecodes et les médias copiés plus tard. Enfin, le bouton « Exporter vers Phoenix » permet d’exporter ce que l’on voit vers la nouvelle régie de diffusion.

Diverses infos. Le switch entre régie a été désactivé une fois la migration de la diffusion effectuée.