Avec de vrais morceaux de 2.0 !

Au revoir L'autre Net

Voilà mon compte lautre.net a été détruit hier.

J'étais membre depuis 2000 ou 2001 je ne sais plus trop, je n'ai pas accès à mes mails datant d'avant 2002 de toutes façons. Ça fait donc quasiment quinze ans que j'étais membre de cet hébergeur auto-géré auquel j'ai participé à la hauteur de mes capacités, notamment en créant annuaire.lautre.net, en aidant les gens sur le forum d'aide et autres trucs du quotidien. Bon en réalité j'ai surtout participé à saturer le premier serveur de lautre.net à cause du succès imprévu de Journal Intime.com (qui continue, toujours quelques millions de visiteurs chaque mois).

On a combattu ensemble les lois qui s'attaquaient à la vie privée, au statut des hébergeurs, et par dessus tout on a démontré qu'un hébergeur web de masse, pas cher, indépendant, associatif et libre est une réalité possible. Et ce malgré les difficultés inhérentes à ce genre de projet. Aujourd'hui je ne suis plus d'accord avec les dernières décisions prises ainsi que le fonctionnement global de l'association qui ne correspond plus à ce que j'attends d'un projet auto-géré et collectif, c'est pour cela que je pars, car de plus je n'ai plus grand chose à apporter au projet, et je ne veux pas me retrouver à critiquer ce qui est fait sans pouvoir proposer de m'investir pour changer tout ça.

Malgré tout je me souviendrai avec beaucoup d'émotion de tout ce que nous avons fait, et des personnes rencontrées. Alors un grand merci à tout le monde, et plus particulièrement aux roots, passés, présents et futurs, notamment Benjamin, Olive, Rémi, Cédric, daffy, etc. Mais aussi en particulier un grand merci à Camille et Chantal qui m'ont hébergé ou payé le billet de train pour aller rencontrer les autres membres à Paris alors que j'avais à peine 15 ans ! Merci à toutes et tous, et à bientôt sur le grand internet !

POLi Payments: probably the worst idea for online payments, security-wise

You are ordering something online, like a new TV, on an online store, or maybe you are ordering an airplane ticket on Air New Zealand. You complete your order, then comes the time to pay. You can't find your credit card which must be in your tuesday pants, which are buried under two weeks worth of dirty clothes in a corner of your bedroom. Or you don't want to pay the credit card surcharge charged by Air NZ. So on the payment webpage you spot this intriguing payment option: Internet Bank Payment.

This looks like a safe thing, practical and all, when you click on help, Air NZ assures you[archive] that this is a legit thing, and "you can use to safely pay for your flights directly from your bank account". Seems nice, why not try it. You don't know what this "POLi" thing is, but if it says it's safe, why not? It even tells you that "at no time are your personal banking login details disclosed to Air New Zealand or POLi". Sounds great. Let's do it!

First you have to chose your bank in a dropdown menu, fill a captcha code. If there is a captcha it must be secure. You click next and a nice popup show in the page, asking you... your online banking credentials. Oh. Wait. Didn't I read on every email and letter ever sent by my bank that I should never disclose my online banking credentials to anyone?

OK. This is where you should be stopping and never entering your banking details in that form and never trust POLi Payments. And you will see why.

So, what is POLi Payments[archive]? It is a private company, a subsidiary of Australia Post, that provides a "payment solution" for merchants so that Australian and New Zealanders customers can pay an order via their own bank account. You must think that this is a very serious business, and that they should have agreements with all the australian and NZ banks, and that they must be using some kind of banking API or back-end to make transactions.

Well, you are wrong. POLi Payments don't have agreements with the banks. They don't use a secure API or anything like that.

Do you remember the scam and phishing websites your bank tells you about? That you should be careful of not entering your banking details on any website other than the one of your bank? Well they work by doing something simple: they build a fake website asking your credentials, then they collect them, store them and use them to connect to your banks website and do fraudulent transactions.

And what does POLi exactly? They ask for your banking credentials, they collect them and use them to connect to your banks website and do a "legitimate" transaction, in fact they just do a wire transfer. Yup, pretty similar stuff.

The only difference is that POLi is supposed to be a legitimate business, and they tell you that it's really secure. OK, then would you write down on a paper your banking login and password to give to the cashier at the supermarket so that he could make a transfer to the supermarket account to pay for your groceries? Yes, probably not. Even if he assured you that he would destroy the paper after the transfer, you couldn't see him destroy it. This seems a bit unsafe no? Well, it's the same thing that POLi is doing. Yes. They are in fact doing a man-in-the-middle attack on your bank website, there is no other word for it.

