GitHub

OpenHaystack Project Description

What is the project about?

OpenHaystack is a framework and application that allows users to track the location of their personal Bluetooth devices using Apple's Find My network. It essentially lets you create your own "AirTag-like" trackers.

What problem does it solve?

It provides a way to leverage the vast network of Apple devices to locate lost or misplaced items that don't natively support Find My. This is particularly useful for items that are easily lost (keys, backpacks, etc.) or for integrating tracking into devices that don't have built-in cellular connectivity. It solves the problem of tracking items globally without requiring cellular service on the tracked item itself.

What are the features of the project?

  • Accessory Creation: The macOS application allows users to generate key pairs and configure Bluetooth devices to act as trackable accessories.
  • Location Reporting: Leverages nearby iPhones (and other Apple devices) to anonymously report the location of the tracked accessories to Apple's servers.
  • Location Display: The macOS application downloads encrypted location reports from Apple's servers and displays the last known location of the accessories on a map.
  • Firmware Support: Provides firmware for various Bluetooth devices (BBC micro:bit, ESP32, Linux devices with HCI) to broadcast the necessary Bluetooth beacons.
  • Mail Plugin Integration: Uses a custom Apple Mail plugin to authenticate with Apple's servers and download location reports.
  • OpenHaystack Mobile: A mobile app (Android and iOS) built with Flutter, offering the same functionality as the macOS app, but requiring a proxy server on Mac hardware.

What are the technologies used in the project?

  • Bluetooth Low Energy (BLE): For broadcasting the tracking beacons.
  • Public-key cryptography (Elliptic Curve P-224): For secure encryption and decryption of location reports.
  • macOS Application Development (Swift/Objective-C): For the main application.
  • Apple Mail Plugin Development: For secure communication with Apple's servers.
  • Embedded Firmware Development (C/C++): For the micro:bit, ESP32, and other devices.
  • Linux HCI: For interacting with Bluetooth devices on Linux.
  • Flutter: Cross-platform framework for the mobile app (Android and iOS).
  • Python: Used in the deployment process for ESP32.

What are the benefits of the project?

  • Global Tracking: Track items anywhere in the world where there's a presence of Apple devices.
  • No Cellular Required: The tracked devices themselves don't need cellular connectivity.
  • Privacy-Focused (to an extent): Leverages Apple's existing privacy-preserving Find My network architecture (though the disclaimer notes potential trackability due to fixed public keys in the current firmware).
  • Open Source: Allows for community contributions, modifications, and porting to other devices.
  • Research-Based: Built upon a thorough security analysis of Apple's Find My network.

What are the use cases of the project?

  • Tracking personal belongings: Keychains, backpacks, wallets, luggage.
  • Integrating tracking into custom devices: Adding Find My-like functionality to Bluetooth-enabled devices that don't natively support it.
  • Research and development: Exploring and extending the capabilities of Apple's Find My network.
  • Creating custom tracking solutions: For specific needs or applications beyond typical consumer use.
  • Locating lost items: The primary use case is finding lost items tagged with an OpenHaystack device.

openhaystack screenshot