Skip to content

DomCritchlow/bleep

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

1 Commit
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

πŸ”΅ Bleep

The friendly BLE scanner that makes Bluetooth security fun

Bleep is your go-to tool for discovering, monitoring, and security testing Bluetooth Low Energy devices. Passive scanning, deep device analysis, and security audits β€” all with a clean interface that doesn't take itself too seriously.

Version Python License

"BLE" + "beep" = Bleep! Your Bluetooth detective in the wild.


✨ Features

πŸ“‘ Passive BLE Scanning

  • Zero-interaction discovery - No pairing or connection required
  • Real-time device discovery with live RSSI tracking
  • Movement detection based on signal strength variations
  • Distance estimation with proximity categories
  • Vendor identification via MAC OUI lookup

πŸ” Deep Device Analysis

  • Comprehensive characteristic reading - Reads all accessible characteristics
  • Standard service decoding - Auto-decodes Battery, Heart Rate, Environmental Sensors, Device Info, etc.
  • Multi-format parsing - Supports uint8/16/32/64, int8/16/32/64, float32/64, strings, IP addresses
  • Manufacturer-specific decoders - Apple, Samsung, HP printer data extraction
  • Raw packet logging - Full hex/decimal data streams

πŸ” Security Auditing

  • Connection testing - Attempts connections without authentication
  • Permission enumeration - Tests read/write/notify capabilities
  • Authentication detection - Identifies "Just Works" pairing and auth requirements
  • Vulnerability reporting - Highlights characteristics accessible without auth
  • Safe testing - Read-only by default, avoids destructive operations

πŸ“Š Smart Device Recognition

  • Automatic device typing - Detects AirTags, fitness trackers, printers, IoT sensors
  • Beacon detection - Identifies non-connectable beacon-only devices
  • Battery monitoring - Extracts battery levels when available
  • Network info extraction - Pulls IP addresses from HP printers and other networked devices

🎯 Advanced Filtering

  • 3-state filters - Normal / Only Show / Exclude by device type
  • Device-specific logs - Click any device to see only its packets
  • Real-time updates - Live streaming with auto-scroll
  • Stable device list - Devices stay in discovery order

πŸš€ Quick Start

Prerequisites

  • Python 3.8 or higher
  • macOS (CoreBluetooth), Linux (BlueZ), or Windows (WinRT)
  • Bluetooth adapter with BLE support

Installation

# Clone the repository
git clone https://github.com/domcritchlow/bleep.git
cd bleep

# Install dependencies
pip install -r requirements.txt

# Run Bleep
python server.py

Access the Interface

Open your browser and navigate to:

http://localhost:5005

πŸ“– Usage Guide

Basic Scanning

  1. Start Scanning - Click the "Start" button
  2. View Devices - Devices appear in the left panel as discovered
  3. Click a Device - Filter logs to show only that device's packets
  4. Stop Scanning - Click "Stop" when done

Security Audit

  1. Discover a device (must be connectable, not beacon-only)
  2. Click πŸ” Audit button on the device card
  3. Review the security findings:
    • βœ… Characteristics readable without authentication
    • ⚠️ Characteristics writable without authentication
    • πŸ” Characteristics requiring authentication
    • Pairing method detection

Deep Scan

  1. Click πŸ”¬ Deep Scan on any connectable device
  2. The scanner will:
    • Read ALL readable characteristics
    • Subscribe to all notifications for 30 seconds
    • Decode standard services automatically
    • Display comprehensive device information

Filtering

Use the top bar filters to show/hide device types:

  • First click: Normal (show all)
  • Second click: Only (show ONLY this type)
  • Third click: Exclude (hide this type)

πŸ—‚οΈ Project Structure

bleep/
β”œβ”€β”€ src/
β”‚   └── bleep/
β”‚       β”œβ”€β”€ __init__.py           # Package initialization
β”‚       β”œβ”€β”€ config_loader.py      # Configuration management
β”‚       β”œβ”€β”€ decoders.py           # Data decoding utilities
β”‚       └── device_detector.py    # Device type detection
β”œβ”€β”€ config/
β”‚   β”œβ”€β”€ app_config.json           # Application settings
β”‚   β”œβ”€β”€ oui_vendors.json          # MAC vendor mappings
β”‚   β”œβ”€β”€ company_ids.json          # Bluetooth company IDs
β”‚   β”œβ”€β”€ standard_services.json    # GATT service definitions
β”‚   └── device_detection.json     # Device detection rules
β”œβ”€β”€ templates/
β”‚   └── index.html                # Web UI
β”œβ”€β”€ docs/
β”‚   └── API.md                    # API documentation (coming soon)
β”œβ”€β”€ tests/
β”‚   └── test_decoders.py          # Unit tests (coming soon)
β”œβ”€β”€ server.py                     # Main application entry point
β”œβ”€β”€ requirements.txt              # Python dependencies
β”œβ”€β”€ README.md                     # This file
β”œβ”€β”€ LICENSE                       # MIT License
└── .gitignore                    # Git ignore rules

βš™οΈ Configuration

All configuration files are in JSON format and located in the config/ directory.

Application Settings

Edit config/app_config.json to customize:

{
  "server": {
    "host": "0.0.0.0",
    "port": 5005,
    "debug": false
  },
  "scanner": {
    "rssi_history_size": 10,
    "movement_threshold": 5,
    "max_log_entries": 1000
  },
  "security": {
    "connection_timeout_seconds": 10,
    "deep_scan_duration_seconds": 30
  }
}

Adding New Vendors

Edit config/oui_vendors.json:

{
  "mappings": {
    "AA:BB:CC": "Your Company Name"
  }
}

Adding Device Detection Rules

Edit config/device_detection.json to add new device type patterns.


πŸ”’ Security & Ethics

Ethical Use Only

This tool is designed for:

  • βœ… Testing your own devices
  • βœ… Security research in controlled environments
  • βœ… Educational purposes
  • βœ… Authorized penetration testing

DO NOT use this tool for:

  • ❌ Unauthorized access to devices
  • ❌ Violating privacy or laws
  • ❌ Malicious activities

Safety Features

  • Read-only by default - Write operations are disabled
  • No pairing popup avoidance - Respects OS security prompts
  • Clear warnings - Indicates which operations may trigger pairing
  • Non-destructive - Designed to observe, not modify

πŸ› οΈ Development

Running Tests

# Install development dependencies
pip install pytest pytest-asyncio

# Run tests
pytest tests/

Code Style

This project follows PEP 8 guidelines. Format code with:

pip install black flake8
black src/
flake8 src/

Contributing

See CONTRIBUTING.md for contribution guidelines.


πŸ“š Documentation


πŸ› Known Issues

  • macOS pairing popups: Some devices (e.g., Garmin watches) may trigger OS pairing prompts during security audits
  • Connection timeouts: Devices may disconnect during deep scans if they have strict security policies

πŸ“ Changelog

Version 1.0.0 (2025-11-13)

  • Initial release of Bleep! πŸŽ‰
  • Passive BLE scanning
  • Security audit functionality
  • Deep scan feature
  • Configuration-based decoders
  • Comprehensive device detection
  • Fun, friendly interface

πŸ“„ License

This project is licensed under the MIT License - see the LICENSE file for details.


πŸ™ Acknowledgments

  • Built with Bleak - Python BLE library (the name inspiration!)
  • UI powered by Flask and Socket.IO
  • Bluetooth SIG for GATT specifications

🌟 Star Bleep if you find it useful!

Made with πŸ’™ for Bluetooth tinkerers and security researchers

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors