2 points par GN⁺ 2025-01-12 | 1 commentaires | Partager sur WhatsApp
  • go-haystack est un ensemble d’outils basé sur Go/TinyGo qui permet de suivre des appareils Bluetooth personnels via le réseau Find My d’Apple
  • Il s’utilise avec OpenHaystack et Macless-Haystack pour mettre en place un réseau Find My personnalisé, configurable sans matériel Apple
  • Il fournit un firmware de balise écrit avec TinyGo et le package TinyGo Bluetooth, pour du matériel comme les cartes nRF SoftDevice, la BBC Microbit, la Seeed Studio XIAO nRF52840, les cartes avec coprocesseur ESP32 et les RP2040 Pico-W
  • Le même code de balise peut aussi s’exécuter sous Linux avec du matériel Bluetooth, y compris sur Raspberry Pi ou d’autres systèmes embarqués
  • L’utilisateur prépare un Apple ID avec 2FA par SMS, anisette-v3-server, un serveur Macless-Haystack et la CLI haystack, puis enregistre l’appareil via un flux de génération de clés, flash du firmware et envoi du JSON

Rôle de go-haystack

  • go-haystack permet de suivre des appareils Bluetooth personnels via le réseau Find My d’Apple
  • Il s’utilise avec OpenHaystack et Macless-Haystack pour configurer un réseau Find My personnalisé
  • L’outil est écrit en Go/TinyGo et peut être utilisé sans matériel Apple

Créer soi-même une balise

Balises Linux et TinyScan

  • Le code de balise peut aussi s’exécuter sous Linux avec du matériel Bluetooth
    • Raspberry Pi ou d’autres systèmes embarqués sont donnés en exemple
    • Pour Linux embarqué, le code est identique à celui des microcontrôleurs et se trouve dans le répertoire firmware du dépôt
  • go-haystack inclut aussi TinyScan, un scanner matériel pour les appareils locaux
    • TinyScan fonctionne sur plusieurs cartes microcontrôleurs dotées de Bluetooth et d’un petit écran
    • Des cartes d’Adafruit et de Pimoroni sont citées en exemple
    • Le code se trouve dans le répertoire tinyscan

Composants nécessaires à l’installation

  • Un Apple ID est nécessaire, avec la 2FA activée
    • Seul le second facteur par SMS/message texte est pris en charge
  • anisette-v3-server doit être exécuté avec Docker
    • L’exemple de commande crée le réseau Docker mh-network, puis lance le conteneur dadoum/anisette-v3-server sur le port 6969
  • Il faut configurer un endpoint macless-haystack en l’exécutant en mode interactif
    • Pendant la configuration, il faut saisir l’Apple ID, le mot de passe et la 2FA
    • Quand serving at port 6176 over HTTP s’affiche, la configuration est terminée
    • Une fois la configuration faite, le processus est arrêté puis le serveur est relancé avec docker restart macless-haystack
  • La CLI go-haystack s’installe avec la commande suivante
go install github.com/hybridgroup/go-haystack/cmd/haystack@latest

Flux d’utilisation

  • Les appareils à portée locale peuvent être détectés avec haystack scan
    • La sortie inclut l’adresse Bluetooth, la puissance du signal, des données sous forme d’identifiant et l’état de la batterie
  • Pour ajouter un nouvel appareil, il faut d’abord générer des clés pour celui-ci
haystack keys DEVICENAME
  • La génération des clés enregistre un fichier DEVICENAME.keys et un fichier DEVICENAME.json pour la configuration Haystack
    • DEVICENAME doit être remplacé par le vrai nom de l’appareil
  • Le matériel est ensuite flashé en indiquant la cible TinyGo et le nom de l’appareil
haystack flash DEVICENAME nano-rp2040
  • Cette commande compile avec TinyGo un firmware contenant les clés, puis le flashe sur l’appareil
  • Enfin, le fichier JSON de l’appareil doit être envoyé via l’interface web à l’instance macless-haystack en cours d’exécution
    • Dans le navigateur, ouvrir la web app Macless-Haystack, puis sélectionner le fichier DEVICENAME.json via le lien « Accessories » et le bouton « + »
    • Cette web app est une application monopage qui lit et écrit uniquement des données locales

Affichage des données de localisation

  • Lorsqu’un appareil entre dans la portée d’un iPhone, les données Macless-Haystack apparaissent dans l’interface web après un certain temps
  • L’affichage des premières données peut prendre un moment

