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

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

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

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

工具目录

分类

查看所有分类
Loading categories
WhisperPair — 我们攻击 WhisperPair(CVE-2025-36911)的官方参考实现与漏洞验证,该攻击影响 Google 的 Fast Pair 协议。 | Kitploit
工具/GitHubGitHub/kuleuven-cosic/whisperpair
蓝牙安全漏洞分析漏洞利用无线安全渗透测试硬件与物联网安全论文与研究学习与教育
GitHubkuleuven-cosic/whisperpair

WhisperPair

我们攻击 WhisperPair(CVE-2025-36911)的官方参考实现与漏洞验证,该攻击影响 Google 的 Fast Pair 协议。

查看仓库
801033个月前Kitploit 审核通过

最受欢迎

查看全部 →

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

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享
网站

WhisperPair:Google Fast Pair 测试框架

Venue License: CC BY 4.0 OS Hardware Website

一个实用的工具,用于测试 Google Fast Pair 设备是否容易受到配对、账户绑定和协议级攻击。

本仓库提供 WhisperPair 测试框架,这是一款用于评估 Google Fast Pair 设备安全性的工具。它面向研究人员和从业人员,既可用于复现我们的研究结果,也可用于测试他们自己的设备。

有关项目概述、受影响设备及更多背景信息,请访问我们的网站。

本仓库还包含论文 One Tap to Hijack Them All: A Security Analysis of the Google Fast Pair Protocol(发表于 IEEE S&P 2026)的配套材料。

引用

论文完整版可在此处获取。如果您觉得这项工作有用,请考虑引用该论文:

root@kitploit:~
@inproceedings{whisperpair2026,
  title     = {One Tap to Hijack Them All: A Security Analysis of the Google Fast Pair Protocol},
  author    = {Duttagupta, Sayon and Wyns, Seppe and Antonijević, Nikola and Singelée, Dave and Preneel, Bart},
  booktitle = {2026 IEEE Symposium on Security and Privacy (S\&P)},
  year      = {2026},
}

免责声明与负责任使用

提供这些材料是为了使我们评估结果可复现,并帮助研究人员进行防御性测试。请仅在已获授权的安全研究和防御性验证中使用这些材料,并且仅限用于您拥有或已获得明确测试许可的设备。由于本仓库中的代码展示了消费类配件中的漏洞,请勿在未获得明确书面许可的情况下将其用于攻击第三方设备。作者仅在项目团队自有设备或经知情同意捐赠的设备上进行了所有实验。运行这些工具即表示您同意仅将其用于防御性研究、复现我们的结果或设备自测。

安装与要求

[!NOTE] 摘要: 请确保您有一台带有蓝牙适配器的 Linux 机器,并且已安装 Node.js(LTS)和 pnpm。
您可以通过运行 bash build.sh,然后运行 bash start.sh,在同一台机器上同时运行 UI 和服务器。

本仓库包含一个测试框架,用于评估目标设备是否正确实现了 Google Fast Pair 的某些安全要求。 该框架可以测试配对状态谓词是否正确实现、是否拒绝重用 nonce 的消息,以及设备是否容易受到无效曲线攻击。 该框架由一个后端服务器和一个前端 Web UI 组成。

[!NOTE] 如果您在寻找攻击的具体实现: ./toolkit-server/src/fast-pair-service.ts 和 ./toolkit-server/src/protocol.ts 包含了攻击实现和 Fast Pair 协议。

该工具集由两个组件组成:server 和 UI。
服务器需要在 Linux 系统上运行,并且已在 Raspberry Pi 4 上完成测试。
UI 是一个 Next.js 前端,用于控制服务器,可以在任何支持 Node.js 的环境下运行。 UI 必须能够通过网络连接到服务器。

我们使用 Raspberry Pi OS Lite (64-bit) (6.12.47+rpt-rpi-v8) 和 BlueZ 5.82 版本对测试框架进行了测试。

前提条件

一台安装了 BlueZ、Node.js 和 pnpm 的 Linux 机器。

Node.js

我们强烈建议使用当前长期支持(LTS)版本的 Node.js (v24.14.0)。
我们已确保该工具集在该版本下正常工作。 较旧的版本最高可能支持到 v18,但更旧的版本很可能会崩溃或产生意外结果。

nvm.sh

如果您使用 nvm 管理已安装的 Node.js 版本,则必须确保 root 用户也可以访问由 nvm 管理的 Node.js 版本。
正如这篇 StackOverflow 帖子所解释的,您可能需要创建一个新的符号链接。

root@kitploit:~
# Source - https://stackoverflow.com/a/40078875
# Posted by SimpleJ, modified by community. See post 'Timeline' for change history
# Retrieved 2026-03-30, License - CC BY-SA 4.0

sudo ln -s "$NVM_DIR/versions/node/$(nvm version)/bin/node" "/usr/local/bin/node"
sudo ln -s "$NVM_DIR/versions/node/$(nvm version)/bin/npm" "/usr/local/bin/npm"
sudo ln -s "$NVM_DIR/versions/node/$(nvm version)/bin/npx" "/usr/local/bin/npx"

