展示HN:Ray-BANNED,检测带有摄像头的智能眼镜的眼镜。
Show HN: Glasses to detect smart-glasses that have cameras

原始链接: https://github.com/NullPxl/banrays

## 智能眼镜摄像头检测 - 项目总结 该项目旨在开发能够检测智能眼镜(如Meta Ray-Ban)中摄像头的眼镜,以解决日益增长的隐私问题。最初的方法探索了两种途径:通过光反射(“逆反射”)进行光学检测,以及通过蓝牙/Wi-Fi进行网络分析。 光学检测涉及使用红外LED和光电二极管,基于摄像头镜头的反射特性来识别它们。初步测试显示出区分摄像头反射峰值和一般反射的潜力,但实际应用中证明结果不一致且微弱,即使使用不同的波长也是如此。目前正在探索一种有规律的扫描方法以提高信号清晰度。 目前,**蓝牙低功耗 (BLE) 指纹识别是最有希望的方向。** 该眼镜能够在配对、开机以及偶尔在从保护壳中取出时可靠地检测到Ray-Ban,通过唯一的制造商和Service UUID(0x01AB & 0xFD5F)来识别它们。然而,检测正常使用过程中的持续通信仍然很困难,需要比当前硬件(ESP32)所能处理的更深入的数据包分析。计划进一步研究蓝牙经典流量,但这可能需要更复杂(且更昂贵)的硬件。 该项目仍在进行中,未来的工作将集中于完善光学检测的扫描模式,并改进BLE检测能力。

一位在Hacker News上的开发者正在进行“Ray-BANNED”项目,旨在检测Meta Ray-Ban智能眼镜是否在录像,以解决人们对隐藏摄像头使用的担忧。该项目利用两种方法:分析摄像头传感器的红外反射(效果不佳)和监控无线流量——特别是蓝牙低功耗(BLE)。 目前,该系统(使用ESP32构建)可以在配对、开机和从充电盒中取出眼镜时可靠地检测到眼镜,并通过声音提示发出信号。开发者的挑战是在眼镜*使用中*检测录像。 他们正在探索nRF52840芯片以进行更高级的BLE跟踪,但面临无法捕获初始连接事件的限制。蓝牙经典硬件成本太高。开发者正在寻求社区的建议和意见,以改进检测能力。项目的详细信息和照片可在GitHub上找到。
相关文章

原文

Glasses to detect smart-glasses that have cameras

I'm experimenting with 2 main approaches:

  • Optics: classify the camera using light reflections.
  • Networking: bluetooth and wi-fi analysis.

So far fingerprinting specific devices based on bluetooth (BLE) is looking like easiest and most reliable approach. The picture below is the first version, which plays the legend of zelda 'secret found' jingle when it detects a BLE advertisement from Meta Raybans.

I'm essentially treating this README like a logbook, so it will have my current approaches/ideas.

By sending IR at camera lenses, we can take advantage of the fact that the CMOS sensor in a camera reflects light directly back at the source (called 'retro-reflectivity' / 'cat-eye effect') to identify cameras.

This isn't exactly a new idea. Some researchers in 2005 used this property to create 'capture-resistant environments' when smartphones with cameras were gaining popularity.

There's even some recent research (2024) that figured out how to classify individual cameras based on their retro-reflections.

Now we have a similar situation to those 2005 researchers on our hands, where smart glasses with hidden cameras seem to be getting more popular. So I want to create a pair of glasses to identify these. Unfortunately, from what I can tell most of the existing research in this space records data with a camera and then uses ML, a ton of controlled angles, etc. to differentiate between normal reflective surfaces and cameras.

I would feel pretty silly if my solution uses its own camera. So I'll be avoiding that. Instead I think it's likely I'll have to rely on being consistent with my 'sweeps', and creating a good classifier based on signal data. For example you can see here that the back camera on my smartphone seems to produce quick and large spikes, while the glossy screen creates a more prolonged wave.

After getting to test some Meta Raybans, I found that this setup is not going to be sufficient. Here's a test of some sweeps of the camera-area + the same area when the lens is covered. You can see the waveform is similar to what I saw in the earlier test (short spike for camera, wider otherwise), but it's wildly inconsistent and the strength of the signal is very weak. This was from about 4 inches away from the LEDs. I didn't notice much difference when swapping between 940nm and 850nm LEDs.

So at least with current hardware that's easy for me to access, this probably isn't enough to differentiate accurately.

Another idea I had is to create a designated sweep 'pattern'. The user (wearing the detector glasses) would perform a specific scan pattern of the target. Using the waveforms captured from this data, maybe we can more accurately fingerprint the raybans. For example, sweeping across the targets glasses in a 'left, right, up, down' approach. I tested this by comparing the results of the Meta raybans vs some aviators I had lying around. I think the idea behind this approach is sound (actually it's light), but it might need more workshopping.

For prototyping, I'm using:

  • Arduino uno
  • a bunch of 940nm and 850nm IR LEDs
  • a photodiode as a receiver
  • a 2222A transistor

TODO:

  • experiment with sweeping patterns
  • experiment with combining data from different wavelengths
  • collimation?

This has been more tricky than I first thought! My current approach here is to fingerprint the Meta Raybans over Bluetooth low-energy (BLE) advertisements. But, I have only been able to detect BLE traffic during 1) pairing 2) powering-on. I sometimes also see the advertisement as they are taken out of the case (while already powered on), but not consistently.

The goal is to detect them during usage when they're communicating with the paired phone, but to see this type of directed BLE traffic it seems like I would first need to see the CONNECT_REQ packet which has information as to what which of the communication channels to hop between in sync. I don't think what I currently have (ESP32) is set up to do this kind of following.

For any of the bluetooth classic (BTC) traffic, unfortunately the hardware seems a bit more involved (read: expensive). So if I want to do down this route, I'll likely need a more clever solution here.

When turned on or put into pairing mode (or sometimes when taken out of the case), I can detect the device through advertised manufacturer data and service UUIDs. 0x01AB is a Meta-specific SIG-assigned ID (assigned by the Bluetooth standards body), and 0xFD5F in the Service UUID is assigned to Meta as well.

capture when the glasses are powered on:

[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']

IEEE assigns certain MAC address prefixes (OUI, 'Organizationally Unique Identifier'), but these addresses get randomized so I don't expect them to be super useful for BLE.

Here's some links to more data if you're curious:

TODO:


Thanks to Trevor Seets and Junming Chen for their advice in optics and BLE (respectively). Also to Sohail for lending me meta raybans to test with.

联系我们 contact @ memedata.com