Remember when the Air NZ website said: "at no time are your personal banking login details disclosed to Air New Zealand or POLi"? Well, obviously when you are entering your banking login details on the POLi pop-up, you are disclosing them! Even if they claim that they "do not capture or store usernames or passwords" (POLi Security overview[archive]), your login and password is transmitted to the POLi servers, stored in memory and transmitted to your banks website. Because POLi is in fact only a sophisticated "proxy" that navigates on the website of your bank with their servers.

This so-called "payment solution" is definitely misleading and a major security risk should you disclose your banking credentials to them. And I bet they get a number of credentials and transactions done as they seem to be doing everything to tell that they are really safe and secure and they are in fact just a proxy server, like Opera Mini. Which is true, but this is not really reassuring. And one of the many problems of POLi is the fact that they are using an iframe embedded in the merchant website. This means that even though you are disclosing your banking credentials on the POLi website, the fact that it is inside the merchants website means that the merchants website could access your banking credentials when you are entering them in the POLi frame, or even it could maybe exploit a security flaw in POLi proxy service and do other actions or transactions on your online banking using the POLi proxy server. And did you think about other resources used on the merchants website? Like for example a script for analytics, or an external javascript library sideloaded from another website, or ads. They all may access your banking credentials through the POLi frame as well.

The fact that the embedded frame displays a Comodo logo and a padlock is even more misleading, as it suggests that the frame is served over HTTPS, which you have no way of knowing for sure.

And it doesn't stop here, as POLi is using the access to your online banking to collect informations on your bank account, including past transactions or account balances, as it is written in their privacy policy[archive]:

We may also collect your financial information including bank account balances, bank account payment limits, a record of your previous banking transactions and information about your internet banking sessions.

Worse, their terms and conditions[archive] are deliberately wrong:

Your account access information such as usernames and passwords are not captured or stored by POLi™ or by our website.

And it is repeated on the FAQ of Air New Zealand[archive]:

During the course of your payment, Air New Zealand and POLi never have access to your internet banking identifier or password

This is blatantly false, as you can see when you check the requests made from the POLi frame, your login and password are in fact sent to the POLi server:

Not only their service is a terribly bad idea to begin with, but their own terms and conditions don't reflect the reality of what their service is actually doing.

So there is a lot of problems with POLi and in my opinion no one should use it. Why?

  • You should never enter your banking login or password on any other site that the one of your bank. NEVER.
  • You would have to trust POLi that they don't keep your credentials.
  • POLi is not a bank, not a secure payment solution, and doesn't have to comply to any security guidelines or external audit. So you can't really trust their servers to be secure and not compromised.
  • POLi doesn't have agreements with the banks and most banks advise against using it.
  • The merchant has potential access to your banking credentials. And even if the merchant website was safe, merchants websites are not immune to XSS attacks, and what about their advertisers, analytics or dozens of othen external resources? There is no way to analyze and check that everything in the chain is and will stay secure.
  • POLi collect details about your banking transaction history and account balance. This should stay private.
  • It potentially breaches your bank terms and conditions.

So: don't use POLi. Ever. And I'm not the only one saying it[archive]. No, really[archive].

And merchants shouldn't use it either as it just shows how bad they are at understanding the safety of their customers. If they accepted to use POLi as a payment option, you should really be worried as how they store and process other private informations. In the case of AirNZ I am really worried as they seem to process credit card numbers themselves. I do not want to know how they store them!

If you are not convinced check out what the banks are thinking below. I don't know why the POLi servers are not blocked by the banks, but it is clear that they don't like this idea:

KiwiBank (NZ)[archive]
We advise against using POLiPayments as it invalidates our internet banking guarantee & is not secure.

KiwiBank (NZ)[archive]
Providing your details through a third party is against terms and conditions and we very much advise against it.

Commonwealth (AU)[archive]
The Commonwealth Bank does not have any working agreement with POLi Payments. The Bank urges customers making online payments to do so via the Bank’s own NetBank site, which guarantees the customer’s security.

ASB (NZ)[archive]
we recommend that you do not use the POLi payment service due to the security risks involved

ASB (NZ)[archive]
Using POLi or Account2Account’s payment system requires users to input their username and password to a third party which breaches ASB FastNet Classic’s Terms and Conditions.

Westpac (AU)[archive]
POLI is not supported by the bank. If making online pymts, should do so via bank's own site which guarantees customer's security

ANZ (NZ)[archive]
ANZ reminds customers not to enter your ANZ Internet Banking log on information when using non-ANZ sites.

Providing log in details to a third party presents serious security risks and contradicts both the New Zealand Code of Banking Practice and our terms and conditions.

Bank Australia[archive]
Unfortunately POLi payments don’t meet our security standards.

Bank of Queensland[archive]
We take your Internet Banking security very seriously and, for this reason, we do not support the use of 3rd party applications such as POLi. While it may seem that you are in complete control of the Internet Banking session whilst using POLi, we cannot guarantee the security of your logon credentials unless you access Internet Banking via the BOQ website.

The fact that an idea like POLi is allowed to legally exist is a major problem. How can you seriously educate people to never give out their banking details if you allow this kind of "service"?

À propos de Village Wireless / OMA IMPS (Presence et XDC sur les téléphones Nokia, Sony Ericsson et Motorola)

Si vous vous demandez ce que sont ces étranges "paramètres XDM" et paramètres de présence dans la configuration d'un téléphone Nokia (ou Sony Ericsson, Ericsson ou Motorola), et bien ça permet de se connecter aux serveurs de messagerie instantanée qui suivent le protocole IMPS de Open Mobile Alliance (ex-Wireless Village).

Ce protocole qui a bien 15 ans maintenant (!) fait exactement la même chose que Facebook Messenger, Whatsapp et autres Viber, avec en plus une interopérabilité avec XMPP/Jabber, AIM, ICQ, etc etc.

Ça permet de chatter avec ses contacts, de leur envoyer des images, sons, etc. et de voir quand ils sont en ligne. Le tout de manière unifiée avec le carnet d'adresses classique. Ça marche pas mal techniquement, et c'est présent sur des milliards (et oui !) de téléphones. Mais ça n'a quand même jamais vraiment bien marché.

Aujourd'hui le protocole n'est plus supporté par Android, Windows Phone ou iOS et je ne connais plus qu'un seul service encore en ligne, MobJab. Mais c'est un rappel que tout ce qu'on nous présente comme super-hype-top-nouveau n'a absolument rien de nouveau ou d'intéressant. La seule différence c'est que ce qui est populaire aujourd'hui ce sont des services centralisés, privateurs et espions.

Configurer son compte SIP (et notamment OVH) sur Symbian^3 (Belle)

(Première publication 9 janvier 2013)

Pour configurer un compte SIP sur Nokia Symbian^3 (Belle) c'est pas compliqué. Prenons l'exemple d'OVH.

En premier il va falloir télécharger et installer un petit utilitaire Nokia qui permet de configurer en profondeur les comptes SIP. Pourquoi ce n'est pas intégré par défaut dans Symbian^3 je ne sais pas, ça me dépasse : SIP_VoIP_3_1_Settings_Symbian_3_v1_0_en.sis

Si vous avez installé le firmware custom Delight (fortement conseillé) normalement c'est déjà intégré, pas besoin d'installer ce patch.

Ensuite il faut créer un compte SIP : dans Paramètres sélectionnez "Connectivité", puis tout en bas "Param. administrateur" et "Paramètres SIP". Dans le menu choisissez "Nouveau mode SIP" puis "Utiliser mode par déf." et remplissez comme suit :

  • Nom du mode : OVH
  • Mode du service : IETF
  • Nom d'utilisateur public : sip:0033*******@sip.ovh.fr
  • Utiliser la compression : oui
  • Inscription : toujours activée
  • Utiliser la sécurité : non
  • Serveur registrar :
    • Adresse serveur registrar : sip:sip.ovh.fr
    • Domaine : sip.ovh.fr
    • Nom d'utilisateur : 0033******** (votre numéro de téléphone OVH)
    • Mot de passe : (votre mot de passe OVH)
    • Type de transport : UDP
    • Port : 5060

Appuyez sur la flèche de retour, le téléphone devrait se connecter au compte, et passer de "Non inscrit" à "inscrit" en face de "OVH" dans la liste des profils SIP. Si ce n'est pas le cas c'est qu'il y a un souci de connexion.

Maintenant que vous avez vu que ça fonctionnait bien vous pouvez configurer le téléphone pour qu'il ne se connecte pas au service SIP tout le temps : revenez dans la configuration du profil et passez "Inscription" sur "si nécessaire". Ainsi la connexion ne sera faite que lorsque vous ferez un appel SIP ou quand vous connecterez le profil SIP à la main (voir plus bas).

