Skip to content
KitploitKITPLOIT
도구익스플로잇블로그
Log in
제출
도구익스플로잇블로그
제출

해킹, 침투 테스트 및 사이버 보안 도구를 당신의 보안 무기고에!

Kitploit은 해킹, 사이버 보안 및 침투 테스트 도구 디렉토리입니다. 최신 프로젝트 업데이트를 발견하여 취약점을 찾고, 시스템을 분석하고, 테스트를 자동화하고, 보안을 강화하세요.

피드문의개인정보© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
yj_nearbyglasses — 주변에 있는 스마트 글라스를 감지하여 경고합니다 | Kitploit
도구/GitHubGitHub/yjeanrenaud/yj_nearbyglasses
Android SecurityDefensive ToolsBluetooth SecurityiOS SecurityMobile SecurityPrivacy
GitHubyjeanrenaud/yj_nearbyglasses

yj_nearbyglasses

주변에 있는 스마트 글라스를 감지하여 경고합니다

저장소 보기
2.0k931186일 전Kitploit 검토 완료

인기

모두 보기 →

커뮤니티에서 가장 많이 사용되는 도구를 찾아보세요.

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유
# yj_nearbyglasses
근처의 스마트 안경을 감지하여 경고하려는 시도입니다.
# ⚠ 경고! ⚠ 
*nearby-glasses-alert.pages.dev*는 제 프로젝트와 **관련이 없습니다**. Play 스토어와 App 스토어의 많은 앱이 *Nearby Glasses*와 비슷하게 보이거나 심지어 매우 유사한 이름을 사용합니다. 이들은 이름을 가로채 빠른 이익을 얻으려는 것으로 보입니다. 이들은 AGPL 라이선스를 준수하지 않으며, 아무런 보증도 제공하지 않습니다. 저는 이를 지지하지 않습니다.
---

<img width="135" height="300" align ="right" alt="Nearby Glasses 클래식 스크린샷" src="https://assets.kitploit.com/production/public/readmes/12083/e76b27744afcd0893efe1992c440e28c6606e742fa390f1b2c9a79a34e5600d1.png" />
<img width="135" height="300" align ="right" alt="Nearby Glasses 카나리 모드 스크린샷" src="https://assets.kitploit.com/production/public/readmes/12083/29c66ac6f3e7327f73700e7241c0ca93860a8f5cc3efdfdc619b8ee91873473a.png" />

# ⚠ 경고! ⚠ 
**상대방이 은밀한 감시 장치를 착용하고 있다고 생각하여 누군가를 괴롭히는 행위는 형사 범죄가 될 수 있습니다. 이는 그러한 장치를 사용하는 것보다 더 중대한 범죄일 수도 있습니다. 이 문제에 관한 현지 법률에 대해 법률 자문을 구하시기 바랍니다.**
---
## ⚠ 누구도 괴롭히지 마십시오 ⚠
---

# Nearby Glasses 
*Nearby Glasses*라는 이 앱은 단 하나의 목적을 가지고 있습니다: 근처의 스마트 안경을 찾아 경고하는 것입니다.

<a href="https://play.google.com/store/apps/details?id=ch.pocketpc.nearbyglasses" target="_blank"><img width="239" height="71" alt="Google Play에서 받기" src="https://assets.kitploit.com/production/public/readmes/12083/a7dbeba4623dd255798dd1159e543cdbeeb9e43faa6db7f859b0f9ed3699932c.png" /></a> <a href="https://apt.izzysoft.de/packages/ch.pocketpc.nearbyglasses" taget="_blank"><img height="71" src="https://assets.kitploit.com/production/public/readmes/12083/75659b864e0f38bedce979c2097721b9beae838a06434eaacb0e93815468735a.png" alt="IzzyOnDroid에서 받기" /></a> <a href="https://apps.obtainium.imranr.dev/redirect?r=obtainium://add/https://github.com/yjeanrenaud/yj_nearbyglasses/"><img width="239" height="71" alt="Obtainium에서 받기" src="https://assets.kitploit.com/production/public/readmes/12083/33e5685bdfff51e02830f2a18b5df5df986e73c2c8ae0f7cf031ebc791e5f771.png"/></a> <a href="https://f-droid.org/en/packages/ch.pocketpc.nearbyglasses/"><img src="https://raw.githubusercontent.com/yjeanrenaud/yj_nearbyglasses/main/img/get-it-on-fdroid.png?raw=true" alt="F-Droid에서 받기" width="213" /></a> <a href="https://apps.apple.com/us/app/nearby-glasses-original/id6761056896"><img width="213" height="71" alt="App Store에서 다운로드" src="https://assets.kitploit.com/production/public/readmes/12083/a6fa504b048d52b4e9f5108021dce33af0d96b8b78c34095072971f4a34471fa.png" /></a>


