Un ami est passé récemment, il a vu le Flipper Zero sur mon bureau. La discussion a dérivé sur les télécommandes, et il m’a lancé, mi-sérieux : « De toute façon ma porte de garage, n’importe qui peut l’ouvrir avec un truc comme ça. » Pari tenu. Avec son accord explicite et sur son propre matériel, on a passé un moment à répondre à la question. Le résultat m’a surpris, et surtout il illustre bien la différence entre ce qu’on croit d’un gadget et ce qu’il fait réellement.

L’essentiel en 30 secondes. Le Flipper Zero lit et rejoue trivialement les télécommandes à code fixe (anciens portails, aucun chiffrement). Face à un rolling code (KeeLoq et cousins), un simple rejeu échoue : chaque appui génère un code différent. La porte de mon ami est en KeeLoq — donc pas vulnérable au rejeu. Le Flipper reste un excellent outil d’apprentissage, mais il n’ouvre pas magiquement tout ce qui émet en 433 ou 868 MHz.

Ce que le Flipper sait faire — et ne sait pas faire — en radio

Le Flipper embarque une puce radio CC1101 qui couvre les bandes Sub-GHz les plus courantes : ~300–348, ~387–464 et ~779–928 MHz. En France, les télécommandes de portail modernes vivent presque toutes sur 433,92 MHz ou 868 MHz — pile dans sa portée.

Premier piège, et il est structurel : les motorisations installées avant 2008 utilisaient souvent d’autres bandes (26,995 MHz, 30,875 MHz, 40,685 MHz…). L’ARCEP a interdit ces fréquences pour l’usage domestique de faible portée à compter du 1ᵉʳ janvier 2008, et surtout elles sont hors de portée du CC1101 : le Flipper ne descend pas sous ~300 MHz. Donc si vous testez une très vieille installation et que le Flipper reste muet, ce n’est pas un réglage — il est tout simplement sourd sur ces bandes. Il faudrait un RTL-SDR pour aller y écouter.

Le Flipper Zero

La bonne méthode : Frequency Analyzer d’abord, Read ensuite

Mon premier réflexe a été le mauvais : ouvrir Sub-GHz → Read et appuyer sur la télécommande. Rien. Normal : Read n’écoute qu’une seule fréquence à la fois (433,92 MHz par défaut). Si la télécommande émet ailleurs, on n’entend rien du tout.

Le bon outil de diagnostic, c’est le Frequency Analyzer :

  1. Sub-GHz → Frequency Analyzer, télécommande collée au Flipper, on maintient le bouton appuyé.
  2. Il affiche la fréquence réelle détectée. Attention : il n’est fiable que pendant l’appui ; entre deux pressions, il affiche le bruit ambiant (valeurs au hasard).

subghz

scan

Sur la porte de mon ami, l’analyzer s’est calé autour de 868,xxx MHz — pas le 868,35 « théorique » que j’avais en tête. Leçon : on se fie à la mesure, pas au tableau.

Une fois la fréquence connue, retour dans Read → Config, et là un deuxième piège m’attendait : la modulation. Par défaut, Read est en AM650 (OOK). Or beaucoup de télécommandes 868 émettent en FM (2-FSK). Tant que j’étais en AM, ça captait du signal (le petit logo de réception s’allumait) mais ne décodait aucun protocole. Basculé en FM, tout est rentré dans l’ordre.

Détail qui agace : le firmware officiel réinitialise Read à 433,92 / AM650 à chaque entrée dans le menu. Il ne mémorise pas la dernière fréquence. C’est l’une des raisons pour lesquelles j’ai fini par passer sur un firmware communautaire (voir plus bas).

Lire le verdict dans le fichier .sub

Chaque capture sauvegardée atterrit dans subghz/ sur la carte SD, sous forme d’un fichier .sub — et c’est du texte lisible. C’est là que se trouve le vrai livrable d’audit. Voici l’en-tête de la capture de la porte, clé réelle caviardée :

