Skip to content
KitploitKITPLOIT
ToolsBlog
Submit
ToolsBlog
Submit

Hacking, PenTest, and Cybersecurity Tools for Your Security Arsenal!

Kitploit is a directory of hacking, cybersecurity, and pentesting tools. Discover the latest project updates to find vulnerabilities, analyze systems, automate testing, and strengthen your security.

··Feeds·Contact·Privacy·© 2026 Kitploit

Tool Directory

Categories

View all categories
Loading categories
ipaforge — Dependency-free Python CLI to unpack, inspect, edit, and rebuild iOS .ipa archives, converting plists and strings to XML while preserving Mach-O binaries and signing bundles. | Kitploit
Tools/GitHubGitHub/vighnesh91/ipaforge
Static AnalysisiOS SecurityCode AnalysisMobile App PentestingReverse EngineeringPenetration TestingMobile SecurityUtilities & FrameworksBinary Analysis
GitHubvighnesh91/ipaforge

ipaforge

Dependency-free Python CLI to unpack, inspect, edit, and rebuild iOS .ipa archives, converting plists and strings to XML while preserving Mach-O binaries and signing bundles.

42 days agoNot yet reviewed
View Repository

Most Popular

View all →

Discover the most used tools by our community.

Explore all tools

Browse our collection of tools

View all tools →
Share

#IPAForge

IPAForge is a dependency-free Python command-line tool for unpacking, inspecting, editing, and rebuilding iOS .ipa archives.

It extracts the complete archive, converts editable Apple plist and localization formats into readable XML, preserves opaque and binary content byte-for-byte, and records every conversion in ipaforge.yml so the framework can be rebuilt faithfully.

Use responsibly: IPAForge is intended for interoperability, security research, and legitimate application analysis. Respect applicable laws, licenses, and terms of service.

Features

  • Decode and rebuild standard iOS .ipa archives.
  • Extract 100% of archive contents; nothing is silently skipped or dropped.
  • Convert binary plists with any file extension into readable XML.
  • Convert legacy text .strings files into editable XML.
  • Re-encode converted files into their original native formats during build.
  • Preserve Mach-O binaries and Apple proprietary formats such as .car, .nib, and .mom.
  • Extract embedded entitlements and provisioning profile information as readable references.
  • Generate per-file classification and conversion metadata in ipaforge.yml.
  • Built-in ad-hoc signing with no external signing utility required.
  • Optional real certificate signing using PKCS#12 certificates and provisioning profiles.
  • Standard-library only; no third-party Python packages are required.
  • Requirements

    • Python 3.6 or newer is recommended.
    • Python 2.7 and Python 3.2+ are supported by the script's compatibility layer.
    • A valid .ipa archive containing a Payload/<AppName>.app bundle.

    Installation

    IPAForge can be used directly as a single Python file:

    root@kitploit:~
    python3 ipaforge.py --help
    

    To install the ipaforge command on your PATH:

    root@kitploit:~
    python3 ipaforge.py --install
    

    To extract the bundled distribution files without installing them:

    root@kitploit:~
    python3 ipaforge.py --extract
    

    Quick start

    Decode an IPA

    root@kitploit:~
    ipaforge -d MyApp.ipa
    

    This creates a framework directory in the current working directory, normally ./MyApp/.

    Edit the decoded files

    Modify readable XML files inside the generated framework. The original archive data and references are kept in original/; files that were converted are tracked in ipaforge.yml.

    Build a new IPA

    root@kitploit:~
    ipaforge -b MyApp
    

    The default output is ./MyApp-signed.ipa in the current working directory.

    Use explicit paths

    root@kitploit:~
    ipaforge -d MyApp.ipa decoded-framework
    ipaforge -b decoded-framework rebuilt.ipa
    

    Command-line reference

    root@kitploit:~
    ipaforge -d, --decode INPUT [OUTPUT]
    ipaforge -b, --build  INPUT [OUTPUT]
    
    OptionDescription
    -d, --decodeDecode an IPA into an editable framework directory.
    -b, --buildBuild an IPA from a decoded framework directory.
    -f, --forceOverwrite an existing output directory or file.
    --no-metaDo not write ipaforge.yml during decode.
    --keep-binaryKeep all files binary during decode; disable XML conversion.
    -c 0-9, --compression-level 0-9Set ZIP compression level. Default: 9.
    --no-signBuild an intentionally unsigned archive.
    --entitlements FILEEmbed entitlements in the built signature.
    --p12 FILESign with a real PKCS#12 developer certificate.
    --p12-password PASSPassword for the PKCS#12 certificate.
    --provision FILEEmbed and use a provisioning profile with --p12.
    -v, --verboseEnable debug logging.
    -q, --quietPrint only errors.
    --versionDisplay the IPAForge version.
    -h, --helpDisplay help.

    On Windows, the mode can be inferred automatically: an .ipa input is decoded and a framework directory is built.

    Signing

    Build mode signs bundles with the built-in ad-hoc signer by default. It creates CodeDirectory data for Mach-O binaries and fresh _CodeSignature/CodeResources files for application bundles.

    For installation on stock iOS devices, use a real developer certificate and a compatible provisioning profile:

    root@kitploit:~
    ipaforge -b MyApp \
      --p12 developer.p12 \
      --p12-password 'your-password' \
      --provision embedded.mobileprovision
    

    To embed custom entitlements:

    root@kitploit:~
    ipaforge -b MyApp --entitlements entitlements.plist
    

    To intentionally create an unsigned archive:

    root@kitploit:~
    ipaforge -b MyApp --no-sign
    

    Unsigned archives generally cannot be installed by iOS.

    Decode output structure

    A decoded framework commonly contains:

    root@kitploit:~
    MyApp/
    ├── Payload/
    │   └── MyApp.app/
    ├── original/       # reference copies of signatures, profiles, and entitlements
    ├── readable/       # human-readable summaries for opaque formats and binaries
    └── ipaforge.yml    # file classifications and conversion metadata
    

    The original/ directory and ipaforge.yml are never packaged into the rebuilt IPA.

    File handling

    IPAForge classifies extracted files into categories including:

    • native-bplist — binary property lists converted to XML and rebuilt as binary plists.
    • legacy-strings — classic .strings files converted to XML and rebuilt as UTF-16 text.
    • xml-plist — existing XML plist files preserved as text.
    • opaque-compiled — proprietary compiled Apple formats preserved byte-for-byte.
    • native-binary — Mach-O executables and libraries preserved byte-for-byte.
    • other-binary — images, audio, DER data, and other resources preserved byte-for-byte.

    Exit codes

    CodeMeaning
    0Successful operation.
    1Runtime error, such as an invalid archive or signing failure.
    2Command-line usage error.
    141Standard output closed early by a pipe consumer.

    Security notes

    IPAForge processes untrusted archive contents. The tool applies defensive limits to individual archive members and total uncompressed archive size, but you should still inspect unknown files in an isolated environment.

    Do not distribute or install applications unless you have the legal right to analyze and sign them.

    License

    Add the project's license text here before publishing to GitHub. If no license is included, GitHub users do not automatically receive permission to use, modify, or redistribute the code.

    Contributing

    Issues and pull requests are welcome. Please include:

    • Python version and operating system.
    • The IPAForge version.
    • The command that was run.
    • Relevant log output with sensitive information removed.
    • A minimal reproduction archive or description when possible.

    Version

    This README describes IPAForge 1.24.0.

    Download Tool