 Cette présentation s'appelle la dissection de madame cellulaire 3G et 4G, elle est faite par Harold Blifter et Hans Peter Freyter. Désolé pour la prononciation. On a vu dans la présentation précédente sur les villes intelligentes qu'il y a beaucoup d'IOT qui doit communiquer dans tous les sens. Il y a du zigby et des protocoles, il y a diverses variés, mais en général, ce qui est déjà disponible, c'est les réseaux 3G, les modems 3G et 4G. Je n'ai pas vraiment besoin de vous présenter nos autres aujourd'hui, ils sont très connus depuis des années, ils sont déjà venus ici. Je vais leur laisser la parole tout de suite et il y a une belle présentation à vous. Donc aujourd'hui nous allons vous parler de modems cellulaires. Ce n'est pas à propos du Baseband, c'est vraiment à propos du modume GL, du modus GSM de troisième ou quatrième génération. Donc il y a plusieurs choses à notre motivation. Pourquoi est-ce qu'on regarde dedans ? D'où est-ce qu'on a commencé ? Qu'est-ce qu'on a fait avant en termes de modems ? On va regarder comment est-ce qu'on a choisi les modems qu'on a regardés. Qu'est-ce qu'on a vu ? Quelques choses qu'on ne s'attendait pas. On va regarder le firmware, comment les actualiser, comment ça fonctionne, ce qui a été fait. Et on va finir avec nos recommandations qui est... Donc nous allons implémenter l'explication au GSM pour plus d'une décade. Ça a commencé par envoyer des commandes AT sur des... À propos d'un téléphone portable, on a envoyé des commandes AT. On a travaillé sur Osmocom et OpenBSD pour implémenter des radio & radio networks et des réseaux au cœur. Et la forge a présenté comment notre smartphone modem fonctionne. Ça fait quelques années. On a travaillé depuis Osmocom BB pour faire fonctionner notre propre software baseband sur du hardware commercial. Et professionnellement, on travaille avec MDM. Et on en a fabriqué quelques-uns avec des modems de G. Et à partir de ce point-là, on a commencé à explorer comment quel matériel on pourrait utiliser pour faire des mes choses modernes. Notre implementation de la 3G et 4G, du software pour la 3G et 4G, si vous envoyez des messages et que vous ne récupérez pas de réponse, c'est est-ce que vous avez un problème d'encodage et donc on a regardé comment on a essayé d'avoir un matériel qui nous permet d'envoyer des messages et qui sont capables de récupérer des traces. Et ça nous a aidé avec Osmocom et OpenBSD et de comprendre comment la technologie cellulaire fonctionne. TCP, IP est connue par beaucoup d'entre vous, mais IP est envoyé au réseau coeur et ensuite envoyé à Internet. Et c'est pas forcément clair, on aimerait bien vous voir comment ça fonctionne. Donc, imaginez-vous un instant en train de construire votre device-machine-machine classique. Vous allez choisir un modem qui est déjà certifié, mais faut aussi faire tourner du code applicatif. L'approche traditionnelle, c'est de prendre un microcontroleur ou un processeur un peu grand et de connecter ces deux périphériques en utilisant de l'USB ou du série. Mais ça signifie qu'il faut avoir un plus gros PCB, qu'on va consommer davantage de puissance. Donc ça pourrait être sympa de faire tourner des applications sur le modem en lui-même. Donc on a plusieurs avantages, donc PCB, consommation, moins de composants, ça coûte moins cher. Et on s'est rendu compte à une époque qu'il y avait un truc développé par Cira Boyarles, qui s'appelait Open Actives, et qui permettait d'écrire en C du logiciel qu'on compilait avec GCC, qu'on applaudait sur le modem et qu'on pouvait exécuter. C'est chargé par le système d'exploitation en temps réel en tant qu'un process standard. Il n'y a pas de MMO, il n'y a pas de séparation de privilège. Donc si vous crachez, vous faites cracher le modem. Bon, pour rendre le debug plus facile, il y a des outils sympas pour sortir et rentrer des commandes AT, logger et debugger. Mais le problème, c'est que si on construit une application pour la rente stable, on en sait tellement sur ces Open IT qu'on est bloqués, on doit rester sur cette architecture. Et donc voilà, le software suit le hardware et vice-versa. On va passer des années à développer une application et puis, soudain, on se rend compte qu'il n'y a pas de transition 4G possible et que même si ça marche en 2G, le temps passe, c'est que faire. C'est sympa pour commencer, mais c'est un peu une fois sans issue. Et d'où nos cahiers des charges ? Donc c'est quoi un bon modem ? Bon, on veut pouvoir faire tourner notre propre code applicatif, pas des codes script-en-piton ou des trucs en Java assez limités, mais notre réelle application, c'est qui accède au périphérique. On ne veut pas être victime de vendor lock-in, donc ça peut être simple. On peut être d'accord d'utiliser un chipset spécifique, mais on ne veut pas avoir à suivre ce que le fournisseur du modem veut qu'on fasse. Donc afin de pouvoir débugger, on souhaite également pouvoir obtenir des messages de log pour savoir ce que le modem est en train de faire, si c'est en train de jeter des choses, oui, une sortie de débug. Et pour le développement 3G 4G, on veut pouvoir voir aussi des messages de la couche radio. Vous connaissez peut-être X-Colemon, un outil qui a été écrit par Tobias Engels, qui permet d'extraire des traces des baseband infinéons. Donc on aimerait un truc comme ça, mais pour le GPRS, les lits GPRS, le MTS et le LTE. Donc, dans le marché du modem en général, il est demoté par Qualcomm, et c'est comme ça, il s'est hissé à cette place. Ça signifie que si on choisit un modem, ce sera probablement basé sur un chipset Qualcomm, et Qualcomm est très proche de ce qu'on cherche chez le modem, parce qu'il supporte un truc qu'on appelle le protocole DIAG. C'est utilisé dans plein de produits Qualcomm, des Femtos, des VBH, en passant par le GSM. Aux 28 C3, on en a entendu parler pour la première fois, c'est Guillaume qui a regardé un peu comment était foutu le baseband, et c'est simple, c'est du HDLC classique. On a un marqueur de début de fin, un bit de commande, de la data et un serre C16. C'est utilisé pour des événements, si le modem change de réseau, on a un événement, etc. On peut activer le logging, mais on peut également échanger des commandes et des réponses comme ça, par exemple, il est adresse mémoire, et hop, on a la valeur, etc. Il y a des milliers, littéralement, de structures de messages différentes qui peuvent être envoyées ou reçues. En termes d'implémentation libre, modem manager ou GSM perceur ne consomme qu'une petite partie de ces messages. Ce type de protocole, c'est quelque chose auquel on va avoir l'accès direct, parce que ça vous permet de voir ce que le modem est en train de faire. Ce qui nous amène au point de la sélection du périphérique, un périphérique sur lequel le diag est disponible. Donc, à l'époque, je voudrais recommander le colectel U20, parce qu'on a le diag exposé sur l'USB tout de suite. C'est un peu vieux, c'est limité à la 2G à la 3G. Donc, on veut un truc avec du LTE. On a trouvé un modem chinois de chez colectel, c'est un EC20. Ça expose aussi le diag, c'est documenté. Il y a des interfaces matérielles. Il y a une interface de dégragonsique. Mais malheureusement, ça ne supporte pas le LTE. Bon, ça peut faire sens d'utiliser 2G et la 3G, mais c'est bien d'avoir une mise à jour possible en 4G. Du coup, le C20, c'est un peu comme le LC20, mais avec en plus de la 4G. Donc, c'est assez sympa. C'est un peu soudé sur le PCB, mais on a aussi une version mini PCI Express en quart de dev, pour la brancher dans un de vos bandes de test. Il y a peut-être déjà sur un périphérique du mini PCI Express. Donc, on a choisi le C20. C'est un modèle qu'on veut regarder. Et qu'on a commencé à regarder, il utilise le chipset MDM9615 qui est également utilisé par l'iPhone 5 de manière assez surprenante. À part ça, il n'y a presque pas de documentation sur ce chip. Ce qui nous amène à la surprise inattendue. Donc, après avoir obtenu le MDM, j'ai utilisé l'interface de commandaté pour jouer un peu avec lui, pour voir si mon application pouvait faire ce que je voulais, quelle face. Et au bout d'un moment, j'ai contacté le fournisseur qui m'a envoyé un zip de mise à jour donc je le décompressais. Tiens, ce nom de fichier ressemble à un système Linux. Pourquoi est-ce qu'il y aura un Linux dans mon modèle ? Bon, peut-être que je me trompe et ils ont un outil de flash qui ressemble à celui d'Android avec Facebood. Peut-être que c'est des coincidences ou c'est pire que ça. Bon, c'était pratique de l'utiliser, peut-être juste. Mais il y a d'autres gens qui ont vu comme le MDE9560 il fait tourner Linux, on a vu ça à la DevCon 25. Donc apparemment il y a Linux dans le modem. Et la question c'est pourquoi faire ça ? Parce que Qualcomm utilisait ces propriétés intellectuelles IP, CIC, REX. Pourquoi arrêter ça ? On ne comprend pas. Donc on a commencé à regarder et on n'a aucune information comme quoi il y avait Linux qui tournait sur ce périphérique. Ce qui ne signifie pas d'offres pour le code source. Voilà, j'ai utilisé des outils GPL, SGPL, aucune information. Le système de fichiers flash ressemble vraiment au système de fichiers Linux. J'ai regardé les binaires qui n'étaient pas standards qui étaient spécifiques à Qualcomm et on voit des strings assez bizarres qui ressemblent à des commandes AT mais AT plus slang. Longueur de que ? Du coup on commence à explorer au niveau technique à quoi ressemble la plateforme mais aussi du point de vue légal. Le code source s'il vous plaît une offre écrite. Je vais passer à la forge. Oui. Donc ça faisait par coincidence, j'avais déjà fait ça aussi dans le passé. Donc Ok. Mais, premièrement, on a commencé à regarder les matériels et si vous faites du matériel de façon professionnelle, vous avez tous les outils et les processus et ce qu'il faut pour faire de l'assemblage pourquoi ne pas faire une paire de boards pour le faire. Donc il y a beaucoup de modules PCI Express pour des modems cellulaires et elles sont des signaux non documentés sur les processeurs comme par exemple le PCI Audio ou quelque chose comme ça et si vous essayez de mettre le modem dans un matériel ces signaux ne vont nulle part et ne sont simplement pas utilisés et rajouter des fils pour essayer de les connecter. On a simplement rajouté une breakout board et c'est un projet hardware ouvert tout est publié et nous avons ce connecteur sur la droite qui expose tous ces signaux spécifiques de façon à pouvoir y accepter facilement à tous ces signaux non documentés. Donc le EC20 sur un module, il y a des bugs UART c'est pas du normal c'est pas de la T mais c'est extra tous les modules ont activé donc on a acheté ça des modules de 3 fournisseurs différents et nous avons différentes configurations et sur celle-ci c'est activé sur certains d'autres non donc des fois c'est 8 volts mais comment est-ce que je peux le dire dans leur grande sagesse ils ont décidé de ne pas montrer les 8 volts sur les donc on a des vôtres externes de 3,6 volts des fois c'est 8 volts et puisque dans des projets à chaque fois que j'avais besoin de m'attacher à une UART il a fallu que j'ai fait faire un level shifter pour un autre système de 8, 2, 3, 2 on va essayer de faire un sélecteur de voltage pour le UART avec un connecteur avec une sélection simple et d'avoir les ports sur les différents matériels donc on attache ça sur le port série et on a un login prompt Linux et c'est marrant parce que si on regarde le fichier que Olga vient de il y a aussi un tc pass vd il y a un fichier et dedans il y a un h et si on fait un petit peu de passe c'est o et linux 1, 2, 3 c'est le mot de passe pour le route sur ce matériel donc on est là donc s'il y a le device et ça ressemble à ça ça c'est la configuration complète j'ai rajouté les 3 sorties pour avoir l'UART sur ce module et du coup on pouvait explorer plus loin où est-ce qu'on peut trouver le source code il n'y avait pas de licence il n'y avait rien il n'y avait pas de source inclus il n'a pas mentionné Linux ou la gpl donc en regardant le fabriquant on n'a rien prévu donc on a regardé un petit peu à droite à gauche c'est possible que d'autres font la même chose et donc welcome public son sa version embarquée un système de construction embarquée donc ça inclut les meta-layers le bootloader le noyau et différentes autres prouves et c'est presque complètement un documenté il y a juste un repo-guide et on peut regarder dedans mais c'est pas vraiment c'est pas une documentation comment l'utiliser et si vous regardez à l'entrée au site web de Qualcomm il y a une centaine de branches et on sait pas utiliser quoi pour quoi et donc ça c'est une version par exemple avec laquelle vous pouvez travailler il y a quelques années j'ai essayé vos instructions mais ça n'a pas compilé et personne n'y a jamais répondu donc voilà pourquoi est-ce qu'il répondrait mais bon c'est ouvert enfin c'est public sur ce site web et vous pouvez essayer de construire on a commencé à le faire mais on a eu les mêmes problèmes mais au final on a réussi à compilé le code et entre temps le fabricant du modem on leur a demandé le code source complètement et il nous a envoyé le source code correspondant au système de mise à jour bon ça c'était pas en gpl mais on a quand même reçu le source donc on était contents c'était bien c'est bien du coup on pouvait comprendre comment le protocole de mise à jour du firmware fonctionnait pour le modem c'est bien du coup on a redemandé d'avoir le code donc il y avait plein de problèmes avec les typos on n'a jamais eu de problème légalement et on est toujours certain de comprendre la propriété intellectuelle mais ils sont simplement dit qu'ils ne savaient pas et donc on respecte toujours la propriété intellectuelle et la loi etc et on bon a priori la priori linux n'est pas essentielle donc pour faire fonctionner donc on a redemandé et on a redemandé et à chaque fois on pose la même question après si que vous essayez mais ça c'était les avocats de netfilter et donc notre client n'a pas le droit du copyright ça c'est nouveau donc on a il nous a expliqué qu'on avait transféré le copyright à la fsf parce que je n'ai jamais fait et c'est relativement donc je n'avais pas de le faire respecte toujours la propriété intellectuelle ok donc toujours pas une code source et on demande et à la fin merci pour vos explications détaillées on va vous les produire et on est toujours prêts à être conformes à la gpl et quelques mois passent et à la fin on envoie des avertissements légaux et on n'en est pas parfait mais on peut pas créer un site parfait mais on ne voulait pas on voulait juste le code source et à un moment donné on récupère le code et ça ne se convient pas et bizarrement c'est le header qui manque et le header c'est moi qui l'ai écrit donc voilà je ne sais pas si c'est une coïncidence mais c'est intéressant et si vous commencez Happy Tables il y a un match pour le code.dcp et il y a un header il c'est 8 lignes c'est vraiment que des fichions de base et ça manquait on ne l'a pas se fichier et quoi comme ne l'a pas non plus et quoi comme ne l'a jamais donné le public le kernel ne fonctionne pas sans se fichier donc nous n'allons pas parler des problèmes de combination par email plus maintenant bon finalement on finit par obtenir des headers un par un chacun dans un email on les met dans son arbre de la source et puis on se rend compte que les scripts dans le noyau sont pas exécutables mais que des fois il y a des fichiers c qui sont exécutables et bon il y a un header qui manque etc etc mais bon j'ai reçu du code avec du code gp la lgpl mais aussi du code propriétaire sous licence apache etc qu'ils auraient pas à sortir mais c'est bien qu'ils réalisent tout c'est un bon signe ils ne réalisent pas ce qu'ils ont à faire mais aussi d'avantage pour le C20 c'est toujours pas compliant on a toujours pas le code de la buzibox et bon c'est pas mon principal problème je crois qu'on y arrive et qu'on va qu'on peut utiliser le code source tel qu'il est sorti c'est intéressant de voir que d'autres fabricants comme CiraWireless qui font aussi des modems en utilisant des systèmes Qualcomm et eux ils sortent non seulement le code source mais également une grande documentation donc voici une capture d'écran comment utiliser Open embedded pour le build comment utiliser Facebook pour installer les firmes sur le module etc mais bon ils sont aussi, pour tout un signe haute qu'ils soient avec l'open source ils étaient quand même de s'attirer les consommateurs dans leur propre framework un peu propriétaire donc c'est pas recommandé je pense que c'est pas quelque chose à faire et je rend la main avant de revenir après nous allons regarder le hardware les chipset qu'ils ont mentionné et nous avons deux couverts qui peut-être dans votre futur voiture et il y a de Linux il y a des autres logiciels mais absolument avec une documentation rien ça ne porte à le review de hardware nous avons passé beaucoup de années avec le jucier libre mais maintenant, nous regardons ça sa situation c'est bizarre parce que de manière non nous regardons maintenant le logiciel il y a beaucoup de modems on console c'est réel mais pas tous les modems après il regardait le vichier donc on a vu déjà une commande qui nous permet d'exécuter du code sur le device on a trouvé une autre pour reconfigurer le gadget Android USB pour activer le support de l'Android Debot Big Bridge si on exécute cette commande AT et tout soudain le série fonctionne c'est comme ça que le Qualcomm que le modulé fonctionne et si on rajoute ADB ça fait plus 4 interfaces mais 5 et on a du mal à identifier les périphériques on regarde comment ça marche ensuite on fait un patch une fois qu'on a fait tout ça un shell ADB ça fonctionne et le shell ADB est en route donc il n'y a pas besoin de router le périphérique il n'est pas verrouillé on est en route il n'y a pas de cellinux un Linux très sympathique très ouvert donc pour le compiler c'est un peu bizarre il a un bootloader qui a l'air propriétaire puis le bootloader Android les commandes de debug d'Android mais de manière surprenante il n'utilise pas le reste du système Android c'est un GNU buzybox, lipset, userland donc des images de build open and booted assez classiques et c'est développé et maintenu de manière active par Qualcomm il y a tellement de release qu'on sait pas laquelle choisir c'est un peu un zoo oui ensuite j'ai regardé le noyulinux qui est sorti et de manière intéressante et à ma surprise agréable il n'y a pas de module noyul binaire et du code sur tout le module est disponible il y a beaucoup de sources si on regarde un peu le nombre de lignes le diff entre les deux versions mainline les plus proches une de l'autre et les noyaux de ces deux versions on voit 1,5 et 1,9 millions de lignes de diff c'est pas des lignes de code c'est compter toutes les lignes mais bon il y a du contexte en plus mais ça vous donne quand même un autre d'idées sur la différence entre deux versions bien sûr on peut s'attendre à ce qu'il y ait plein de trucs spécifiques au CPU plein de codes périphériques etc etc mais si on regarde avec plus de détails bon je vous préviens je n'ai pas regardé de près pendant les 10 dernières années les périphériques Qualcomm Android enfin 8 ans enfin ça fait longtemps je sais qu'il y a beaucoup de codes là-dedans on va avoir toutes les choses toutes les choses différentes que j'ai vu ils ont leur propre structure de mémoire partagée utilisé pour du multi-processor communication inter-process ils peuvent vloguer tout ça donc l'APC c'est l'inter-processor communication inter-process communication comme de YouTube ils ont un truc aussi qui bien a eu c'est le remote spin lock un spin lock des mutex une seule thread sur un seul CPU peut exécuter un chemin critique sur votre système inter-processor Linux mais on peut aussi bloquer ici l'exagone le processus du modem l'empêcher d'entrer dans certaines sections bon qu'est ce qui pourrait mal se passer si on laisse le système temps réel attendre bon donc j'ai regardé le code source et j'ai pas vu ça depuis longtemps donc j'imaginais que ce serait comme tous ces téléphones android avec des chips comme dedans il y a pas mal de trucs open source mais bon il y a une vingtaine de personnes qui ont de l'analyser, un peu de documentation voilà comment tout faire fonctionner tout coller ensemble, comment ça marche et je voulais regarder cette doc mais de manière intéressante elle n'existait pas donc j'ai dû me mettre à l'écrire et il y a maintenant beaucoup d'informations sur les wiki et des choses intéressantes que vous pouvez trouver là-dedans c'est les périphériques de mémoire partagée qui est au coeur de l'intégration entre les deux coeurs cpu on a la communication inter-processeur on a le réseau distant on a un BAM un bus access manager on a un accélérateur de paquet internet on n'est pas qu'on fera avec la IP et la bière et aussi des trucs pour renvoyer les messages de diagnostic donc j'ai fait un graphique j'ai fait une image et pour symboliser ce qui se passe dans ce modem donc si vous regardez vous verrez le gros carré en haut le processeur applicatif et le petit truc en bas c'est le processeur du modem sur lequel on sait pas encore grand chose mais du côté Linux on peut bien voir ce qui se passe on a le périphérique de mémoire partagée on a des canaux qui sont implémentés par ce périphérique et différents sous systèmes qui sont reliés à ces canaux donc la gestion des commandes AT est faite à part du reste mais c'est quand même un port série mais c'est un port série à part quand on parle USB on parle pas au baseband dans le cœur arm de ce modem et ce cœur arm transfère ça sur différentes interfaces selon la configuration USB donc on a une petite boîte qui symbolise user space on peut voir comment les tâches sont agencées donc c'est intéressant de voir qu'on a un port série pour le GPS un autre pour les commandes AT c'est tous les deux des ports séries ils sont gérés de manière similaire mais en fait non c'est géré ici ça monte en espace utilisateur c'est bridged ça va dans un port série virtuel ici puis ça rentre dans le serial gadget alors que les commandes AT vont directement dans le kernel et ne passent pas en user space je ne sais pas pourquoi mais c'est assez sophisticated on va dire si on regarde le système diagnostic qui nous intéresse tout particulièrement et maintenant vous pouvez voir que je ne télécharge plus on a le DSP du modem à gauche ensuite on a le noyau linux avec le SMD un module de format pardon de forward auquel est connecté le gadget diagnostic du driver de gadget USB qui se connecte à l'autre donc si on parle le protocol debug ça va dans linux puis dans le memory device puis dans le DSP le device de caractère linux qui s'appelle devdiac et par exemple dans l'autre processus dans d'autres processus ils s'attachent simplement à ce périphérique et tout le logging n'utilise pas syslog n'utilise pas le framework de logging d'android mais vont taper directement dans flash devslash diag et ça rentre dans ce périphérique noyau et ça ressort ça fait le tour donc si vous arrivez à voir comment activer les flags de log vous arrivez à tout faire sortir comme ça ça ressemble à du Qualcomm Classics ça surprend pas trop mais c'est inhabituel dans le monde linux si vous regardez au niveau réseau le QMI qui contrôle le modem à quel quel réseau vous êtes connecté est-ce que vous êtes en QDP vous avez peut-être utilisé des QMAS Celae ou d'outils sur des laptops linux pour parler à des modems de ce style et là j'ai utilisé un modem Qualcomm donc basé sur linux on a le DSPG modem on a le divest à partage de mémoire qui parle à l'arm net qui parle aux USB gadgets et puis ça repart par à droite bon en plus de ça on a aussi de la QMI en espace utilisateur sur le modem lui-même ici ils ont un QMaxD un multiplexer un démonde multiplexer qui offre des sockets de domaines uniques différents programmes clients donc tous ces programmes utilisateurs en utilisant ces sockets de domaines ils peuvent parler directement modems veulent tous configurer obtenir des reports enfin lancer des choses dans le modem plein de choses c'est intéressant vu que notre motivation initiale c'est de lancer nos propres applis on va parler à ce démon voilà, c'est comme ça donc on a créé quelques outils pour nous aider dans notre analyse d'un côté on a utilisé open embedded la version de Qualcomm pour faire des OPKG des paquets, pour des outils qui nous manquaient comme Zocat, LSOF, Stras etc pour explorer davantage on a aussi écrit quelques programmes en C pour faire des tests accéder à la QMMI insérer du code dans le modem on est toujours linké à des bibliothèques propriétaires et on a d'autres programmes qui sont totalement open source un preloader un traceur de communication qui m'a accédé et on est en train de travailler sur un lib QMI jelib transport un truc qui va vous permettre de lancer un programme qui est lancé contre une bibliothèque libre qui tourne dans le modem donc on peut développer comme si c'était sur un laptop mais une fois qu'on a fait de la cross compilation ça s'exécut directement sur le modem il y a un autre truc qu'on appelle OxmoQzDiag qui est un outil sur l'autre qui nous permet de recevoir et d'afficher les messages diagnostiques du modem on lance ça sur un laptop on le branche en modem et hop on a les traces on a les traces aussi du protocole QMI et qui sont décodés par la bibliothèque donc on a la représentation textuelle de ces logs donc en gros ce qu'on va faire c'est de tout charger dans Weirshark mais bon on n'y est pas encore qu'est-ce qu'on voit comme programme quel style ? le démon ADB on sait ce que ça fait ATF forward donc forwarding de commandes AT donc ça implémente les commandes spécifiques qu'est-elle et d'autres commandes donc on peut enregistrer en étant un programme en mode utilisateur auprès du modem pour dire qu'on va traiter tel ou tel commande on peut implémenter des commandes que cette mission utilise il y a plein d'autres logiciels on sait pas entre encore ce qu'ils font il y a un monstre qui s'appelle QCMAP connection manager qui vous permet de lancer des points d'accès wifi avec un backhaul LTE donc en gros on branche un chip wifi à l'interface des niveaux du modem et là on a un point d'accès personnel complet il y a un backhaul LTE et les paramètres du wifi la clé etc on configure ça bien sûr en utilisant des commandes ATF si vous voulez regarder des logiciels qui reçoivent des commandes ATF et génèrent des chips textuels on peut regarder dans ce code moi je ne préfère pas du coup on a aussi le quack bridge qui est un device réciproque pour écrire dans un autre et apparemment c'est tellement compliqué qu'ils ont besoin de ce qu'il y a un autre processeur et il y a 3 threads pour faire ça bon ça nous amène aux trucs rigolos qu'on peut trouver dans ces modems donc qui permet de lancer des commandes Shell arbitraire en tant que route on a un système de fichiers en lecture écriture donc on peut tout faire avec ça on peut envoyer un rm-rf-slash etc on a aussi des commandes pour passer en fast-food boot une demande spécifique pour afficher le dimanche et plein d'autres commandes ATF quand on quand on lance string c'est incroyable, ça ressemble à des scripts shell des trucs les plus rigolos j'ai vu dans ce modem combien il faut de messages pour rebooter un système comment vous faites pour rebooter votre système ? c'est très compliqué la méthode la plus simple qu'ils aient pu trouver il y a un process l'application de reboot diag qui enregistre une commande qui spawn un thread qui exécut un autre exécutable qu'il lance une FIFO puis ça fait un système eco-model reset pour l'écrire dans la FIFO de l'entrée du process qui vient de de générer ce qui provoque l'envoi d'un message qu'est mis au modem qui éteint le processeur de baseband puis ensuite on étoile on enlève le fichier temporaire parce que bien sûr tmp c'est pas un tmpfs c'est un symde fichier lecture et culture on écrit la string readf en utilisant fdrat et pas echo cette fois pareil, au même endroit donc c'est un programme en C, c'est pas un script shell voilà, ils ont de couverts qui pouvaient utiliser fwrite et ensuite on a un autre processus le demo reboot qui va lire le device reboot bon on a le code source qui est disponible donc voilà on lit de ce slash dev slash rebooter c'est une jolie commande ça fait une comparaison de chaines de caractère donc on a un premier printf going for reboot, un deuxième initiating reboot et ensuite on fait un système reboot donc c'est la méthode la plus simple apparemment pour rebooter un modem donc si vous vous demandez comment vous allez redémarrer un système voilà c'est la nouvelle version de référence donc on a des programmes en C qui ressemble à des scripts shell donc donc quand on lance strings sur le demo cocktail qu'on se fitre un peu on voit des trucs de ce style des echo, des points de pergule des echo dans le duty cycle qui fait de la modulation de pulsation et bon ils tuent des processus ils font des pipes ils font des trucs très misards et ils n'utilisent pas rien de dire mais ils font un ls c'est la réponse au lieu de faire un read-dire pour avoir une liste de fichiers comme d'habitude c'est assez amusant bon ça nous amène au misage au logiciel mais en fait cet exemple manque donc il faut que je m'arrête un instant tous ces modems même termes ils ont généralement une diad et c'est son rythme qui va vous dire si c'est en train de s'enregistrer si la connexion de nez est ouverte, si ça cherche un réseau et là tout un tas de paternes de blinking et comment est-ce qu'on implemente ça sur ce modem ben on lance un démon en espace utilisateur qui fait des systèmes echo 1 dans slashdev slash gpio qui contrôle les leds et on fait ça tout le temps pour faire clignoter les leds c'est pas comme si le kernel n'a pas de l'infrastructure pour des paternes de clignotement plein de choses comme ça mais bon voilà on a un démon qui fait rien d'autre mais allumer éteindre les lignes GPIO en spawnant un processus en utilisant le système l'appel système donc je rend la parole à mon collègue donc la question c'est est-ce que vous vous attendez quelque chose après firmware upgrade ou est-ce que ça va être un slide vide et la réponse ils savent qu'il doit faire quelque chose ils savent qu'il doit faire le plus possible et donc c'est Qualcomm et c'est bien préparé donc c'est basé sur android 4.0 en utilisant j'ai déjà regardé la SCOD beaucoup d'autres doivent être beaucoup plus familiers avec c'est généralement un fichier zip avec des différences et bizarrement il y a des haches avec SHA1 et ensuite il y a une signature avec une clé privée et ensuite il y a du sel et ensuite il y a une commande pour le zip file pour le fichier zip donc c'est au moins ils sont au moins ils sont préparés pour avoir une mise à jour sécurisée mais que fait Qualcomm avec ? ils l'utilisent c'est pas mal mais ils ont enlevé non ils n'utilisent pas le code RSA ils ont enlevé les signatures et au lieu d'utiliser cette façon standard android pour patcher le système ils utilisent un component propriétaire d'une société qui s'appelait Redband maintenant ça s'appelait Harman et bientôt ça va être Samsung et ce component Redband n'est rien que Quacktale a écrit mais c'est utilisé par le UC20 de Quacktale aussi d'automobiles que nous avons vues des mises à jour à être utilisées donc on a regardé à quoi ça ressemble et donc au lieu d'avoir une forme très complexe du format j'ai ce slide donc d'autres personnes comme Mathieu Solnik à Black Hat a présenté des attaques sur le device management donc ils peuvent être déclenché à distance mais ce système de mises à jour ne peut pas être déclenché à distance le modem demande donc c'est un petit peu plus sécurisé mais j'ai regardé les termes exodissimaux avec de l'aide qui a réussi à comprendre à quoi ressemble le binaire et nous avons créé un petit outil pour prendre une mise à jour et séparer un petit morceau et créer notre propre mise à jour et donc il y a beaucoup de pointeurs et d'offsets dans l'exemple on peut voir ici l'exemple des offsets donc ça c'est un header commun mais après le header il y a le lzma le compressé une table des matières compressées de la façon que vous voulez appeler après ça vous avez l'offset dans le contenu décompressé dans la version décompressée de cette table des matières qui ensuite montre des choses et quand vous commencez à créer vos propres fichiers vous pourriez avoir les offsets qui sont pas corrects et le système crash avec vos fichiers de mise à jour malformés donc c'est très compliqué et il n'y a rien qui n'est signé cryptographiquement donc on fait une string sur le binaire on voit le mot signature mais c'est un csc32 c'est une somme de contrôle la prochaine partie c'est comment fonctionne le format nous avons notre propre fichier de mise à jour comment est-ce que ça arrive sur la machine et donc c'est implementé dans le démon AT forward qui a été mentionné où il greppe par quelques présentations par exemple WGET connection manager ou updates et on commence à comprendre comment ça fonctionne donc on envoie une commande AT avec une RL pour mettre à jour ensuite ça va désactiver la connexion IP et ça va changer le contexte dans la machine d'album et ensuite ça va relancer un WGET pour télécharger le fichier ensuite ça va être système pour le copier au bon endroit et ensuite il va relancer en utilisant la partition de recovery et ce fichier va simplement être appliqué et le modem fonctionne strictement sans aucune signature crypto donc si vous voulez prendre le contrôle vous pouvez installer n'importe quoi sur ce modem la façon dont vous voulez mais au lieu de voir simplement de commencer mal fait par rapport, on demande ce à quoi on s'attend bon on le dit c'est nul, c'est dérouillé mais non c'est pour nous parce que c'est ce qu'on veut qu'un modem fasse ce qu'on veut qu'il fasse et qu'on n'est pas à casser des mécanismes de sécurité compliqués qui sont là pour empêcher l'utilisateur le consommateur, le possesseur du device de y accéder bon ok, il y a des problèmes de sécurité qu'on doit fixer mais on a besoin de mécanismes de sécurité qui fonctionnent sans nous verrouiller la plateforme donc un message aux fabricants pour résolver ces problèmes souvenez-vous que l'ouverture de la plateforme est intéressante également pour tout un tas de cas d'usage légitime et que si vous voulez bien sûr vous protéger des attaqueurs malicieux vous voulez que les possesseurs légitimes d'un périphérique puissent l'utiliser avec toute la flexibilité nécessaire enfin, possible donc aujourd'hui nous, à quoi ça ressemble on vient d'ouvrir le wiki sur osmocob, vous aurez sur la dernière page les liens donc on a un wiki sur les quicktel, qualcomm, linmodaps avec toutes un tas d'informations de l'année en lisant des milliers et des milliers de code on a aussi libéré les outils de debug les cartes de ma hardware sont également du open hardware on intègre on est en train d'intégrer la lib QMGlib comme on vous l'a dit donc tout ce qui utilise jelib toute cette infrastructure et des choses un peu plus bas niveau bon on veut améliorer la documentation et on vous avoute tout ce qui nous serait intéressé à comprendre ces plateformes d'avantage vous n'avez pas nécessairement besoin de faire de l'ingénierie inverse mais allez juste lire le source comprenez ce qu'il fait et jouez avec le périphérique on pense mettre des flux de mise à jour de distribution pour open embedded pour que ce soit facile pour que tout le monde installe des paquets sur ces périphériques il y a entre 20 et 30 méga de flash disponibles donc on peut mettre plein de paquets là-dedans et notre but c'est d'avoir un userland rien quand l'officiel libre là-dessus donc se débarrasser de tous ces procès propriétaires et et voilà avoir un noyau open source et cette lib QMG pour l'intégration et 2-3 petits trucs nécessaires pour que notre propre code userland linux voilà et nous ouvrir donc à tout un tas de cas de visage varié donc avant de passer aux questions et réponses dans une minute il y a une annonce sans aucun rapport qu'on voudrait vous présenter donc le projet osmocom l'année dernière a fait un truc en 3G.5 mais c'est un projet qui ne connaît pas le succès des contributeurs et on aimerait donc qui en est davantage de contributeurs et du coup on va donner des femtoselles aux gens qui peuvent nous convaincre qui vont contribuer quelque chose de raisonnable à notre projet si on le fait du coup ces femtoselles sont déjà ici vers osmocom donc en utilisant le code osmocom elles sont déjà supportées donc on peut faire du 3G.5 des trucs comme ça libre donc s'il vous plaît dès la fin janvier envoyez nous une proposition et avec un peu de chance vous recevrez votre femtoselle gratuite à la fin du mois de février donc la 3G.5 qui va avoir une projesse donc les questions nous avons encore 8 microphones 1, 2, 3, 4, 5, 6, 7, 8 je peux faire des mains donc aller au micro nous avons une question d'internet internet peut savoir s'il va y avoir le prochain openmoco non pas de nous on est pas en train de travailler sur un téléphone mobile on regarde au modem on regarde les modems pas les téléphones mobiles microphone 2 donc pour vérifier est-ce que ça signifie que Linux tourne sur le iPhone 5 on sait pas on aimerait bien savoir si vous arrivez à trouver mais je crois vous pouvez aussi faire tourner autre chose sur ce processus Cortex mais on sait vraiment pas si l'internet veut savoir pourquoi il n'y a pas de mini PC express vers M2USB à propos de LTS parce que voilà les débats les débis du LTE et su de l'USB ça n'a pas fait tout je fabrique pas je vends pas de l'appelateur on a fait des édits de l'opinatoire parce qu'on avait besoin d'un truc particulier il faudrait demander au fabricant du matériel pour ça excusez s'il vous plaît quitter la salle en silence microphone 2 est-ce qu'on peut appuyer le C20 avec la breadboard et autre quelque part alors vous pouvez nous appeler mais c'est pas quelque chose que nous sommes pas préparés mais c'est une option on n'est pas ici pour vous vendre quelque chose on est ici pour vous expliquer des trucs sur les modems le shell de l'opinatoire vous avez besoin du série on peut reflâcher en USB même si c'est briquet et on a toujours le shell roll ça marche très bien avec ces commandes ATEQ Line on peut commencer à se loguer sur la console NMEA si l'ADB fonctionne pas on peut le débloquer aussi voilà des briquets et un device alors est-ce que vous avez essayé d'avoir le code source d'autres fabricants maintenant depuis 3 différents fabricants qui utilisent MDM9660 et Linux cette combinaison de Quacktail on a décrit comment ça s'est passé Syira a publié tout ça par le même son que leur demande il n'y a pas besoin de leur demander on peut télécharger, essayer de documenter et le troisième c'est un vieux Huawei un module en end of life on a demandé mais c'est toujours en cours c'est une manière intéressante quand c'est un fournisseur chinois ils nous disent oh mais noël arrive si genre de monde en janvier ils vont nous sortir quel le nouvel en chinois mais bon on verra micro 4 vous avez parlé du Qualcomm dans l'inphone 5 est-ce que ça veut dire est-ce qu'il y a des chances que l'application iPhone qu'il parle avec ce Cipset Qualcomm est-ce qu'il est state of the art non c'est pas state of the art et je pense pas que ça va se passer même sur ces modules modèles les commandes AT c'est juste pour la legacy normalement on devra aller sur USB et le modem manager devrait parler en QMI avec le modem j'ai retourné un signal agile la question c'est la taille sur root FS de leur côté et combien il y a de RAM là dessus je sais pas je me souviens plus de la taille de la flash mais 32 méga de RAM dessus oui 32 méga de RAM sur le successeur il y a 128 méga de RAM mais la taille de la flash je me souviens pas non plus regardez sur le wiki on a mis des logs et tout un tas de sorties des messes etc vous avez dit que vous avez essayé de vérifier les gâteaux linux mais ce serait pas plus simple de retrouver votre propre canal et vos applications oui ce serait possible mais si vous faites ça il y a beaucoup de choses que vous achetez beaucoup de choses avec votre argent que vous n'utilisez pas à la fin et vous supportez un vendeur un système propriétaire donc oui c'est possible mais est-ce qu'il faut utiliser un framework ? non vous n'avez pas besoin d'utiliser le framework mais il développe ça et une partie de ce que vous achetez c'est ce framework c'est pour ça que c'est plus cher donc voilà le micro 2 est-ce que vous avez des figures consommer d'os sur la consommation électrique non je pense qu'elle sera assez haute et qu'il y a un commentaire sur la consommation électrique oui donc il y a des interruptions qui réveillent le device assez régulièrement donc c'est pas très efficace au niveau énergétique c'est très emmerdant de voir des procès qui tournent tout le temps pour pas grand chose c'est et quand on fait un eco même vers 6FS c'est ça leur power management donc on envoie un mandaté qui envoie un eco dans slash dev slash sweep donc ça peut être amélioré avec du logiciel libre c'est pas très bien long signal est-ce que la baseband est très accessible au niveau de la mémoire et autre on n'a pas vraiment regardé dans en détail mais j'ai pas vu non plus de vérification des signatures je pense que c'est aussi complètement ouvert donc le DSP firmware c'est dans 3 partitions séparées et il n'y a pas de signature RSA et la fin de cette partition a priori on peut les modifier si ils ont vérifié quelque chose c'est pauc mais on n'a pas vérifié ils n'ont pas vérifié les modules réellement disponibles dans le package LGA sont déjà disponibles les cartes de doubleband IPCA et express on peut les utiliser ça devrait être de nouveau disponible en principe je crois qu'on a eu des soucis mais ça devrait être disponible de nouveau et ça coûte dans les combien je crois 460 euros à peu près 450 en fait par là autour donc une dernière question de l'internet alors ils veulent savoir si vous pouvez capturer des networks avec ça oui on peut je crois que c'est la fin de notre session de questions et réponses vous veuillez me rejoindre je vous en prie pour un tonnerre un moment pour nos deux autres sur ce fantastique présentation sur les choses que je ne voulais vraiment pas savoir sur les madames 3G