Un magnifique article du NouvelObs que je devais partager. Bravo pour l'investigation et le travail !

  • EXCLUSIF. Comment la France écoute (aussi) le monde

    Révélations sur un vaste plan de la DGSE pour intercepter les communications internationales passant par les câbles sous-marins : lancé en secret par Nicolas Sarkozy, il vient d’être légalisé par François Hollande en toute discrétion.

    L'Obs

  • Comments 1
  • Tuesday, 7 July - 12:07 EdzeronK

    Quoi ? Nous avons des services secrets nous aussi ! :) #LOL

Bien avant les attentats de Charlie Hebdo, de ceux de New-York en 2001, le gouvernement français travaillait sur le renforcement des capacités d'écoutes des services secrets français.

À l'époque l’ennemi n'était pas l'État Islamique ou les groupuscules terroristes et extrémistes qui sévissent sur le territoire, l’ennemi était presque à nos frontières, à l'Est, et brandissait un drapeau rouge sang.

Déjà en France la peur d'un attentat majeur pouvant ébranler les fondements de la République était présente. Mais c'est le 31 décembre 1983, après deux attentats meurtriers revendiqués par un certain Ilich Ramírez Sánchez (proche de mouvements communistes, islamistes et révolutionnaires) que le gouvernement, alors sous François Mitterrand décide d'agir fermement en renforçant les droits octroyés aux services secrets français pour leur permettre de mieux anticiper et surveiller les déplacements et actions futures de ces mouvements extrémistes.

a-tain-l-hermitage-l-attentat-du-31-decembre-1983-contre-un-tgv-marseille-paris-avait-fait-trois-morts-et-une-quinzaine-de-blesses.jpg

Voir l'article du Dauphiné qui revient sur cet attentat.

Le projet de loi "Plan Renseignement National" porté à l'époque par un certain Laurent Fabius devait selon lui "faciliter les capacités d'écoute des services de renseignements … en utilisant des outils modernes afin de surveiller les réseaux de communication et les échanges humains suspects sur le territoire".

Encore en application de nos jours ce projet de loi a été voté en quelques semaines seulement, pendant l'été 1984, et est rentré en application en septembre de cette même année. Il a, entre autre, permis :

  • L'installation sur les terminaux France Télécom déployés sur tout le pays d'outils permettant aux services secrets d'écouter (depuis Paris) toute conversation téléphonique faite à partir de et vers le territoire français. Leur méthode de fonctionnement et de déploiement, secret défense, n'a depuis jamais été révélé.
  • De la création d'un "groupe d'écoute anti-terroriste" et de la formation de 1200 agents dont le rôle était de se fondre dans la foule, sur les lieux publics pour écouter tous les échanges possibles entre les citoyens français afin de détecter tout comportement suspect. Un rapport de 1989 de la Commission Protection et Renseignement (remplacé en 1991 par la Commission nationale de contrôle des interceptions de sécurité (CNCIS)) nous apprend qu'ils seraient aujourd'hui près de 70.000 agents assermentés.
  • L'autorisation étendue du "balisage de véhicules ou d’objets ; sonorisation ou captation d’images dans des lieux privés ; captation de données télémétriques" sur le territoire.

Les seuls contrôles pouvant être faits sont limités à la Commission Protection et Renseignement, en France. À l'étranger aucun contrôle n'est nécessaire pour la mise en place de ces outils d'écoute. Le Juge Judiciaire est sorti de la boucle, la mise sur écoute pouvant être fait directement sur décision du Premier Ministre (la CPR ne pouvant émettre qu'un avis favorable ou défavorable, pouvant être pris en compte, ou non).

L'Affaire des écoutes de l'Élysée ayant totalement éclipsé, dans les années qui suivirent les débats et questions soulevés par les opposants sur ce projet de loi.

