Born to be wired

Mes données, ma bataille

 22 octobre 2015  Général  Aucun commentaire

Ce qu’il y a de bien avec les smartphones actuels, c’est que tant qu’on reste sur le même système d’exploitation, on peut sauvegarder ses données, les exporter, et les réimporter sur un autre téléphone. On peut donc aisément changer de mobile et avoir l’assurance qu’on retrouvera ses contacts, SMS, et autres informations utiles, sur le nouveau téléphone, de manière transparente ou presque. La vie est bien faite. Tant qu’on reste sur le même système d’exploitation. C’est à dire, pour certains fabricants de téléphones, tant qu’on continue à acheter les modèles de la même marque.

Car si on a le malheur de franchir ce pas, on se retrouve parfois cloisonné, avec nos précieuses données emprisonnées, liées à vie à un fabriquant de téléphones. Si le message véhiculé par ces fabricants n’est pas explicite, il est néanmoins très clair : achète chez le concurrent si tu veux. Mais pour te punir, je t’interdirai de transférer tes précieuses données sur le téléphone concurrent…

Mouah-ha-ha-ha !

mouah-ha-ha-ha

C’est exactement ce que j’ai ressenti lorsque j’ai voulu remplacer mon Nokia sous Symbian par un téléphone sous Android. Vous me direz, je l’ai bien cherché, quelle idée saugrenue d’avoir acheté un smartphone sous Symbian ! Il y a parfois des faits qui vous font regretter le temps béni du 3310.

Dans mon cas, Nokia mettait effectivement à ma disposition via les outils Nokia Suite de quoi faire un export des données du téléphone sur PC, mais pas de quoi réutiliser ces données sur un autre téléphone. Les données sauvegardées n’étaient d’ailleurs pas visualisables autrement que dans le logiciel propriétaire de la firme finlandaise. J’étais pris en otage. Pris en otage par une firme scandinave, le syndrome de Stockholm n’a pas tardé : j’ai accepté de faire une croix sur mes contacts, alors même qu’un de mes nombreux travaux parallèles consistait à l’époque à mettre en place un système de gestion de contacts centralisé.

Mais allez savoir pourquoi, j’ai décidé de lutter en ce qui concerne l’historique de mes SMS, bien décidé à transférer mes conversations sur mon nouveau téléphone Android. Et comme au final il se trouve que j’ai réussi à le faire, j’ai choisi de présenter ici les étapes qui m’ont permis de parvenir à ces fins. Pas vraiment par fierté, le procédé n’ayant rien d’extraordinaire. J’y vois plutôt comme une sorte de pied-de-nez vis-à-vis du Nokia de l’époque, qui voulait m’imposer l’utilisation de sa suite logicielle usine à gaz, plus lourde qu’un Yokozuna constipé depuis 200 jours. Ou comme une sorte de vengeance vis-à-vis de la firme qui pensait avoir le droit de vie ou de mort sur mes données, en m’interdisant de les récupérer dans un format exploitable afin d’en faire ce que mon bon vouloir eut souhaité.

Ils peuvent nous ôter la vie…
Mais ils ne nous ôteront jamais notre liberté !

freedom

Sans plus attendre, voici les quelques détails d’un plan qui se déroule sans accroc :

Je commence par trouver le répertoire de sauvegarde du logiciel Nokia Suite sur ma machine. Puis je lance une sauvegarde minimaliste du téléphone sur mon PC, en m’arrangeant pour que cette sauvegarde comprenne au moins mes SMS. En farfouillant dans les fichiers résultant de l’export, je découvre un fichier particulièrement volumineux : un binaire de plusieurs Mo nommé PCCSSMS.db. Je l’ouvre avec un éditeur de texte : je découvre les premiers caractères « SQLite format 3 ». Bingo ! Les données sont exportés au format SQLite, un format de base de données standard. On peut de ce fait les récupérer et les transformer. L’ouverture du fichier dans un moteur SQLite me confirme cette intuition : la structure de la base de données est suffisamment simple à comprendre pour tenter une récupération des messages stockés à l’intérieur.

Tant qu’à faire, si les données peuvent être exportées, autant les importer dans la foulée dans le nouveau téléphone Android. Pour cela, mon attention s’était déjà portée sur l’application SMS Backup & Restore, dispo sur le Play Store. Oui, il existe probablement plein de belles applis open-source pour faire la même chose, mais j’ai pris la première application correcte et fonctionnelle que j’ai pu trouver. L’avantage de cette application est l’utilisation du format XML pour sauvegarder et restaurer les données. Les message sont donc stockés dans un fichier au format texte, dont la structure se comprend facilement.

Plus besoin de tergiverser, j’ai donc développé un petit script Python qui extrait les données depuis une base SQLite issue d’un export de Nokia C7 et qui les convertit dans un fichier au format XML, celui-ci pouvant être chargé sur Android par l’appli SMS Backup & Restore. Le script nommé SmsDbConvert se trouve pour la postérité sur la page de téléchargements.

Pour la petite histoire, j’avais 2574 messages en base SQLite, 2570 ont été réimportés avec succès par l’appli SMS Backup & Restore, et 4 ignorés. Les messages comprenant des caractères non-latins (j’avais des SMS de test en chinois, arabe, etc…) ont correctement été gérés par le programme. Je crois me souvenir que les 4 messages non gérés contenaient des pièces jointes au format VCARD et m’étaient indifférents. Je n’ai donc pas poussé le vice à modifier mon script afin de les importer coûte que coûte, j’étais déjà satisfait avec mon taux de réussite de 99.84%, le tout rendu possible grâce à un script de 300 lignes, commentaires compris.

Moralité : Python, c’est bon, mangez-en !

C’est tout pour aujourd’hui. Dans mon prochain article, comme l’hiver vient, je rattraperai une partie de mon retard sur mes pérégrinations concernant l’automatisation de mon pilotage de climatisation et chauffage.

Laisser un commentaire