The team behind the universal chat app Beeper has unveiled a new application, Beeper Mini, designed to bring Apple’s iMessage service to Android devices. This innovative app marks the first instance of utilizing the native iMessage protocol directly on Apple servers for sending and receiving messages on Android.
Beeper Mini’s approach is a departure from previous methods of integrating iMessage with Android, which often involved questionable practices using relay servers on Mac servers. These earlier techniques raised security concerns, as they potentially allowed third parties to access user messages. This security issue led to the removal of a similar iMessage implementation from the Play Store by the company Nothing just a few weeks ago.
The new app allows Android users to communicate with Apple users via iMessage, displaying messages in the familiar blue bubbles of iMessage chats instead of the green bubbles typically associated with SMS or MMS. This development is noteworthy, especially considering Apple’s historical stance of not supporting iMessage on Android, a point of contention for companies like Google, network operators, and some users.
Beeper’s team has shared technical details about the app’s development in a blog post, highlighting the reverse engineering of the iMessage protocol. The lead developer, a student, has also shared insights into the findings and implementation process. A proof-of-concept implementation in Python for using iMessage is available under the SSPL.
The app’s functionality hinges on several Apple services, including the Push Notification Service for message transmission and a key server for key exchange. Registration requires authentication via an Apple ID. The app also necessitates validation data, which is generated by emulating a binary file used by Apple. This file, which relies on obfuscation, is re-created in the app. The validation data comprises various components like the device’s serial number, MAC address, model name, and the UUID of the root disk, which are hardcoded for use in the iMessage reimplementation.
After registering on the key server, Beeper Mini can exchange and receive public keys, facilitating the sending and receiving of iMessage texts. The ease of this process underscores the deep understanding of the iMessage format by Beeper’s developers.