Thu 28 Jan 2021

Reverse Engineering iMessage

iMessage is a widely used secure messaging app and protocol across the Apple ecosystem. Curious about what it would be like to run iMessage on other platforms, we took a reverse engineering approach to understand how iMessage operates and examine possibilities to extend it to other platforms.

The goal of this article is to show how Apple leverages the fact that it produces the hardware to protect its software. To explore this, we will try to connect via Apple Push Notification (APN) directly on the network level, and see what challenges we face. Along the way, we’ll reverse engineer small parts of the apsd daemon on macOS and the APN protocol itself using popular open-source tools.

Source: Reverse Engineering iMessage to Help Improve Security, an article by Abdelrahman Eid.

A Python project checklist

When building a new project, it's a smart move to be very strict right from the start. It is much harder to add more linting/typing checks once you have 1000+ lines of code.

That's why I'm providing an opinionated list of libraries for your new Python project. I might write a more in-depth article on the best practices when building a web app with Python. For now, this is mostly a checklist with some obvious recommendations.

Source: A Python project checklist, an article by Charles-Axel Dein.

Plurrrr Tweeting with Tags

Tags are coming to tumblelog but it's a slow process. All articles on my blog now have tags but the software doesn't show them yet. In the evening I wrote a small Perl script that uses those tags to create tweets in a format that can be used by And it works very neat.

Plurrrr tweeting with tags
Plurrrr tweeting with tags.

A little later I noticed that Twitter cut off a significant part of the date, as can be seen in the above screenshot. So I added a rewrite rule with a permanent redirect to the NGINX configuration file:


This redirects, for example, the short URL to

Next step is to make the tags also visible on Plurrrr itself, but that will take probably a week or two more as I am quite busy with work.