SMailArchiver v0.4

26 janvier 2013

Il y a quelques semaines, j’avais présenté SMailArchiver, mon script de backup d’email sécurisés en python. Aujourd’hui un petit article pour les nouveautés de la nouvelle version 0.4.

Concernant les fonctionnalités, SMailArchiver permet désormais le stockage en clair si l’argument -e ou --encrypt n’est pas utilisé. Chaque email est toujours stocké individuellement pour faciliter l’incrémental mais la commande de restauration devient -r ou --restore pour plus de cohérence (précédemment -d ou --decrypt dans la version 0.3). Celle-ci se chargera de créer un seul fichier. Le format du fichier de configuration json a également légèrement été modifié en conséquence.

L’extension pour le stockage gagne également en cohérence. Un fichier anciennement nommé 42.gz.mbox deviendra désormais 42.mbox.gz.enc, ce qui indique : un email au format mbox compressé puis chiffré. Un mail non compressé et/ou non chiffré n’aura pas l’extension .gz et/ou .enc. La restauration se base sur ces extensions pour les manipulations à réaliser.

crowed

Un peu de patience, tout le monde aura sa mise à jour

Pour ceux ayant réalisé leurs backup avec la version 0.3, un script de migration a été créé pour régler le problème de changement de format. Renseignez le dossier contenant les mails (placez éventuellement le fichier de configuration dedans) ainsi que la version depuis laquelle vous arrivez (0.3 dans ce cas). Le script se chargera de renommer les fichiers et modifier le fichier de config.

$ python migrate.py -f backup_folder/ -v 0.3
Migration from 0.3 to 0.4…
1 valid config file migrated
42.gz.mbox -> 42.mbox.gz.enc

Done.

Le programme est désormais également accessible depuis github en plus de gitorious. En espérant que cela favorisera une éventuelle contribution (non ceci n’est pas du tout un appel caché).

Étant donné que je parle essentiellement de ce script sur un blog francophone, il me semblait normal de mettre les instructions en Français. Aux cotés du précédent README, se trouve maintenant un fichier LISEZMOI. Si des polyglottes me lisent, n’hésitez pas a me soumettre des traductions en Burgonde ou Klingon.

Last but not least, l’utilisation de la licence MIT. Jusqu’à présent il n’y avait pas de licence formelle ce qui était problématique pour l’utilisation du code dans d’autres programmes. Chose réglée, j’ai opté pour une licence permissive, je n’avais pas envie d’ennuyer avec les contraintes de la GPL pour un si petit bout de code, du code réutilisé est une reconnaissance en soit.

Mise à jour: le script a été mit à jour, les possibilités et commandes ont légèrement changé, lisez le README pour plus de détail ou suivez mes annonces avec le tag smailarchiver.

Faisant un peu le nettoyage dans mes boites à emails, j’ai voulu sauver tous mes vieux messages avant suppression. Cependant, je voulais un moyen de faire cela de manière automatisée (possible d’utiliser cron), incrémental (ne pas tout retélécharger à chaque fois), supportant la compression et surtout garder une certaine confidentialité (chiffrement).

J’ai trouvé des bouts de codes pour faire chaque partie séparément (ici et ici par exemple) mais pas de programme permettant de faire tout cela ensemble. A que cela ne tienne, j’ai donc créé un petit script python contentant mes besoins. Ainsi est né SMailArchiver (avec S pour Secured ou Suicide, question de point de vue) que je partage ici.

Ce petit bout de code (approchant des 400 lignes de python) permet facilement de faire des backup de plusieurs comptes emails avec toute une série d’option comme la compression des mails avant le chiffrement (une compression après le chiffrement pourrait également être utile mais est moins efficace) ou le choix d’une clef constituée uniquement de bytes aléatoires ou renforcée par un mot de passe de votre choix. Le chiffrement se fait avec AES 256 avec une signature HMAC-SHA256 histoire d’empêcher les manipulations. C’est pas Truecrypt mais ça suffit pour cacher les conversations avec votre maitresse des yeux indiscrets de madame votre femme (ou inversement).

big mess

Avant d’utiliser SMailArchiver, ma gestion des emails ressemblait à ça… et mes cheveux étaient secs et cassants.

Le programme peut recevoir les paramètres nécessaires par la console, via des arguments ou via un fichier de config (regardez le fichier d’exemple dans le dépot).

$ python smailarchiver.py 
Enter your email username: foo@bar.com
Enter your imap server: imap.bar.com
Enter your password: 
Enc key: 6MIiWqNiJ4h1qDmp5Z4OpWKRLst7eAbirWOPHIm9zqk=
Sig key: 9JmR0593CWwtnJhRWqdLHk7tXvX/h6l6A2GLKA4iVq4=
$ python smailarchiver.py --user foo@bar.com --imap imap.bar.com --passwd monkey1 --key foo@bar.com.keys --promp --compress
Enter your encryption/signature password: 
Enc salt: KNwhv7kuNs0/iCZZTUyd05IuOylzG/n2oBALj1UMJ0c=
Sig salt: A99CxfzwRbU4P4lse6eN5O+g2wethRzL4gMH7xqFkgE=
Hash: oNcX7GAyHsS+bNOT8UCYAYM/ltCmx34E9Gmmpky02AE=
$ python2 smailarchiver.py -c config.json
Enter your encryption/signature password: 
Enc salt: m87TeE9fmr5XPf7yvN0w3PYOv3ivlNKpKGp35hC+N/k=
Sig salt: 2k9Wu5HBEo7G0J0EzlglOqV0Zko1LmhfiGnxD2QEzhE=
Hash: FA3TdkhWNZqy9BjGOk2UVZ6AeqgHSrparH3ynHdvj38=
$ python2 smailarchiver.py --decrypt foo@bar.com/ --key foo@bar.com.keys --promp
Enter your encryption/signature password: 
Decrypting 16.gz.mbox
Decrypting 11.gz.mbox
Decrypting 45.gz.mbox
...

Code évidement open source que vous pouvez trouver le code sur mon dépot gitorious. C’est compatible python 2.7 et plus (python 3 c’est l’avenir !) et nécessite pycrypto (qui est compatible python 2.1 et 3.2, j’imagine même pas le bordel que ça doit être). Mes tests très scientifiques type àvuedenezçapasse montrent que le programme fonctionne mais on est jamais à une erreur prêt, n’hésitez pas à me communiquer vos idées d’améliorations ou corrections.

PS: fait amusant concernant AES 256, saviez vous que l’énergie contenue dans une supernova ne suffirait pas rien que pour énumérer les 2²⁵⁶ états possibles (calcul non compris donc). A moins de trouver une faille de sécurité, il est donc impossible, avec les notions de la physique actuelle, de faire un brute force sur une clef AES 256. Source: Applied Cryptography, Bruce Schneier (extrait en question).

Le web n’oublie rien

6 septembre 2011

Le web est un endroit formidable pour tous les gens qui veulent s’exprimer. Que ce soit via une vidéo de chat, un status ou simplement pour donner son opinion.

Il serait triste que tout ça disparaisse. Que ce soit à cause de censure ou simplement de site qui ferme. Pour lutter contre ça, présentation aujourd’hui de The Internet Archive et Resurrect this page.

The Internet Archive

The Internet Archive est une organisation à but non lucratif qui, comme son nom l’indique (presque), archive le web.

Le projet, créé en 1996, à pour but de constituer une bibliothèque numérique regroupant pages web, logiciels, vidéos, livres et enregistrement audio. L’organisation a d’ailleurs le status officiel de bibliothèque, en faisant partie de l’American Library Association (attention aux faux amis).
Un robot d’indexation (libre), Heritrix, parcours le web et sauvegarde ainsi des millions de pages récoltées. Chaque nouvelle sauvegarde ne remplace pas la précédente pour qu’il soit possible de toutes les consulter.

Via the Wayback Machine (ou !archive avec DDG), toutes ces archives sont consultables facilement. Il est ainsi facile de regarder l’évolution d’un site en comparant les snapshots mémorisés.
Comment avoir son site indexé ? Il faut que le robot passe sur votre site. Si de nombreux liens externes pointent vers votre site, il y a plus de chance qu’il soit indexé. La page d’accueil de ce site a, par exemple, été indexé une fois en avril ainsi que 64 autres pages.

Vous vouliez vraiment priver nos enfants de ça ?

En plus de Wayback (qui est clairement leur projet le plus populaire), Internet Archive a par exemple développé Open Library dont le but est de créer une page pour chaque livre jamais publié (oui rien que ça).
Ils numérisent également les livres disponibles dans le domaine publique. Ils auraient à ce jour, 6 millions d’auteurs, 20 millions de livres référencés et un million de livres numérisés.
Le code source du site web est publié sur GitHub.

Autre projet intéressant de Internet Archive : 301works qui a pour but de mémoriser toutes les urls réelles des réducteurs d’url en cas de fermeture du service (une des raisons qui rend ces services craignos).

Resurrect this page

Resurrect this page est un addon pour firefox open source qui rend un grand service à nous autre, deadlinkophobe (la peur des liens morts). D’un simple clic droit sur n’importe quelle page ou lien, vous pouvez consulter le cache à propos de cette page parmi :

  • CoralCDN
  • Google Cache
  • Yahoo! Cache
  • The Internet Archive
  • MSN Cache
  • Gigablast
  • WebCite

Si vous arrivez sur une page d’erreur, celle ci possède désormais quelques boutons pour consulter le cache en un clic.

Vade retro 404

Bon évidement faut que votre page soit indexée mais c’est quand même assez souvent le cas (au minimum avec le cache google pour les sites pas trop fréquentés).

Et pour finir, en vrac quelques liens qui peuvent être intéressant dans la rubrique « le web n’oublie rien » :

  • L’effet Streisand ou pourquoi la censure peut aider à la diffusion d’une information
  • Projet autoblog qui permet de répliquer facilement des articles de blog et ainsi contrer la censure (faudra que j’en installe deux ou trois)
  • La Library of Congress des US qui archive tous les tweets des gens
  • Et finalement si vous avez compris que le web n’oublie rien, vous pouvez toujours essayer de noyer le poisson
css.php