Mais ce n'est pas terminé, il faut encore indiquer à la partie téléphonie du téléphone qu'elle peut utiliser le profil SIP (me demandez pas, oui c'est tarabiscoté) : Paramètres, Connectivité, Param. administrateur, et choisissez cette fois "Paramètres internet" (explicite n'est-ce pas) puis "Advanced VoIP settings" et maintenant cliquez "Create new service" et sélectionnez "OVH" dans la liste.

Vous devriez maintenant avoir un nouvel onglet dans la gestion des contacts, un globe terrestre avec un téléphone, cliquez dessus. De là vous pouvez voir le statut des services SIP, et vous connecter ou déconnecter (via le menu en bas à droite). Quand le profil SIP est connecté et prêt à recevoir des appels une icône de globe avec combiné téléphonique aparaît dans la zone de notification. Dans les contacts vous aurez aussi une nouvelle option "Appel OVH". Et dans l'écran de composition de numéro le menu en bas à droite dispose d'une nouvelle option "Appel OVH".

Oui c'est un cheminement très bizarre et peu logique, mais une fois que c'est fait ça marche très bien.

(Inspiré du guide OVH pour Nokia S60.)

Si ça ne marche toujours pas, il est possible d'installer Tivi, un client SIP pour Symbian gratuit. L'interface est moche mais ça marche. Je déconseille Fring qui fait passer obligatoirement par son serveur Proxy (rajoute de la latence).

PS : il existe aussi S60voip en libre, que je n'ai pas testé.

Au passage si vous vous demandez ce que sont ces étranges "paramètres XDM" et paramètres de présence, lisez mon petit article sur cet ancien protocole de messagerie instantanée.

Quitter GMail, parce que c'est pourri, et synchroniser ses mails en local avec dovecot et OfflineIMAP

Après avoir passé beaucoup de temps à utiliser mon propre serveur de mails, j'ai passé quelques années chez GMail. C'était pas trop mal. Le webmail est clairement le point faible : moche, lent, peu pratique. Mais qui utilise encore un webmail de nos jours hein ? Mais en plus du fait que filer tous mes mails perso à Google ne me plaisait pas du tout, le service a commencé à se dégrader rapidement : beaucoup de spam, mails qui ne sont jamais reçus par mes destinataires, ou l'inverse, sans jamais laisser aucune trace, etc.

Depuis je suis repassé sur mon propre serveur mail, à base d'Exim, dovecot et SpamAssassin. J'ai aussi mis roundcube comme webmail, mais ça ne me plaisait pas vraiment, j'ai donc développé mon propre webmail assez rapidement. Il ne passe pas par IMAP mais lit directement les dossiers Maildir. Du coup c'est plus rapide. Mais pas assez à mon goût, pour une utilisation intensive avec des milliers d'utilisateurs il fallait quelque chose d'autre, j'ai donc développé un serveur SMTP qui filtre directement les messages et les stocke en base de données et memcache. Puis un serveur IMAP pour voir tout ça. Et un webmail qui tape dans memcache et la base de données. C'est pas mal, c'est rapide, mais encore incomplet, je mettrais ça en open source quand ça sera plus avancé.

J'ai aussi développé un gestionnaire de liste de discussion/diffusion en PHP qui est appelé par EXIM, parce que bon mailman ça va bien 5 minutes mais c'est chiant et lourd.

Bref on n'est jamais mieux servi que par soi-même.

Mais là n'est pas le sujet, car aujourd'hui je vais vous parler de synchroniser ses mails en local pour pouvoir y accéder hors ligne. Oui je sais les clients mails ont souvent une option pour synchroniser les dossiers IMAP pour une utilisation hors ligne. Mais ils stockent souvent ces mails dans un format spécifique, ça prend de la place, c'est lent et peu pratique.

Alors que la bonne solution c'est d'utiliser OfflineIMAP pour synchroniser vos dossiers IMAP en local, ainsi vous disposez d'une copie exacte de votre compte IMAP, que vous pourrez donc restaurer en un rien de temps si le serveur perd vos mails, ou si vous décidez de changer de fournisseur de mails.

Je ne vais pas vous raconter ici comment configurer OfflineIMAP, d'autres l'ont déjà fait mieux que moi, genre saimon.org par exemple. Je peux juste dire que c'est super simple à faire et que ça marche au poil. N'oubliez juste pas de mettre "sep = /" dans le repository local, sinon vous allez avoir des problèmes. Mon ~/.offlineimaprc pour l'exemple :

accounts = MyServer
ui = Blinkenlights

