2 points par GN⁺ 2024-08-20 | 1 commentaires | Partager sur WhatsApp
  • FindMy Flipper est une app qui étend les fonctions Bluetooth du FlipperZero pour le faire agir comme un Apple AirTag, un Samsung SmartTag ou un Tile Tracker
  • Elle diffuse un signal de SmartTag via la balise BLE du FlipperZero, et peut cloner des tags existants ou générer des paires de clés OpenHaystack pour s’intégrer au réseau Apple Find My
  • La méthode de clonage d’un tag existant permet de récupérer l’adresse MAC et le payload d’un AirTag, d’un Samsung SmartTag ou d’un Tile Tracker afin de le suivre avec l’app native, mais sur un AirTag, si l’on remet la batterie, la clé peut tourner et rendre invalide la clé actuellement utilisée par le Flipper
  • La méthode de génération de clés AirTag fonctionne sans véritable AirTag ni appareil Apple, mais nécessite Docker Desktop, Python et Git, et utilise un ordinateur ainsi qu’une authentification Apple ID pour recevoir les données de localisation
  • L’app prend en charge l’exécution en arrière-plan ainsi que le réglage de l’intervalle de balise et de la puissance d’émission ; les utilisateurs doivent respecter les lois sur la vie privée liées aux dispositifs de suivi ainsi que la propriété des appareils d’origine

Une app pour utiliser le FlipperZero comme tag de suivi

  • FindMy Flipper est une app qui permet au FlipperZero d’émuler un Apple AirTag, un Samsung SmartTag ou un Tile Tracker
  • Elle utilise la balise BLE du FlipperZero pour diffuser un signal de SmartTag détectable par le réseau Find My
  • Les objectifs fonctionnels sont les suivants
    • Cloner un Apple AirTag, un Samsung SmartTag ou un Tile Tracker existant vers un FlipperZero
    • Générer une paire de clés OpenHaystack pour le réseau Find My sans véritable AirTag
    • Suivre en continu la position du FlipperZero

Fonctionnalités principales

  • Émulation de tag

    • Possibilité de cloner l’adresse MAC et le payload d’un tag existant
    • Possibilité de générer une paire de clés pour le réseau Find My sans posséder de véritable AirTag
  • Réglages utilisateur

    • Possibilité d’ajuster l’intervalle de diffusion de la balise
    • Possibilité de modifier la puissance d’émission afin d’arbitrer entre visibilité et autonomie
  • Fonctionnement en arrière-plan

    • L’app est optimisée pour s’exécuter en arrière-plan
    • Elle est conçue pour maintenir le suivi avec une faible consommation de batterie sans interrompre l’utilisation normale du FlipperZero

Modes d’installation

  • L’installation est possible de deux manières
    • Utiliser une release/un firmware FAP précompilé adapté à l’appareil
    • Compiler soi-même le firmware avec fbt/ufbt
  • Actuellement, tous les firmwares devraient fonctionner depuis la branche main, icône comprise