Filetype: Flipper SubGhz Key File
Frequency: 868xxxxxx
Preset: FurixxxxxxxxxxxxxxxxxAsync
Protocol: KeeLoq
Bit: 64
Key: XX XX XX XX XX XX XX XX
Manufacture: xxxxxx

Trois lignes tranchent la question :

  • Frequency: 868xxxxxxx868,xxx MHz, cohérent avec l’analyzer.
  • Preset: …xxxxxxxxxxxsyncFM, ce qui explique l’échec du décodage en AM.
  • Protocol: KeeLoqrolling code. Motorisation Manufacture: xxxxxx.

Code fixe vs rolling code : pourquoi ça change tout

C’est le cœur du sujet. Deux mondes cohabitent sur ces bandes.

Le code fixe (vieux encodeurs type PT2262, et une partie du parc CAME / Nice / Cardin d’avant ~2010) n’a aucun chiffrement : la télécommande envoie toujours la même trame. Le Flipper fait Read → Save → Send, et la porte se rouvre. Lecture = clonage. Sur ces systèmes, le pari de mon ami aurait été gagné les yeux fermés.

Le rolling code (KeeLoq, Somfy, Nice FloR-S, Hörmann BiSecur, Chamberlain Security+…) intègre un compteur chiffré : chaque appui produit une trame différente, et le récepteur refuse tout code déjà vu ou antérieur à son compteur. Un rejeu brut ne rouvre rien.

Rejeu d’un code capté : pourquoi il fonctionne sur du code fixe et échoue sur du rolling code

La porte de mon ami étant en KeeLoq, verdict : non vulnérable au rejeu simple. Son pari est perdu — et c’est plutôt rassurant pour lui.

« Mais KeeLoq, c’est cassé, non ? »

Oui et non, et c’est là qu’il faut être honnête plutôt que sensationnaliste.

KeeLoq a effectivement des faiblesses cryptographiques documentées de longue date. Des travaux académiques de 2007–2008 ont montré des attaques par slide/meet-in-the-middle permettant de récupérer la clé (Indesteege et al., EUROCRYPT 2008), et surtout des attaques par canal auxiliaire capables d’extraire la clé constructeur d’un récepteur puis de cloner une télécommande à distance en interceptant deux messages (Eisenbarth, Kasper, Moradi, Paar et al., 2008). Plus récemment, des attaques de rejeu « intemporelles » comme RollBack (Csikor et al., 2024) et le classique RollJam (Kamkar, 2015) — capturer en brouillant pour désynchroniser — remettent en cause la robustesse pratique des rolling codes.

Mais — et c’est le point important — rien de tout cela n’est du « push-button » sur un Flipper. L’extraction de clé constructeur suppose de l’analyse de consommation sur le récepteur ; RollJam/RollBack reposent sur du brouillage, qui est illégal (voir plus bas) et n’est de toute façon pas une fonction que je vais détailler ici. Pour un rapport d’audit posé sur du concret, la porte se classe donc : contrôle d’accès correctement configuré (rolling code, non rejouable), avec en risque résiduel les attaques KeeLoq avancées qui sortent du périmètre d’un simple gadget.

Le cadre légal, parce qu’il n’est pas optionnel

C’est la partie que je considère comme non négociable dès qu’on sort de son propre matériel.

Les bandes 433 MHz et 868 MHz sont des bandes libres (ISM/SRD) : utilisables sans licence, mais sous conditions — puissance et rapport cyclique plafonnés (typiquement 25 mW PAR sur 868 MHz, 10 mW et 10 % de rapport cyclique sur 433 MHz), conformément à la norme EN 300 220 et au règlement européen RED 2014/53/UE. Écouter (Read, Frequency Analyzer) est passif et ne pose pas de problème.

En revanche :

  • Rejouer un code pour ouvrir une porte n’est acceptable que sur votre propre installation, ou avec l’autorisation écrite et explicite du propriétaire. C’est exactement ce qui distingue le test white-hat du reste : le périmètre et le consentement, pas l’intention.
  • Le brouillage (indispensable aux attaques type RollJam) est interdit en France ; les dispositifs SRD n’ont eux-mêmes aucune garantie de protection contre les interférences et ne doivent pas brouiller les autres usages.
  • Le firmware officiel bride volontairement l’émission sur certaines fréquences selon la région. Un firmware communautaire lève ce bridage, mais vous en devenez alors responsable au regard de la réglementation ARCEP.