[Account MyServer]
localrepository = Local
remoterepository = Remote

[Repository Local]
type = Maildir
localfolders = ~/Mail
sep = /

[Repository Remote]
type = IMAP
ssl = yes
remotehost = *****
remoteuser = *****
remotepass = *****

spamfolder = Junk

Et ensuite pour accéder à vos mails depuis votre client mail il vous faut utiliser un serveur IMAP local, par exemple dovecot.

# apt-get install dovecot-imapd

Ensuite tout ce que vous avez à faire c'est d'indiquer à dovecot où sont stockés vos mails. Éditez la configuration locale de dovecot :

# nano /etc/dovecot/local.conf

Et inscrivez-y :

mail_location = maildir:%h/Mail:LAYOUT=fs

Évidemment il faut adapter "/Mail" à la localisation de vos mails dans votre home. Moi c'est dans ~/Mail donc.

Si vous voulez retrouver les répertoires "magiques" de GMail genre avec tous les mails ou tous les mails marqués, vous pouvez utiliser l'extension virtual en inscrivant dans la config ce qui suit :

mail_plugins = $mail_plugins virtual

namespace {
  prefix = virtual/
  location = virtual:%h/Mail/virtual

Vous pouvez maintenant redémarrer dovecot :

# service dovecot restart

Et ensuite pour les dossiers virtuels il suffit de créer un répertoire dans votre dossier ~/Mail/virtual et d'y placer un fichier nommé dovecot-virtual contenant les règles. Par exemple si on veut tous les messages non lus sauf les spams, les listes et la corbeille on crée un dossier ~/Mail/virtual/new/ et on inscrit dans le fichier dovecot-virtual :


Pour les messages récents ça sera :

  all younger 5184000

Et les messages marqués :


Et voilà, vous pouvez maintenant faire pointer votre client mail sur localhost :)

Mozilla pète les plombs et veut obliger tous les sites à passer en HTTPS

Pourtant on n'est pas le 1er avril…

Tout est marqué sur le blog de Mozilla : ils veulent supprimer progressivement des fonctionnalités du navigateur Firefox pour les sites en HTTP (en clair), au profit des sites en HTTPS (chiffré). Par exemple ça sera la suppression du support Javascript, ou des images en SVG, puis des images tout court, avant de supprimer tout support pour le protocole HTTP. Si vous ne voulez pas vous voir bridé il faudra utiliser le protocole HTTP2 qui ne fonctionne qu'en HTTPS (chiffré). Une idée à l'évidence complètement stupide (déjà que HTTP2 est une horreur, mais c'est une autre histoire).

Évidemment, comme Mozilla ne fait que suivre Google, l'idée vient en fait de Chrome.

En 5 minutes je pense déjà à des tonnes d'arguments pour exprimer à quel point cette idée est profondément stupide :

  • le système des CA SSL est complètement cassé, de par sa conception-même. Ça fait des années que tout le monde dans le monde de la sécurité dit que c'est de la merde. Plutôt que de nous emmerder avec des rustines inutiles comme "letsencrypt" ou à recopier l'UI de Chrome, Mozilla ferait mieux de réfléchir à une alternative crédible pour qu'HTTPS devienne enfin quelque chose de sécurisé et accessible à tout le monde, pas seulement aux riches occidentaux.
  • un certificat ça coûte des thunes. Oui oui StartSSL, letsencrypt machin. Non je suis pas d'accord, car c'est un monopole (bientôt duopole), si demain ils décident de faire payer c'est foutu. De plus quand on veut des sous-domaines c'est tout de suite très chiant (et cher). Et quand on veut un wildcard, c'est là que ça devient marrant. Enfin ou pas.
  • ça veut dire que tous les gens qui n'ont pas de thune vont aller faire certifier leur site auprès d'une autorité centralisée (startssl ou letsencrypt, whatever). Big brother toussa. Si un jour ces autorités n'acceptent plus votre site parce que vous êtes un index de bittorrent, un média alternatif ou autre truc qui dérange, vous êtes bien dans la merde. Et combien de temps avant qu'un CA ne soit obligé par la justice à la demande de la RIAA ou autre à révoquer le certif d'un site ?
  • la gestion des certificats c'est chiant, grave. J'ai une dizaine de domaines en HTTPS à gérer, tous les 6 mois il faut que je renouvelle les certificats. A chaque fois je finit par en enlever un, parce que c'est super chiant. Une fois que j'ai mis en place un truc, je veux que ça marche sans avoir à y revenir tous les ans ou tous les 6 mois, je suis pas admin sys, je fait ça sur mon temps libre. Et moi je suis un geek, je kiffe jouer de la config apache (enfin pas trop quand même), mais pour le péquin lambda, qui aura le courage d'aller se faire chier à faire un certif, le mettre à jour etc.
  • Mozilla devient CA, et juste après parle de ne plus faire que du httpS. Tiens tiens, un business plan sous le coude ?
  • C'est un sacré frein à la création de site web et à l'amateurisme (au sens noble), la barrière d'entrée sur le web devient encore plus haute

Bref à mon avis Mozilla ne voit le web que comme un conglomérat de grosses boîtes et gros sites avec des budgets dédiés à tout et n'importe quoi, et n'en à rien à faire des millions de particuliers, assos, bénévoles et enthousiastes du monde entier qui font du web ce qu'il est : un gros bordel collaboratif, la plus belle invention de l'humanité.

Ce que veux Mozilla c'est un web propre et beau, et sécurisé (parce que bon c'est bien connu le SSL c'est la sécurité, ah ah), et tous ces gentils bidouilleurs ne sont qu'un obstacle à la productivité et à son objectif de marché. Donc il cherche à les éliminer. Si vous ne me croyez pas regardez un peu la modification du traitement des certificats auto-signés avec le temps… c'est devenu un enfer, et ce n'est pas pour "la sécurité".

Oui je suis énervé, mais même pas surpris, après avoir supprimé le "http://" de l'URL ce n'est qu'une étape logique, que j'avais déjà annoncée il y a quelques années. Ce qui m'énerve c'est d'avoir raison et de voir que Mozilla, le seul représentant du web non commercial (enfin logiquement) est en réalité un vendu et ne fait plus rien pour la communauté, mais ne travaille que pour son intérêt propre.

Bref encore une fois je répète mon refrain habituel : mais crève donc Mozilla, crève donc, tu fera de la place pour quelque chose d'autre. Et cette chose ne peut pas être pire que Mozilla.

Edit : un autre souci c'est OCSP, une techno qui permet au navigateur de demander au CA si le certificat est bon et encore valide. En théorie c'est super. En pratique ça veut dire que tout le monde qui visite un site fait une requête au CA, qui sait donc qui visite le site. Non seulement ça peut être un gros business, mais en plus c'est une sacré atteinte à la vie privée (et on peut risquer sa vie dans un pays non démocratique, si on va visiter un site interdit…). Dans HTTP, aucun mouchard n'envoie à un prestataire tiers le nom de tous les sites que vous visitez…

Sandisk Sansa Clip Sport : enlever la limitation du volume et corriger le tri des répertoires

Le Sansa Clip Sport est un survivant d'une époque révolue (hélas) : un nouveau baladeur MP3 petit, léger et autonome dans un monde de smartphones inutiles, lourds, fragiles, encombrants et qui demandent à être constamment connectés à une prise électrique.

Ce nouveau baladeur de Sandisk gagne en autonomie par rapport aux précédents Clip Zip et Clip+, mais perd quelque chose de précieux : le support par Rockbox. C'est un firmware alternatif pour un grand nombre de baladeurs qui offre de nombreuses fonctionnalités, une plus grande autonomie, la lecture de tous les formats audio, et Doom !

Dommage du coup de perdre Rockbox, à cause d'une puce trop faible pour faire tourner autre chose que le firmware original, qui se retrouve d'ailleurs lui-même sérieusement handicapé, avec notamment une limite à 2000 fichiers indexés dans la base de données des tags (soit 8Go, alors que le baladeur peut utiliser des cartes microSD de 64 Go et plus), et des problèmes de tris dans les répertoires.

En effet comme un vulgaire baladeur de supermarché, le Clip Sport tri les fichiers dans l'ordre où ils sont déposés sur la partition FAT32, et non pas par ordre alphabétique. Les albums sont donc désordonnées, du genre la piste 15 suivie de la piste 3, suivie de la piste 22, etc. Une solution à ça :

$ sudo apt-get install fatsort
$ fatsort /dev/sdX1

ou sdX1 est la partition du baladeur ou de la carte microSD. Et hop c'est réglé. C'est un peu gênant, mais au moins ça règle le souci.

Un autre souci sur les baladeurs Sansa c'est la limitation du volume de sortie à cause des lois européennes, du coup on n'entend rien (et non je ne suis pas encore sourd). Une solution simple : dans le baladeur aller dans réglages, réglages système et réinitialiser (pas formater), et quand il vous demande le pays indiquez "reste du monde". Et hop vous voilà avec le volume débridé et plus de message chiant sur l'écoute à plein volume bla bla bla.

Remove DRM from Kindle AZW files

When you buy a book for your Kindle on Amazon, it comes with a special surprise: DRM. Yes we are in 2015, every book ever published is already available everywhere to download for free, but you still get this stupid thing that basically pisses everybody and forbids to just use the stuff you paid for. Unbelievable. They will never learn.

So, what do you do when you accidentally bought a DRM e-book? First you swear you'll never do the same mistake again, and next time you'll just download the book from The Pirate Bay, it will be faster, easier and you will be able to read the book without wondering why the hell did you pay for a file that you can't read. When that is done, you will actually get rid of the DRM following this simple procedure:

  1. Power up your Kindle, switch back to the Kindle UI (if you have installed Duokan, which I advise you to do strongly, it's great!), go to the system settings and note your Kindle Serial Number.
  2. Download the file from Amazon ("Manage Your Content", click on the button with three dots next to the book and click "Download and transfer from USB")
  3. Download the DeDRM plugin for Calibre here.
  4. $ unzip DeDRM_plugin.zip
  5. $ python k4mobidedrm.py -s YOUR_KINDLE_SERIAL_NUMBER Stupid_encrypted_DRM_book.azw ./

That's it. A new file called Stupid_encrypted_DRM_book_nodrm.mobi will be in the directory. Delete the old one.

What was this DRM thingy for?

HOWTO: Using a removable USB key or SD card as an encryption key with EncFS

For this HOWTO you will need the encfs package installed (Debian and Ubuntu).

Create an empty partition on the disk

We still want to be able to use the key to store some documents, and that way it will just look like an ordinary USB key. So we have to create an empty filesystem on the removable USB key:

# USB_KEY=/dev/sdX
# fdisk $USB_KEY

Command (m for help): o
Building a new DOS disklabel with disk identifier 0xXXXXXX.
Changes will remain in memory only, until you decide to write them.
After that, of course, the previous content won't be recoverable.

Command (m for help): n
Partition type:
   p   primary (0 primary, 0 extended, 4 free)
   e   extended
Select (default p): 
Using default response p
Partition number (1-4, default 1): 
Using default value 1
First sector (2048-1974271, default 2048): 
Using default value 2048
Last sector, +sectors or +size{K,M,G} (2048-1974271, default 1974271): 1974270

Command (m for help): t
Selected partition 1
Hex code (type L to list codes): b
Changed system type of partition 1 to b (W95 FAT32)

Make sure that the last sector of the partition is minus one the last one of the disk. Here the last sector of the disk is 1974271, so (1974271-1) = 1974270.

Now write the partition table:

Command (m for help): w
The partition table has been altered!

Calling ioctl() to re-read partition table.

WARNING: If you have created or modified any DOS 6.x
partitions, please see the fdisk manual page for additional
Syncing disks.

Now format the new partition:

# mkfs.vfat -F 32 -n Documents ${USB_KEY}1

Random "hidden" passphrase

Now comes the part of the crypto stuff. Create a random passphrase:

# dd if=/dev/urandom bs=1 count=256 > passphrase.bin

Write it to the end of the USB key:

# USB_SEEK=$(($(blockdev --getsize64 $USB_KEY)-256))
# dd if=passphrase.bin of=$USB_KEY bs=1 seek=$USB_SEEK

This way the passphrase won't be stored in a filesystem but directly on the disk, where overwriting it by mistake will be a bit more difficult. It's also a bit harder for an attacker to know that the disk actually contains an encryption passphrase (but just a bit).

You can check that the passphrase was correctly written to the disk with:

# sha1sum passphrase.bin; dd if=/dev/sdg bs=1 skip=$USB_SEEK count=256 2> /dev/null | sha1sum

The two SHA1 sums should match.

At this step I advise you to backup your passphrase, maybe by encoding it using Bubble Babble, printing it and hiding it somewhere. Or just put it in a wallet manager like KeePassX. As you wish.

Encrypted directory creation

If you already have an encrypted EncFS directory, you can skip to the next step. If you don't have an encrypted EncFS directory already here is how you can create one:

$ encfs ~/encrypted ~/decrypted
Creating new encrypted volume.
Please choose from one of the following options:
 enter "x" for expert configuration mode,
 enter "p" for pre-configured paranoia mode,
 anything else, or an empty line will select standard mode.

Press p and Enter.

Paranoia configuration selected.

Configuration finished.  The filesystem to be created has
the following properties:
Filesystem cipher: "ssl/aes", version 3:0:2
Filename encoding: "nameio/block", version 3:0:1
Key Size: 256 bits
Block Size: 1024 bytes, including 8 byte MAC header
Each file contains 8 byte header with unique IV data.
Filenames encoded using IV chaining mode.
File data IV is chained to filename IV.
File holes passed through to ciphertext.

-------------------------- WARNING --------------------------
The external initialization-vector chaining option has been
enabled.  This option disables the use of hard links on the
filesystem. Without hard links, some programs may not work.
The programs 'mutt' and 'procmail' are known to fail.  For
more information, please see the encfs mailing list.
If you would like to choose another configuration setting,
please press CTRL-C now to abort and start over.

Now you will need to enter a password for your filesystem.
You will need to remember this password, as there is absolutely
no recovery mechanism.  However, the password can be changed
later using encfsctl.

New Encfs Password: 

Enter (twice) a temporary password as we are about to change it. So enter something like abcd or stuff.

Changing the EncFS password

Now we will to change the current password of the encrypted directory to the passphrase we generated and wrote to the USB key before.

$ echo -n "Enter current password: " && read -s PASSWORD && (echo $PASSWORD && base64 -w 0 passphrase.bin) | encfsctl autopasswd ~/decrypted

Type in your current password (the temporary one if you just created the encrypted directory at the previous step), hit Enter, and then EncFS will change the password to the one contained in the file passphrase.bin, encoded with Base64. This encoding is useful as EncFS expects a one-line password and

Now unmount the encrypted directory so that we can try if mounting it with our key works:

$ fusermount -u ~/decrypted

Let's try if we can mount our encrypted directory with our key:

$ base64 -w 0 passphrase.bin | encfs -S ~/encrypted ~/decrypted

And it should work.

Real-word test: mount script

And finally we are ready to mount our encrypted directory using our USB key and this simple script:


if [ "$1" = "" -o "$2" = "" ]
	echo "Usage: $0 rootDir mountPoint"
	exit 0

mountpoint -q "$2" && echo "$1 is already mounted" && exit 1

echo "Trying to get the key from USB keychain ..." >&2

for SFS in /sys/block/sd*; do
	DEV=`basename $SFS`
	if [ 0`cat $SFS/removable` -eq 1 -a 0`cat $SFS/size` -gt 1 ]
		SKIP=$((512*$(cat /sys/block/${DEV}/size)-256))
		KEY=`dd if=/dev/${DEV} bs=1 skip=$SKIP 2> /dev/null`

		echo "> Trying device: $DEV ..." >&2
		echo -n "${KEY}" | base64 -w 0 | encfs -S "$1" "$2" \
			&& echo "Encrypted directory mounted from keyfile" && exit 0

echo "FAILED to find suitable USB keychain ..."
exit 1

The script is simply trying to use all the removable devices as decryption key for encfs. To use it you just have to run:

$ mount_encfs_usb.sh ~/encrypted ~/decrypted
Trying to get the key from USB keychain ...
> Trying device: sdg ...
Encrypted directory mounted from keyfile

And that's the end of this HOWTO :)

This was inspired by this StackOverflow thread and How to setup passwordless disk encryption.

Bubble Babble CLI encoder / decoder

At my own surprise there is no CLI tool to encode or decode a string to and from the Bubble Babble binary encoding. That's a shame as this encoding would be much more useful than Base64 for exchanging binary data orally or on paper.

So here is one quick PHP script based on my own PHP5 BubbleBabble library to do that: bubblebabble.php

Usage is pretty simple:

$ bubblebabble.php hello.txt

$ bubblebabble.php -d - <<< xifok-mirid-bodik-nemyg-temyl-dipyd-cedyx
Oh, Hi Mark!

$ fortune | bubblebabble - > encoded.txt

$ bubblebabble -d encoded.txt 
Big book, big bore.
		-- Callimachus
Écrire un commentaire
 _                        //\ _       
| |__   ___  _ __  _ __  |/_\| |_ ___ 
| '_ \ / _ \| '_ \| '_ \ / _ \ __/ _ \
| | | | (_) | | | | | | |  __/ ||  __/
|_| |_|\___/|_| |_|_| |_|\___|\__\___|

Les adresses internet seront converties automatiquement.
Tags autorisés : <blockquote> <cite> <pre> <code> <var> <strong> <em> <del> <ins> <kbd> <samp> <abbr>