btlemap

Nmap for Bluetooth Low Energy

https://github.com/seemoo-lab/btlemap

Science Score: 64.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
    Found CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
    Found .zenodo.json file
  • DOI references
  • Academic publication links
    Links to: arxiv.org
  • Committers with academic emails
    2 of 2 committers (100.0%) from academic institutions
  • Institutional organization owner
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (13.8%) to scientific vocabulary
Last synced: 6 months ago · JSON representation ·

Repository

Nmap for Bluetooth Low Energy

Basic Info
  • Host: GitHub
  • Owner: seemoo-lab
  • License: apache-2.0
  • Language: Swift
  • Default Branch: master
  • Size: 3.46 MB
Statistics
  • Stars: 190
  • Watchers: 11
  • Forks: 20
  • Open Issues: 1
  • Releases: 2
Created almost 6 years ago · Last pushed over 1 year ago
Metadata Files
Readme License Citation

README.md

BTLEmap

Installation

Pull the GitHub repository, open it in Xcode and run it on iOS or macOS. The linked libraries should be fetched automatically with the Swift Package Manager integration of Xcode.

Features

The main app is divided in three parts: (1) BLE Devices, (2) Proximity View, (3) RSSI Graph.

BLE Devices

This view shows a list of BLE Devices discovered in your surrounding. Every device has an icon, either a Bluetooth logo or an icon representing the identified device class. You can click on a device to show all advertisements that have been received by this device. The advertisements are dissected at best effort. If no dissector is available or parts of the data are encrypted the binary data will be shown. If the BLE scanner has been able to detect services on this devices it lists them in the detail view as well. This includes all detected characteristics.

Using the Button with 3 Dots on the right of the list the settings are accessible.

Proximity View

The proximity view presents the same data on a circular plane. All devices are positioned on this plane according to the measured RSSI value. RSSI values do not allow distance measurement, but they give an estimation on the relative distance between all devices discovered in the area. The devices animate in real-time to new RSSI values received. A user can click on a device to show its detail view as possible on the BLE Devices view.

RSSI Graph

The RSSI graph plots a graph automatically on all received RSSI values for each device. On the left side all devices are listed and they can be select to be highlighted.

PCAP support

All received advertisements can be exported into the pcap format. This allows them to be opened in Wireshark. The export can be started from the Settings view. Pcap files can also be imported to show previous measurements.

External scanners

The app allows to get its Bluetooth scanning data from an external scanner. In our example implementation this is performed by an Raspberry Pi. How to setup the Raspberry Pi can be seen in a section below. Other scanners are generally supported, too. For this the scanner needs to support the same protocol as the Raspberry Pi and be able to communicate over TCP to the device running the app. This communication could be handled over WiFi or Ethernet.

WiSec Demo Paper

This project has been accepted as a demo on WiSec 2020. You can find the demo paper on arxiv.

Limits

Due to Apple's CoreBluetooth API the app has certain limits to the Bluetooth Low Energy access. These limits are based on the operating system and mostly apply to iOS.

  1. No access to manufacturer data starting with the Apple company id (0x4c00). This issue is only present on iOS / iPadOS
  2. No access to certain Apple specific GATT services. Present on iOS and macOS. The services will not be listed if requested
  3. No access to the device MAC address. The MAC address is replaces with a UUID that is generated on demand and not linked to a MAC address

Removing the limits

Those limits are introduced by Apple's entitlement scheme that grants certain permissions to apps that are signed with a specific set of entitlements. Certain Apple daemons and apps have full access to all Bluetooth data, e.g. the sharingd. To assign this entitlements to any app, Apple would need to create a provisioning profile that is signed by apple and grants the priviliges to a specific app or development team. It is possible to resign an application with any entitlements and install it on devices that supports running unsigned apps, e.g. a jailbroken iPhone.

Raspberry Pi Setup

The app supports a Raspberry pi (Rpi) as an external scanner. We created a shell script that allows setup the raspberry pi as a scanner as easy as possible. We are currently tweaking some last things before this will be released.

Icons

Icons are from

Laura Reen using creative commons license as stated in https://creativecommons.org/licenses/by/3.0/

Icons8 - https://icons8.com/license

Apple Inc - https://developer.apple.com/design/human-interface-guidelines/sf-symbols/overview/

Owner

  • Name: Secure Mobile Networking Lab
  • Login: seemoo-lab
  • Kind: organization
  • Location: Darmstadt, Germany

Citation (CITATION.cff)

# This CITATION.cff file was generated with cffinit.
# Visit https://bit.ly/cffinit to generate yours today!

cff-version: 1.2.0
title: BTLEmap
message: 'If you use this software, please cite it as below.'
type: software
authors:
  - given-names: Alexander
    family-names: Heinrich
    affiliation: 'SEEMOO, TU Darmstadt'
    orcid: 'https://orcid.org/0000-0002-1150-1922'
  - given-names: Milan
    family-names: Stute
    affiliation: 'SEEMOO, TU Darmstadt'
    orcid: 'https://orcid.org/0000-0003-4921-8476'
  - given-names: Matthias
    family-names: Hollick
    affiliation: 'SEEMOO, TU Darmstadt'
    orcid: 'https://orcid.org/0000-0002-9163-5989'
repository-code: 'https://github.com/seemoo-lab/BTLEmap'
abstract: >-
  The market for Bluetooth Low Energy devices is booming
  and, at the same time, has become an attractive target for
  adversaries. To improve BLE security at large, we present
  BTLEmap, an auditing application for BLE environments.
  BTLEmap is inspired by network discovery and security
  auditing tools such as Nmap for IP-based networks. It
  allows for device enumeration, GATT service discovery, and
  device fingerprinting. It goes even further by integrating
  a BLE advertisement dissector, data exporter, and a
  user-friendly UI, including a proximity view. BTLEmap
  currently runs on iOS and macOS using Apple's
  CoreBluetooth API but also accepts alternative data inputs
  such as a Raspberry Pi to overcome the restricted vendor
  API. The open-source project is under active development
  and will provide more advanced capabilities such as
  long-term device tracking (in spite of MAC address
  randomization) in the future.
license: Apache-2.0
commit: 9815bf39ecbab10f2b737ee2fcc46ddb142beeb2
version: 1.0.1
date-released: '2021-12-08'

GitHub Events

Total
  • Watch event: 33
  • Fork event: 2
Last Year
  • Watch event: 33
  • Fork event: 2

Committers

Last synced: 11 months ago

All Time
  • Total Commits: 70
  • Total Committers: 2
  • Avg Commits per committer: 35.0
  • Development Distribution Score (DDS): 0.014
Past Year
  • Commits: 2
  • Committers: 1
  • Avg Commits per committer: 2.0
  • Development Distribution Score (DDS): 0.0
Top Committers
Name Email Commits
Alexander Heinrich a****h@s****e 69
Milan Stute m****e@s****e 1
Committer Domains (Top 20 + Academic)

Issues and Pull Requests

Last synced: 11 months ago

All Time
  • Total issues: 1
  • Total pull requests: 0
  • Average time to close issues: N/A
  • Average time to close pull requests: N/A
  • Total issue authors: 1
  • Total pull request authors: 0
  • Average comments per issue: 1.0
  • Average comments per pull request: 0
  • Merged pull requests: 0
  • Bot issues: 0
  • Bot pull requests: 0
Past Year
  • Issues: 0
  • Pull requests: 0
  • Average time to close issues: N/A
  • Average time to close pull requests: N/A
  • Issue authors: 0
  • Pull request authors: 0
  • Average comments per issue: 0
  • Average comments per pull request: 0
  • Merged pull requests: 0
  • Bot issues: 0
  • Bot pull requests: 0
Top Authors
Issue Authors
  • insidegui (1)
Pull Request Authors
Top Labels
Issue Labels
Pull Request Labels