Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
bluehood — 监视您本地社区的蓝牙活动 | Kitploit
工具/GitHubGitHub/dannymcc/bluehood
OSINT (开源情报)侦察蓝牙安全物联网安全网络映射信息收集无线安全隐私保护威胁情报学习与教育异常检测
GitHubdannymcc/bluehood
1.1k73429天前Kitploit 审核通过

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

bluehood

监视您本地社区的蓝牙活动

查看仓库

Bluehood

Bluetooth Neighborhood - 追踪您所在区域的 BLE 设备并分析流量模式。

"Buy Me A Coffee"


警告:Alpha 软件

本项目处于早期开发阶段,尚未准备好用于生产环境。功能可能随时更改、中断或删除,恕不另行通知。使用风险自负。收集的数据应视为实验性质。


截图

Dashboard 主仪表板,显示设备列表,支持筛选、搜索和实时统计

Settings 选项卡式配置页面 — 提醒、操作、分组和安全

About Intel 页面,展示项目信息和功能概览

为什么?

本项目灵感来源于 WhisperPair 漏洞 (CVE-2025-36911),该漏洞凸显了蓝牙设备中的隐私风险。

我们身边始终有成千上万的蓝牙设备:手机、汽车、电视、耳机、助听器、送货车辆等等。Bluehood 展示了被动检测这些设备并观察其出现模式是多么简单。

只要有足够的数据,您可能能够:

  • 了解某人通常在什么时间遛狗
  • 检测到访客何时到达某个房屋
  • 根据设备存在情况识别日常活动规律

这些元数据可以在不与设备进行任何主动交互的情况下,揭示出令人惊讶的个人信息。

Bluehood 是一个教育工具,旨在提高人们对蓝牙隐私的认识。 它只是一个周末项目,但其影响值得我们思考。

什么是 Bluehood?

Bluehood 是一个蓝牙扫描器,能够:

  • 持续扫描 附近的蓝牙设备(包括 BLE 和经典蓝牙)
  • 识别设备 厂商(MAC 地址查询)和 BLE 服务 UUID
  • 分类设备 到不同类别(手机、音频、可穿戴设备、物联网、车辆等)
  • 追踪存在模式 随时间变化,提供每小时/每日热力图
  • 过滤噪声 来自随机化 MAC 地址(隐私轮换设备)
  • 分析设备相关性 发现同时出现的设备
  • 发送推送通知 当被监视的设备到达或离开时
  • 提供 Web 仪表板 用于监控和分析

功能特性

扫描

  • 双模式扫描:蓝牙低功耗 (BLE) 和经典蓝牙
  • MAC 地址厂商查询(本地数据库 + 在线 API 回退)
  • BLE 服务 UUID 指纹识别,实现精确设备分类
  • 经典蓝牙设备类解析
  • 随机化 MAC 过滤(从主视图中隐藏)

设备管理

  • 将设备标记为“被监视”用于追踪个人设备
  • 将设备组织到自定义分组中
  • 为已知设备设置友好名称
  • 为任意设备添加自定义备注/标签
  • 设备类型检测(手机、音频、可穿戴设备、物联网、车辆等)

分析

  • 30 天存在时间线 可视化
  • 信号强度 (RSSI) 历史 图表,显示 7 天数据
  • 每小时和每日活动热力图 显示设备何时活跃
  • 模式分析(“工作日,傍晚 5PM-9PM”)
  • 驻留时间分析,显示设备在范围内总时间
  • 设备相关性 检测,发现同时出现的设备
  • 邻近区域(即时、近、远、遥远),基于信号强度
  • 按 MAC、厂商或名称搜索
  • 按日期范围搜索历史查询

通知(通过 ntfy.sh)

  • 推送通知到手机/桌面
  • 检测到新设备时通知
  • 被监视设备返回时通知
  • 被监视设备离开时通知
  • 可配置的到达/离开阈值

操作

  • 心跳检查 — 定期向正常运行监控服务(例如 Uptime Kuma、Healthchecks.io)发送 POST 状态
  • 存储轮换 — 自动删除早于可配置天数的目击记录
  • 两者均可从 Web UI 或通过环境变量配置

