IPA Encryption Checker

IPAchecker Python Package

IPAchecker - Python Package

IPA Encryption Checker uses the ipachecker Python package for analyzing IPA files

Credits to norep on Discord for the original analysis script

Installation

Install the package using pip (requires Python 3.8 or newer):

Installation Command
Copied!
pip install ipachecker

Basic Usage

Once installed, you can use the ipachecker command to analyze IPA files:

Basic Commands
Copied!
# Analyze a local IPA file
ipachecker /path/app.ipa

# Download and analyze from URL
ipachecker https://example.com/app.ipa

# Analyze and rename to obscura format
ipachecker app.ipa --rename

# Analyze multiple files and rename them
ipachecker app1.ipa app2.ipa app3.ipa --rename

# Export results to JSON
ipachecker app.ipa --json --output results.json

# Batch analyze all IPAs in a folder
ipachecker --batch-analysis /path/to/folder

# Batch analyze and rename all files
ipachecker --batch-analysis /path/to/folder --rename

# Batch analyze from URL/path list file
ipachecker --batch-analysis list.txt

# Download, keep, and rename the file
ipachecker https://example.com/app.ipa --dont-delete --rename

Command Line Options

Features

File Renaming Feature NEW

The --rename flag automatically renames analyzed IPA files to the standardized Obscura filename format:

Rename Examples
Copied!
# Rename format:
# {DisplayName}-({BundleID})-{AppVersion}-(iOS_{MinVersion})-{MD5Hash}.ipa

# Example: Rename a single file
ipachecker MyApp.ipa --rename
# Result: MyApp-(com.company.myapp)-1.2.3-(iOS_13.0)-abc123...ipa

# Batch rename all IPAs in a folder
ipachecker --batch-analysis /path/to/ipas --rename

# The rename feature:
# Only renames local files (not downloads unless --dont-delete used)
# Skips files already in obscura format
# Won't overwrite existing files
# Handles permission errors gracefully
# Works with both single and batch analysis

Example Output

Sample Output
Copied!
┏━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
┃ Property              ┃ Value                                                          ┃
┡━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┩
│ Name                  │ Example                                                        │
│ Display Name          │ Example                                                        │
│ Bundle Identifier     │ com.example.app                                                │
│ Version               │ 1.0                                                            │
│ Minimum iOS           │ 2.0                                                            │
│ Architecture          │ 32-bit                                                         │
│ Encrypted             │ YES                                                            │
│ Original Filename     │ example_app.ipa                                                │
│ MD5 Hash              │ d41d8cd98f00b204e9800998ecf8427e                               │
│ File Size             │ 67 bytes                                                       │
└───────────────────────┴────────────────────────────────────────────────────────────────┘

Obscura-format filename:
Example-(com.example.app)-1.0-(iOS_2.0)-d41d8cd98f00b204e9800998ecf8427e.ipa

JSON Output Format

When using --json flag, the output follows this structure:

JSON Structure
Copied!
{
  "appName": "Instagram",
  "displayName": "Instagram", 
  "bundleId": "com.burbn.instagram",
  "appVersion": "245.0",
  "minIOS": "13.0",
  "architecture": "64-bit",
  "encrypted": true,
  "obscuraFilename": "Instagram-(com.burbn.instagram)-245.0-(iOS_13.0)-d41d8cd98f00b204e9800998ecf8427e.ipa",
  "originalFilename": "instagram.ipa",
  "md5": "d41d8cd98f00b204e9800998ecf8427e",
  "fileSize": 125829120,
  "filePath": "/path/to/instagram.ipa"
}

Note: In no way do we take any responsibility for any IPA files analyzed with this tool