Query Apple's Find My network, based on all the hard work of https://github.com/seemoo-lab/openhaystack/ and @hatomist and @JJTech0130 and @Dadoum.
This is version 2, which does not require a Mac anymore thanks to the awesome work in https://github.com/JJTech0130/pypush. Version 1 that can be run on Macs can still be found in the catalina (python2) and monterey (python3) branches.
Only a free Apple ID is required, with SMS 2FA properly setup. If you don't have any, follow one of the many guides found on the internet.
- Clone this repository and
anisette-v3-server
:
git clone https://github.com/biemster/FindMy
git clone https://github.com/Dadoum/anisette-v3-server
- Follow the installation instructions for
anisette-v3-server
and make sure it works. - Create the database where the reports will be stored:
sqlite3 reports.db 'CREATE TABLE reports (id_short TEXT, timestamp INTEGER, datePublished INTEGER, payload TEXT, id TEXT, statusCode INTEGER, PRIMARY KEY(id_short,timestamp))'
cd
into theFindMy
directory and generate keys using./generate_keys.py
.- Deploy your advertisement keys on devices supported by OpenHaystack. The ESP32 firmware is a mirror of the OpenHaystack binary, the Lenze 17H66 is found in many 1$ tags obtained from Ali. An nRF51 firmware can be found here: https://github.com/dakhnod/FakeTag
- run
../anisette-v3-server/anisette-v3-server & ./request_reports.py ; killall anisette-v3-server
in the same directory as your .keys
files.
Alternatively to step 3 you could install https://github.com/Dadoum/pyprovision
(first install anisette-v3-server
though to get a nice D environment and the required android libs),
make a folder anisette
in your working directory and just run
./request_reports.py
The script should pick up the python bindings to provision and use that instead.
This current non-Mac workflow is not optimal yet, mainly because the anisette server is a bit of a workaround. A python solution for retrieving this is being developed in the pypush discord, please join there if you want to contribute!