Web 界面

  • 紧凑/详细视图切换,满足不同显示偏好
  • 截图模式 用于安全共享时模糊 MAC 和名称
  • 键盘快捷键 供高级用户使用(按 ? 查看)
  • CSV 导出 设备数据
  • 设备分组 用于组织相关设备
  • 可选身份验证 保护访问安全

如何使用?

使用 Docker 快速开始(推荐)

先决条件 — 仅限 Linux 主机

Bluehood 通过 BlueZ(Linux 蓝牙协议栈)与您的蓝牙适配器通信。BlueZ 必须在主机上安装并运行后才能启动容器 — Docker 镜像本身不包含 BlueZ。

root@kitploit:~
# 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

root@kitploit:~
# 创建 docker-compose.yml 或从本仓库下载一份
# 然后用 Docker Compose 启动
docker compose up -d

# 查看日志
docker compose logs -f

Docker 镜像托管在 GitHub Container Registry 上:

root@kitploit:~
ghcr.io/dannymcc/bluehood:latest

Web 仪表板将位于 http://localhost:8080

Docker 要求

  • Docker 和 Docker Compose
  • 配备 支持 BLE 的蓝牙适配器 的 Linux 主机(蓝牙 4.0+),并支持 中央 角色
  • 主机上已安装并运行 BlueZ(sudo apt install bluez && sudo systemctl enable --now bluetooth)

注意:较旧的适配器(蓝牙 2.x/3.x)不支持 BLE 扫描。如果您的适配器缺少 BLE 中央角色支持,您将看到:No Bluetooth adapters with BLE 'central' role found。

注意:Docker 以特权模式运行并使用主机网络以访问蓝牙。这是 BLE 扫描所必需的。

Docker 环境变量

蓝牙适配器要求

Bluehood 需要一个 支持 BLE 的蓝牙适配器(蓝牙 4.0 或更高版本)并具备 中央 角色支持。较旧的蓝牙 2.x/3.x 适配器不支持 BLE 扫描,无法使用。

如果您的适配器不支持 BLE 中央角色,Bluehood 将退出并显示:

root@kitploit:~
No Bluetooth adapters with BLE 'central' role found

您可以使用 bluetoothctl show 检查适配器能力,查看支持的角色中是否包含 central。

手动安装(Linux)

root@kitploit:~
# 安装系统依赖(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 .

蓝牙权限

蓝牙扫描需要提升的权限。选择以下之一:

  1. 以 root 用户运行(最简单):

    root@kitploit:~
    sudo bluehood
    
  2. 为 Python 授权能力:

    root@kitploit:~
    sudo setcap 'cap_net_admin,cap_net_raw+eip' $(readlink -f $(which python))
    bluehood
    
  3. 使用 systemd 服务(推荐用于长期运行):

    root@kitploit:~
    sudo cp bluehood.service /etc/systemd/system/
    sudo systemctl daemon-reload
    sudo systemctl enable --now bluehood
    

macOS

Bluehood 可在 macOS 上原生运行,无需 Docker。macOS 使用 CoreBluetooth 而非 BlueZ,这由 bleak 库自动处理。

root@kitploit:~
# 克隆仓库
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

Web 仪表板将位于 http://localhost:8080

注意:首次运行时,macOS 会提示您允许蓝牙访问。您必须授予此权限才能进行扫描。

使用方法

root@kitploit:~
# 启动并打开 Web 仪表板(默认端口 8080)
bluehood

# 指定不同端口
bluehood --port 9000

# 使用特定蓝牙适配器
bluehood --adapter hci1

# 分别为 BLE 和经典蓝牙使用不同适配器(并发扫描)
bluehood --adapter hci0 --classic-adapter hci1

# 列出可用适配器
bluehood --list-adapters

# 禁用 Web 仪表板(仅扫描)
bluehood --no-web

# 启用 Prometheus 指标导出器(端口 9199)
bluehood --metrics-port 9199

Web 仪表板

