Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/malmeloo/FindMy.py
🍏 + 🎯 + 🐍 = Everything you need to query Apple's FindMy network!
https://github.com/malmeloo/FindMy.py
airtag find-my openhaystack
Last synced: 13 days ago
JSON representation
🍏 + 🎯 + 🐍 = Everything you need to query Apple's FindMy network!
- Host: GitHub
- URL: https://github.com/malmeloo/FindMy.py
- Owner: malmeloo
- License: mit
- Created: 2023-12-30T21:29:05.000Z (about 1 year ago)
- Default Branch: main
- Last Pushed: 2024-12-05T21:54:54.000Z (about 1 month ago)
- Last Synced: 2024-12-22T12:07:03.312Z (16 days ago)
- Topics: airtag, find-my, openhaystack
- Language: Python
- Homepage: http://docs.mikealmel.ooo/FindMy.py/
- Size: 696 KB
- Stars: 940
- Watchers: 11
- Forks: 33
- Open Issues: 14
-
Metadata Files:
- Readme: README.md
- Funding: .github/FUNDING.yml
- License: LICENSE.md
Awesome Lists containing this project
README
# FindMy.py
[![](https://img.shields.io/pypi/v/FindMy)](https://pypi.org/project/FindMy/)
[![](https://img.shields.io/pypi/dm/FindMy)](#)
[![](https://img.shields.io/github/license/malmeloo/FindMy.py)](LICENSE.md)
[![](https://img.shields.io/pypi/pyversions/FindMy)](#)The all-in-one library that provides everything you need
to query Apple's FindMy network!The current "Find My-scene" is quite fragmented, with code
being all over the place across multiple repositories,
written by [several authors](#Credits). This project aims to
unify this scene, providing common building blocks for any
application wishing to integrate with the Find My network.> [!IMPORTANT]
> This project is currently in Alpha. While existing functionality
> will likely not change much, the API design is subject to change
> without prior warning.
>
> You are encouraged to report any issues you can find on the
> [issue tracker](https://github.com/malmeloo/FindMy.py/issues/)!### Features
- [x] Cross-platform: no Mac needed
- [x] Fetch and decrypt location reports
- [x] Official accessories (AirTags, iDevices, etc.)
- [x] Custom AirTags (OpenHaystack)
- [x] Apple account sign-in
- [x] SMS 2FA support
- [x] Trusted Device 2FA support
- [x] Scan for nearby FindMy-devices
- [x] Decode their info, such as public keys and status bytes
- [x] Import or create your own accessory keys
- [x] Both async and sync APIs### Roadmap
- [ ] Local anisette generation (without server)
- More information: [#2](https://github.com/malmeloo/FindMy.py/issues/2)## Installation
The package can be installed from [PyPi](https://pypi.org/project/findmy/):
```shell
pip install findmy
```For usage examples, see the [examples](examples) directory. Documentation can be found [here](http://docs.mikealmel.ooo/FindMy.py/).
## Contributing
Want to contribute code? That's great! For new features, please open an
[issue](https://github.com/malmeloo/FindMy.py/issues) first so we can discuss.This project uses [Ruff](https://docs.astral.sh/ruff/) for linting and formatting.
Before opening a pull request, please ensure that your code adheres to these rules.
There are pre-commit hooks included to help you with this, which you can set up as follows:```shell
pip install poetry
poetry install --with dev # this installs pre-commit into your environment
pre-commit install
```After following the above steps, your code will be linted and formatted automatically
before committing it.## Derivative projects
There are several other cool projects based on this library! Some of them have been listed below, make sure to check them out as well.
* [OfflineFindRecovery](https://github.com/hajekj/OfflineFindRecovery) - Set of scripts to be able to precisely locate your lost MacBook via Apple's Offline Find through Bluetooth Low Energy.
* [SwiftFindMy](https://github.com/airy10/SwiftFindMy) - Swift port of FindMy.py## Credits
While I designed the library, the vast majority of actual functionality
is made possible by the following wonderful people and organizations:- @seemo-lab for [OpenHaystack](https://github.com/seemoo-lab/openhaystack/)
and their [research](https://doi.org/10.2478/popets-2021-0045);
- @JJTech0130 for [Pypush](https://github.com/JJTech0130/pypush), providing the breakthrough necessary
for getting this to work without a Mac;
- @biemster for [FindMy](https://github.com/biemster/FindMy), which is the main basis of this project;
- @Dadoum for [pyprovision](https://github.com/Dadoum/pyprovision/) and
[anisette-v3-server](https://github.com/Dadoum/anisette-v3-server);
- @nythepegasus for [GrandSlam](https://github.com/nythepegasus/grandslam/) SMS 2FA;
- And probably more, so let me know! :D