8000 GitHub - londek/ipadecrypt: πŸ”“ ipadecrypt is an open-source tool for downloading, patching and decrypting .ipa's with minimal user intervention on palera1n and dopamine jailbreaks Β· GitHub
[go: up one dir, main page]

Skip to content

About

πŸ”“ ipadecrypt is an open-source tool for downloading, patching and decrypting .ipa's with minimal user intervention on palera1n and dopamine jailbreaks

Topics

Resources

Stars

745 stars

Watchers

4 watching

Forks

Latest commit

Β 

History

153 Commits

Folders and files

NameName
Last commit message
Last commit date
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

ipadecrypt

End-to-end FairPlay decrypter for App Store apps. Give it a bundle ID, get a decrypted .ipa. And yes - it happily decrypts iOS 26 apps.

Go Version macOS Linux Windows License PRs Welcome

Sponsored by Veris Labs: stop debugging headers. Akamai BMP sensor data (x-acf-sensor-data) for iOS apps from one request, ~10 ms, BMP 3.x to 4.4.0.

How it works

ipadecrypt decrypts FairPlay apps on your computer - no device in the loop for day-to-day use. A jailbroken device is needed exactly once per Apple account, during bootstrap, to mint a reusable 16-byte account credential. After that, downloading and decrypting any app for that account is fully offline.

The offline decryptor handles arm64, arm64e, arm64_32 and 32-bit ARM slices, with page keys from .supf/.v5.supf or .supp/.v4.supp files. A fat binary is thinned to one slice: the plain arm64 slice, else arm64e, else arm64_32, else 32-bit ARM (armv7 when there are several). The other slices are dropped from the output. Apple Arcade apps need a second, Arcade credential from the same account, minted alongside the regular one. If an app can't be decrypted offline at all, ipadecrypt automatically falls back to decrypting it on your jailbroken device when one is configured (the same device used for minting). Pass --no-on-device to disable the fallback, or --on-device to go straight to the device.

Requirements

On your computer

  • Nothing special for everyday decrypting. A jailbroken iPhone reachable over the network (or over USB with iproxy) is needed for the one-time mint, and again only for the on-device fallback on apps that can't be decrypted offline.

On the jailbroken iPhone

Requirement Purpose
OpenSSH The mint and the on-device fallback connect over SSH (install OpenSSH from Sileo), as root or as a user that can sudo - mobile on Dopamine and palera1n rootless, where root has no password by default. With SSH key auth you are asked once for that user's sudo password
β‰₯1 owned App Store app installed Bought with the same Apple ID; used to trigger FairPlay once during the mint
An Apple Arcade app installed (optional) From the same Apple ID; only to mint the Arcade credential that decrypts Arcade apps
AppSync Unified + appinst Only for the on-device fallback: installs the app on the device so it can be decrypted

Tested on iOS 16.7.11 with palera1n rootless and Dopamine on iPhone 8 Plus. iOS 10+ is expected to work for minting; decryption itself runs anywhere.

Install

Download a prebuilt binary from the releases page.

Using go install:

go install github.com/londek/ipadecrypt/cmd/ipadecrypt@latest

From source (refer to BUILDING.md for detailed instructions):

git clone https://github.com/londek/ipadecrypt
cd ipadecrypt
go build ./cmd/ipadecrypt

Usage

First-time setup

ipadecrypt bootstrap

A three-step interactive wizard:

  1. App Store sign-in - Logs into the App Store. Credentials stay local in ~/.ipadecrypt/config.json. The first sign-in downloads and caches the Apple frameworks the App Store engine emulates (~tens of MB, range-extracted from a pinned macOS image) under ~/.cache/ipadecrypt/; later runs reuse the cache.
  2. Credential mint - Connects once to your jailbroken device over SSH and extracts the reusable account credential, cached under ~/.ipadecrypt/credentials/. If an Apple Arcade app from the account is installed, it also mints the account's Arcade credential; without one that step is skipped, and you can add it later by installing an Arcade app and re-running with --remint.
  3. On-device fallback check - Verifies the device is ready to decrypt apps the offline decryptor can't handle (AppSync Unified + appinst present, helper uploads and execs). Best-effort: a missing prerequisite only disables that fallback and is reported, not fatal.

Run it again anytime; it skips minting if a credential is already cached (pass --remint to force). After bootstrap, decrypting is fully offline - the device is only needed again for the on-device fallback.

Decrypt an app

ipadecrypt decrypt <bundle-id|app-store-id|app-store-url|path-to-local-ipa>

This decrypts offline. If the offline path can't handle the app and a jailbroken device is configured, ipadecrypt automatically falls back to decrypting it on the device. Useful flags:

  • --on-device - skip the offline attempt and decrypt on the device directly.
  • --no-on-device - never touch the device; fail if offline can't fully decrypt.
  • --keep-watch - keep and decrypt the Watch app instead of removing it (offline only).
  • --patch-device-type - expand UIDeviceFamily so an app built for a different device type still installs during the on-device fallback.
  • --no-uninstall / --force-uninstall - control whether the app is removed from the device after an on-device decrypt (default: removed only if this run installed it).

List versions of an app

ipadecrypt versions <bundle-id|app-store-id|app-store-url>

Known issues

  • Only the supported SINF/SUPF/SUPP license formats decrypt offline; apps shipping a newer, unsupported SC_Info format fall back to the on-device path when a device is configured.
  • The credential is per Apple account: decrypting an app requires signing in with (and having minted from) the account that owns it.
  • Only one slice per binary is decrypted: a fat binary is thinned to its plain arm64 slice, else arm64e, else arm64_32, else 32-bit ARM (armv7 when there are several). The other slices are dropped from the output. A binary with no ARM slice can't be decrypted offline.
  • A Watch app kept with --keep-watch is thinned like any other binary (normally to arm64_32), so it does not run on Apple Watch Series 3 or earlier.
  • Apple Arcade apps decrypt only with the account's Arcade credential; without it they fall back to the on-device path when a device is configured.

License

MIT.

Prior art

AI Disclaimer

This project was developed with the assistance of AI tools. While I can't guarantee the accuracy of all AI-generated content, I have overviewed creation process and then reviewed, tested the code to ensure it meets the project's requirements.

Star History Chart

About

πŸ”“ ipadecrypt is an open-source tool for downloading, patching and decrypting .ipa's with minimal user intervention on palera1n and dopamine jailbreaks

Topics

Resources

Stars

745 stars

Watchers

4 watching

Forks

Releases

Packages

Used by

Contributors

Languages

0