[!NOTE] 要运行服务器,您只需链接 node。

如果 Node.js 同时通过外部包管理器安装,sudo 可用的版本可能与 nvm 使用的版本不同。
您可以通过比较 node -v 和 sudo node -v 的输出来检查。
虽然我们推荐 Node.js LTS v24,但服务器在 v18 之前应该都能正常运行。

pnpm

如果已安装 Node.js v24 LTS,您应该可以使用以下命令启用 pnpm:

root@kitploit:~
corepack enable

其他工具

该测试框架还需要 hcitool 和 l2ping。
根据您的 Linux 发行版,hcitool 可能不可用。您可能需要安装 bluez-deprecated-tools。
在撰写本文时(2025 年 10 月 1 日),最新的 Raspberry Pi OS Lite 版本仍预装了该工具。

如果蓝牙适配器未通电,服务器将尝试使用 rfkill 将其打开。
测试 Audio Switch 扩展需要 rfcomm。

[!NOTE] 服务器会在启动时检查这些工具的可用性。 有关可能不可用的功能的更多信息,将显示在控制台中。

复现结果需要对易受攻击的设备进行物理访问。
请注意,大多数供应商已针对 WhisperPair 发布了软件更新,因此您可能需要固件版本过时的设备。
有关我们在评估中使用的设备的更多信息,请参阅选择设备。

快速安装

如果您想在同一台(Linux)机器上运行 UI 和服务器,可以使用 build.sh 和 start.sh 脚本。
首先,使用以下命令安装所需依赖并构建组件:

root@kitploit:~
bash build.sh

确保蓝牙已启用:

root@kitploit:~
sudo rfkill unblock bluetooth

然后,使用以下命令运行 UI 和服务器:

root@kitploit:~
bash start.sh

现在,UI 应可通过 http://localhost:3000 访问。

在不同主机上运行 UI 和服务器

您可以在不同主机上运行 UI 和服务器。
这样,您可以在 Linux 机器上运行服务器,同时在本地运行 UI。
虽然不建议这样做,但您可以按以下步骤操作:

  1. 确保 Linux 机器上存在 toolkit-server 目录
  2. 运行 bash build.sh 构建 toolkit-server
  3. 更新 toolkit-ui 目录中的 .env 文件,将 SERVER_URL 变量设置为服务器 URL。 您可以运行 bash update_server_url.sh <YOUR_URL> 来自动更新 .env 文件。
  4. 运行 bash build.sh 构建 toolkit-ui
  5. 运行 bash start.sh 启动 toolkit-server
  6. 运行 bash start.sh 启动 toolkit-ui

现在,UI 应可通过 http://localhost:3000 访问。

手动设置服务器

除了使用 build.sh 和 start.sh 脚本之外,您也可以手动构建和启动服务器。 有关这些步骤的详细说明,请参阅 toolkit-server README

手动设置 UI

除了使用 build.sh 和 start.sh 脚本之外,您也可以手动构建和启动 UI。 有关这些步骤的详细说明,请参阅 toolkit-ui README

使用方法

选择设备

您需要有一个支持 Fast Pair 的配件才能执行攻击和使用该工具集。
我们评估了来自 16 家供应商的 25 款设备,如下表所示。 如果您拥有其中一款设备,并且其固件自 2025 年 9 月以来未更新,那么您可以复现我们的结果。

您也可以使用该工具集评估我们未测试过的设备。
但是,根据目标设备蓝牙芯片组的可靠性,您可能会遇到一些意外错误。

在执行攻击时,请确保您知道目标设备是否处于配对模式。
某些攻击要求设备_不_处于配对模式,否则可能会产生误报。
其他攻击要求设备处于配对模式,否则可能无法生效。

如果您在寻找支持 Fast Pair 的设备,可以使用 Model IDs 列表 查看所有已通过 Fast Pair 认证的设备。

设备不在测试集中 警告消息

如果您选择的设备不在我们的测试集中,UI 将显示警告消息。
该消息基于 Model ID 显示,而同一设备的 Model ID 可能因颜色和地区而异。
例如,蓝色的 Sony WH-1000XM6 耳机与黑色的 Sony WH-1000XM6 耳机使用的 Model ID 不同。

由于这些设备很可能具有相同的固件(即使 Model ID 不同),您可以放心地忽略此警告消息。

未找到 Model ID 为 <number> 的设备 错误消息

由于 Fast Pair gRPC API 实施了更严格的速率限制,某些模型数据请求可能返回成功的响应,但主体为空。 这会导致 UI 显示 未找到 Model ID 为 <number> 的设备。
如果您确定输入的 Model ID 存在,请等待几分钟后重试。

[!NOTE] 我们测试集中设备的模型数据已包含在本仓库中,并将从缓存中读取。 评估这些设备不需要向 gRPC 服务发起 API 调用。 请注意,同一系列中的设备可能具有不同的 Model ID。有关更多信息,请参阅设备不在测试集中警告消息。

