Hacker News

WaveDigger: Dig into wireless signals to discover their physical locations

WaveDigger: 무선 신호로 Wi-Fi AP와 기지국 위치 찾기

WaveDigger는 BSSID와 LTE·5G NR 기지국 식별 정보를 입력해 무선 장비의 추정 위치를 지도에 표시하는 오픈소스 도구입니다. Apple의 WLOC API와 비공개 API를 분석한 연구를 활용하며, 기지국 좌표는 정확도가 낮을 수 있다는 지적도 나왔습니다.

AI 요약

WaveDigger는 Wi-Fi 액세스 포인트(AP)의 BSSID와 LTE·5G NR 기지국 정보를 검색해 추정 위치를 지도에 나타내는 웹 애플리케이션입니다. Next.js 15와 TypeScript로 만들었으며, 지도 시각화에는 deck.gl과 react-map-gl을 사용합니다. 호스팅 버전을 이용하거나 Node.js 24 이상 환경에서 직접 실행할 수 있습니다.

검색과 지도 기능

BSSID 검색창에는 콜론이나 하이픈을 넣은 MAC 주소, 구분 기호가 없는 형식 모두 입력할 수 있습니다. 앱이 입력값을 형식에 맞게 정리하고 검증한 뒤, Apple의 위치 데이터베이스에 해당 BSSID가 있으면 위치를 표시합니다. 새로 설치했거나 비공개인 AP는 데이터베이스에 없을 수 있습니다.

셀룰러 검색은 LTE의 MCC, MNC, TAC, Cell ID와 5G NR의 MCC, MNC, TAC, NCI를 받습니다. NR 검색 결과에는 목표 셀뿐 아니라 같은 클러스터에 속한 주변 NR 셀도 포함됩니다. 특정 Cell ID나 NCI 없이 TAC 안의 기지국을 둘러보는 기능도 있고, 검색 기록을 저장하거나 결과를 JSON·CSV로 내보낼 수도 있습니다.

Apple WLOC API 활용

BSSID 위치 조회는 Apple의 실제 WLOC API를 호출합니다. WaveDigger는 apple-corelocation-experiments 프로젝트가 공개한 protobuf 정의, API 요청·응답 형식과 좌표 인코딩 분석을 바탕으로 구현됐습니다. 요청은 Apple 서버의 https://gs-loc.apple.com/clls/wloc 엔드포인트로 보내며, 좌표 변환과 중국 지역용 엔드포인트도 처리합니다. Apple은 좌표를 소수점 아래 8자리 기준의 int64 값으로 전달합니다.

셀룰러 위치도 검색할 수 있지만, 댓글에서는 WLOC API가 반환하는 기지국 좌표가 대략적이라 위치 파악에 거의 쓸모없을 만큼 부정확할 수 있다는 지적이 나왔습니다. AP 좌표는 상대적으로 낫지만 정확도가 충분하지 않을 수 있습니다. 프로젝트는 GNU AGPL v3.0으로 배포하며, 수정한 버전을 네트워크 서비스로 운영하면 이용자에게 수정 소스 코드를 공개해야 합니다.

Hacker News 반응

  • @doublerabbit — 멋지네요. 제 hackslab과 업그레이드한 은박 모자와 잘 어울리겠습니다.
  • @oulipo — 흥미롭네요. Apple은 왜 기기에서 고정 인증서를 사용해 서버 요청을 제한하지 않을까요? 그러면 적어도 조회하려면 정식 iPhone이나 Mac이 필요할 텐데요.
    • @mcculley — 기기마다 고유한 인증서를 상정하시는 건가요? 누군가 복사하는 걸 어떻게 막을 수 있나요?
    • @BobbyTables2 — iOS 기기에 인증서와 키를 숨겨 두면 접근하기 꽤 어렵게 만드는 일은 Apple에 어렵지 않을 것 같습니다.
  • @drnick1 — Apple과 Google이 사람과 기기의 위치를 추적하는 데 BSSID를 악용한다는 사실을 알고 나서, 저는 매주 BSSID를 바꾸기 시작했습니다. Windows GUID나 Linux의 systemd machine-id처럼 하드웨어나 소프트웨어에 영구적으로 붙는 식별자는 결국 감시에 악용됩니다.
    • @S0und — 의도는 좋지만, 주변에서 아무도 그렇게 하지 않으니 별 효과는 없을 것 같습니다.
    • @skinfaxi — 기기마다 어떻게 조율하시나요?
    • @XorNot — 같은 장소에서 SSID만 매주 바뀌고 주변 네트워크는 그대로라면 오히려 더 쉽게 익명성이 드러날 수 있습니다. 대부분은 SSID를 바꾸지 않고 네트워크 장비도 옮기지 않습니다. 게다가 GPS와 클라우드 인터넷을 쓰는 스마트폰은 계속 들고 다니시나요?
  • @astrange — 지도 앱을 쓰는 사람들이 GPS를 처음 잡느라 몇 분씩 기다리지 않도록 한 것 아닌가요?
    • @gpm — 제 휴대전화는 외딴곳에서도 GPS 위치를 잡는 데 몇 분씩 걸리지 않습니다. 이론상 시간 정보도 없으면 그럴 수 있겠지만, 실제로는 2초보다 조금 더 걸리는 정도입니다.
    • @Fabricio20 — 그건 진짜 콜드 스타트는 아닌 것 같습니다. 드론용 GPS 모듈을 샀을 때는 처음 위성을 잡는 데 20분이나 걸렸습니다.
    • @gpm — 맞습니다. 진짜 콜드 스타트는 아니었습니다. 180일 안에 네트워크에 연결했고 위성 정보를 알고 있으며, 시간도 대략 20초 이내로 맞습니다. 휴대전화는 마지막으로 켠 위치와 가까울 거라고 가정할 수도 있습니다. 다만 Wi-Fi나 기지국을 쓰지 않는 현실적인 상황을 말한 것이었습니다. 휴대전화는 사실상 진짜 콜드 스타트를 겪을 일이 없습니다.
  • @luma — 2003년쯤 나온 SkyHook의 오픈 버전처럼 보이네요. 당시에는 유료 프로그램이 있었고, 외장 GPS 동글을 연결한 Windows Mobile 앱으로 Wi-Fi AP와 위치를 기록해 SkyHook에 올리면 가끔 수고비를 줬습니다. 저는 몇십 달러 벌었습니다.
    • @Mashimo — 워드라이빙으로 돈을 벌 수도 있었군요. 저는 독일 게시판에서 포인트만 받았습니다.
  • @anigbrowl — WIGLE이 하는 일과 같은 것 아닌가요?
    • @jcims — 기본적으로 비슷하지만 백엔드로 Apple 서비스를 씁니다. 언젠가는 접근이 끊길 것 같습니다.
    • @mcculley — Apple 기기에서도 쓰는 서비스인데 왜 끊길까요?
  • @bryancoxwell — WLOC API가 반환하는 기지국 좌표는 기지국 위치를 찾기에는 너무 대략적이라 거의 쓸모없다는 점은 알아둘 만합니다. AP 좌표는 더 낫지만 그래도 정확하지 않습니다.

원문: Hacker News / 번역·요약: Trawling