仪表板提供:

  • 设备列表,包含类型图标、厂商、MAC、名称、目击次数、最后出现时间
  • 设备筛选,按类型(手机、音频、物联网等)和被监视状态筛选
  • 搜索,按 MAC、厂商或名称搜索
  • 日期范围搜索,查找在特定时间窗口内出现过的设备
  • 选项卡式设置页面 — 提醒、操作、分组和安全(可通过哈希直接链接,例如 /settings#operations)
  • 设备详情 模态框,包含:
    • BLE 服务指纹
    • 每小时/每日活动热力图
    • 30 天存在时间线
    • 信号强度 (RSSI) 历史图表
    • 模式分析
    • 驻留时间统计
    • 相关设备列表
    • 邻近区域指示器
    • 操作员备注字段
    • 分组分配

键盘快捷键

截图模式

从侧边栏启用截图模式,可在分享截图前模糊敏感数据:

  • MAC 地址仅显示前两个八位组(例如 AA:BB:XX:XX:XX:XX)
  • 友好名称仅显示前两个字符(例如 Da********)
  • CSV 导出同样遵循截图模式

推送通知

Bluehood 可通过 ntfy.sh 发送推送通知,ntfy.sh 是一个免费、开源的通知服务。

  1. 在 ntfy.sh 上创建一个主题(例如 bluehood-myname-alerts)
  2. 使用 ntfy 应用在手机上订阅该主题
  3. 在 Bluehood 设置中输入您的主题名称并启用通知
  4. 配置哪些事件触发通知:
    • 检测到新设备
    • 被监视设备返回(在缺席后)
    • 被监视设备离开(X 分钟内未出现)

数据存储

数据存储在 ~/.local/share/bluehood/bluehood.db(SQLite)。

使用环境变量覆盖位置:

  • BLUEHOOD_DATA_DIR - 数据文件目录
  • BLUEHOOD_DB_PATH - 数据库文件的直接路径

注意:心跳和清理设置可以从 Web UI(设置 > 操作)或通过环境变量配置。GUI 值优先于环境变量。

工作原理

设备分类

Bluehood 使用多种信号对设备进行分类(按优先级顺序):

  1. BLE 服务 UUID - 最准确(心率 = 可穿戴设备,A2DP = 音频等)
  2. 设备名称模式 - "iPhone"、"Galaxy"、"AirPods" 等
  3. 厂商 OUI 查询 - Apple、Samsung、Bose 等

随机化 MAC

现代设备为隐私而随机化其 MAC 地址。Bluehood:

  • 检测随机化 MAC(本地管理位)
  • 将其从主设备列表中隐藏(对追踪无用)
  • 显示隐藏的随机化设备计数

模式分析

Bluehood 分析目击时间戳以检测模式:

  • 一天中的时段:早晨、下午、傍晚、夜间
  • 一周中的天数:工作日、周末
  • 频率:持续、每日、定期、偶尔、罕见

示例模式:"每天,傍晚(5PM-9PM)"、"工作日,上午(8AM-12PM)"

设备相关性

Bluehood 检测在可配置的时间窗口内经常一起出现的设备。这可以揭示:

  • 同一人拥有的设备(手机 + 智能手表)
  • 一起出行的人
  • 共享日程的设备

邻近区域

基于 RSSI 信号强度,设备被分类到邻近区域:

  • 即时(> -50 dBm):非常近,几米内
  • 近(-50 到 -60 dBm):附近,同一房间
  • 远(-60 到 -70 dBm):较远,相邻房间
  • 遥远(< -70 dBm):远处,检测范围的边缘

驻留时间分析

通过分析目击之间的间隔,追踪设备在范围内停留的时间。可配置的间隔阈值(默认 15 分钟)决定何时开始新的“会话”。

Prometheus 指标

Bluehood 可以公开指标供 Prometheus 抓取。通过设置 BLUEHOOD_METRICS_PORT 环境变量或 --metrics-port CLI 标志启用。

root@kitploit:~
# 通过环境变量
export BLUEHOOD_METRICS_PORT=9199

# 通过 CLI
bluehood --metrics-port 9199

指标服务地址为 http://host:9199/metrics。

可用指标

Grafana 仪表板

项目中包含一个可供导入的 Grafana 仪表板文件 grafana/bluehood-dashboard.json。您可以通过 Grafana UI(仪表板 > 导入)或 API 导入:

root@kitploit:~
curl -X POST "http://localhost:3000/api/dashboards/db" \
  -H "Authorization: Bearer <your-api-key>" \
  -H "Content-Type: application/json" \
  -d "{\"dashboard\": $(cat grafana/bluehood-dashboard.json), \"overwrite\": true}"

故障排除

没有发现设备

  • 确保您的适配器支持 BLE(蓝牙 4.0+)且具备中央角色 — 较旧的适配器无法工作
  • 确保蓝牙适配器已启用:bluetoothctl power on
  • 检查适配器是否被检测到:bluehood --list-adapters
  • 如果权限拒绝,尝试使用 sudo 运行

Docker 问题

BLE scan error: org.freedesktop.DBus.Error.ServiceUnknown / The name org.bluez was not provided

主机上未安装或未运行 BlueZ。修复方法:

root@kitploit:~
sudo apt install bluez          # Debian/Ubuntu
sudo systemctl enable --now bluetooth
docker compose restart

一般检查清单:

  • 确保 主机 上已安装 BlueZ(不仅在容器内)
  • 验证蓝牙服务正在运行:systemctl status bluetooth
  • 确认您的适配器可见:bluetoothctl list

贡献

欢迎贡献!请通过 GitHub 提交 issue 或 PR。

贡献者

  • @martinh2011 (Martin Hüser) - MAC 厂商缓存改进
  • @hatedabamboo (Kirill Solovei) - 浅色主题支持
  • @krnltrp - Web UI 增强
  • @jacobpretorius (Jacob Pretorius) - CSV 导出 JS 修复 (#14), 点击打开设置 (#16)
  • @unqualifiedkoala - 文档化 BLE 适配器要求
  • @dazzag24 - 报告 macOS 地址格式问题
  • @floese (W.A.Flozart) - Firefox 双击修复 (#29)
  • @GeiserX (Sergio Fernández) - Prometheus 指标导出器 (#35), 非阻塞厂商数据库修复 (#37), 双适配器扫描 (#33), 使用 rfkill 的健壮扫描恢复 (#40)

许可证

MIT 许可证 - 详情请见 LICENSE。

免责声明

本工具仅用于教育目的。在监控蓝牙设备时,请注意您所在司法管辖区的隐私法律。作者不对任何滥用本软件的行为承担责任。


由 Danny McClelland 创建

下载工具
变量默认值描述
PUID1000容器用户的 UID — 当使用绑定挂载时,设置为与主机用户一致(id -u)
PGID1000容器用户的 GID — 当使用绑定挂载时,设置为与主机组一致(id -g)
TZUTC容器时区(例如 Europe/London)
BLUEHOOD_ADAPTERauto用于 BLE 扫描的蓝牙适配器(例如 hci0)
BLUEHOOD_CLASSIC_ADAPTER与 BLUEHOOD_ADAPTER 相同用于经典蓝牙扫描的独立适配器(例如 hci1)。当设置为不同适配器时,BLE 和经典扫描同时运行。
BLUEHOOD_DATA_DIR/data数据库存储目录
BLUEHOOD_METRICS_PORT禁用Prometheus 指标端口(例如 9199)
BLUEHOOD_HEARTBEAT_URL禁用发送心跳检查的 URL(例如 healthchecks.io 或 uptime-kuma 的推送 URL)
BLUEHOOD_HEARTBEAT_INTERVAL300心跳检查间隔(秒)
BLUEHOOD_PRUNE_DAYS0(禁用)自动删除早于 N 天的目击记录以节省存储空间
键操作
/聚焦搜索框
r刷新设备列表
c切换紧凑视图
w切换选定设备的监视状态
Esc关闭模态框
?显示键盘快捷键
指标类型描述
bluehood_scans_totalCounter完成的扫描周期总数
bluehood_scan_errors_totalCounter扫描错误数(标签:scan_type)
bluehood_sightings_totalCounter记录的设备目击总数
bluehood_new_devices_totalCounter发现的新唯一设备数
bluehood_last_scan_devicesGauge上次扫描中的设备数(标签:scan_type)
bluehood_devices_totalGauge数据库中的唯一设备数(标签:bt_type)
bluehood_devices_activeGauge过去 5 分钟内出现过的设备数
bluehood_devices_watchedGauge被监视的设备数量
bluehood_devices_ignoredGauge被忽略的设备数量
bluehood_scan_duration_secondsHistogram扫描周期持续时间
bluehood_device_rssi_dbmHistogramBLE 设备的 RSSI 分布
bluehood_build_infoInfo版本信息