Ce qui est encore plus surprenant, c'est que ce projet de loi n'a en fait pas existé. Ce qui précède est fictif. Par contre, au printemps 2015, suite aux attentat contre Charlie Hebdo, un projet de loi similaire, présenté par Mme Christiane Taubira, (garde des sceaux, ministre de la justice), M. Jean-Yves Le Drian (ministre de la défense) et par M. Bernard Cazeneuve (ministre de l’intérieur) a été examiné en procédure accélérée (un seul passage à l'Assemblée Nationale et au Sénat) et voté dans la foulée.

Les "outils installés sur les terminaux France Télécom" (devenu les terminaux des différents opérateurs téléphoniques et fournisseurs d'accès Internet depuis) sont ici appelés "boites noires", vont écouter la quasi totalité du trafic passant sur le territoire français pour essayer de "détecter des comportements suspects", dont la définition exacte, tout comme le fonctionnement des algorithmes triant le trafic "suspect" du trafic , est classé secret défense.

Le "groupe d'écoute anti-terroriste" est ici appelé IMSI Catcher, appareil pouvant "écouter" les communications mobiles faites autour de lui. D'ailleurs l'État français a déjà acheté ce genre de matériel à une filiale du groupe Bull traînant actuellement dans une affaire de revente de matériel d'écoute à des pays "pas trop démocratiques".

Fin août 2011, Bull est soupçonnée d'avoir aidé la Jamahiriya arabe libyenne de Mouammar Kadhafi à surveiller et censurer l'Internet libyen dès 2009, par l'intermédiaire de sa filiale Amesys. Selon des documents dévoilés par Mediapart en plus d'avoir vendu un système d'espionnage du net, Amesys a intercepté des e-mails libyens. Pour étouffer l'affaire, la filiale de Bull a menacé ses anciens salariés de poursuites judiciaires. Voir la section de l'article Wikipedia à ce sujet.

Vous pouvez aussi aller faire un tour sur le site de Reflets qui connaît bien le sujet.

La Commission Protection et Renseignement n'a jamais existé mais est tout de même connue aujourd'hui sous le doux nom de CNCTR.

Et pour finir, si vous voulez un peu plus d'info sur le sujet et essayer de comprendre ce que l'État est entrain de mettre en place : sous-surveillance.fr.

La messagerie instantanée (ou IM pour les intimes) existe depuis un bon bout de temps déjà, j'ai pourtant la très forte impression que nous nous cantonnons à de vieilles habitudes et fonctionnalités que nous pourrions dépoussiérer pour enfin offrir aux utilisateurs les services innovants et modernes dont ils rêvent.

Dans cet article je vais essayer de proposer des idées novatrices qui ont germé après quelques années à travailler dans ce milieu, je vous les donne, à vous d'en faire ce que vous souhaitez avec. Peut-être qu'avec vous allez créer la prochaine application de messagerie qui fera le buzz et révolutionnera notre façon de communiquer avec nos proches.

Accrochez-vous, c'est parti !

Idée 1 : Repenser l'identification

Avouez-le, les identifiants c'est nul, se créer un compte c'est contre intuitif et franchement énervant. La première idée que je vous soumets consisterait à repenser ce système de création de compte. Vous-savez, ce petit (ou grand) formulaire que vous avez à remplir la première fois que vous voulez vous connecter sur un service, un site ou une plateforme.

À vrai dire lorsque l'utilisateur arrive devant son formulaire, il hésite, ce n'est jamais plaisant d'avoir à fournir un effort pour remplir ces quelques champs. Pourquoi ne pas simplement supprimer cette étape ? Lorsque la personne se connecte pour la première fois, on lui attribue un identifiant unique (un numéro). On l'invitera par la suite à remplir son profil, et comme elle sera déjà "entrée" elle donnera avec plus d'aisance ces quelques informations nécessaires à la bonne gestion de son compte.

Le souci que nous avons ici c'est d'identifier de façon unique l'utilisateur avant qu'il nous donne la moindre information. Impossible ? Tout dépend de l'environnement de celui-ci. Si nous souhaitons développer un service de messagerie sur mobile nous pouvons parfaitement utiliser l'IMEI (identifiant unique du téléphone) , ou plus simplement le numéro de téléphone rattaché à la carte SIM de l'utilisateur ! Brillant n'est ce pas ?

Idée 2 : Répartir le réseau ?

L'idée précédente amène un restriction, comme nous souhaitons que la création du compte se fasse de manière automatique nous ne pouvons pas nous permettre de demander à l'utilisateur sur quel serveur il souhaite s'inscrire. Imaginez, nous risquerions de le perdre, il aura un choix à faire ce qui pourrait l'amener à hésiter et donc augmenter les chances qu'il ne s'inscrive pas !

Une solution formidable et pourtant simple est encore ici de se passer de ce choix. Pourquoi ne pas offrir qu'un seul serveur unique où tous les comptes seront créés. Comme ça nous avons un utilisateur = un mobile = un compte unique = un service.

Bien plus simple non ?

Idée 3 : Ajouter de nouveaux contacts

Encore une fois, les utilisateurs sont flemmards et une fois le compte créé ils doivent toujours inviter ou ajouter les contacts avec qui ils souhaitent échanger. Ce processus long et compliqué peut en décourager plus d'un. Ne serait-il pas sympa d'avoir déjà une liste de contacts, tout prête, avec qui le nouvel utilisateur peut discuter dès son arrivé sur la plateforme ?

Mais où trouver cette liste de contact me direz-vous ? Nous avons une application installée sur le mobile de l'utilisateur, mobile qui possède un répertoire téléphonique non ? Bingo ! Pourquoi ne pas simplement prendre l'intégralité de ce répertoire, l'envoyer sur notre serveur, regarder quel numéro de téléphone correspond déjà à un compte créé et créer automatiquement le lien entre les comptes. Cette idée vient confirmer notre première idée, l'identifiant unique peut être le numéro de téléphone de l'utilisateur.

De plus, l'utilisateur acceptera volontiers d'envoyer l'intégralité de sa liste de contact sur nos serveurs en échange de ce superbe service que nous lui offrons non ?

Idée 4 : Respecter les utilisateurs

L'idée précédente est très intéressante mais peut faire peur à certaines personnes soucieuses de leur vie privée (et celle de leurs contacts qui n'ont pas vraiment demandé s'ils souhaitaient que leurs informations soient envoyées sur un service qu'ils ne connaissent pas ?). Quelle contrepartie pouvons nous leur offrir pour les rassurer sur notre gestion de leurs informations personnelles ?

Un mot magique peut alors être sorti pour rassurer tous ces agitateurs : chiffrement. Si les communications sont chiffrées cela montre bien que nous tenons à leur vie privée non ? Nous pouvons déjà garantir que l'ensemble des communications sont protégées entre nos utilisateurs et nos serveurs. Un petit coup de SSL/TLS et hop c'est réglé !

Mais nous pouvons pousser encore un peu plus loin cette idée, pour vraiment montrer que nous souhaitons créer un service innovant, avec des vrais bouts de confiance dedans. Chiffrons les communications de bout en bout ! Ce n'est pas vraiment important puisque nous avons déjà :

  • Le numéro de l'utilisateur
  • Son profil
  • Sa liste de contact complète avec toutes les données attachées (courriel, adresse…)
  • Ainsi que des traces de l'intégralité de ses échanges (émetteur, destinataire, heure d'envois, de réception, de lecture, de réponse, taille du contenu).

