Skip to content
FUSEOFS based filesystem for accessing iTunes device backups
Objective-C
Branch: master
Clone or download

Latest commit

Fetching latest commit…
Cannot retrieve the latest commit at this time.

Files

Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
FUSEOFS @ 5b04bf3
iBackupFS.xcodeproj
iBackupFS
.gitignore
.gitmodules
Cartfile
LICENSE
NOTES.md
README.md
Version

README.md

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 most 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 translation 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

You can’t perform that action at this time.