GoogleFindMyTools de Leon Böttger est une réimplémentation de la recherche de Google My Device Network. Il fonctionne avec les appareils Android et les trackers commerciaux, mais le support expérimental pour les trackers Bluetooth basés sur ESP32 a récemment été ajouté.
L’implémentation dispose de deux composants. Tout d’abord, le script Main.py Python qui répertorie et localisera les appareils, puis le firmware ESP32 implémenté en C avec l’ESP-IDF. L’ordinateur hôte aura également besoin de plusieurs bibliothèques Python qui peuvent être installées avec «Pip Install -R Exi -ds.txt» et Google Chrome Web Browser.
![]()
Ceci est la sortie du script Python sur mon ordinateur portable Ubuntu:
Après s’être connecté à mon compte Google, le script pourrait localiser mon smartphone. De là, je peux soit obtenir la coordonnée GPS du smartphone en sélectionnant 1 ou en enregistrant un tracker Bluetooth basé sur ESP32. Je n’en ai pas mais essayons quand même:
Si vous souhaitez enregistrer un nouveau tracker basé sur ESP32, tapez «R» et appuyez sur «Entrée»: R Chargement …
[SharedKeyRetrieval] Vous devez vous connecter à nouveau pour accéder aux clés cryptées de bout en bout pour décrypter les rapports de localisation. Ce script ouvrira désormais Google Chrome sur votre appareil. Faites en sorte que vous permettez à Python (ou pycharm) de contrôler le chrome (macOS uniquement).
[SharedKeyRetrieval] Appuyez sur «Entrée» pour continuer …
[SharedKeyFlow] Signé avec succès.
[SharedKeyFlow] Clé partagé reçu. Appareil enregistré avec succès. Copiez la clé de publicité ci-dessous. Il ne sera plus montré. Ensuite, accédez au dossier «GoogleFindmyTools / ESP32Firmware» et suivez les instructions du fichier readme.md. + ————————————————- —————————– + | 2ACBD5CD41B7ACBEDEF192F0141CD5B4A62345DF | | Clé publicitaire | + ————————————————- —————————– +
|
Si vous souhaitez enregistrer un nouveau tracker basé sur ESP32, tapez «R» et appuyez sur «Entrée»: R Chargement… [SharedKeyRetrieval] Vous devez vous connecter à nouveau pour accéder aux clés cryptées de bout en bout pour décrypter les rapports de localisation. Ce script ouvrira désormais Google Chrome sur votre appareil. Faites en sorte que vous permettez à Python (ou pycharm) de contrôler le chrome (macOS uniquement). [SharedKeyRetrieval] Appuyez sur «Entrée» pour continuer … [SharedKeyFlow] Signé avec succès. [SharedKeyFlow] Clé partagé reçu. Appareil enregistré avec succès. Copiez la clé de publicité ci-dessous. Il ne sera plus montré. Ensuite, accédez au dossier «GoogleFindmyTools / ESP32Firmware» et suivez les instructions du fichier readme.md. + ————————————————- —————————– + | 2ACBD5CD41B7ACBEDEF192F0141CD5B4A62345DF | | Clé publicitaire | + ————————————————- —————————– + |
J’ai dû me connecter à Google à nouveau pour le script pour récupérer une clé partagée, et on m’a donné une clé publicitaire (que j’ai modifiée pour ce post) qui doit être copiée et collée à la ligne 15 de Main.c Remplacement « insert_your_advertisement_key_here » :
#include #include #include #include #include « esp_bt.h » #include « esp_gap_ble_api.h » #include « esp_log.h » #include « nvs_flash.h » // Pour les fonctions nvs comme nvs_flash_init #include « esp_bt_main.h » // Pour ESP_BLUDRIDE_ * Fonctions #include « ESP_ERR.H » // Pour la gestion des erreurs #Define Tag « ESP_FMDN » // Ceci est la clé de publicité / EID. Changez-le en votre propre Eid. const char * eid_string = « insert_your_advertise_key_here »; // fonction pour convertir une chaîne hex « % 2hhx » et octets[i])); }}
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
#inclure #inclure #inclure #inclure #include « esp_bt.h » #include « esp_gap_ble_api.h » #include « esp_log.h » #include « nvs_flash.h » // Pour les fonctions NVS comme NVS_FLASH_INIT #include « ESP_BT_MAIN.h » // pour ESP_BLUDRID_ * Fonctions #include « esp_err.h » // pour la gestion des erreurs #define tag « esp_fmdn » // Ceci est la clé de publicité / Eid. Changez-le en votre propre Eid. const char * eid_string = « insert_your_advertise_key_here »; // fonctionne pour convertir une chaîne hexagonale en un tableau d’octet void hex_string_to_bytes (const char * hex, uint8_t * octets, size_t len) { pour (size_t i = 0; i sscanf (hex + 2 * i, « % 2hhx », & octets[i])); } } |
Cela devrait être fait dans Visual Studio avec le framework ESP-IDF installé, et à partir de là, vous pouvez créer le firmware et le flasher à un tracker ESP32 connecté à l’hôte sur USB.
Nous pouvons exécuter main.py à nouveau et le téléphone et le tracker ESP32 nouvellement enregistré peuvent être trouvés par le script:
jaufranc @ cnx-ordinateur-ordinateur-5: ~ / edev / sandbox / googlefindmytools $ python main.py chargement … les trackers suivants sont disponibles: 1. Oppo A98 5G: xxxx-0000-2551-xxxx-xxxxxxx 2. Googlefindmytools ESP32: xxxx-0000-2ad2-xxxx-xxxxxxxx Si vous souhaitez voir les emplacements d’un tracker, saisissez le numéro du tracker et appuyez sur «Entrée». Si vous souhaitez enregistrer un nouveau tracker basé sur ESP32, tapez «R» et appuyez sur «Entrée»: 1
[LocationRequest] Demander des données de localisation pour l’appareil avec ID Canonic: xxxx-0000-2551-xxxx-xxxxxxxx
[FCMReceiver] Écouter des notifications.
[FCMReceiver] Notification reçue!
[LocationRequest] Demande de localisation réussie. —————————————-
[DecryptLocations] Emplacements décryptés: latitude: 11.3347438 Longitude: 10.844803 Altitude: 2580 Temps: 2025-02-12 09:58:34 Statut: 1 est propre rapport: Vrai ———————- ———————-
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
jaufranc @ cnx-ordinateur portable-5: ~ / edev / sandbox / googlefindmytools $ python main.py Chargement… Les trackers suivants sont disponibles: 1. Oppo A98 5G: xxxx-0000-2551-xxxx-xxxxxxxx 2. GoogleFindmyTools ESP32: xxxx-0000-2ad2-xxxx-xxxxxxxx Si vous souhaitez voir les emplacements d’un tracker, tapez le numéro du tracker et appuyez sur «Entrée». Si vous souhaitez enregistrer un nouveau tracker basé sur ESP32, tapez «R» et appuyez sur «Entrée»: 1 [LocationRequest] Demander des données de localisation pour l’appareil avec ID Canonic: xxxx-0000-2551-xxxx-xxxxxxxx [FCMReceiver] Écouter des notifications. [FCMReceiver] Notification reçue! [LocationRequest] Demande de localisation réussie. —————————————- [DecryptLocations] Emplacements décryptés: Latitude: 11.3347438 Longitude: 10.8444803 Altitude: 2580 Heure: 2025-02-12 09:58:34 Statut: 1 Est le propre rapport: vrai —————————————- |
Comme je n’ai pas de tracker, je l’ai essayé avec mon téléphone, mais les résultats devraient ressembler à un tracker ESP32 fonctionnel qui s’appuie sur les téléphones de Google Recherchez mon réseau d’appareils pour l’emplacement. Ne vous inquiétez pas, j’ai modifié la valeur ci-dessus pour la vie privée…
Il a l’air génial, mais il y a des problèmes connus spécifiques à l’implémentation ESP32:
- En ce moment, vous devrez peut-être réinscrire l’ESP32 après 3 jours, mais Leon travaille sur un correctif
- Les utilisateurs avec de nouveaux comptes doivent utiliser Recherchez mon application d’appareil sur un appareil Android avant d’enregistrer un nouveau tracker ESP32 (je n’avais pas besoin de le faire).
- Les emplacements des trackers ESP32 ne peuvent être trouvés que via le script Python et non dans Google Recherchez mon application ou le site Web
- Les fonctionnalités de confidentialité telles que les adresses MAC rotatives ne sont pas implémentées
- Le firmware ESP32 est optimisé pour trouver autant de rapports de réseau que possible et non pour la durée de vie de la batterie. Vous pouvez modifier la puissance TX et les paramètres d’intervalle publicitaire dans Main.c pour réduire la consommation d’énergie.
Vous trouverez les instructions complètes pour l’essayer vous-même et le code source sur GitHub. En tant que note latérale, si vous êtes intéressé par des solutions open source pour les trackers, vous pouvez consulter le projet Airguard en fonction des smartphones Android ou iOS pour localiser Samsung Trackers (SmartTags), Google Find My Network Trackers et Apple AirTags.
Via Hackaday
Retrouvez l’histoire de Raspberry Pi dans cette vidéo :

-
Pack de 2 Smart Tag Android Traceur – Tag Android Compatible avec Google Find My Device, Smart Tag Bluetooth Étanche pour Clés, Sacs, Bagages, Porte-clés, Traceur Android(Non Compatible iOS)
-
Lot de 4 trackers GPS Android Smart Tag compatibles avec Google App Find My Device, valise et Bluetooth