
Óculos para detectar smart-glasses que têm câmeras. Ray-BANNED
Óculos para detectar óculos inteligentes que possuem câmeras
Estou experimentando 2 abordagens principais:
Até agora, identificar dispositivos específicos com base no bluetooth (BLE) parece ser a abordagem mais fácil e confiável. A imagem abaixo é a primeira versão, que toca o jingle 'segredo encontrado' de The Legend of Zelda quando detecta um anúncio BLE dos Meta Raybans.

Estou essencialmente tratando este README como um diário de bordo, então ele terá minhas abordagens/ideias atuais.
Ao enviar IR para as lentes das câmeras, podemos aproveitar o fato de que o sensor CMOS em uma câmera reflete a luz diretamente de volta à fonte (chamado de 'retrorefletividade' / 'efeito olho de gato') para identificar câmeras.

Isso não é exatamente uma ideia nova. Alguns pesquisadores em 2005 usaram essa propriedade para criar 'ambientes resistentes à captura' quando os smartphones com câmeras estavam ganhando popularidade.
Há até algumas pesquisas recentes (2024) que descobriram como classificar câmeras individuais com base em suas retroreflexões.
Agora temos uma situação semelhante à daqueles pesquisadores de 2005 em mãos, em que óculos inteligentes com câmeras ocultas parecem estar ficando mais populares. Então quero criar um par de óculos para identificá-los. Infelizmente, pelo que posso perceber, a maioria das pesquisas existentes nessa área registra dados com uma câmera e depois usa ML, muitos ângulos controlados, etc. para diferenciar superfícies refletivas normais de câmeras.
Eu me sentiria bem bobo se minha solução usasse sua própria câmera. Então vou evitar isso. Em vez disso, acho provável que terei que contar com consistência nas minhas 'varreduras' e criar um bom classificador com base nos dados do sinal. Por exemplo, você pode ver aqui que a câmera traseira do meu smartphone parece produzir picos rápidos e grandes, enquanto a tela brilhante cria uma onda mais prolongada.


Depois de testar alguns Meta Raybans, descobri que essa configuração não será suficiente. Aqui está um teste de algumas varreduras da área da câmera + a mesma área quando a lente está coberta. Você pode ver que a forma de onda é semelhante à que vi no teste anterior (pico curto para a câmera, mais largo caso contrário), mas é extremamente inconsistente e a força do sinal é muito fraca. Isso foi a cerca de 10 cm dos LEDs. Não notei muita diferença ao alternar entre LEDs de 940nm e 850nm.

Outra ideia que tive é criar um 'padrão' de varredura designado. O usuário (vestindo os óculos detectores) realizaria um padrão de varredura específico no alvo. Usando as formas de onda capturadas desses dados, talvez possamos identificar os raybans com mais precisão. Por exemplo, varrendo os óculos do alvo em uma abordagem 'esquerda, direita, cima, baixo'. Testei isso comparando os resultados dos Meta raybans com alguns aviadores que tinha por perto. Acho que a ideia por trás dessa abordagem é sólida (na verdade, é leve), mas pode precisar de mais ajustes.

Para prototipagem, estou usando:

TODOs de IR:
experimentar padrões de varredura
focar na informação espectral, tentar combinar dados de alguns comprimentos de onda diferentes
colimação?
trevor (autor do artigo sobre classificação de câmeras) mencionou em novembro que, se os óculos tiverem LiDAR, eu poderia simplesmente procurar por esses pulsos. os ray-bans não parecem ter isso, mas outros óculos inteligentes podem ter. este blog postado em dezembro tem algumas pesquisas interessantes sobre detectar câmeras de iphone com essa abordagem: https://www.atredis.com/blog/2025/11/20/designing-a-passive-lidar-detection-sensor
Isso tem sido mais complicado do que eu pensava! Minha abordagem atual aqui é identificar os Meta Raybans por meio de anúncios Bluetooth low-energy (BLE). Mas, só consegui detectar tráfego BLE durante 1) pareamento 2) inicialização. Às vezes também vejo o anúncio quando eles são retirados do estojo (já ligados), mas não de forma consistente.

O objetivo é detectá-los durante o uso, quando estão se comunicando com o telefone pareado, mas para ver esse tipo de tráfego BLE direcionado, eu precisaria primeiro ver o pacote CONNECT_REQ, que contém informações sobre para qual dos canais de comunicação saltar em sincronia (intervalo de salto, incremento de salto). Isso pode ser feito com um nRF52840 + o firmware ble-sniffer, mas isso não nega o fato de que você ainda precisa ver essa conexão inicial para começar a farejar.
Um pouco mais de contexto sobre BLE:
Quando ligados ou colocados em modo de pareamento (ou às vezes quando retirados do estojo), consigo detectar o dispositivo por meio dos dados do fabricante anunciados e UUIDs de serviço. Essas são partes dos dados de anúncio.
0x01AB é um ID atribuído pela SIG específico da Meta (atribuído pelo órgão de padrões Bluetooth), e 0xFD5F no UUID de serviço também é atribuído à Meta. No código você pode ver os outros números que estou usando para identificação.
Para qualquer tráfego bluetooth clássico (BTC), infelizmente o hardware parece um pouco mais complexo (leia-se: caro). Então, se eu quiser seguir por esse caminho, provavelmente precisarei de uma solução mais engenhosa.