
カメラを搭載したスマートグラスを検出するためのメガネ。Ray-BANNED
カメラ付きスマートグラスを検出するためのメガネ
現在、主に2つのアプローチを実験しています:
これまでのところ、特定のデバイスをBluetooth(BLE)ベースでフィンガープリントするのが、最も簡単で信頼性の高いアプローチのように思えます。下の写真は最初のバージョンで、Meta RaybansからのBLEアドバタイズを検出すると、ゼルダの伝説の「秘密を見つけた」ジングルを再生します。

このREADMEは本質的にログブックとして扱っているので、現在のアプローチやアイデアを書き留めていきます。
カメラレンズにIRを照射することで、カメラのCMOSセンサーが光源に光を直接反射する性質(「再帰反射」/「キャットアイ効果」と呼ばれる)を利用して、カメラを識別できます。

これはまったく新しいアイデアというわけではありません。2005年に一部の研究者が、カメラ付きスマートフォンが普及し始めた頃に、この性質を利用して「撮影耐性環境(capture-resistant environments)」を作り出しました。
最近の研究(2024年)では、再帰反射に基づいて個々のカメラを分類する方法も解明されています。
今、私たちは2005年の研究者たちと同じような状況にあります。カメラを隠したスマートグラスが普及しつつあるようです。そこで、これらを識別するためのメガネを作りたいと思います。残念ながら、私が調べた限り、この分野の既存研究のほとんどは、カメラでデータを記録した後、MLや多数の制御された角度などを使用して、通常の反射面とカメラを区別しています。
自分のソリューションがカメラを使うのは、かなり間抜けに感じるでしょう。なので、それは避けます。その代わりに、スイープ(走査)の一貫性を保ち、信号データに基づく優れた分類器を作ることに頼らざるを得ないと思います。例えば、以下のように、スマートフォンの背面カメラは素早く大きなスパイクを生成する一方、光沢のある画面はより長い波形を生成することがわかります。


Meta Raybansをテストする機会を得た後、このセットアップでは不十分であることがわかりました。以下は、カメラ領域のスイープと、レンズをカバーした同じ領域のテストです。波形は以前のテストで見たものと似ていますが(カメラでは短いスパイク、それ以外では広い波形)、非常に不安定で、信号の強度は非常に弱いです。これはLEDから約4インチ離れた位置からのものです。940nmと850nmのLEDを切り替えても、大きな違いには気づきませんでした。

したがって、少なくとも私が簡単に入手できる現在のハードウェアでは、これを正確に区別するにはおそらく不十分です。
もう1つのアイデアは、専用のスイープ「パターン」を作成することです。ユーザー(検出メガネを着用)は、ターゲットに対して特定のスキャンパターンを実行します。このデータから取得した波形を使用して、Raybansをより正確にフィンガープリントできるかもしれません。例えば、ターゲットのメガネを「左、右、上、下」の順にスイープします。これを、Meta Raybansと手元にあったアビエーターサングラスを比較してテストしました。このアプローチの背後にある考え方は理にかなっていると思いますが(実際は光に関わるものです)、もう少し改良が必要かもしれません。

プロトタイピングには、以下を使用しています:

IR TODOs:
スイープパターンの実験
スペクトル情報に焦点を当て、いくつかの異なる波長からのデータを組み合わせてみる
コリメーション?
カメラ分類論文の著者であるtrevor氏が11月に言及していたのですが、メガネにLiDARが搭載されている場合、そのパルスを探せばよいとのことです。Ray-bansにはこれがないようですが、他のスマートグラスにはあるかもしれません。12月に投稿されたこのブログには、このアプローチでiPhoneカメラを検出する興味深い研究があります: https://www.atredis.com/blog/2025/11/20/designing-a-passive-lidar-detection-sensor
これは最初に考えていたよりも厄介でした!現在のアプローチは、Bluetooth Low Energy(BLE)アドバタイズ経由でMeta Raybansをフィンガープリントすることです。しかし、BLEトラフィックを検出できたのは、1) ペアリング中と 2) 電源投入時だけでした。ケースから取り出したとき(すでに電源が入っている状態)にアドバタイズが見えることもありますが、一貫性はありません。

目標は、ペアリングされたスマートフォンと通信している使用中にそれらを検出することですが、この種のダイレクトなBLEトラフィックを確認するには、まず、同期してホッピングする通信チャネル(ホップ間隔、ホップ増分)に関する情報を含むCONNECT_REQパケットを確認する必要があります。これはnRF52840 + ble-snifferファームウェアで実行できますが、スニッフィングを開始するには、その初期接続を確認する必要があるという事実は変わりません。
BLEについてもう少し背景知識を:
電源を入れたときやペアリングモードにしたとき(またはケースから取り出したとき)に、アドバタイズされたメーカーデータとサービスUUIDを通じてデバイスを検出できます。これらはアドバタイズデータの一部です。0x01ABはMeta固有のSIG割り当てID(Bluetooth標準化団体によって割り当てられた)であり、Service UUID内の0xFD5FもMetaに割り当てられています。コードには、フィンガープリントに使用している他の数値も確認できます。
Bluetooth Classic(BTC)トラフィックについては、残念ながらハードウェアがもう少し複雑なようです(つまり、高価)。そのため、このルートを進めたい場合は、もう少し賢いソリューションが必要になるでしょう。
メガネの電源投入時のキャプチャ:
[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']
NETWORKING TODOs:
注記: テストに使用していたRay-bansが現在手元にないため、少し行き詰まっています :(
光学とBLE(それぞれ)についてアドバイスをくれたTrevor Seets氏とJunming Chen氏に感謝します。また、テスト用にMeta Raybansを貸してくれたSohail氏にも感謝します。
この作品は クリエイティブ・コモンズ 表示-非営利-継承 4.0 国際ライセンスの下でライセンスされています。