iPhone Backup Tools v2

I have spent a while evaluating and thinking about the original version of the iPhone backup utilities I wrote back in 2017. The reception of that project has eclipsed most of my others, and is still a heavy driver of traffic to this site. There were a couple of problems with the original implementation, mainly with the approach and scope of what we were trying to accomplish.

Long story short - over the past couple years, I’ve been working on a new version. You can find it here on its Github project page.

You can read the original writeup on the project here: https://www.richinfante.com/2017/3/16/reverse-engineering-the-ios-backup

Retrospective

In the original project, there was a heavy focus on “extractors” as they were called. This focus caused a major maintenance burden, since these were essentially undocumented data structures that varied widely between iOS versions and often depended on third party apps which widely vary in how they operate. This isn’t ideal. Also, the choice of node.js probably wasn’t ideal and didn’t allow us to ship a single binary.

New Project

With this new version, which is currently experimental (but functional), on all “new” backups for iOS versions 10+. I have the goal of porting over the legacy backup manifest code, but it will most likely not support encryption. It supports encryption, and will prompt for backup passwords. It is written entirely in rust which should allow it to be more robust.

For the scope of this new tool, I’m focusing just on core iOS features. Mainly - extracting and listing files from inside both encrypted and unencrypted backups. I may release features that access storage from core iOS features such as messages, contacts, etc. I won’t accept any PRs for tools that work with third party apps. However, it should be fairly easy to write such a tool by extracting files and operating on them directly.

For this version, I also wanted to enable reading directly from backups compressed in a .zip file. In my own personal backup solution, I zip the entire backup directory and store it encrypted on my storage server. Allowing this tool to read directly from those .zip files of individual backups allows for much easier retrieval of files.

You can read more about the new project and its usage on the Github project page.

Change Log

  • 10/24/2022 - Initial Revision

Found a typo or technical problem? file an issue!