iBackupFS is a FUSEOFS based filesystem representation of your iTunes device backups. As a filesystem it can provide alternative views on the backuped data including on-the-fly decryption, alternative directory graphs and "smart folders", aggregating special files of interest into groups.
You can use it to backup otherwise unreachable content like your WhatsApp chats or to inspect the contents of files you normally don't get to see on your device(s).
- Xcode
- I used Xcode 11.3.1, but earlier versions might also work
- Carthage
- Once installed, everything should work out-of-the-box as Carthage is integrated into the build process via a script phase
- macFUSE
In order to access the backups, on macOS 10.14 and later iBackupFS needs to be granted Full Disk Access permission. As a convenience, iBackupFS will open the appropriate preference pane for you in case it's necessary.
Encrypted backups need a password for decryption. The password has to be put
in a user default formed from the device's name and the string _Password
.
Example: if your device is named "iPhone", then the default key for its
password is iPhone_Password
.
Customization can be achieved, apart from modifying the code, by providing user defaults.
Default | Type | Purpose |
---|---|---|
BackupPath |
String |
Complete path to the Backup directory. Useful for testing purposes (if you don't want to deal with Full Disk Access Security all the time). |
ReplaceMap |
Dictionary |
Used to map device specific "domains" to folders. See iBackupFS-Info.plist for examples. |
ShowFileID |
BOOL |
Prepends file names with their corresponding fileID . Useful if you need these for inclusion in a smart group. |
UseGroups |
BOOL |
Decide whether to use smart groups at all. |
UseGroupsOnly |
BOOL |
Decide whether to use only smart groups. |
Groups |
Dictionary |
See below. |
Groups are a dictionary of virtual paths, whose contents are either mapped
from lists of fileID
or from database WHERE CLAUSES (according to the
scheme of the underlying Manifest.db
SQLite
database). See iBackupFS-Info.plist for
examples.
Of course, thanks go to Benjamin Fleischer of macFUSE for still investing time into this great project. Thanks must also go to the maintainers of The iPhone Wiki, specifially to the iTunes Backup page. The most valuable resource, once again (like often times) was Stackoverflow - specifically the post by Andrew Neitsch at How to decrypt an encrypted iPhone backup. Almost all the code in Keybag is a direct port from the posted Python code to Objective-C. Carthage is really helpful and without FMDB I'd have to write a SQLite wrapper myself, so thanks for saving me some time! ;-)