Skip to content

znek/iBackupFS

Repository files navigation

iBackupFS

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).

Building Requirements

  • Xcode
  • Carthage
    • Once installed, everything should work out-of-the-box as Carthage is integrated into the build process via a script phase
  • macFUSE

First Run

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

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

Customization can be achieved, apart from modifying the code, by providing user defaults.

Builtin customization via 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

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.

Thanks

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! ;-)

References

Releases

No releases published

Packages

No packages published