# 목차
 * [Nearby Glasses](#Nearby-Glasses)
  * [왜?](#why)
  * [어떻게?](#how)
  * [기능](#features)
    * [RSSI란?](#whats-rssi)
  * [iOS와 Android](#ios-and-android)
  * [사용법](#usage)
  * [할 일](#todos)
  * [기술 해결주의?](#tech-solutionism)
  * [소스에서 빌드](#build-from-source)
  * [감사의 말](#shoutouts)
  * [라이선스 및 크레딧](#license-and-credits)

이 앱은 스마트 안경이 근처에 있을 때 알려줍니다. 이 앱은 스마트 안경이 전송하는 블루투스 데이터의 회사 식별자를 사용합니다. 따라서 오탐(예: VR 헤드셋)이 발생할 가능성이 있습니다. 그러므로 근처에서 안경을 착용한 사람에게 다가갈 때는 주의하시기 바랍니다. 이 앱의 경고에도 불구하고 상대방은 그저 일반 안경을 쓰고 있을 수도 있습니다.
        
앱의 작성자 [Yves Jeanrenaud](https://yves.app)는 이 앱과 그 기능성에 대해 어떠한 책임도 지지 않습니다. 사용에 따른 위험은 본인 부담입니다. 기술적 설계상, Bluetooth LE 기기 감지는 때때로 예상대로 작동하지 않을 수 있습니다. 저는 정식 개발자가 아닙니다. 이 모든 것은 제 여가 시간에, 스스로 익힌 지식으로 작성되었습니다.<br/>
**오탐(false positive)이 발생할 가능성이 높습니다.** 즉, *Nearby Glasses* 앱이 실제로는 같은 제조사의 VR 헤드셋이나 그 회사의 다른 제품이 근처에 있는데도 스마트 안경이 근처에 있다고 알려줄 수 있습니다. 또한 근처의 스마트 안경을 놓칠 수도 있습니다. 다시 말하지만: 저는 전문 개발자가 아닙니다.<br/>
그러나 이 앱은 **무료이자 오픈 소스**이며, 코드를 검토하고, 변경하고, 재사용할 수 있습니다([라이선스](https://github.com/yjeanrenaud/yj_nearbyglasses/blob/main/LICENSE) 하에).<br/>
*Nearby Glasses* 앱은 사용자에 대한 어떠한 세부 정보도 저장하지 않으며, 사용자나 휴대폰에 대한 어떠한 정보도 수집하지 않습니다. 텔레메트리도, 광고도, 그 밖의 다른 성가신 요소도 없습니다. Play Store를 통해 앱을 설치하는 경우, Google이 사용자에 대해 무언가를 알 수 있고 일부 통계를 수집할 수 있습니다. 그러나 앱 자체는 그렇지 않습니다. <br/>
로그 파일을 저장(내보내기)하기로 선택한 경우, 이는 전적으로 사용자의 선택이며 해당 데이터가 어디로 가는지에 대한 책임도 사용자에게 있습니다. 로그는 로컬에서만 기록되며 누구와도 자동으로 공유되지 않습니다. 로그에는 민감한 데이터가 거의 포함되지 않으며, 실제로는 마주친 BLE 기기의 제조사 ID 코드만 포함됩니다.<br/>
<br/>
**극도의 주의를 기울여 사용하십시오!** 앞서 언급했듯이, 감지된 스마트 안경이 실제로 근처에 있다는 보장은 없습니다. 기술적으로(BLE 광고 수준에서) 스마트 안경과 유사하게 보이는 다른 기기일 수 있습니다.<br/>
성급하게 행동하지 마십시오. **어떤 메시지에 대해서든 행동하기 전에 생각하십시오**(이 앱에서 온 메시지뿐만 아니라).<br/>
<br/>
## 왜?
- 스마트 안경은 용납할 수 없는 침해이며, 동의를 무시하는 끔찍한 기술로서, 이미 다양하고 수많은 똑같이 역겨운 '콘텐츠'를 만드는 데 사용되고 있다고 생각하기 때문입니다. [1](https://www.404media.co/border-patrol-agent-recorded-raid-with-metas-ray-ban-smart-glasses/), [2](https://www.404media.co/metas-ray-ban-glasses-users-film-and-harass-massage-parlor-workers/)
- 일부 스마트 안경에는 녹화가 진행 중임을 나타내는 작은 LED가 있습니다. 그러나 이는 쉽게 비활성화될 수 있으며, 제조사들은 이를 방지한다고 주장하면서도 전혀 책임을 지지 않습니다(기술은 수십 년째 그런 경향이 있습니다). [3](https://www.404media.co/how-to-disable-meta-rayban-led-light/)
- 스마트 안경은 이전에도 즉석 얼굴 인식에 사용된 적이 있으며 [4](https://www.404media.co/someone-put-facial-recognition-tech-onto-metas-smart-glasses-to-instantly-dox-strangers/), 보도에 따르면 기본 제공될 예정입니다 [5](https://www.nytimes.com/2026/02/13/technology/meta-facial-recognition-smart-glasses.html). 이는 많은 사람들을 위험에 빠뜨립니다.
- 그들의 데이터는 AI 학습에 사용되며, 이는 사람들이 녹화물을 검토하고 아마도 가장 사적인 통찰까지 보게 된다는 것을 의미합니다 [6](https://www.svd.se/a/K8nrV4/metas-ai-smart-glasses-and-data-privacy-concerns-workers-say-we-see-everything)
- 이 앱이 누군가에게 유용하기를 바랍니다.
  
## 어떻게?
- 이는 다소 휴리스틱한 접근 방식입니다. BLE는 무작위화된 MAC을 사용하고 OSSID도 안정적이지 않으며 서비스 공지의 UUID도 안정적이지 않기 때문에, 블루투스 비콘을 그냥 스캔할 수는 없습니다. 그리고 더 심각하게, 예를 들어 Meta 같은 일부는 독점 블루투스 서비스를 사용하고 UUID가 지속적이지 않으므로, ~~현재로서는 통신되는 기기 이름에만 의존할 수 있습니다~~.
- 현재 **가장 실행 가능한 접근 방식**은 [Bluetooth SIG 할당 번호 저장소](https://www.bluetooth.com/specifications/assigned-numbers/)에서 비롯됩니다. 이에 따르면, 제조사 회사 이름이 BLE 비콘의 패킷 광고 헤더(ADV)에 숫자 코드로 나타납니다.
 - BLE 광고 프레임은 다음과 같습니다:
```
Frame 1: Advertising (ADV_IND)
Time:  0.591232 s
Address: C4:7C:8D:1E:2B:3F (Random Static)
RSSI: -58 dBm

Flags:
  02 01 06
    Flags: LE General Discoverable Mode, BR/EDR Not Supported

Manufacturer Specific Data:
  Length: 0x1A
  Type:   Manufacturer Specific Data (0xFF)
  Company ID: 0x058E (Meta Platforms Technologies, LLC)
  Data: 4D 45 54 41 5F 52 42 5F 47 4C 41 53 53

Service UUIDs:
  Complete List of 16-bit Service UUIDs
  0xFEAA
```
- [Bluetooth SIG 할당 번호 저장소](https://github.com/yjeanrenaud/yj_nearbyglasses/blob/main/www.bluetooth.com/specifications/assigned-numbers)에 따르면, 다음 회사 ID를 사용할 수 있습니다:
  - `0x01AB`는 `Meta Platforms, Inc. (구 Facebook)`
  - `0x058E`는 `Meta Platforms Technologies, LLC`
  - `0x0D53`은 `Luxottica Group S.p.A` (Meta Ray-Ban을 제조하는 회사)
  - `0x03C2`는 `Snapchat, Inc.` (SNAP Spectacles를 만드는 회사)
  - `0x05D6`은 `Zhuhai Jieli Technology Co` (Rogbird VisionPro와 Rollme VistaView를 만드는 회사)
  이들은 **변경 불가능하며 필수**입니다. 물론 Meta와 다른 제조사들도 Bluetooth가 탑재된 다른 제품들, 예를 들어 VR 헤드셋을 보유하고 있으므로 해당 ID를 사용합니다. 따라서 앱의 스캔 과정에서 이러한 회사 ID 코드를 사용하면 오탐이 발생하기 쉽습니다. 하지만 주변에서 Occulus Rift를 착용한 사람이 보이지 않고 그들이 숨을 수 있는 건물도 없다면, 스마트 안경일 가능성이 높습니다.
- 페어링 중에 스마트 안경은 보통 제품명을 송출하므로, 이를 통해서도 스캔할 수 있습니다. 하지만 현장에서 이를 보게 되는 경우는 드뭅니다. 바, 펍, 거리 등에서 스마트 안경을 사용할 의도가 있는 사람들은 보통 사전에 준비를 합니다.
- 앱이 충분한 신호 강도(아래 RSI 참조)를 가진 Bluetooth Low Energy (BLE) 기기를 인식하면 경고 메시지를 푸시합니다. 이는 그에 맞게 대응하는 데 도움이 됩니다.
- 또한 `rayban`, `ray-ban`, `HeyCyan` 등 브로드캐스트되는 기기 이름도 스캔합니다. `HeyCyan`은 [다양한 브랜드의 스마트 안경을 위한 유명한 SDK](https://github.com/ebowwa/HeyCyanSmartGlassesSDK)입니다. 이러한 *HeyCyan* 기기 중에는 ALDI와 Hofer(오스트리아)에서 판매하는 Nilox Smart AI Glasses도 있습니다. 이를 강화하기 위해 해당 안경의 소프트웨어 측에 고정된 서비스 식별자인 `primary_UUID`(`7905FFF0-B5CE-4E99-A40F-4B1E122D00D0`)도 찾습니다. 향후 변경될 수 있지만, 변경되면 구형 기기를 사용할 수 없게 되므로 가능성은 낮으며, 따라서 그때는 스캔 루틴에 UUID를 더 추가하기만 하면 됩니다.
## 기능
- *Nearby Glasses* 앱은 스마트 안경이 근처에 있을 때(즉, 위에 언급된 회사 ID 중 하나에 해당하는 BLE 기기) 알림을 표시합니다
- **근처**란 RSSI(신호 강도)가 주어진 값 이하임을 의미합니다: 기본값은 -75 dBm입니다. 이 기본값은 중간 거리와 적당한 수준의 신호에 해당합니다.
  ### RSSI란 무엇인가요?
- RSSI 값에 대해 조금 설명하겠습니다:<br/>
RSSI는 Received Signal Strength Indication의 약자입니다. 이 값은 무선 통신 애플리케이션의 수신 전계 강도를 나타내는 지표입니다. [Wikipedia에 이에 관한 꽤 좋은 문서](https://en.wikipedia.org/wiki/Received_signal_strength_indicator)가 있습니다.
간단히 말해, RSSI는 주로 다음에 따라 달라집니다:<br/>
  - 기기 송신 전력
  - 안테나 설계
  - 벽과 장애물
  - 신호를 흡수하는 인체
  - 반사와 간섭
  - 기기 방향<br/>
하지만 일반적인 BLE(Bluetooth Low Energy) 환경에서 RSSI 대략적 거리(개방 공간)는 다음과 같습니다: <br/>
  - -60 dBm ~ 1 – 3 m<br/>
  - -70 dBm ~ 3 – 10 m<br/>
  - -80 dBm ~ 10 – 20 m<br/>
  - -90 dBm ~ 20 – 40 m<br/>
  - -100 dBm ~ 30 – 100+ m 또는 신호 손실에 가까움<br/>
실내에서는 거리가 종종 훨씬 더 짧습니다.<br/>
RSSI는 대략 다음 공식에 따라 감소합니다<br/>
    `RSSI ≈ -10 * n * log10(distance) + constant`<br/>
- 따라서 기본 RSSI 임계값인 -75 dBm은 개방 공간에서 약 10~15미터, 실내나 사람이 많은 공간에서는 3~10미터에 해당합니다. 그런 식으로 스마트 안경을 착용한 사람을 발견할 좋은 기회를 얻게 됩니다.
- *Nearby Glasses*는 내보낼 수 있는(텍스트 파일로) 선택적 디버그 로그를 표시하며 복사&붙여넣기 기능을 제공합니다. 이는 고급 사용자(너드)와 추가 디버깅을 위한 것입니다.
- *Settings*에서 로그 길이와 디버깅(모든 스캔 항목 표시 또는 ADV 프레임만 표시)을 지정할 수 있습니다.
- 또한 **company ID**를 16진수 값 문자열로 입력할 수 있습니다. 예: `0x01AB,0x058E,0x0D53`. 이는 내장 감지를 재정의하므로, 새로운 값에 대해 알림이 표시됩니다.
- 더 나은 지속성을 위해 Android의 *Foreground Service*를 사용합니다. 필요하지 않다면 *Settings*에서 이를 비활성화할 수 있습니다.
- *Settings*의 *Notification Cooldown*은 두 경고 사이에 경과해야 하는 시간을 지정합니다. 기본값은 10000 ms, 즉 10초입니다. 이는 카나리아에도 적용됩니다. 예를 들어 10초는 다시 진정되기 전까지 10초 동안 경계 상태를 유지한다는 의미입니다.
- 이제 조금 더 현지화되었습니다: <img src="https://raw.githubusercontent.com/yjeanrenaud/yj_nearbyglasses/HEAD/img/canary_hide.svg" align="right" alt="날개 아래에 숨은 카나리아 그림" height="100" width="100">
   - 영어
   - 독일어
   - 스위스 독일어
   - 프랑스어
   - 스페인어
   - 중국어
   - 이탈리아어
   - 포르투갈어(브라질)
   - 러시아어
   - 터키어
   - 추후 더 추가될 예정입니다 ([여러분의 언어로 기여하여 이 프로젝트를 지원하세요!](https://github.com/yjeanrenaud/yj_nearbyglasses/issues/3))
- 이제 앱 아이콘의 배경이 더 이상 투명하지 않습니다
- 이제 UUID도 스캔합니다
- *Nearby Glasses*는 이제 다크 모드(시스템 설정을 통해)를 지원합니다
- edge-to-edge 레이아웃 문제는 [v1.0.4](https://github.com/yjeanrenaud/yj_nearbyglasses/releases)부터 수정되었습니다.
- AGPL 3.0에 따라 새로 라이선스가 부여되었습니다
- CLA를 포기하기로 결정했습니다. 협업 프로젝트에 대해 저보다 더 잘 아는 사람들과 몇 차례 논의한 끝에, 이것이 불필요한 단계라는 통찰을 얻었습니다.
- AGPL 3.0을 더 엄격히 준수하기 위해 이제 아이콘이 약간 달라졌습니다.
## iOS 및 Android
- 마침내 3주 만에 iOS 포트가 제공됩니다. 대부분의 iPhone 및 iPad에서 작동하며, 심지어 iOS 16까지의 구형 기기에서도 작동합니다. [소스 코드와 프로젝트 파일도 제공됩니다](https://github.com/yjeanrenaud/yj_nearbyglasses/blob/main/iOS). 코드는 투박하고 비정통적입니다. 많은 접근 방식이 빠르고 대충 이루어졌지만(예: Android 현지화의 json 파일을 재사용함), 지금까지는 작동합니다. *Nearby Glasses*는 [Apple App Store](https://apps.apple.com/us/app/nearby-glasses-original/id6761056896)에서 이용할 수 있습니다. (표절 앱들과 구별하기 위해 original이라는 이름이 붙었습니다.) .ipa 파일은 [releases](https://github.com/yjeanrenaud/yj_nearbyglasses/releases)에서 사이드로딩용으로 제공됩니다.
  iOS 앱은 백그라운드에서 작동하지 않는데, iOS 제한으로 인해 BTLE ADV를 지속적으로 스캔하기 위해 `ForegroundServices`와 유사한 것을 사용할 방법을 찾지 못했기 때문입니다. 따라서 iOS의 *Nearby Glasses*에서는 *Canary Mode*만 사용할 수 있습니다. 저보다 Swift와 iOS를 더 잘 아신다면(그럴 가능성이 높습니다), 기여해 주세요!
- 이 저장소에 Android와 iOS 앱 코드가 모두 포함되어 있으므로 폴더를 재구성했습니다. 따라서 [/iOS](https://github.com/yjeanrenaud/yj_nearbyglasses/blob/main/iOS)와 [/Android](https://github.com/yjeanrenaud/yj_nearbyglasses/blob/main/Android)가 있습니다.

## 사용법

- 다운로드할 APK는 [Releases](https://github.com/yjeanrenaud/yj_nearbyglasses/releases)를 참조하거나 Google Play Store를 사용하세요. F-Droid 및/또는 Accrescent는 추후 제공될 수 있습니다.
<img width="135" height="300" align ="right" alt="Nearby Glasses 스크린샷: 설정" src="https://assets.kitploit.com/production/public/readmes/12083/71a0271ff9172cad52e8d83ed9a29ba43b509c7b250be2a0254a5a4371ee3401.png" />

<a href="https://play.google.com/store/apps/details?id=ch.pocketpc.nearbyglasses" target="_blank"><img width="239" height="71" alt="Get It On Google Play" src="https://assets.kitploit.com/production/public/readmes/12083/a7dbeba4623dd255798dd1159e543cdbeeb9e43faa6db7f859b0f9ed3699932c.png" /></a> <a href="https://apps.apple.com/us/app/nearby-glasses-original/id6761056896"><img width="213" height="71" alt="Download on the App Store" src="https://assets.kitploit.com/production/public/readmes/12083/a6fa504b048d52b4e9f5108021dce33af0d96b8b78c34095072971f4a34471fa.png" /></a>
1. 앱을 설치하고([Releases](https://github.com/yjeanrenaud/yj_nearbyglasses/releases) 또는 현재로서는 [Google Play](https://play.google.com/store/apps/details?id=ch.pocketpc.nearbyglasses)에서, 또는 [Apple App Store](https://apps.apple.com/us/app/nearby-glasses-original/id6761056896)에서) 실행하세요
2. *Start Scanning* 버튼을 누르세요
3. Bluetooth를 활성화하고(아직 활성화되지 않은 경우) 주변 기기에 접근하기 위한 권한을 부여하세요. 일부 Android 버전에서는 (대부분 버전 13 이전에) 위치 정보 접근 권한도 부여해야 합니다. *Nearby Glasses*는 위치 정보를 가지고 아무것도 하지 않습니다. 믿기지 않는다면 [코드](https://github.com/yjeanrenaud/yj_nearbyglasses/tree/main/app)를 확인해 보세요
4. 스캔이 시작되지 않는 경우, 사용 중인 휴대폰의 *Settings* 메뉴에서 *Foreground Service*를 활성화해야 할 수 있습니다(아래 참조)
5. 준비가 끝났습니다! 근처에서 스마트 안경이 감지되면 알림이 나타납니다. *Stop Scanning*을 누르거나 앱을 완전히 종료할 때까지 알림이 계속됩니다
7. 메뉴(오른쪽 상단의 톱니바퀴)에서 몇 가지 *Settings*를 설정할 수 있습니다:
   1. *Enable Foreground Service*: 이를 통해 Android가 앱을 일시 중지하여 알림을 보내지 못하게 하는 것을 방지합니다. 활성화된 상태로 두는 것을 권장합니다
   2. *RSSI threshold*: 이 음수 값은 *Nearby Glasses*가 알림을 발생시키는 기준이 되는 기기의 거리를 지정합니다. 기술적으로는 신호가 얼마나 강하게 수신되는지를 나타냅니다. 0에 가까울수록 신호가 더 좋으며, 따라서 휴대폰과 스마트 안경 사이의 거리가 더 가깝다는 뜻입니다. [설명과 지침은 위의 RSSI를 참조하세요](#how). -75로 두는 것을 권장합니다
   3. *Enable Notifications*: 이 기능을 비활성화하고 싶지는 않을 것입니다 
   4. Canary Mode. 이것이 새로운 기본값입니다. 이를 사용하면 근처에 스마트 안경이 있다는 시스템 알림을 받지 않고, 대신 주변에 스마트 안경이 없음을 나타내는 카나리아가 표시됩니다. iOS 앱은 기술적 제약으로 인해 카나리아 모드만 지원합니다. <img src="https://raw.githubusercontent.com/yjeanrenaud/yj_nearbyglasses/HEAD/img/canary.svg" alt="Drawing of a canary" width="100" height="100" alignt="left"> 
   5. *Notification/Canary Cooldown*: 여기에서 근처에서 발견된 스마트 안경에 대해 얼마나 많은 알림을 받을지, 또는 카나리아가 얼마나 오래 숨을지 지정합니다. 기본값으로 10초(10000ms)를 선택했습니다. 이렇게 하면 알림을 놓치지 않으면서도 너무 자주 방해받지 않고 배터리도 너무 빨리 소모되지 않습니다
   6. *Enable Log Display*: 이를 비활성화하면 배터리를 절약할 수 있습니다. 카나리아 모드에서는 비활성화됩니다.
   7. *Debug*: 로그 표시 영역에서 일치하는 BLE 프레임 외에 더 많은 정보를 보려면 필요합니다. 작동 여부를 확인하는 데 유용합니다. 카나리아 모드에서는 비활성화됩니다.
   8. *Max log lines*: 로그가 얼마나 길어질 수 있는지입니다. 200이 배터리 수명과 로그 사용성(저 같은 덕후들에게는) 사이의 좋은 균형인 것 같습니다. 카나리아 모드에서는 비활성화됩니다.
   9. *BLE ADV only*: 가독성을 높이기 위해 다른 Bluetooth LE 프레임을 로그에서 제외합니다. 카나리아 모드에서는 비활성화됩니다.
   10. *Override Company IDs*: 원한다면 *Nearby Glasses*가 위에 지정된 것 외의 다른 기기에 대해서도 알림을 보내도록 할 수 있습니다. 적어도 저에게는 디버깅에 유용합니다. 필요 없거나 어떻게 사용해야 할지 모르겠다면 비워 두세요
   11. 모든 설정은 저장되며 즉시 적용됩니다. 돌아가려면 뒤로 가기 버튼이나 제스처를 사용하세요
8. 내보내기 기능을 사용하면 앱 로그를 텍스트 파일로 공유할 수 있습니다. 저 같은 덕후들을 위해
9. 로그 표시 영역을 탭하여 로그를 복사하여 붙여넣을 수도 있습니다

## ToDos
- **이제 실제 환경에서 작동합니다!** 인증된 스마트 안경을 착용한 사람들과 함께 테스트를 진행할 수 있었습니다. 특별히 Lena에게 감사드립니다!
- 다운로드할 APK는 [Releases](https://github.com/yjeanrenaud/yj_nearbyglasses/releases)를 참고하세요.
- [*Nearby Glasses*를 Google Play에도](https://play.google.com/store/apps/details?id=ch.pocketpc.nearbyglasses) 게시했습니다. 다만 Google Play를 피하는 분들을 위해 항상 [GitHub의 릴리스](https://github.com/yjeanrenaud/yj_nearbyglasses/releases)와 [다른 곳](https://yves.app/nearbyglasses/latest.apk)에도 게시할 것입니다.

---

- 오탐을 무시 목록에 추가하는 옵션을 추가하세요. 아마 알림에서?
- 저는 BT나 Android 전문가가 전혀 아닙니다. 제가 배운 바로는, BLE 트래픽을 스니핑하여 스마트 안경의 통신을 더 깊이 파고들 수도 있습니다. 그렇게 하면 기기가 BT 사양에 따라 동작하는 것에 의존하지 않고도 암호화된 트래픽 전송에 대한 휴리스틱을 사용하여 오탐 없이 활용할 수 있을 것입니다. 하지만 저는 10년 넘게 BT 트래픽 패킷을 들여다보지 않았습니다. ADV 프레임이 기억나서 다행입니다... 이 부분에 도움을 주실 수 있다면 정말 감사하겠습니다!
---
- 스마트 안경의 **더 많은 제조사 ID**를 추가하세요. 현재는 Meta, Oakley, Snap입니다. 카메라가 있는 스마트 안경 목록도 도움이 될 것입니다. 이를 위한 [ISSUE를 열어두었으니](https://github.com/yjeanrenaud/yj_nearbyglasses/issues/56), 다른 녹화 스마트 안경을 발견했을 때 로그(제 생각에는 완전히 안전합니다)를 보내주시면 **도움이 될 것입니다**
- 2026년 3월 24일 기준으로 iOS 버전도 사용 가능합니다.
- **Google Pixel 기기**의 **레이아웃 문제**는 버전 1.0.3에서 수정된 것으로 보입니다. 상태 표시줄과 뒤섞여서 여전히 메뉴에 접근할 수 없다면, 최대한 빨리 살펴보겠습니다. 그동안 화면을 가로 모드로 전환하고 *시계 방향(오른쪽)으로* 회전해 보세요.

## 기술 해결주의?
이런 이야기를 하기에 이상한 자리라는 것을 압니다만, 잠시 들어주세요. 이것이 기술에 의해 증폭된 사회적 문제에 대한 기술적 해결책이라는 점을 인지하고 있습니다.
기술 해결주의를 조장하려는 것도 아니고, 사람들이 거짓된 안심을 느끼게 하려는 것도 아닙니다. 이것은 여전히 불완전한 접근 방식이며 아마 항상 그럴 것입니다. 이 앱이 존재한다고 해서 모든 것이 좋아진 것은 아닙니다. 감시 기술과 프라이버시 침해를 억제하기 위해서는 더 나은 해결책이 필요합니다.

## 소스에서 빌드하기
*Nearby Glasses*는 오픈 소스이므로 소스 코드에서 직접 앱을 빌드할 수도 있습니다. 이렇게 하면 APK에 다른 라이브러리가 포함되지 않으며 원하는 것을 얻을 수 있습니다.

이 앱은 다음을 기반으로 빌드됩니다:
- Gradle Wrapper: 9.3.1
- Android Gradle Plugin: 8.13.2
- Kotlin: 1.9.22
- compileSdk: 36
- targetSdk: 36
- minSdk: 26
- 제품 플레이버 없음
- 저장소: google() 및 mavenCentral()만 사용
- Google Services 또는 Firebase 플러그인 없음

### 요구 사항

- **JDK 17** (필수 — 프로젝트가 Java 17을 대상으로 함)
- **Android SDK Platform 35** 설치됨
  - compileSdk = 35
  - targetSdk = 35
- Git
### APK 단계별 빌드
```bash
#Verify Java version:

 $java -version
#It must report Java 17.

#Get the source code
 $git clone https://github.com/yjeanrenaud/yj_nearbyglasses
 $cd yj_nearbyglasses

#Build Debug
 $./gradlew clean assembleDebug

#Build Release (with your own signature cert)
 $./gradlew clean assembleRelease

#Build unsigned Release for IzzyOnDroid / F-Droid
 $./gradlew clean izziFdroid 

#Run and Test
 $./gradlew test lint
```

## 감사의 글
- 경고 관련 도움을 준 [@[email protected]](https://social.tchncs.de/@vfrmedia)에게
- 카나리 모드 아이디어를 제시한 [@[email protected]](https://meow.social/@mewsleah)에게
- 라이선스에 대한 제 오해를 지적해 준 [@pojntfx](https://github.com/pojntfx)에게
- UX 디자인 팁을 준 [Sarah-Jane B.](https://www.linkedin.com/in/sarah-janeb/)에게
- 스페인어 번역을 맡은 Lena Radau에게
- 피드백과 iOS 앱 테스트를 해 준 Marcel L.에게
- 현장 테스트를 해 준 Lena Hansen에게
- 그 외 앱에 이미 피드백을 제공해 주신 모든 분들께!

## 라이선스 및 크레딧
**앱 아이콘**: 아이콘은 <a href="https://www.svgrepo.com/svg/434090/glasses" title="Glasses SVG Vector">Glasses SVG Vector by sensa, licensed under CC0 1.0 Universal</a>을 기반으로 합니다.<br/><br/><br/>
**라이선스**: 이 앱 *Nearby Glasses*는 [AGPL-3.0 라이선스](https://github.com/yjeanrenaud/yj_nearbyglasses/blob/main/LICENSE)에 따라 라이선스가 부여됩니다.<br/>
**카나리**: 카나리 그림은 제가 직접 제작했으며 [CC BY-SA 4.0](https://creativecommons.org/licenses/by-sa/4.0/)에 따라 라이선스가 부여됩니다. 원본 svg 파일([InkScape](https://inkscape.org/)로 제작)로 제공했으며, 앱 리소스용으로 당연히 xml로 변환했습니다<br/>
도구 다운로드