go-haystack: Track Devices with Apple's Find My Network, No Apple Hardware Needed

Summary
go-haystack enables users to track personal Bluetooth devices by leveraging Apple's extensive "Find My" network. This innovative project utilizes OpenHaystack and Macless-Haystack, providing robust tools developed in Go and TinyGo. A key advantage is its ability to establish a custom Find My network without requiring any proprietary Apple hardware.
Repository Info
Tags
Click on any tag to explore related repositories
Introduction
go-haystack
is an exciting open-source project that empowers you to track your personal Bluetooth devices using Apple's vast "Find My" network. It achieves this by integrating with OpenHaystack and Macless-Haystack, offering a suite of tools written in Go and TinyGo. The most compelling feature is its ability to set up a custom Find My network entirely without the need for any Apple hardware.
The project allows you to build your own beacons using TinyGo firmware, compatible with various nRF-based boards and even Linux systems like Raspberry Pi. Additionally, go-haystack
includes TinyScan, a hardware scanner for local devices, providing a complete solution for personal device tracking.
Installation
To get go-haystack
up and running, you'll need to follow a few steps, including setting up supporting services.
Apple ID
You must have an Apple ID with 2FA enabled. Note that only SMS/text message as a second factor is currently supported.
anisette-v3-server
Start the anisette-v3-server
using Docker:
docker network create mh-network
docker run -d --restart always --name anisette -p 6969:6969 --volume anisette-v3_data:/home/Alcoholic/.config/anisette-v3 --network mh-network dadoum/anisette-v3-server
macless-haystack
- Start and set up your Macless Haystack endpoint in interactive mode:
You will be prompted for your Apple ID, password, and 2FA. Once you seedocker run -it --restart unless-stopped --name macless-haystack -p 6176:6176 --volume mh_data:/app/endpoint/data --network mh-network christld/macless-haystack
serving at port 6176 over HTTP
, the setup is complete. Hitctrl-C
to exit the process. - Restart the
macless-haystack
server:
For more details, refer to the original Macless-Haystack instructions.docker restart macless-haystack
go-haystack
Install the go-haystack
command-line tool:
go install github.com/hybridgroup/go-haystack/cmd/haystack@latest
Examples
Once installed, go-haystack
provides simple commands for scanning and managing your devices.
Scanning for local devices
To scan for any local devices within range, use the scan
command:
haystack scan
This will return a list of nearby devices, including their MAC addresses, RSSI values, and battery status.
Adding a new device
- Generate keys for your new device:
Replacehaystack keys DEVICENAME
DEVICENAME
with your desired name for the device. This command will createDEVICENAME.keys
andDEVICENAME.json
files. - Flash the hardware with the TinyGo target and your device's name:
This command compiles the TinyGo firmware with your generated keys and flashes it to the specified device. For more information on TinyGo, visit https://tinygo.org/getting-started/overview/.haystack flash DEVICENAME nano-rp2040
- Upload the device's JSON configuration to
macless-haystack
: Navigate your web browser to https://dchristl.github.io/macless-haystack/. This is a single-page web application that interacts with your localmacless-haystack
instance. Click on "Accessories," then the "+" button, and select theDEVICENAME.json
file you generated earlier.
Your device is now set up! It might take some time for the first data to appear in the Macless-Haystack web UI as your device needs to be in range of an iPhone to be picked up by the Find My network.
Why Use go-haystack?
go-haystack
offers a unique and powerful solution for personal device tracking. Its primary advantage is the ability to leverage Apple's robust "Find My" network without needing any Apple hardware, making it accessible to a broader audience. The use of Go and TinyGo ensures efficient, performant, and resource-friendly applications, ideal for embedded systems and microcontrollers. This project provides a customizable and open-source alternative for those interested in building their own tracking beacons, offering greater control and privacy over their personal devices.
Links
- GitHub Repository: https://github.com/hybridgroup/go-haystack
- OpenHaystack: https://github.com/seemoo-lab/openhaystack
- Macless-Haystack: https://github.com/dchristl/macless-haystack
- TinyGo: https://tinygo.org/
- Macless-Haystack Web UI: https://dchristl.github.io/macless-haystack/