Dans mon cas : matériel de mon ami, présent à côté de moi, d’accord pour le test. Rien rejoué sur autre chose que sa porte. Point.

Pourquoi j’ai basculé sur Unleashed

Deux details irritants du firmware d’origine ont eu raison de moi : la réinitialisation systématique de la fréquence dans Read, et l’absence de favoris. Le firmware communautaire Unleashed règle les deux (mémorisation de la dernière fréquence/modulation, favoris persistants), et ajoute des protocoles Sub-GHz, un dictionnaire de clés MIFARE bien plus fourni côté RFID, et le support des modules externes.

La bascule se fait proprement depuis qFlipper :

  1. Sauvegarder la carte SD (copie intégrale sur le PC — captures, dumps, réglages).
  2. Sauvegarder le stockage interne via qFlipper (Backup : clés device, appairage BT).
  3. Récupérer le .tgz de la dernière release sur le dépôt officiel DarkFlippers/unleashed-firmware (le fichier flipper-z-f7-update-…tgz, variante standard — pas le SDK, pas les sources).
  4. qFlipper → Install from file → sélectionner le .tgz. La SD est conservée.

Rappel utile : un firmware custom n’ajoute aucune radio. Il débride le logiciel, pas le silicium. La porte de garage sur une vieille bande 27/40 MHz restera inaccessible, custom ou pas.

Ce que je retiens

  • Le Flipper est un formidable outil pédagogique pour comprendre le Sub-GHz, mais il n’est pas la baguette magique des vidéos putaclic.
  • La méthode qui marche : Frequency Analyzer pour trouver la fréquence, Read avec la bonne modulation (tester AM et FM), puis lecture du .sub pour le protocole.
  • Code fixe → rejouable → vulnérable. Rolling code → rejeu inopérant → correct. C’est le verdict d’audit en une ligne.
  • Sur les portes de garage, c’est sur les installations anciennes (souvent 433 MHz AM, code fixe) qu’on tombe sur du rejouable. Les motorisations récentes en KeeLoq/AES tiennent la route face à un simple Flipper.
  • Et surtout : consentement + périmètre écrits. Sans ça, on n’est plus dans le white-hat.

Prochaine étape de mon côté : passer du Sub-GHz au RFID/NFC, là où le Flipper est réellement redoutable sur les badges d’accès mal configurés. Ce sera l’objet d’un autre article.


Sources et références

  • Flipper Zero — documentation Sub-GHz officielle : docs.flipper.net
  • Firmware Unleashed (dépôt officiel) : github.com/DarkFlippers/unleashed-firmware
  • ARCEP / ANFR — bandes libres 433 MHz et 868 MHz (ISM/SRD, conditions d’utilisation, norme EN 300 220) : décision ARCEP n° 02-939 (arcep.fr) ; Tableau national de répartition des bandes de fréquences, Annexe A7 (anfr.fr) ; interdiction des anciennes bandes domestiques (26,995 / 30,875 / 40,685 MHz) à compter du 1ᵉʳ janvier 2008.
  • ARCEP — brouilleurs radio (rappel du cadre légal, art. L.33-3 et L.42 s. du CPCE) : arcep.fr
  • S. Indesteege, N. Keller, O. Dunkelman, E. Biham — « A Practical Attack on KeeLoq », EUROCRYPT 2008 : iacr.org
  • T. Eisenbarth, T. Kasper, A. Moradi, C. Paar et al. — « Physical Cryptanalysis of KeeLoq Code Hopping Applications », IACR ePrint 2008/058 : eprint.iacr.org/2008/058
  • L. Csikor et al. — « RollBack: A New Time-Agnostic Replay Attack Against Automotive Remote Keyless Entry », ACM TCPS, 2024.
  • RED 2014/53/UE — directive européenne sur les équipements radioélectriques.