
지역 이웃의 블루투스 활동을 모니터링하세요
Bluetooth Neighborhood - 주변의 BLE 기기를 추적하고 트래픽 패턴을 분석합니다.
경고: 알파 소프트웨어
이 프로젝트는 초기 개발 단계에 있으며 프로덕션 사용에 적합하지 않습니다. 기능은 예고 없이 변경되거나, 작동이 중단되거나, 제거될 수 있습니다. 사용에 따른 책임은 사용자에게 있습니다. 수집된 데이터는 실험적인 것으로 취급해야 합니다.
필터링, 검색, 실시간 통계가 포함된 기기 목록을 보여주는 메인 대시보드
탭으로 구성된 설정 페이지 — Alerts, Operations, Groups, Security
프로젝트 정보와 기능 개요가 담긴 Intel 페이지
이 프로젝트는 Bluetooth 기기의 프라이버시 위험을 부각시킨 WhisperPair 취약점 (CVE-2025-36911)에서 영감을 받았습니다.
수천 개의 Bluetooth 기기가 항상 우리 주변에 있습니다: 휴대폰, 자동차, TV, 헤드폰, 보청기, 배달 차량 등. Bluehood는 이러한 기기를 수동적으로 감지하고 그 존재 패턴을 관찰하는 것이 얼마나 간단한지 보여줍니다.
충분한 데이터가 있으면 잠재적으로 다음과 같은 것이 가능합니다:
이러한 메타데이터는 기기와의 능동적인 상호작용 없이도 놀랍도록 사적인 정보를 드러낼 수 있습니다.
Bluehood는 Bluetooth 프라이버시에 대한 인식을 높이기 위한 교육용 도구입니다. 주말 프로젝트이지만, 그 시사점은 충분히 생각해볼 가치가 있습니다.
Bluehood는 다음과 같은 Bluetooth 스캐너입니다:
?를 눌러 확인)사전 요구 사항 — Linux 호스트 전용
Bluehood는 Linux Bluetooth 스택인 BlueZ를 통해 Bluetooth 어댑터와 통신합니다. 컨테이너를 시작하기 전에 호스트에 BlueZ가 설치되어 실행 중이어야 합니다 — Docker 이미지 자체에는 포함되어 있지 않습니다.
# Debian / Ubuntu (Ubuntu Server 포함) sudo apt install bluez sudo systemctl enable --now bluetooth # Arch Linux sudo pacman -S bluez bluez-utils sudo systemctl enable --now bluetooth호스트에 BlueZ가 없으면 다음과 같은 오류가 표시됩니다:
BLE scan error: [org.freedesktop.DBus.Error.ServiceUnknown] The name org.bluez was not provided by any .service files
# docker-compose.yml을 생성하거나 이 저장소에서 다운로드
# 그런 다음 Docker Compose로 시작
docker compose up -d
# 로그 보기
docker compose logs -f
Docker 이미지는 GitHub Container Registry에서 사용할 수 있습니다:
ghcr.io/dannymcc/bluehood:latest
웹 대시보드는 http://localhost:8080 에서 사용할 수 있습니다
sudo apt install bluez && sudo systemctl enable --now bluetooth)참고: 구형 어댑터(Bluetooth 2.x/3.x)는 BLE 스캔을 지원하지 않습니다. 어댑터가 BLE Central 역할 지원을 갖추지 못한 경우 다음과 같이 표시됩니다:
No Bluetooth adapters with BLE 'central' role found.
참고: Docker는 Bluetooth 접근을 위해 호스트 네트워킹과 함께 권한 모드로 실행됩니다. 이는 BLE 스캔에 필요합니다.
| Variable | Default | Description |
|---|---|---|
PUID | 1000 | 컨테이너 사용자의 UID — 바인드 마운트 사용 시 호스트 사용자(id -u)와 일치하도록 설정 |
PGID | 1000 | 컨테이너 사용자의 GID — 바인드 마운트 사용 시 호스트 그룹(id -g)과 일치하도록 설정 |
TZ | UTC | 컨테이너 시간대 (예: Europe/London) |
BLUEHOOD_ADAPTER | auto | BLE 스캔용 Bluetooth 어댑터 (예: hci0) |
BLUEHOOD_CLASSIC_ADAPTER | BLUEHOOD_ADAPTER와 동일 | Classic Bluetooth 스캔용 별도 어댑터 (예: hci1). 다른 어댑터로 설정하면 BLE와 Classic 스캔이 동시에 실행됩니다. |
BLUEHOOD_DATA_DIR | /data | 데이터베이스 저장 디렉터리 |
BLUEHOOD_PORT | 8080 | 웹 대시보드 포트. 컨테이너는 호스트 네트워킹을 사용하므로 8080이 사용 중이면 포트 매핑 대신 이 값을 변경하세요 |
BLUEHOOD_NTFY_SERVER | https://ntfy.sh | 푸시 알림용 ntfy 서버의 기본 URL; 자체 호스팅 인스턴스를 가리키도록 설정. Settings 페이지에 저장된 값이 우선합니다 |
BLUEHOOD_METRICS_PORT | disabled | Prometheus 메트릭 포트 (예: 9199) |
BLUEHOOD_HEARTBEAT_URL | disabled | 하트비트 체크인을 POST할 URL (예: healthchecks.io 또는 uptime-kuma 푸시 URL) |
BLUEHOOD_HEARTBEAT_INTERVAL | 300 | 하트비트 체크인 간격(초) |
BLUEHOOD_PRUNE_DAYS | 0 (disabled) | 저장 공간 확보를 위해 N일보다 오래된 목격 기록 자동 삭제 |
BLUEHOOD_PRUNE_MIN_SIGHTINGS | 0 (disabled) | 0보다 클 때, 오래된 목격 행만 정리하는 대신 오래된 기기 전체(BLUEHOOD_PRUNE_DAYS보다 오래되고 총 목격 횟수가 N 미만)를 정리; 감시 중인 기기는 절대 정리되지 않음 |
Bluehood는 Central 역할 지원을 갖춘 BLE 지원 Bluetooth 어댑터(Bluetooth 4.0 이상)가 필요합니다. 구형 Bluetooth 2.x/3.x 어댑터는 BLE 스캔을 지원하지 않으며 작동하지 않습니다.
어댑터가 BLE Central 역할을 지원하지 않으면 Bluehood는 다음과 같이 종료됩니다:
No Bluetooth adapters with BLE 'central' role found
bluetoothctl show로 어댑터의 기능을 확인하고 지원되는 역할에서 central을 찾을 수 있습니다.
# 시스템 종속성 설치 (Arch Linux)
sudo pacman -S bluez bluez-utils python-pip
# 시스템 종속성 설치 (Debian/Ubuntu)
sudo apt install bluez python3-pip
# 복제 및 설치
git clone https://github.com/dannymcc/bluehood.git
cd bluehood
pip install -e .
Bluetooth 스캔에는 상승된 권한이 필요합니다. 다음 중 하나를 선택하세요:
root로 실행 (가장 간단):
sudo bluehood
Python에 capability 부여:
sudo setcap 'cap_net_admin,cap_net_raw+eip' $(readlink -f $(which python))
bluehood
systemd 서비스 사용 (상시 가동에 권장):
sudo cp bluehood.service /etc/systemd/system/
sudo systemctl daemon-reload
sudo systemctl enable --now bluehood
Bluehood는 Docker 없이 macOS에서 네이티브로 작동합니다. macOS는 BlueZ 대신 CoreBluetooth를 사용하며, 이는 bleak 라이브러리가 자동으로 처리합니다.
# 저장소 복제
git clone https://github.com/dannymcc/bluehood.git
cd bluehood
# 가상 환경 생성
python3 -m venv .venv
source .venv/bin/activate
# 설치
pip install -e .
# 실행
python -m bluehood.daemon
웹 대시보드는 http://localhost:8080 에서 사용할 수 있습니다
참고: 첫 실행 시 macOS가 Bluetooth 접근을 허용하라는 메시지를 표시합니다. 스캔이 작동하려면 이 권한을 부여해야 합니다.
# 웹 대시보드와 함께 시작 (기본 포트 8080)
bluehood
# 다른 포트 지정 (또는 BLUEHOOD_PORT 설정)
bluehood --port 9000
# 특정 Bluetooth 어댑터 사용
bluehood --adapter hci1
# BLE 및 Classic 스캔에 별도 어댑터 사용 (동시)
bluehood --adapter hci0 --classic-adapter hci1
# 사용 가능한 어댑터 나열
bluehood --list-adapters
# 웹 대시보드 비활성화 (스캔만)
bluehood --no-web
# 포트 9199에서 Prometheus 메트릭 익스포터 활성화
bluehood --metrics-port 9199
대시보드는 다음을 제공합니다: