En tant qu’ingénieur en cybersécurité chez SERMA Safety & Security, je suis ravi de partager mon expertise sur le dispositif innovant Flipper Zero et ses applications potentielles dans l’industrie automobile.
Ces dernières années, des dispositifs portables comme le Flipper Zero sont devenus de plus en plus populaires parmi les professionnels de la sécurité et les passionnés de technologie. Véritable couteau suisse, cet outil peut gérer un large éventail de protocoles, notamment NFC, RFID, infrarouge, Bluetooth et les communications RF à des fréquences inférieures à 1 GHz.
Pourquoi le Flipper Zero est-il si populaire ?
Outre sa portabilité et son format compact, plusieurs facteurs expliquent la popularité du Flipper Zero :
L’idée unique des développeurs d’introduire une expérience utilisateur ludifiée distingue le Flipper Zero. Il dispose d’un bouton de navigation intuitif et d’un petit écran LCD, ce qui le rend accessible aux utilisateurs de tous niveaux. Un deuxième aspect passionnant du Flipper Zero réside dans sa nature open source et son développement collaboratif. Les utilisateurs avancés peuvent contribuer au firmware de l’appareil, développer de nouvelles fonctionnalités et offrir un soutien complet à la communauté.
Integration du Flipper Zero avec le bus CAN
Malgré son large éventail de protocoles pris en charge, le Flipper Zero présente certaines limitations, notamment son incapacité à gérer certains protocoles couramment utilisés dans les systèmes embarqués. L’un de ces protocoles est le CAN (Controller Area Network), développé par Bosch et utilisé aujourd’hui par des millions, voire des milliards de voitures.
Le protocole CAN Bus permet à différentes unités de contrôle électronique (ECU) d’un véhicule de communiquer entre elles, leur permettant ainsi de partager des données et d’exécuter des tâches critiques. Cela est essentiel pour le fonctionnement des véhicules, garantissant que des systèmes tels que les freins, l’accélération et la direction sont correctement contrôlés. »
Il s’agit d’un protocole de communication asynchrone en semi-duplex qui permet aux nœuds du réseau de transmettre et de recevoir des données. Voici un aperçu simplifié de son fonctionnement :
- Nœuds : Chaque nœud sur le bus CAN est connecté au bus via un transceiver, qui convertit les signaux numériques du nœud en signaux différentiels pour la transmission. »
Structure du message : Un message transmis sur le bus CAN se compose de :
- Identifiant (ID) : un identifiant unique qui spécifie la priorité et la destination du message
- Données : les données effectivement transmises
Transmission : Lorsqu’un nœud souhaite transmettre un message, il envoie d’abord son identifiant (ID) sur le bus. Si aucun autre nœud ne possède un ID avec une priorité plus élevée, le nœud émetteur peut alors envoyer ses données.
Réception : Les nœuds sur le bus CAN surveillent en permanence les messages circulant sur le bus. Lorsqu’un nœud détecte un ID correspondant à son filtre (basé sur la priorité et la destination), il reçoit le message et vérifie les données pour détecter d’éventuelles erreurs.
Gestion des erreurs : Si un nœud détecte une erreur dans un message reçu, il avertit les autres nœuds du bus pour empêcher la transmission de données erronées.
Arbitrage du bus : Lorsque plusieurs nœuds souhaitent transmettre simultanément, un schéma de priorité (déterministe ou non déterministe) est utilisé pour résoudre les conflits et garantir qu’un seul nœud transmet à la fois.
À un niveau plus approfondi, ce mécanisme d’arbitrage est attribué à la couche physique du CAN (Controller Area Network).
Par défaut, chaque nœud sur le bus suppose un état récessif, qui représente un ‘1’ logique.
Lors de la transmission, l’état récessif est remplacé par un bit dominant, qui représente un ‘0’ logique.
Ce mécanisme ingénieux garantit que les nœuds avec l’ID le plus bas ont toujours la priorité.
Selon la convention, lorsqu’un nœud transmet un ‘1’ logique, il surveille en continu le niveau du bus pour détecter un éventuel état dominant. Si un état dominant est détecté, le nœud transmetteur cesse la transmission, évitant ainsi les collisions et assurant une communication fiable sur le bus CAN.
Différences entre CAN HS et CAN FD :
La principale différence entre le CAN classique (CAN HS) et le CAN flexible (CAN FD) réside dans le débit et la flexibilité qu’ils offrent.
- Le CAN classique a un débit maximal fixe de 1 Mbit/s, tandis que le CAN FD offre un débit flexible pouvant atteindre 8 Mbit/s, selon le transceiver et la configuration du bus.
- De plus, le CAN FD permet une transmission plus efficace de charges utiles plus importantes grâce à un nouveau format de trame et un mécanisme de détection d’erreurs amélioré.
La principale différence entre le CAN classique (CAN HS) et le CAN flexible (CAN FD) réside dans le débit de données et la flexibilité qu’ils offrent.
Le CAN classique a un débit maximal fixe de 1 Mbit/s, tandis que le CAN FD offre un débit flexible pouvant atteindre 8 Mbit/s, en fonction du transceiver et de la configuration du bus.
De plus, le CAN FD permet une transmission plus efficace de charges utiles plus grandes en utilisant un nouveau format de trame et un mécanisme de détection d’erreurs amélioré.
Integration flipper Zero avec Can Bus
Pour intégrer le Flipper Zero au protocole CAN Bus, un adaptateur CAN Bus est nécessaire. Cet adaptateur connecte le Flipper Zero au réseau CAN Bus du véhicule, lui permettant de lire les données provenant de divers capteurs et unités de contrôle électronique (ECU). SERMA Safety & Security a développé un tel adaptateur, utilisant les connecteurs GPIO du Flipper Zero pour y brancher une carte d’extension.
En utilisant un Microchip MCP2518FD, l’adaptateur permet au Flipper Zero d’envoyer des signaux CAN HS (CAN 2.0B) et CAN FD en toute sécurité, grâce à l’isolation galvanique fournie par le transceiver NXP TJA1051i. La carte comprend également une LED bicolore pour surveiller l’activité du bus CAN et une résistance de terminaison de 120 Ohms intégrée, qui peut être activée ou désactivée. De plus, un connecteur CAN sans vis Phoenix Contact permet des connexions rapides et faciles au bus.
Comment ça fonctionne ?
Pour simplifier les choses, nous avons développé une version initiale d’une application qui permet à votre Flipper Zero de se comporter comme un adaptateur USB-CAN.
Plus précisément, nous avons porté un pilote SLCAN dans le Flipper Zero, ce qui lui permet de fonctionner avec des outils préexistants tels que can-utils. Cependant, vous aurez besoin d’un ordinateur portable ou d’un système embarqué similaire pour envoyer et recevoir des messages CAN, car actuellement, seules les couches OSI 1, 2 et 3 sont prises en charge par notre solution.
Pour un fonctionnement correct du véhicule, les couches OSI supérieures telles que Transport (CAN_ISO-TP), Présentation et Application doivent être gérées de manière externe.
Chez SERMA Safety & Security, nous proposons une large gamme de scripts Python prêts à l’emploi qui permettent l’interaction avec les ECU en utilisant différents protocoles de communication CAN, notamment le UDS (Unified Diagnostic Services). UDS permet des diagnostics, des mises à jour de firmware, des tests de routine, et bien plus dans les ECU automobiles. Dans les voitures, UDS est utilisé à diverses fins, telles que :
- Lire et effacer les codes de défaut de diagnostic (DTC) pour résoudre les problèmes du véhicule.
- Extraire les valeurs des paramètres comme les températures, l’état de charge, le VIN, etc.
- Initier des sessions de diagnostic pour tester des fonctionnalités critiques pour la sécurité.
- Modifier le comportement de l’ECU via des réinitialisations, des mises à jour de firmware et des modifications de paramètres.
Nous verrons dans un prochain article de blog comment nous pouvons utiliser le Flipper Zero à cette fin.