1 commentaires

 
GN⁺ 2025-01-12
Avis de Hacker News
  • Vraiment chouette. Ce genre d’initiative et le réseau Find My m’étonnent à chaque fois, mais si je ne l’utilise pas directement de cette façon, c’est parce que je pense qu’Apple pourrait un jour accepter officiellement ce parasitage du réseau, ou au contraire bannir les Apple ID ayant ce type d’historique
    Pour l’instant, Apple en a connaissance, mais ne prend position ni dans un sens ni dans l’autre. Jusqu’à ce qu’Apple le prenne en charge plus officiellement, ou qu’une méthode n’implique pas de lien direct avec mon Apple ID/compte, je compte me contenter d’observer

    • Le processus de demande de localisation d’un tag précis n’est pas lié à un compte Apple. Comme l’indique le README, il suffit d’utiliser un compte jetable pour se connecter à macless haystack
    • Je pense aussi qu’il y a des effets positifs à ce qu’Apple ferme les yeux. Plus ce réseau s’étend, plus son adoption augmente, et si l’on considère le P2P comme une structure de plus haut niveau, c’est un problème plus vaste qu’un fournisseur donné ; accepter une adoption accrue d’une manière ou d’une autre peut être un compromis raisonnable
      D’autant qu’Apple n’a pas besoin de faire le travail elle-même : plutôt que de freiner l’adoption maintenant, elle finira probablement par chercher à exploiter davantage la densité du maillage
  • L’été dernier, j’étais en vacances au Portugal avec ma femme, et elle a oublié son portefeuille dans l’Uber qui nous emmenait à l’aéroport. Le chauffeur a trouvé le portefeuille, a pris 20 dollars et quelques bijoux, puis l’a jeté ; plus tard dans la journée, nous l’avons suivi avec un AirTag jusqu’à un parking désaffecté et l’avons retrouvé avec l’app Localiser
    Depuis, je mets des AirTags dans tous nos sacs et je remplace aussi les piles selon un calendrier

    • J’ai aussi mis des AirTags dans tous mes sacs. Il y a quelques années, à l’aéroport de Sydney, dans la zone des bagages perdus, j’ai attendu un sac dont j’avais fini par déterminer, après des heures de demandes auprès de la compagnie aérienne et de l’aéroport, qu’il se trouvait là
      À ce moment-là, un autre homme disait que ses affaires étaient là aussi : un mois plus tôt, en Nouvelle-Zélande, il avait laissé son iPad dans la pochette du siège en évacuant l’avion, et l’avait suivi jusqu’à Sydney avec Find My. Il prend l’avion à l’international plusieurs fois par mois et disait que l’AirTag était le meilleur objet qu’il possédait. Depuis, j’ai aussi caché quelques tags leurres dans toutes les voitures, les sacs et les objets de valeur susceptibles d’être volés
    • Comment savoir que c’est bien le chauffeur qui a fait ça, et pas un autre passager monté ensuite ?
  • Même après lecture, je ne comprends pas bien. Est-ce que ça s’utilise avec un Apple AirTag, ou faut-il fabriquer son propre dispositif de suivi ?

  • https://media.ccc.de/v/38c3-find-my-101

  • J’aimerais qu’à l’avenir on puisse connaître la position d’un beacon avec une précision inférieure à 1 mètre cube
    Ma femme a un TDA et perd souvent ses affaires. Tile ne sonne pas très fort et manque de fiabilité, et comme nous n’avons pas d’iPhone, nous ne pouvons pas utiliser d’AirTag. Je suis trop épuisé pour apprendre les maths nécessaires à la localisation de beacons Bluetooth, mais j’aimerais pouvoir le faire. J’aimerais qu’il existe un projet logiciel du type « ajoutez simplement 4 petites cartes Bluetooth », mais ce n’est apparemment pas le genre de problème qui démange la plupart des développeurs open source

    • Un AirTag avec un iPhone 11 ou plus récent résout exactement ce problème. On peut retrouver un AirTag à moins d’un pied près
      La localisation précise ne se fait pas via la puissance du signal Bluetooth, mais par ultra wideband (UWB). Cela fonctionne par temps de vol, en utilisant le délai à la vitesse de la lumière, comme le GPS. Quand on ouvre l’app Find My, elle connaît très vite la distance exacte jusqu’à l’AirTag, puis, en se déplaçant, calcule aussi dans quelle direction se trouve l’AirTag à partir des variations de position observées. C’est une technologie assez impressionnante. Dans l’app Find My, il faut utiliser la fonction « Find », pas « Play Sound », et il faut un iPhone 11+ équipé de la puce ultra wideband H1. Le coût peut être comparable à l’installation de plusieurs cartes Bluetooth dans la maison, et c’est bien plus précis, même si c’est moins amusant à hacker
      https://en.wikipedia.org/wiki/Ultra-wideband#Real-time_locat...
    • Nous aussi, nous n’utilisons tous les deux qu’Android, mais nous envisageons d’acheter simplement un iPhone 11 ou 12 mini cassé pour le réserver à la recherche de précision des AirTags
      Au moins, je ne pense pas qu’il existe d’alternative équivalente combinant localisation de précision en ultra wideband, disponibilité à l’achat, prix raisonnable et fiabilité. En revanche, certains Android semblent prendre en charge l’UWB, qui pourrait fonctionner avec l’UWB de Tile : https://www.zdnet.com/article/how-to-enable-uwb-on-android-a...
    • J’espère que Bluetooth Channel Sounding se généralisera davantage dans les prochaines années. Il paraît que cela pourrait apporter à tous les appareils BLE une estimation de distance similaire, quoique moins précise que l’UWB
      https://www.bluetooth.com/learn-about-bluetooth/feature-enha...
    • J’ai aussi un TDAH et je perds constamment mes affaires ; les tags Pebblebee ont bien fonctionné pour moi. J’ai mis un tag sur mes clés et une carte dans mon portefeuille, et même dans une vieille maison aux murs épais en brique, le son est assez fort pour être entendu depuis un autre étage
    • Les « maths nécessaires » évoquées ici semblent désigner la triangulation de la position à partir de beacons fixes. Même Apple se contente d’envoyer la position des téléphones qui reçoivent le signal, d’où ces histoires où la police se présente à la mauvaise maison à cause d’écouteurs ramassés dans un bus par un enfant du voisinage
      J’avais bricolé avec des beacons à une époque, et les faire fonctionner était en soi assez simple. J’ai écrit un petit programme pour que mon ordinateur portable se comporte comme un beacon, puis j’ai utilisé n’importe quelle app « Bluetooth tracker » sur le téléphone pour voir la distance approximative jusqu’à ce beacon. Ensuite, il suffisait de marcher en observant la distance
  • Maintenant, on dirait qu’on peut l’utiliser même sans Mac ? Si c’est le cas, c’est impressionnant. Les traceurs Apple ne coûtent que quelques euros, bien sûr si l’on parle des produits tiers.

  • Je ne sais pas si je suis le seul, mais toute cette fonctionnalité du réseau Localiser me semble être un cauchemar de sécurité. Je comprends son utilité, mais une agence ne pourrait-elle pas demander à Apple de lui dire où se trouve cette personne, même sans couverture cellulaire ?
    En tout cas, c’est pour cette raison que j’ai décidé de sortir de l’écosystème Apple, et du point de vue de la surveillance, ça ressemble à un cauchemar.

    • Le système est précisément conçu pour rendre ce genre de chose impossible.
      Le tag ne connaît pas sa position ; il ne fait que diffuser sa clé publique tournante. Comme la clé change de façon aléatoire, vous, en tant que propriétaire légitime, pouvez la prédire, mais il est difficile pour un tiers de suivre facilement le tag. Les autres appareils voient cette clé, chiffrent leur propre position avec la clé publique du tag, puis la partagent. Il est donc très difficile d’obtenir les données, et pratiquement impossible sauf si Apple est contrainte de reconcevoir le système et de déployer une mise à jour malveillante. On considère généralement qu’un tel niveau dépasse ce qu’une simple assignation peut obtenir.
    • Impossible. Apple ne sait pas qui possède quel tag. C’est conçu selon une approche centrée sur la confidentialité. Je sais qu’Apple met en avant la protection de la vie privée tout en ayant d’autres intérêts, mais j’ai lu les documents de conception technique, et c’est plutôt excellent.
      Je doute que Samsung et Google soient allés aussi loin avec leurs propres traceurs.
    • https://support.apple.com/guide/security/find-my-security-se...
    • Il faut préciser qu’il existe deux « réseaux » différents dans Localiser. L’un est le réseau où d’autres appareils Apple aident à retrouver mes objets ; l’autre est celui où mes appareils envoient directement leur position à Apple.
      L’app Localiser combine les deux pour afficher la position la plus récente. À mon avis, ce projet semble n’utiliser que le premier, et celui-ci nécessiterait par conception une porte dérobée explicite. Mais si l’objectif est de se protéger contre des agences gouvernementales, c’est probablement le second réseau qui mérite davantage d’attention.
    • Si vous craignez que ce soit un cauchemar de sécurité, vous pouvez le désactiver dans les réglages : Réglages → votre_nom → Localiser → appareil → désactiver l’option.
      Si vous ne croyez pas que le désactiver le désactivera réellement, alors il faut réfléchir sérieusement à tous les appareils électroniques que vous possédez. Faites-vous confiance au firmware de votre téléphone Android ? À la puce modem non open source ? À la carte SIM qui exécute Java ? La télécommande de votre téléviseur ne contient-elle pas un micro dont vous n’avez pas connaissance ? Beaucoup de télécommandes en ont effectivement un. Il est même probable que votre grille-pain contienne une puce plus puissante qu’un ordinateur de l’ère DOS connecté au réseau. Le mien, oui. Comment savoir qu’elle ne se connecte pas au Wi-Fi voisin pour envoyer des informations ? Depuis l’affaire Chine/iCloud, je ne fais pas entièrement confiance à Apple, mais parmi les grandes entreprises tech, c’est tout de même celle à laquelle je fais le plus confiance.