FindMy.py Project Description
What is the project about?
FindMy.py is an all-in-one Python library designed to interact with Apple's Find My network. It consolidates various functionalities for querying the network, which were previously scattered across multiple repositories.
What problem does it solve?
The project addresses the fragmentation of the Find My ecosystem's code, unifying it into a single, easy-to-use library. It provides a common set of tools for developers who want to integrate Find My functionality into their applications, without needing to piece together code from different sources.
What are the features of the project?
- Cross-platform: Works without requiring a Mac.
- Location Report Fetching and Decryption: Retrieves and decrypts location data from:
- Official Apple accessories (AirTags, iDevices).
- Custom AirTags (using OpenHaystack).
- Apple Account Sign-in: Supports:
- SMS-based two-factor authentication (2FA).
- Trusted Device 2FA.
- Nearby Device Scanning: Scans for nearby Find My-enabled devices and decodes information like public keys and status bytes.
- Key Management: Allows importing or creating custom accessory keys.
- API Support: Provides both asynchronous and synchronous APIs.
What are the technologies used in the project?
- Python: The primary programming language.
- PyPi: Used for package distribution.
- Ruff: Used for code linting and formatting.
- Poetry: Used for dependency management and packaging.
- Pre-commit Hooks: Used for automating linting and formatting before commits.
- External libraries and research, credited to various authors and organizations, including OpenHaystack, Pypush, pyprovision, and others.
What are the benefits of the project?
- Simplified Integration: Makes it easier to integrate Find My functionality into various applications.
- Unified Codebase: Provides a single, well-maintained source for Find My interactions.
- Cross-Platform Compatibility: Removes the dependency on macOS for interacting with the Find My network.
- Flexibility: Supports both official and custom accessories.
- Extensible: Designed to be built upon, as indicated by the "Derivative projects" section.
What are the use cases of the project?
- Asset Tracking: Developing applications to track the location of items with AirTags or other Find My-enabled devices.
- Device Recovery: Creating tools to help locate lost Apple devices.
- Security Research: Studying the Find My network and its protocols.
- Home Automation: Integrating Find My with smart home platforms (as seen in the Home Assistant integration).
- Custom Find My Solutions: Building custom applications that leverage the Find My network for unique purposes.
