Pypush: A Look Inside iMessage

  • Published
  • 3 mins read

Over the years (not very many) I’ve been involved in quite a few projects. Whether it’s a community project, personal project, or just a Bash script that’s taking a little too long. One such “project” I’ve contributed to is called Pypush. I never helped that much with the internals, but I guess I’ve done enough to gain the Contributor role on Discord :p. Anyway, Pypush is a proof-of-concept reverse engineering attempt at iMessage written in Python. I have to say, this is a pretty neat project, especially today where apps like Beeper, BlueBubbles and Sunbird are emerging and paving the path to bring chat networks (mainly iMessage) together. 3 years ago, no one would have ever thought of the concept of having iMessage on a standard Android phone. Well, I guess people still think the same thing today, but the difference is, they’re wrong.

Overview

I’ve been able to use Beeper on my phone and communicate with others via iMessage very easily. And not just with my email, but with my literal phone number as my main iMessage alias! This is one of the core features of Pypush, being able to link a standard phone number to the proprietary iMessage network. Very soon, Pypush will be built as the backend of these apps and platforms, Beeper is already doing it today, rolling out betas for those who want to try! There is also an active attempt to implement the Rust version of Pypush into BlueBubbles, the best iMessage-only platform.

History

Pypush is written and maintained by a high school student, Who’s Github alias is JJtech. His endeavors began in the Hack Different community, and it eventually gained enough traction to get it’s very own small community. (He currently has a blog post about how it works right here). Right now, Pypush can do two main things: send iMessages, and link phone numbers; however iCloud and Openhaystack integrations are currently being worked on. Soon after, a company called Beeper bought it and hired JJtech, or James, as a part-time employee. A community member has ported Pypush to Rust, gaining the name “Rustpush”, and Beeper has an internal Go version, soon to be open-sourced. Beeper is also currently rolling out betas with the new “Pypush bridge”, in place of their previous Mac server farm.

Impact

Apps such as Beeper, Sunbird, and BlueBubbles currently use a Mac server to host an iMessage bridge on Android devices. This is basically the backend of all these platforms. However, Pypush now can serve as the “serverless backend”, being able to now use Apple related services locally, without a separate server. Beeper is moving towards this, and there is a current push to get it working with BlueBubbles….once this happens, it will be a game changer, since BlueBubbles is without a doubt the best platform for iMessage.

In summary, the impact of Pypush extends beyond its proof-of-concept roots. Each of the platforms I mentioned before will soon be impacted by Pypush, serving as the new backend for these apps, and hopefully ending Apple’s monopoly on iMessage. Beeper’s integration and ongoing efforts with BlueBubbles show that this could be a huge transition, especially with companies like Nothing implementing Sunbird on their consumer devices (more on that here) and Apple claiming to integrate RCS on their messaging app.

Keagan Peterson

I'm a recreational programmer who knows Python and C/C++. I enjoy multiple different hobbies relating to tech & IT, such as 3D design and Android/web pentesting.

Leave a Reply