Step # |
Method |
URL |
Headers |
Response |
Comments |
1 |
GET |
https://setup.icloud.com/setup/authenticate/<iCloudUserName> |
Authorization |
"basic " + base64(iCloudUserName + ":" + iCloudPassword) |
|
DsPrsID and mmeAuthToken |
These values will be used for authentication in the next step |
2 |
GET |
https://setup.icloud.com/setup/get_account_settings |
Authorization |
"basic " + base64(DsPrsID + ":" + mmeAuthToken) |
| Info about the user |
This will return a NEW AND DIFFERENT MMEAUTHTOKEN. Use this new one instead of the one from /authenticate. It will also tell you what number should come after the "p" (partition #?) in the next urls. |
3 |
GET |
https://p##-mobilebackup.icloud.com/mbs/<DsPrsID>/ |
Authorization |
"X‑MobileMe‑AuthToken " + base64(DsPrsID + ":" + mmeAuthToken) |
|
A list of BackupUDIDS |
Each "BackupUDID" represents a device linked with the account. Parse with "DeviceUDIDs" class. |
4 |
GET |
https://p##-mobilebackup.icloud.com/mbs/<DsPrsID>/<UDID> |
Authorization |
"X‑MobileMe‑AuthToken " + base64(DsPrsID + ":" + mmeAuthToken) |
|
Device info list of backups |
Use the "Device" class to parse out the info (name, color, etc) and backups.
Choose a backup to download based on backup date and get its "snapshotID"
|
5 |
GET |
https://p##-mobilebackup.icloud.com/mbs/<DsPrsID>/getKeys |
Authorization |
"X‑MobileMe‑AuthToken " + base64(DsPrsID + ":" + mmeAuthToken) |
|
Decryption Keys |
Parse these with "Keys." I have no clue how to use these yet. They are probably for decrypting the chunks |
6 |
GET |
https://p##-mobilebackup.icloud.com/mbs/<DsPrsID>/<UDID>/<SnapshotID> |
Authorization |
"X‑MobileMe‑AuthToken " + base64(DsPrsID + ":" + mmeAuthToken) |
|
File List |
Returns a list of chunks (files) and info about each one. These are a little tricky to parse. |
7 |
POST |
https://p##-mobilebackup.icloud.com/mbs/<DsPrsID>/<UDID>/<SnapshotID>/getFiles |
This is where I'm stuck. I have no idea how to get any of this without restoring. |
File Auth tokens (fileAuthToken) |
If anybody is willing to restore a jailbreakable A4 device, let me know ASAP! This part of the project is stopping me from continuing on. |
8 |
POST |
https://p##-content.icloud.com/<dsPrsID>/authorizeGet |
x-apple-mmcs-auth |
The fileAuthToken from the previous URL |
x-apple-mmcs-dataclass |
com.apple.Dataclass.Backup |
x-apple-mmcs-proto-version |
3.3 |
x-apple-mme-dsid |
DsPrsID |
x-apple-request-uuid |
4EFFF273-5611-479B-A945-04DA0A0F2C3A |
x-mme-client-info |
Same as before |
|
File URL |
Once you download the file using that URL, just decrypt it with getKeys and rename it with the info from listFiles |