Skip to content

Instantly share code, notes, and snippets.

@n0mi1k
Last active August 27, 2025 17:05

Revisions

  1. n0mi1k revised this gist Aug 21, 2023. 1 changed file with 1 addition and 1 deletion.
    2 changes: 1 addition & 1 deletion ipagrabber.py
    Original file line number Diff line number Diff line change
    @@ -7,7 +7,7 @@
    1. Install Apple Configurator from the Mac App Store and sign in
    2. Connect your iOS device to your Mac
    3. Select "Add > Apps..." and search for the app you want to install, click "Add"
    4. The newer Apple Configurator deletes the app after installing it, so you'll need to use this tool to grab it before deleting
    4. The newer Apple Configurator deletes the IPA after installing it, so you'll need to use this tool to grab it
    5. Run this script and wait for the app to be installed
    NOTE: Remember to modify appsDir and ipaDir accordingly below
  2. n0mi1k created this gist Aug 21, 2023.
    34 changes: 34 additions & 0 deletions ipagrabber.py
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,34 @@
    import os
    import shutil

    """
    Steps to retrieve the IPA file from the Configurator app:
    1. Install Apple Configurator from the Mac App Store and sign in
    2. Connect your iOS device to your Mac
    3. Select "Add > Apps..." and search for the app you want to install, click "Add"
    4. The newer Apple Configurator deletes the app after installing it, so you'll need to use this tool to grab it before deleting
    5. Run this script and wait for the app to be installed
    NOTE: Remember to modify appsDir and ipaDir accordingly below
    """

    appsDir = "/Users/user/Library/Group Containers/K36BKF7T3D.group.com.apple.configurator/Library/Caches/Assets/TemporaryItems/MobileApps" # Configurator app directory
    ipaDir = "/Users/user/Desktop/IPAs" # Directory to extract to

    if not os.path.exists(ipaDir):
    os.makedirs(ipaDir)

    print("[+] Waiting for new IPA...")
    ipaList = []
    while True:
    for root, dirs, files in os.walk(appsDir):
    for file in files:
    if file.endswith(".ipa"):
    if os.path.join(root, file) in ipaList:
    continue
    ipaPath = os.path.join(root, file)
    print(ipaPath)
    ipaList.append(ipaPath)
    shutil.copy2(ipaPath, os.path.join(ipaDir, file))
    print(f"[+] Extracted new IPA {file} to {ipaDir}")