Et comme nous le savons, les métadonnées sont plus importantes que les données donc le chiffrement de bout en bout peut être une bonne contrepartie en échange de cette grande générosité.

Idée Bonus 5 : Ouvrir la plateforme

Pour définitivement passer dans le groupe des gentils nous pouvons jouer la carte de l'ouverture. Croyez-moi ça marche à tous les coups. Deux arguments massues peuvent venir renforcer cette idée :

Offrir une API

Une API bien sûr ! Quelques changements sur notre interface de communication, un petit peu de documentation sur un Wiki et hop ! Nous voilà ouverts au monde. Les utilisateurs peuvent ainsi bricoler des bibliothèques dans tous les langages inimaginables pour communiquer avec nous. Un petit système de clef d'autorisation peut nous permettre de garder la main sur tout ça et de radier les applications un peu trop curieuses qui viendraient regarder de trop près notre petit butin.

Libérer nos clients

En ouvrant le code source de nos clients nous pouvons garantir notre transparence. Pourquoi s'en priver ? Nous pouvons ainsi prouver que le chiffrement appliqué est bien respectueux et sans failles. De plus cela ne nous empêche pas d'intégrer des portes dérobées ou autres systèmes espions sur les versions que nous distribuons tout en gardant la base ouverte.

Second effet kiss-cool, en ouvrant nos clients nous utilisons la force de la communauté pour corriger les bugs et apporter des améliorations (performances, interaction). Comme nous gardons la main sur l'API nous pouvons tout de même contrôler tout ce qui entre et sort. Attention à ne pas être trop bavard quand même !

Et voilà

Voilà quelques idées très simples qui vont vous permettre de créer votre prochaine application de messagerie sur mobile, avec quelques bidouilles vous pouvez même la porter sur d'autres plateformes.

Avec l'Idée 3 je peux aussi vous garantir une croissance exponentielle vu que vous qu'à chaque fois vous récupérez la liste de chaque nouvel utilisateur.

Jouer la carte de l'ouverture peut aussi être retardée si vous souhaitez faire valoir la transparence (comme Joker) après quelques problèmes que vous pourriez avoir concernant la vie privée. À vous de voir suivant la politique d'ouverture et de respect de la vie privée de vos utilisateurs que vous souhaitez appliquer.

Oh bah mince alors !

Je me serais fait piquer mes idées par, entre autres :

Q: Who can I write to?
You can write to people, who are in your phone contacts and have Telegram.

Et pour certaines idées :

Et sinon pour ceux qui ne sont pas flemmards et qui veulent de la vraie messagerie instantanée, il y a XMPP :)

  • Comments 3
  • Thursday, 11 June - 00:17 Emile Schons

    incroyable article. M'a fait peur que ça seront vraiment tes pensées. Idée 1,2,3 ou au moins idée 3 peut être résolue technologiquement sans qu'il ait un serveur qui a les données de contacts (numéro de téléphone p.ex) A la fin s'il ouvre leur platform ou moins j'ai le choix de ne pas être sur un serveur monopole, mais qu'ils aient que les données échangés avec des amis sur le serveur monopole, comme aujourd'hui avec l’émail. Je crois que s'ils veulent survire ils doivent ouvrir la plate-forme même les très grand.

  • Thursday, 11 June - 03:26 Maxime Buquet

    Peut être qu'un jour les gens réaliseront, ou alors peut être qu'ils le savent déjà et qu'ils s'en foutent. Protéger sa vie privée, quelle idée.

  • Thursday, 11 June - 13:20 Touhami

    Et si je ne veux pas lier mon compte à mon numéro de téléphone ? Si je veux avoir plusieurs comptes ?Je crois qu'il est plus simple de générer un ID pour les utilisateurs puis de leurs de mander un pseudo ou nom. après quelques temps, un avatar.

Voilà plus de cinq ans que je travaille avec le protocole XMPP. Ces derniers mois je me suis focalisé sur une fonctionnalité très intéressante proposée par la XEP-0100: Gateway Interaction (je rappelle que le protocole de messagerie XMPP est par nature extensible et que les XEP sont les documents qui caractérisent cette modularité, il existe à ce jour plus de 300 XEP couvrant un très large panel de fonctionnalités).

La XEP Gateway Interaction permet aux utilisateurs possédant un compte XMPP de se connecter à d'autres réseaux de messagerie instantanée (tels que IRC, AIM, Jabber). La connexion va ici se faire au niveau du serveur de l'utilisateur.

L'intégration de cette fonctionnalité étant planifiée dans Movim j'ai en premier lieu déployé conjointement au serveur XMPP movim.eu le service de transport Spectrum, référence en la matière. Le grand intérêt de Spectrum c'est qu'il utilise différents modules lui permettant de se connecter à un grand nombre de réseaux (voir la liste des modules sur cette page).

Un des modules a particulièrement retenu mon attention, il s'agit de celui permettant d'utiliser la librairie libpurple, cette librairie permet elle-même de se connecter à de nombreux réseaux (AIM, Jabber, Facebook, GTalk, ICQ, MSN, Yahoo) et offre une interface unifiée coté client. Elle est, entre autres, utilisée dans le logiciel de messagerie Pidgin.

Pour simplifier, tout réseau fonctionnant dans Pidgin peut, s'il est correctement développé, être compatible avec Spectrum et ainsi être utilisé en tant que transport XMPP.

Le point noir de cette librairie c'est qu'un grand nombre de nouveaux réseaux très populaires ne sont pas encore officiellement supportés. J'ai donc souhaité mettre la main à la pate et j'ai packagé jusqu'ici 3 nouveaux réseaux qui sont pleinement compatibles avec Pidgin et par extension Spectrum.

  • Skype, au travers de l’excellente librairie skypeweb qui, comme son nom l'indique, exploite l'interface Web offerte par Microsoft pour le réseau Skype. Pour ce projet j'ai ajouté le support de CMake (voir le fichier en question) me permettant de la compiler proprement sur ma machine, de créer un paquet pour Debian et de l'ajouter à mon dépôt personnel. J'ai également fait quelques retours au développeur EionRobb pour améliorer la compatibilité avec Spectrum (sur la gestion des présences et de la transmission des profils essentiellement).
  • QQ, réseau social chinois. J'ai ici complété le support de CMake pour pouvoir packager la librairie et l'ajouter à mon dépôt Debian. J'ai également échangé avec le développeur xiehuc pour améliorer l'intégration des deux librairies : lwqq (qui permet de se connecter QQ au travers, ici aussi, de l'interface Web) et pidgin-lwqq (qui fait l'intermédiaire entre lwqq et libpurple).
  • LINE, protocole de messagerie instantanée japonais mais également utilisé en Europe et en Amérique du Nord. Pour ce réseau j'ai packagé la librairie purple-line et j'ai commencé à échanger avec le développeur Matti Virkkunen pour travailler sur l'intégration et la compatibilité de celle-ci avec Spectrum (j'ai encore à ce jour un soucis concernant la gestion des boites de dialogue).

C'est donc trois nouveaux réseaux qui sont maintenant compatibles avec Pidgin et qui sont en intégration avec le projet Spectrum. Je discute également régulièrement avec les développeurs de Spectrum pour faciliter les échanges entre les différents projets et assurer une meilleure compatibilité entre ceux-ci.

Installation par le dépôt apt.movim.eu

Pour vous faciliter encore la vie, les trois librairies sont disponibles sur mon dépôt personnel apt.movim.eu et sont régulièrement mises à jour. Après avoir ajouté le dépôt vous pouvez directement les installer en une commande (ou via votre interface graphique de gestion de paquets préférée).

apt install pidgin-lwqq liblwqq 
apt install purpleline
apt install skypeweb

Vous n'avez plus qu'à redémarrer Pidgin et ajouter vos différents comptes pour vous connecter aux différents réseaux.

Utilisation des transports XMPP

Deux des trois librairies ont également été ajoutées à l'instance Spectrum du serveur movim.eu, avec un client compatible (tel que Pidgin ou Gajim) vous pouvez joindre vos comptes Skype et QQ à votre compte XMPP et ainsi profiter de tous vos contacts dans une liste unifiée.

http://imgur.com/P5QdXB7l.png

Le transport Skype étant disponible sur le service XMPP skype.movim.eu et QQ qq.movim.eu. Vous pouvez également utiliser les services jabber.movim.eu et irc.movim.eu pour connecter un compte Jabber ou rejoindre un salon IRC au travers de votre compte XMPP.

En bref

Grâce au packaging des ces trois nouvelles librairies libpurple vous pouvez désormais, en quelques clics, et sans utiliser les clients officiels (s'ils existent sur votre plateforme) vous connecter aux réseaux Skype, QQ et LINE sur votre client préféré tel que Pidgin ou Empathy.

Pour les administrateurs c'est aussi une excellente nouvelle car vous allez pouvoir ajouter de nouveaux transports à vos serveurs XMPP et ainsi proposer à vos utilisateurs l'interconnexion avec ces nouveaux services.

Corrections par Christine Ho.

  • Comments 4
  • Monday, 8 June - 15:21 Sven

    I love this :P

  • Monday, 8 June - 16:41 Emile Schons

    Nice work. Xmpp is getting "social" with other services.

  • Tuesday, 16 June - 01:00 Peter Schlager

    Nice guide - keep truckin'! :-)

  • Wednesday, 1 July - 08:09 EdzeronK

    Cool, et comment pense tu l’intégrer du coté front-end ? sous forme de connexion comme ça : https://framapic.org/yr6omPZ2aNHw/Mem52oAu

Une belle histoire, de jolis dessins et des personnage attachants. Je vous recommande chaudement cette petite perle sortie l'année dernière.

  • Le Chant de la Mer

    Le Chant de la Mer est un film de Tomm Moore avec David Rawle, Fionnula Flanagan. Synopsis : Ben et Maïna vivent avec leur père tout en haut d'un phare sur une petite

    AlloCiné

  • Comments 2
  • Sunday, 19 April - 21:57 Emile Schons

    merci d'avoir remis les commentaires :)

  • Tuesday, 21 April - 07:47 Jaussoin Timothée

    Mais de rien :)

Pour un amoureux du rock-progressif comme moi cet album live est une vrais petite merveille :)

  • ARENA - Breakfast In Biarritz (2001)

    Breakfast In Biarritz is a music live recording by ARENA (Neo-Prog/Progressive Rock) released in 2001 on cd, lp / vinyl and/or cassette. This page includes Breakfast In Biarritz's : cover picture, songs / tracks list, members/musicians and line-up, different releases details, free MP3 download (stream), buy online links: ebay and amazon, ratings and detailled reviews by our experts, collaborators and members.

    Progarchives.com

Je suis français, j'ai ma carte d'identité française, comme 66 millions de compatriotes. Je suis allé voter aux municipales, aux européennes, aux présidentielles. À chaque fois j'ai tenté de réfléchir au meilleur parti, à la meilleure personne qui pourrait porter mes idées.

En bon citoyen j'ai fait ce que mes parents, mes professeurs, m'ont toujours dit de faire : aller voter.

Je n'ai jamais voté pour le même parti, pour une liste divers gauche pendant les municipales, écologistes et pirates pour les européennes, centre pour les présidentielles, puis droite pour le second tours. À chaque fois je l'ai fait en choisissant ce que le candidat me semblait proposer de mieux pour ma ville, mon pays, mon Europe.

J'ai vu des lois liberticides votées sous la présidence de Nicolas Sarkozy, j'ai vu le scandale Snowden éclater au grand jour, j'ai vu ma patrie ne pas réagir, j'ai lu des articles expliquant qu'au contraire elle signait des gros contrats avec quelques petites dictatures ici et là pour leurs permettre de surveiller leurs populations.

Puis j'ai vu mon gouvernement parler de radicalisation, désigner un ennemie de la patrie là bas, loin hors de nos frontière. J'ai entendu que des français partaient les rejoindre, qu'ils se "radicalisaient" sur Internet. Mon Internet. Celui que j'utilise quotidiennement, qui m'informe, qui me permet de débattre, qui me permet de m'exprimer, de me passer de la télévision (que je ne regarde plus depuis plus de 4 ans maintenant) et d'avoir, enfin, des informations hétéroclites, contradictoires… mais que je peux confronter, commenter, partager. Cet Internet qui m'a aidé à comprendre la dure réalité, celle qui n'est pas enseigné dans les livres, celle que je n'ai pas eu dans mes études, ni à la télévision.

Cet Internet, humain, universel et neutre je le défends.

J'ai vu mon gouvernement ne pas comprendre son fonctionnement puis j'ai vu arriver la loi Hadopi, absurde et un grain dangereuse car obligeant d'appliquer une surveillance globale sur la population puis de détecter automatiquement si une personne est entrain de télécharger une œuvre illicite.

Par la suite j'ai vu arriver sous mon sapin, en 2014, une loi autorisant mon gouvernement à bloquer, sans juge, n'importe quel site web sous couvert que celui-ci ferait l’apologie du terrorisme. J'ai suivit les horreurs perpétrées à Charlie Hebdo. Je ne suis pas descendu dans la rue car la liberté je la défend quotidiennement. Je n'ai pas vu les français réagir face à leur gouvernement mais au contraire le supporter dans son action.

Puis suite aux attentas, j'ai pris peur, non pas face aux terroristes, non. J'ai pris peur face à mon propre gouvernement. Puis j'ai vu que je ne n'était pas le seul.

Aujourd'hui j'ai vu mon gouvernement censurer plusieurs sites, de façon arbitraire et toujours sans décision de justice et renforcer les pouvoirs de ses services de renseignement.

Je ne vois toujours pas les gens de ma patrie réagir.

Pour les prochaines élections je vais peut être voter pour un extrême, surement le Front National, non pas pour leurs idées, bien au contraire, mais je veux que cela cesse. Je veux que le pire arrive le plus rapidement possible (voir la vidéo de Fabrice Epelboin à ce sujet) et que nous passions à autre chose. Seul un traitement de choc pourra nous faire revenir à la réalité.

Je suis français, et aujourd'hui, j'ai mal à ma liberté.

Bonjour tout le monde, voilà quelques longues semaines que je n'ai pas donné de nouvelles du projet Movim. N'ayez pas peur les corrections arrivent progressivement et déjà plein de fonctionnalités sont prêtes pour la version 0.9. Il y a eu :

  • De nombreuses corrections concernant la mise en page et le comportement du chat et des chatrooms
  • L'ajout d'un aperçu des articles sur l'actualité
  • La possibilité de changer le mot de passe et de supprimer le compte () ainsi que toutes les informations liées
  • La possibilité d'effectuer des actions de maintenance sur le serveur XMPP, directement depuis Movim (très utile pour les administrateurs) via l'implémentation de la .
  • Des nouveaux avatars qui s'intègrent mieux à la nouvelle interface
  • La publication de billets avec un lien en pièce jointe
  • La possibilité de supprimer le billet publié
  • Une nouvelle page d’accueil qui sera amenée à évoluer dans les prochaines semaines
  • La réintégration du "blog" dans la nouvelle interface
  • Des corrections et optimisations relatives à la gestion des WebSockets
  • Les emojis font également leurs apparition :stuck_out_tongue_winking_eye:
  • Et plein de petites corrections relatives à l'interface

Une feuille de route va être posée bientôt pour fixer les fonctionnalités qui seront implémentées pour la 0.9. Il reste principalement à :

  • Intégrer le chiffrement OTR dans le chat (cette fonctionnalité m'a été énormément demandée donc je compte la passer en priorité)
  • Réintégrer proprement les groupes dans l'interface
  • Repenser la page d'acceuil du projet pour la rendre plus "acceuillante" et ergonomique

Autour du projet je suis très heureux de voir que la communauté s'agrandie de plus en plus et que nous allons bientôt avoir 4000 inscrits sur le pod officiel. Je souhaiterais également prendre du temps pour travailler sur la communication du projet a déjà été mise à jour ainsi que .

Voilà voilà, n'hésitez pas à donner votre avis sur le salon de discussion et sur , il faut que je regarde comment je peux remettre les commentaires sur la nouvelle interface.

Une vidéo impressionnante trouvée sur Internet. Ça donne le vertige :smiley:

  • Survol de Paris La Défense avec un drone

    Survol de Paris La Défense avec un drone à de 200 mètres au dessus du sol parisien. Il s'agit du plus grand quartier d'affaires d'Europe filmée depuis un drone hexacopter équipé d'une caméra GoPro 3 black et piloté à distance en FPV, c'est à dire avec un retour streaming vidéo. Une belle vidéo réalisée par serveurperso qui nous fait découvrir les plus hautes tours du quartier de La Défense à Paris.

    Dailymotion

Le dernier album de Björk est une vraie petite merveille. Son style musical n'a pas pris une ride ! Jetez vous dessus :D

  • Björk – Vulnicura

    Björk – Vulnicura (Stonemilker, Lionsong et plus). 9 titres (41:43). Vulnicura est sorti 1 mars 2015. Björk is a mononym of Björk Guðmundsdóttir (b. 21 Nov 1965), an Icelandic singer-songwriter, composer, music producer and occasional actress, whose work includes eight solo albums and two film soundtracks. She is known for including elements of rock, jazz, electronic, classical, industrial, ethereal wave and trip-hop music in her work. Her voice has also been acclaimed for its distinctive qualities. In 2010, she won the Polar Music Prize in recognition of her "deeply personal music and lyrics, her precise arrangements and her unique voice." Découvrez de la musique, des concerts, des vidéos et des images grâce au catalogue online Last.fm.

    Last.fm

Après avoir présenté Puppet et quelques particularités concernant sa configuration nous allons maintenant déployer automatiquement une instance de Wordpress, en premier lieu sur nos serveurs de test puis nous déploierons en production en suivant la méthode présentée dans le précédent article.

Installation des modules Puppet

Pour cette configuration nous nous baserons sur trois modules fournis depuis les dépôts Puppet, deux officiels et un non-officiel (Wordpress).

puppet module install puppetlabs-mysql
puppet module install puppetlabs-apache
puppet module install hunner-wordpress

Modification du fichier nodes.pp

L'intégralité des modifications se fera au sein du fichier nodes.pp. Comme expliqué dans le précédent article, deux types de serveurs sont ici déclarés, les serveurs web et ceux de base de données. Dans chacune des familles, deux environnements sont utilisés, celui de test et de production.

Configuration des serveurs Web

Tout d'abord le fichier de configuration

node 'web01-test', 'web01' inherits basenode {
    package { 'apache2': }
    package { 'php5': }
    package { 'libapache2-mod-php5': }
    package { 'php5-mysql': }
    include mysql::client
    class { 'wordpress':
        db_user      => 'wordpress_user',
        db_password  => 'secret_password',
        db_host      => 'mysql01-test',
        db_name      => 'wordpress_db',
        install_dir  => '/var/www/html/wordpress',
    }
}

Ici nous décidons d'installer l'ensemble des paquets nécessaires à l'utilisation de PHP sur le serveur Apache, cette configuration étant destinée à des machine Debian elle devra surement être adaptée aux autres distributions (RedHat…).

Le serveur web dialoguant à distance avec le serveur MySQL, il faut également charger le sous-module nécessaire.

Finalement nous configurons l'instance de Wordpress en lui donnant la configuration de notre base de donnée et le répertoire dans lequel celui-ci se trouvera.

Configuration des serveurs de base de données

La configuration de notre serveur MySQL se fait ici en 4 temps.

node 'mysql01-test', 'mysql01' inherits basenode {
   class { '::mysql::server':
       root_password    => 'strongpassword',
       override_options => {
           'mysqld' => {
               'max_connections' => '1024',
               'bind-address'    => '0.0.0.0',
           }
       },
       databases => {
           'wordpress_db' => {
               ensure  => 'present',
               charset => 'utf8',
           },
       },
       users => {
           'wordpress_user@%' => {
               ensure   => 'present',
               password_hash => '*E0A6057BDBD3D6A85C3B232B9EE04DBBBAD5E9BD'
           },
       },
       grants => {
           'wordpress_user@%/wordpress_db.*' => {
               ensure     => 'present',
               options    => ['GRANT'],
               privileges => ['SELECT', 'INSERT', 'UPDATE', 'DELETE'],
               table      => 'wordpress_db.*',
               user       => 'wordpress_user@%',
           },
       }
   }
}

La première partie du fichier s'occupe de la configuration générale du serveur avec la définition d'un mot de passe pour l'administrateur. La clef bind-adress permet d'autoriser tous les serveurs extérieurs à interroger notre serveur MySQL, il est conseillé de n'autoriser que le sous-domaine réseau où se situent vos machines.

Nous ordonnons par la suite la création de la base de donnée wordpress_db en UTF8. Puis nous déclarons l'utilisateur wordpress_user.

Afin de récupérer le hash utilisez un invite de commande MySQL

mysql> SELECT PASSWORD('secret_password');

Finalement nous utilisons la primitive SQL GRANT pour définir les bon droits sur l'utilisateur nouvellement créé. L'utilisation du pourcentage (%) permet d'autoriser les connexions depuis n'importe quel serveur externe.

Suite à l'application de ces configurations sur les serveurs respectifs vous devriez avoir accès au panneau d'installation de Wordpress sur votre serveur web.

Comme toute grande plateforme web qui se respecte, le réseau social Google+ possède une API publique. Tout développeur souhaitant ainsi puiser dans l'énorme base de données offerte par le géant américain de la recherche peut, suite à une authentification, avoir accès à une multitudes d'URLs offrants des informations aussi diverses que les profils des utilisateurs, leurs liens, leurs galeries photo mais aussi, plus simplement, de la liste des billets publiés sur le réseau. Vous pouvez retrouver toutes les informations relatives à l'API officielle à cette adresse.

jeu.png

L'utilisation de cette API se fait suivant de nombreuses contraintes. Tout d'abord une authentification OAuth est nécessaire pour que Google puisse connaitre qui interroge son API, récupère quelles données et dans quel volume. Le quota fixé lorsque vous n'êtes pas authentifié est également volontairement bas (10 000 requêtes/jour) pour vous forcer à renseigner vos informations, suite à ça il passe à 20 000 000 requêtes/jour.

Dans ce billet je ne m'étendrais pas particulièrement sur cette API officielle, mais prendrait plutôt un autre chemin en exploitant l'API interne du projet.

Architecture de fonctionnement du site

Avant de rentrer dans les détails, il est toujours bon de comprendre le fonctionnement général et de savoir comment les pages Google+ sont chargées au sein de votre navigateur. Depuis quelques années déjà Google a tendance à effectuer une partie des calculs de rendu des pages web grâce aux navigateurs des utilisateurs, la génération du HTML étant alors faite en Javascript et non plus coté serveur.

Pour parvenir à ses fins Google charge un ensemble de scripts ayant un rôle similaire au framework AngularJS (framework qui est aujourd'hui également porté par Google). Le navigateur de l'usager va alors interroger le serveur grâce à des requêtes de type Ajax (ou, de façon moins courante, via un WebSocket) afin de recevoir les informations brutes qui seront ensuite analysées par ces scripts. Ceux-ci vont finalement générer le HTML grâce à l'utilisation de modèles prédéfinis.

Ce qui va nous intéresser ici, c'est de comprendre quelles types d'informations sont échangées entre ce script et le serveur, dans notre cas ce sera entre une page d'un utilisateur Google+ et le serveur officiel de Google. La console de développement du navigateur nous permet d'avoir toutes ces informations très facilement.

googleplus.png

Interrogation du SocialGraph interne

Parmi la multitude de requêtes envoyées l'une d'entre elles nous permet de récupérer la liste de contacts du profile interrogé. Ce qui est intéressant ici c'est qu'en récupérant les informations par ce biais nous outrepassons totalement le système de vérification imposé par Google en nous faisant directement passer pour l'application officielle. Nous n'avons également plus de problème de quota. Mais ce qui est aussi bien plus intéressant c'est qu'une très grande partie des informations que nous récupérons par cette API interne ne sont pas directement disponibles par l'API officielle, même après une authentification OAuth. Prenons un petit exemple avec la récupération de la liste de contact d'un utilisateur.

Via l'API officielle, sans authentification

La documentation de l'API nous indique que nous devons interroger l'URL suivante pour avoir la liste des personnes visibles publiquement :

<pre>https://www.googleapis.com/plus/v1/people/<userid>/people/visible

Sans grand succès le serveur nous demande de nous authentifier.

{
 "error": {
  "errors": [
   {
    "domain": "usageLimits",
    "reason": "dailyLimitExceededUnreg",
    "message": "Daily Limit for Unauthenticated Use Exceeded. Continued use requires signup.",
    "extendedHelp": "https://code.google.com/apis/console"
   }
  ],
  "code": 403,
  "message": "Daily Limit for Unauthenticated Use Exceeded. Continued use requires signup."
 }
}

Via l'API officielle, avec authentification

Si nous nous authentifions, nous apprenons qu'une requête particulière devra être envoyée à l'utilisateur à qui nous souhaitons récupérer sa liste de contact. On comprend alors rapidement que ce type d'autorisation, au cas par cas, va rapidement être extrêmement limitante, malgré le quota de 2 millions de requêtes autorisées par jour.

Via l'API interne

L'analyse des journaux des requêtes faites par le navigateur sur les serveurs de Google+ nous apprend que la récupération de la liste de contact se fait via l'URL suivante.

<pre>https://plus.google.com/_/socialgraph/lookup/visible/?o=[null%2Cnull%2C"<userid>"]

En interrogeant directement cette URL dans votre navigateur celui-ci va vous retourner un fichier response.txt contenant des données ayant une curieuse syntaxe.

)]}'

[["tsg.lac",[]
,[[[,,"110661163553027975344"]
,[]
,["Faisan Mezico",,,,"4e52150f806a1","BmZtIH_2033lLnZhGF-","FI4QDHp402BdDJodFk-",1,"//lh6.googleusercontent.com/-tpAJoURnuw0/AAAAAAAAAAI/AAAAAAAAAFQ/TDfgcRNxObM/photo.jpg",,1,,,,,0,,[]
,,,0,,[]
,,,[]
,[]
,,4,0,,[]
,,[]
,,,,,[]
]
,[]
]
,[[,,"101912980608854649615"]
,[]
,["WebUpd8",,,,"50960cba225a9","KI3fJJRj8-F8","1FGKBHhGGmwZ",1,"//lh4.googleusercontent.com/--zW_IOVlngs/AAAAAAAAAAI/AAAAAAAAHzY/-HFDg2zIa1c/photo.jpg",,1,,,,,0,,[]
,[,"http://www.webupd8.org",,,7]
,,1,"Daily Ubuntu / Linux news and application reviews.",[]
,,,[]
,[]
,,3,0,,[]
,,[]
,,,,,[]
]
,[]

Cette syntaxe semble d'approcher curieusement du JSON, au format tableau avec quelques petits changements.

  • Les données commencent avec un )]}' qui semble être une séquence d'échappement, j'ai pris soin de retirer ces deux premières lignes
  • Une très grande partie des informations contenues dans les tableaux sont vides. Sur une chaine JSON valide ceux-ci doivent être mis à null, Google a sûrement pris soin de supprimer les quatre précieux caractères que composent le mot "null" pour gagner en volume lors du transfert des requêtes.

Avec quelques lignes de PHP nous pouvons très facilement reconstituer une chaîne JSON valide.

<?php 
function formatData($t) {
    $t = explode("\n", $t);
    array_shift($t);
    array_shift($t);
    $t = implode("\n", $t);

    $t = str_replace(',,', ',null,', $t);
    $t = str_replace(',,', ',null,', $t);
    $t = str_replace('[,', '[null,', $t);
    $t = str_replace(',]', ',null]', $t);
    $t = str_replace('[]', '[null]', $t);

    return json_decode($t);
}
?>

Une fois les informations passées à la moulinette nous avons enfin une structure sur laquelle travailler.

array (size=2)
 0 => 
   array (size=3)
     0 => string 'tsg.lac' (length=7)
     1 => 
       array (size=1)
         0 => null
     2 => 
       array (size=66)
         0 => 
           array (size=4)
             ...
         1 => 
           array (size=4)
             ...
         2 => 
           array (size=4)
             ...
         3 => 
           array (size=4)

Je n'ai pas réussit à trouver la signification de l'ensemble des valeurs null mais j'ai réussit à déduire certaines d'entre elles. Nous observons la liste des contacts dans la structure renvoyée (avec mon jeu de donnée le profile interrogé avait ici 66 contacts). En tâtonnant un peu j'ai réussit à récupérer l'identifiant unique, le nom, l'avatar et la description.

<?php
$contacts = $a[0][2];
$results = array();

foreach($contacts as $c) {
    array_push($results,
        array(
            'idfull' => $c[0][2],
            'name' => substr($c[2][0], 0, 63),
            'avatar' => 'http://'. $c[2][8],
            'description' => htmlentities($c[2][21])
        ));
}
?>

Voici le résultat.

array (size=66)
 0 => 
   array (size=4)
     'idfull' => string '110661163553027975344' (length=21)
     'name' => string 'Faisan Mezico' (length=13)
     'avatar' => string 'http:////lh6.googleusercontent.com/-tpAJoURnuw0/AAAAAAAAAAI/AAAAAAAAAFQ/TDfgcRNxObM/photo.jpg' (length=93)
     'description' => string '' (length=0)
 1 => 
   array (size=4)
     'idfull' => string '101912980608854649615' (length=21)
     'name' => string 'WebUpd8' (length=7)
     'avatar' => string 'http:////lh4.googleusercontent.com/--zW_IOVlngs/AAAAAAAAAAI/AAAAAAAAHzY/-HFDg2zIa1c/photo.jpg' (length=93)
     'description' => string 'Daily Ubuntu / Linux news and application reviews.' (length=50)
…

Comme vous pouvez le constater, en quelques lignes de code nous pouvons parfaitement récupérer des informations structurées et compréhensibles à partir de l'API interne du réseau Google+ et cela en outrepassant toutes les limites de quota et d'autorisation imposées par l'entreprise.

J'ai suite à ça complété le script en tentant d'explorer le "graphe" Google+ de façon automatique via un système de saut de profil en profil. J'ai très rapidement récupéré les identifiants et informations de millions de comptes sans que Google ne me dise la moindre chose :)

Le navigateur interroge de très nombreuses URLs lors du chargement d'un profil Google+ avec pour bon nombre d'entre elles des informations structurées de la même façon que notre liste de contact.

Petite précision tout de même, l'ensemble des informations que j'ai ici récupéré sont des informations initialement publiques, que vous pouvez parfaitement avoir en chargeant le profile de la personne depuis un navigateur quelconque. Pour accéder aux données privées des utilisateurs il n'y a pas d'autre moyens (pour le moment) que de passer par l'API officielle et de récupérer, au cas par cas, les données.

Amusez vous bien !