UI 手册

The toolkit UI

UI 将在启动时尝试连接到服务器。
连接成功后,屏幕右下角将显示“Connected to the server”消息。

评估设备是否易受攻击需要三个步骤:发现设备、设置其 Model ID,以及运行攻击。

1. 发现设备

该测试框架会持续扫描蓝牙低功耗(BLE)设备,并显示在屏幕左侧。 广播 Fast Pair 数据的设备显示在顶部。 在设备上点击“Select”后,设备详细信息将显示在屏幕右侧。

2. 设置 Model ID

运行论文中描述的测试需要为设备设置 Model ID。 如果设备公开了 Fast Pair GATT 特性,则在设备详细信息中会显示“Read Model ID”按钮。 点击此按钮将尝试读取 Model ID。

请注意,许多设备并未正确实现该特性,会返回无效的 Model ID。 或者,您也可以按“Set Model ID”按钮并手动输入值来手动设置设备的 Model ID。 可以选择我们测试期间评估过的设备,也可以输入自定义值。 本仓库根目录中包含一份完整的 Fast Pair 兼容设备列表。

一旦设置了 Model ID,设备详细信息将显示有关该设备的元数据。

3. 运行攻击

要运行攻击,请点击设备详细信息窗格中的“Attack”按钮。 共实现了三种攻击:配对状态谓词执行、nonce 重用和无效曲线攻击。 如果您已经连接到设备,选中“Reconnect”复选框将在执行攻击前断开并重新连接到设备。

配对状态谓词执行检查提供了一些额外的配置选项:

  • Switch back:如果支持,则尝试使用 Audio Switch 功能切换回原始主机。
  • Bond:如果未执行配对状态谓词,则执行 BR/EDR 配对。
  • Write account key:在配对过程后写入(硬编码的)账户密钥。

攻击进行时,日志将实时显示在 UI 中。 攻击完成后,将显示其持续时间。

任务管理

有时,攻击或配对可能比预期耗时更长。
您可以通过点击相应对话框中的“Cancel”按钮来取消攻击或配对。 如果在攻击或配对期间重新加载了 UI,则可以使用任务管理器来取消。

在屏幕右上角,从右数第二个按钮将显示任务状态。 如果没有活动任务,它将显示“No active tasks”。 否则,它将显示“Task in progress”。 要取消任务,请点击“Task in progress”按钮,然后按“Cancel”按钮。

如果服务器因无法取消的挂起任务而挂起,请尝试重置蓝牙适配器。

[!NOTE] 任务可能需要最多 20 秒才能取消。

故障排除

在某些情况下,蓝牙适配器可能会“卡在”“异常状态”。 解决此问题的最简单方法是重置蓝牙适配器。 要执行重置,请按屏幕右上角的扳手图标打开故障排除菜单。 然后,选择“Reset BLE adapter”,并在对话框中点击“Reset”确认重置。

如果发生致命错误且服务器必须关闭,start.sh 脚本将自动重启服务器。

在附近 BLE 设备较多的情况下,服务器可能因 D-Bus 错误而意外关闭。 这种情况非常罕见,如果发生,./start.sh 脚本应会自动重启服务器。

结果与已评估设备

如果您在寻找支持 Fast Pair 的设备,可以使用 Model IDs 列表 查看所有已通过 Fast Pair 认证的设备。

致谢

这项工作得到了佛兰德政府通过网络安全研究计划的支持,资助编号为 VOEWICS02。

下载工具
制造商设备名称Model ID可被劫持劫持耗时(秒)易受 nonce 重用攻击易受无效曲线攻击
AppleBeats Solo Buds6980580否是否
GooglePixel Buds Pro 212934265是6.89否否
JabraElite 8 Active3778746是32.01否否
JBLTune Beam3293323是6.91仅在同一会话中否
MarshallMOTIF II A.N.C.15473012是9.49是否
NothingEar (a)8625818是38.80仅在同一会话中否
OnePlusNord Buds Pro 313394952是10.19仅在同一会话中否
HPPoly VFree 6015984097否否否
RedmiBuds 5 Pro11155060是8.32仅在同一会话中否
SoundcoreLiberty 4 NC5409858是15.27是否
SonyWF-1000XM512499626是9.43是否
Audio-TechnicaATH-M20xBT13285048否仅在同一会话中否
BoseQuietComfort Ultra5723549否否否
JBLLive 775 NC14502233是7.62仅在同一会话中否
MarshallMajor V12915160是11.70仅在同一会话中否
SonosAce V7340495否否否
SonyWH-1000XM413386638是9.69是否
SonyWH-1000XM513911719是12.38是否
SonyWH-1000XM66360443是12.94仅在同一会话中否
SonyWH-CH720N16003068是7.46是否
Bang & OlufsenBeosound A12431472否否否
JabraSpeak2 55 UC9888885否否否
JBLClip 51917389是36.19是否
JBLFlip 67278954否否否
LogitechWonderboom 411575855是11.96仅在同一会话中否