
Lunettes pour détecter les lunettes intelligentes dotées de caméras. Ray-BANNED
Des lunettes pour détecter les lunettes intelligentes équipées de caméras
J'expérimente 2 approches principales :
Jusqu'ici, l'identification par empreinte de dispositifs spécifiques via le Bluetooth (BLE) semble être l'approche la plus simple et la plus fiable. La photo ci-dessous est la première version, qui joue le jingle « Secret found » de The Legend of Zelda lorsqu'elle détecte une publicité BLE des Meta Raybans.

Je considère essentiellement ce README comme un journal de bord, il contiendra donc mes approches/idées actuelles.
En envoyant de l'IR sur les lentilles des caméras, on peut tirer parti du fait que le capteur CMOS d'une caméra réfléchit la lumière directement vers la source (appelé « rétro-réflexivité » / « effet œil-de-chat ») pour identifier les caméras.

Ce n'est pas vraiment une nouvelle idée. Certains chercheurs en 2005 ont utilisé cette propriété pour créer des « environnements résistants à la capture » à l'époque où les smartphones avec caméra gagnaient en popularité.
Il existe même des recherches récentes (2024) qui sont parvenues à classifier des caméras individuelles à partir de leurs rétro-réflexions.
Nous nous retrouvons maintenant dans une situation similaire à celle des chercheurs de 2005 : les lunettes intelligentes avec caméras cachées semblent gagner en popularité. Je veux donc créer une paire de lunettes pour les identifier. Malheureusement, d'après ce que je peux voir, la plupart des recherches existantes dans ce domaine enregistrent les données avec une caméra, puis utilisent le ML, une multitude d'angles contrôlés, etc. pour différencier les surfaces réfléchissantes normales des caméras.
Je me sentirais plutôt ridicule si ma solution utilisait sa propre caméra. Je vais donc éviter cela. À la place, je pense qu'il me faudra probablement m'appuyer sur la régularité de mes « balayages » et créer un bon classifieur basé sur les données de signal. Par exemple, vous pouvez voir ici que la caméra arrière de mon smartphone semble produire des pics rapides et importants, tandis que l'écran brillant crée une onde plus prolongée.


Après avoir pu tester des Meta Raybans, j'ai constaté que cette configuration ne sera pas suffisante. Voici un test de quelques balayages de la zone de la caméra + de la même zone lorsque l'objectif est couvert. On peut voir que la forme d'onde est similaire à celle observée lors du test précédent (pic court pour la caméra, plus large sinon), mais elle est extrêmement incohérente et la puissance du signal est très faible. C'était à environ 4 pouces des LED. Je n'ai pas remarqué beaucoup de différence en passant de LED 940nm à 850nm.

Donc, au moins avec le matériel actuel auquel j'ai facilement accès, cela ne suffit probablement pas pour différencier avec précision.
Une autre idée que j'ai eue est de créer un « motif » de balayage dédié. L'utilisateur (portant les lunettes de détection) effectuerait un motif de balayage spécifique de la cible. En utilisant les formes d'onde capturées à partir de ces données, nous pourrons peut-être identifier plus précisément les ray-bans. Par exemple, balayer les lunettes de la cible selon une approche « gauche, droite, haut, bas ». J'ai testé cela en comparant les résultats des Meta raybans avec des lunettes aviateur que j'avais sous la main. Je pense que l'idée derrière cette approche est solide (en fait, elle est légère), mais elle nécessite peut-être d'être davantage peaufinée.

Pour le prototypage, j'utilise :

TODOs IR :
expérimenter des motifs de balayage
se concentrer sur les informations spectrales, essayer de combiner les données de plusieurs longueurs d'onde différentes
collimation ?
trevor (auteur de l'article sur la classification des caméras) a mentionné en novembre dernier que si les lunettes ont un LiDAR, je pourrais simplement chercher ces impulsions. Les ray-bans ne semblent pas en avoir, mais d'autres lunettes intelligentes pourraient en avoir. Ce blog publié en décembre présente des recherches intéressantes sur la détection des caméras d'iPhone avec cette approche : https://www.atredis.com/blog/2025/11/20/designing-a-passive-lidar-detection-sensor
Cela s'est avéré plus délicat que je ne le pensais ! Mon approche actuelle consiste à identifier les Meta Raybans via les publicités Bluetooth low energy (BLE). Mais je n'ai réussi à détecter le trafic BLE que pendant 1) l'appairage 2) la mise sous tension. Je vois parfois aussi la publicité lorsqu'elles sont sorties de l'étui (alors qu'elles sont déjà sous tension), mais pas de manière constante.

L'objectif est de les détecter pendant leur utilisation lorsqu'elles communiquent avec le téléphone appairé, mais pour voir ce type de trafic BLE dirigé, je devrais d'abord voir le paquet CONNECT_REQ qui contient des informations sur les canaux de communication entre lesquels sauter en synchronisation (intervalle de saut, incrément de saut). Cela peut être fait avec un nRF52840 + le firmware ble-sniffer, mais cela ne change pas le fait que vous devez toujours voir cette connexion initiale pour commencer le sniffing.
Un peu plus de contexte sur le BLE :
Lorsqu'elles sont allumées ou mises en mode appairage (ou parfois lorsqu'elles sont sorties de l'étui), je peux détecter l'appareil via les données de fabricant diffusées et les UUID de service. Ces éléments font partie des données de publicité.
0x01AB est un identifiant SIG spécifique à Meta (attribué par l'organisme de normalisation Bluetooth), et 0xFD5F dans le Service UUID est également attribué à Meta. Dans le code, vous pouvez voir les autres numéros que j'utilise pour l'identification par empreinte.
Pour ce qui est du trafic Bluetooth Classic (BTC), le matériel semble malheureusement un peu plus complexe (autrement dit : coûteux). Donc si je veux m'engager dans cette voie, j'aurai probablement besoin d'une solution plus ingénieuse.
capture lorsque les lunettes sont sous tension :
[01:07:06] RSSI: -59 dBm
Address: XX:XX:XX:XX:XX:XX
Name: Unknown
META/LUXOTTICA DEVICE DETECTED!
Manufacturer: Meta (0x01AB)
Service UUID: Meta (0xFD5F) (0000fd5f-0000-1000-8000-00805f9b34fb)
Manufacturer Data:
Company ID: Meta (0x01AB)
Data: 020102102716e4
Service UUIDs: ['0000fd5f-0000-1000-8000-00805f9b34fb']
TODOs Réseau :
NOTE : les ray-bans que j'utilisais pour les tests sont actuellement indisponibles, donc je suis un peu bloqué :(
Merci à Trevor Seets et Junming Chen pour leurs conseils en optique et en BLE (respectivement). Merci aussi à Sohail de m'avoir prêté des meta raybans pour les tests.
Cette œuvre est mise à disposition selon les termes d'une licence Creative Commons Attribution - Pas d'Utilisation Commerciale - Partage dans les Mêmes Conditions 4.0 International.