Méthodes d’obtention des données SmartTag

  • Il existe deux façons d’obtenir les données d’émulation de tag
    • Option A : cloner un tag existant

      • Option B : générer des clés AirTag
  • Option A : cloner un tag existant

    • Le clonage d’un tag existant est la méthode privilégiée et permet le suivi sans configuration supplémentaire
    • Les tags Apple, Samsung et Tile peuvent être utilisés en clonant l’adresse MAC et le payload du tag physique
    • Cette méthode permet le suivi via les apps natives comme Apple Find My, Samsung SmartThing ou Tile App
    • La procédure de base est la suivante
    • Appairer d’abord l’AirTag, le Samsung SmartTag ou le Tile Tracker avec l’appareil
    • Éloigner le tag de l’appareil enregistré pendant environ 15 minutes afin qu’il passe en mode Perdu
    • Utiliser nrfConnect sur Android ou un ESP32
    • Pour nrfConnect, l’utilisation de la version Android est indiquée, car la version Apple n’affiche pas les données brutes nécessaires
    • Avec un ESP32-WROOM ou un ESP32-S3, il est possible d’obtenir les données nécessaires sans Android
    • L’outil associé ESP32-AirTag-Scanner peut être utilisé
    • La procédure de scan consiste à exclure dans le filtre les éléments qui ne correspondent pas à la marque du tag, à régler le RSSI à -40 dBm, puis à attendre que le SmartTag apparaisse comme appareil « FindMy »
    • Il faut retirer la batterie du tag immédiatement après avoir capturé le payload et l’adresse MAC
    • Si l’on remet la batterie dans l’AirTag, les clés peuvent tourner avec les serveurs Apple
    • Si les clés tournent, la clé actuellement utilisée par le Flipper devient invalide
    • Pour continuer à l’utiliser sur le Flipper, il faut garder l’AirTag éteint ou retirer sa batterie
    • L’AirTag et le Flipper ne peuvent pas être utilisés simultanément ; si nécessaire, il est possible de répéter le processus pour restaurer la fonctionnalité sur le Flipper
    • Le payload et la MAC Address capturés sont saisis dans l’app FlipperZero
  • Option B : générer des clés AirTag

    • La génération de clés AirTag est une méthode permettant d’émuler un AirTag sans appareil Apple ni AirTag
    • Cette méthode fonctionne par génération de clés, et un ordinateur est nécessaire pour télécharger les données de localisation
    • Les composants nécessaires sont les suivants
    • Docker Desktop
    • Python
    • Git
    • Après avoir cloné le dépôt, travailler dans le dossier AirTagGeneration
    git clone https://github.com/MatthewKuKanich/FindMyFlipper.git
    cd AirTagGeneration
    
    • Après avoir lancé Docker Desktop, configurer le serveur avec la commande suivante
    docker run -d --restart always --name anisette-v3 -p 6969:6969 dadoum/anisette-v3-server:latest
    
    • Ce serveur émule un environnement qui trompe les serveurs d’authentification d’Apple
    • Créer et activer un environnement virtuel Python, puis installer les dépendances
    python3 -m venv venv
    pip3 install -r requirements.txt
    
    • generate_keys.py génère les clés nécessaires à l’AirTag et les enregistre dans un nouveau dossier keys
    • Les fichiers .keys générés peuvent être transférés vers le FlipperZero et importés dans l’app
    • Sélectionner « register tag » dans le menu config de l’app
    • Choisir le type de tag
    • Importer un fichier .keys ou .txt, ou saisir les données manuellement
    • En cas de saisie manuelle, entrer successivement la MAC et le payload
    • Appuyer sur Enregistrer pour l’enregistrer
    • request_reports.py demande des données de localisation en temps réel via une authentification avec Apple ID et mot de passe
    • Les identifiants Apple sont enregistrés dans un fichier auth afin de ne pas avoir à les ressaisir par la suite
    • RequestReport&Map.py affiche les données de localisation des dernières 24 heures sur une carte interactive
    • Demande les rapports de localisation à l’aide des clés publicitaires hachées du dossier keys
    • Déchiffre les données avec la clé privée du même fichier .keys
    • Affiche les données déchiffrées dans le terminal
    • Affiche les coordonnées sur la carte et relie le trajet
    • Affiche les métadonnées de localisation et enregistre le résultat dans un fichier HTML nommé d’après la date du rapport

Configuration et réglages de l’app FlipperZero

  • Après avoir lancé l’app, il est possible d’utiliser Import Tag From File ou Register Tag Manually dans le menu config
  • Les fichiers .keys peuvent être placés sur la carte SD du FlipperZero dans le dossier apps_data->findmy ou AppsData/FindMyFlipper avant d’être importés
  • Les fichiers .txt enregistrés avec nrfConnect peuvent aussi être placés dans le même dossier pour être importés
  • Les éléments réglables sont les suivants
    • Beacon Interval : règle la fréquence à laquelle le FlipperZero diffuse sa présence
    • Transmit Power : règle la puissance du signal afin d’équilibrer portée de suivi et autonomie de la batterie

Compatibilité, alternatives et responsabilité

  • Les cibles compatibles sont les suivantes
    • Appareils Apple pour le suivi d’AirTag via le réseau Find My
    • Appareils et navigateurs web prenant en charge le suivi Samsung SmartTag
    • Tile Tracker via Tile App
  • Le suivi avec OpenHaystack nécessite macOS antérieur à 14
    • Sur macOS 14 et versions ultérieures, il existe un problème de compatibilité avec le plug-in Mail
  • macless-haystack est présenté comme alternative
    • Même avec cette méthode, il faut uniquement utiliser generate_keys.py dans le dossier AirTagGeneration
    • Le script de génération de clés de ce dépôt utilise un format de fichier de clés différent, tandis que les fichiers côté FindMy Flipper contiennent les données nécessaires à une importation correcte dans le FlipperZero
  • Cette app est destinée à un usage personnel et éducatif
  • Les utilisateurs doivent respecter les lois sur la vie privée et réglementations locales relatives aux dispositifs de suivi
  • Le clonage et l’émulation de tags de suivi doivent être utilisés de manière responsable, dans le respect de la propriété des appareils d’origine
  • Ce projet n’est pas affilié à Apple Inc. ni à Samsung

1 commentaires

 
GN⁺ 2024-08-20
Commentaires Hacker News
  • Projet intéressant, mais l’une des dépendances sous-jacentes utilisées ici ne semble pas sûre par défaut :
    https://github.com/biemster/FindMy/blob/113ebf4017729b92a381...
    Cela ressemble à une bibliothèque d’authentification pour iCloud, et il semble qu’ils aient codé en dur un agent d’appareil MacBook pour associer la clé générée à un appareil
    Comme pour tout service centralisé, je ne l’utiliserais pas avec un compte auquel sont rattachés beaucoup de services ou d’actifs numériques. Je ne serais pas surpris qu’Apple bloque les comptes utilisés de cette manière
    Il y a un code adsid unique nécessaire à la connexion, donc cela ne devrait pas être très difficile à repérer

    • Si « il semble qu’ils aient codé en dur un agent d’appareil MacBook pour associer la clé générée à un appareil », cela veut-il dire que, techniquement, il n’est pas nécessaire d’avoir un appareil iOS pour enregistrer un AirTag, et que n’importe quel appareil Apple suffit ?
      Je ne comprends pas pourquoi Apple ne le prend pas officiellement en charge. Je me demande si c’est pour pousser les ventes d’appareils iOS
      J’ai pour environ 5 000 dollars de matériel Apple desktop/mobile, et pourtant j’ai dû acheter un iPhone d’occasion en plus juste pour enregistrer quelques AirTags, donc ça m’énerve
    • Rien de grave, c’est localhost :
      https://github.com/biemster/FindMy/blob/113ebf4017729b92a381...
    • Une bibliothèque d’authentification pour iCloud est intrinsèquement dangereuse pour l’utilisateur, et évidemment pas pour Apple, Inc. À mon avis, ce projet devrait être forké en deux produits séparés, même si c’est affreux
      En toute conscience, je n’intégrerais jamais de bibliothèque tierce. Aujourd’hui encore, je passe toutes les versions de VenToy dans un scanner antivirus, en attendant le moment où une vulnérabilité de type NZ apparaîtra réellement
      Ce n’est pas tant à cause du flux de paiement d’Apple que du modèle d’abonnement. Si vous proposez gratuitement une fonctionnalité qu’Apple pourrait trouver intéressante, il faut être prudent. Apple peut fermer l’accès et commencer à faire payer les utilisateurs
      Il faut être doublement prudent quand on énerve des geeks. Ces gens sont vraiment effrayants : ils se couchent furieux le vendredi soir, puis passent tout le week-end à analyser votre produit comme une boîte noire et à rendre son implémentation triviale
  • Ce concept semble aussi pouvoir servir à contourner les fonctions anti-harcèlement intégrées par Apple et d’autres
    Par exemple, avec N tags donneurs et une rotation toutes les 24/N heures, du point de vue d’Apple ou du suivi de l’appareil, la personne suivie ne semblerait pas être accompagnée longtemps par un seul et même tag

    • Si ce n’est pas encore corrigé, j’ai entendu dire qu’on pouvait éviter la détection simplement en éteignant et rallumant périodiquement le tag avec un minuteur
      Ajoutez une grosse batterie et un simple circuit de minuterie, retirez le bippeur, et cela devient un excellent dispositif de suivi
      Je me souviens que cela avait été évoqué dans le contexte du suivi de cargaisons contenant du matériel coûteux. Le transport peut prendre des mois ; l’AirTag est très économe en énergie, tient longtemps avec une grosse batterie, et les solutions GPS existantes n’étaient pas suffisantes
    • Pourquoi faudrait-il des tags donneurs ? Le README de ce projet explique comment générer un tag
    • S’il faut constamment alterner entre les tags, à ce stade, est-ce que les suivre soi-même ne demanderait pas moins d’efforts ou d’argent ?
      Ou bien utiliser un tag GPS qui n’utilise pas du tout le « réseau » AirTag, et qu’il n’est pas nécessaire de faire tourner
  • J’utilise encore Flipper plusieurs fois par semaine. J’attends avec impatience la prochaine version, avec le Wi-Fi et la prise en charge d’autres fréquences

    • Tu t’en sers pour quoi ?
    • Le WiFi dev board ne suffit pas ?
  • Quelqu’un a-t-il testé la réaction de l’app « Find My » si elle voit le même tag à plus de deux emplacements ?

    • Les serveurs d’Apple ne savent rien des emplacements ; donc le fait de moyenner les positions dépend de l’implémentation, ici de l’app FindMy
    • Sauf si quelque chose m’échappe, elle ne prendrait pas simplement la position la plus récente ?
  • Je l’utilise et c’est excellent. La consommation est pratiquement négligeable
    Ce serait bien de pouvoir aussi communiquer avec le réseau Find My Device de Google, mais ça fonctionne déjà très bien sur le réseau Apple

  • Ce serait bien de pouvoir porter ça sur un appareil BLE bon marché comme l’ESP32-C3. Utiliser un Flipper comme AirTag coûte un peu cher

  • Malheureusement, il faut un tag donneur à usurper, et ce tag ne peut pas être utilisé pendant qu’on utilise ceci. Sinon, il faut utiliser OpenHaystack, mais il faut un Mac pour récupérer les données

    • Ce n’est pas le cas. Je l’utilise sur une machine Linux sans AirTag, et ça fonctionne bien
  • Dans README.md, ce serait bien d’avoir un lien pour comprendre de quoi il s’agit : https://flipperzero.one/

  • Quelle appli Android faut-il pour utiliser ça ? De préférence une appli qui ne nécessite pas Google Services

    • Ce projet est destiné au Flipper Zero, pas à un téléphone
    • Je sais qu’il faut un Flipper, et j’en ai un
      Mais avec quelle appli Android peut-on réellement le « trouver » ? Je n’ai ni iPhone ni appareil Samsung
    • Aucune. Il suffit d’un ordinateur avec Python, git et Docker