Python CLI utility for decrypting encrypted iTunes / Finder local iOS backups, extracting files, modifying backup contents, and writing encrypted data back into the original backup structure.
- Unlock encrypted iOS backups using the backup password
- Decrypt
Manifest.db - Enumerate backup entries
- Extract individual files
- Decrypt the entire backup into a workspace directory
- Modify extracted files and write them back encrypted
- Re-encrypt and commit
Manifest.db - Works directly with native iTunes / Finder backup format
- Clone repo
- (on Linux) create virtual env
- Install requirements:
pip install -r requirements.txtGeneral syntax:
python ./src/main.py --backup <BACKUP_PATH> --password <PASSWORD> COMMANDExample:
python ./src/main.py \
--backup ~/Library/Application\ Support/MobileSync/Backup/<DEVICE_ID> \
--password mypassword \
unlockVerify the password and decrypt Manifest.db.
python ./src/main.py \
--backup <BACKUP_PATH> \
--password <PASSWORD> \
unlockDecrypt all files from the backup into the workspace directory.
python ./src/main.py \
--backup <BACKUP_PATH> \
--password <PASSWORD> \
decryptDefault workspace:
~/ios_backup_working_directory
Custom workspace:
python ./src/main.py \
--backup <BACKUP_PATH> \
--password <PASSWORD> \
--workspace ./workspace \
decryptList entries stored in the backup.
python ./src/main.py \
--backup <BACKUP_PATH> \
--password <PASSWORD> \
listFilter by domain:
python ./src/main.py \
--backup <BACKUP_PATH> \
--password <PASSWORD> \
list --domain HomeDomainFilter by relative path:
python ./src/main.py \
--backup <BACKUP_PATH> \
--password <PASSWORD> \
list --filter smsExtract a single file using a fileID prefix or exact relative path.
By fileID:
python ./src/main.py \
--backup <BACKUP_PATH> \
--password <PASSWORD> \
extract 3d0d7e5fBy relative path:
python ./src/main.py \
--backup <BACKUP_PATH> \
--password <PASSWORD> \
extract Library/SMS/sms.dbExtract all files from one specidfied domain only:
python ./src/main.py \
--backup <BACKUP_PATH> \
--password <PASSWORD> \
extract-domain CameraRollDomainRe-encrypt a modified workspace file and write it back into the original backup.
python ./src/main.py \
--backup <BACKUP_PATH> \
--password <PASSWORD> \
write-back Library/SMS/sms.dbHow to edit a file algorythm:
- Extract file
- Modify/replace file inside workspace
- Run
write-back - Run
commit
Re-encrypt and replace Manifest.db inside the backup.
python ./src/main.py \
--backup <BACKUP_PATH> \
--password <PASSWORD> \
commit- The tool operates directly on backup files
- Always keep a separate untouched copy of the original backup.
- Some entries may not be regular files (
flags != 1) - Certain protected or unsupported entries may fail to decrypt
- Use rewriting ability of this project with caution
This project is provided for educational, research, interoperability, forensic, and personal backup analysis purposes only.
You are solely responsible for complying with all applicable laws and regulations in your jurisdiction.
Do not use this software on devices or backups that you do not own or have explicit authorization to analyze.