Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

📦 iOS IPA Extractor

Extract IPAs from non-jailbroken iOS devices in a few commands — no jailbreak, no third-party app stores, no shady tools.

Platform iOS License Python


✨ What this does

Connect your iPhone/iPad over USB and pull any installed App Store app as a proper .ipa file — ready to install on another device, inspect, or archive.

Works on:

  • Any non-jailbroken iOS 16+ device
  • All App Store apps (free or paid, as long as your Apple ID has access)
  • macOS 12 Monterey and later (Apple Silicon & Intel)

🛠 How it works

On non-jailbroken iOS, the app binary on the device is sandboxed and unreadable from macOS — even over USB. So instead of pulling from the device, we:

  1. Detect the connected device and enumerate installed apps using Frida
  2. Identify the app's Bundle ID from the live device
  3. Download the authentic IPA directly from Apple's CDN using ipatool — authenticated with your Apple ID

The resulting IPA is the exact same file Apple distributes, with FairPlay encryption. It installs on any device authorized with the same Apple ID.

iPhone (USB)                  macOS                    Apple CDN
     │                           │                          │
     │── enumerate apps ─────────▶│                          │
     │◀─ bundle ID: com.x.y ─────│                          │
     │                           │── download IPA ──────────▶│
     │                           │◀─ MyApp.ipa (encrypted) ──│
     │                           │                          │
     │◀──────── install ─────────│                          │

⚡ Quick Start (3 steps)

Prerequisites

  • macOS 12+
  • iPhone/iPad connected via USB with "Trust This Computer" accepted
  • Your Apple ID (the one with the target app installed)

Step 1 — Clone & set up

git clone https://github.com/iw00tr00t/ios-ipa-extractor.git
cd ios-ipa-extractor
chmod +x extract_ipa.sh

Step 2 — Install dependencies

# Install Homebrew (if not already installed)
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

# Install ipatool and Python deps
brew install ipatool
pip3 install -r requirements.txt

Step 3 — Run

./extract_ipa.sh

The script will:

  • Detect your connected iPhone/iPad
  • Show all installed apps with their bundle IDs
  • Ask for your Apple ID to authenticate
  • Download the IPA to the current directory

🎯 Usage

Interactive mode (recommended for first time)

./extract_ipa.sh

Specify the app directly

./extract_ipa.sh -b com.example.myapp

Full options

./extract_ipa.sh -b com.example.myapp -o ~/Downloads/MyApp.ipa -e me@icloud.com
Flag Description
-b, --bundle-id Bundle identifier of the app
-o, --output Output path for the .ipa file
-e, --email Apple ID email
-p, --password Apple ID password (optional, prompted if omitted)
-c, --2fa-code 2FA code (optional, prompted if needed)

Just list apps on your device

python3 find_apps.py            # List all 3rd-party apps
python3 find_apps.py "spotify"  # Search by name or bundle ID
python3 find_apps.py --all      # Include system apps

📋 Step-by-step (manual)

If you prefer to run each step yourself:

1. Find the bundle ID of your app

python3 find_apps.py
[+] Connected to: iPhone

PID      Name                           Bundle ID
--------------------------------------------------------------------------------
-        Instagram                      com.burbn.instagram
-        Netflix                        com.netflix.Netflix
-        Spotify                        com.spotify.client
-        MyApp                          com.bundle.app

2. Authenticate with your Apple ID

ipatool auth login -e your@icloud.com
# Enter password when prompted
# Enter 2FA code when prompted

3. Download the IPA

ipatool download -b com.bundle.app -o MyApp.ipa --purchase

4. Verify the IPA

unzip -l MyApp.ipa | grep "Payload/"
     0  Payload/MyApp.app/
58787824  Payload/MyApp.app/MyApp
   10276  Payload/MyApp.app/Info.plist

📲 Installing the IPA on another device

Same Apple ID (simplest)

Sign in to the same Apple ID on the target device, then:

# Get the target device UDID
xcrun devicectl list devices

# Install
xcrun devicectl device install --device <UDID> MyApp.ipa

Or drag the .ipa into Xcode → Window → Devices and Simulators.

Different Apple ID (re-signing required)

You'll need an Apple Developer account. Use iOS App Signer or:

# Install ios-deploy
brew install ios-deploy

# Re-sign with your certificate (requires Xcode + provisioning profile)
# See: https://developer.apple.com/documentation/xcode/distributing-your-app-to-registered-devices

🔧 Troubleshooting

Problem Fix
No iOS device detected Unlock device → tap Trust This Computer → retry
Failed to get account Run ipatool auth login -e you@icloud.com first
License required Add --purchase flag (works for free apps too)
Frida not found pip3 install frida frida-tools
ipatool not found brew install ipatool
Download stuck / slow Normal — large apps can be 500MB+, be patient
2FA prompt loop Use --auth-code flag with the code from your device

🔐 Security & Privacy

  • Your Apple ID credentials are stored only in your local macOS Keychain by ipatool — never sent anywhere except Apple's servers
  • The downloaded IPA is encrypted with FairPlay DRM — the binary cannot be run or read on a PC, only on an authorized iOS device
  • This tool does not modify, crack, or decrypt any app binary

📚 Acknowledgements

  • Frida — Dynamic instrumentation toolkit for app enumeration
  • ipatool — CLI tool to interact with Apple's App Store
  • pymobiledevice3 — Pure-Python library for iOS device communication

📄 License

MIT — see LICENSE


🤝 Contributing

PRs welcome! If you hit an issue or want to add support for enterprise/TestFlight apps, open an issue.

About

Extract IPAs from non-jailbroken iOS devices in 3 steps — no jailbreak required

Topics

Resources

Stars

13 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages