Skip to content

Instantly share code, notes, and snippets.

@trevorwang
Forked from noamtm/parse_ipa.py
Created August 10, 2017 07:02
Show Gist options
  • Save trevorwang/8eb7cf1479a720f3d50cb1b3ee0c2dca to your computer and use it in GitHub Desktop.
Save trevorwang/8eb7cf1479a720f3d50cb1b3ee0c2dca to your computer and use it in GitHub Desktop.
Python: Parse Info.plist from IPA on OSX
#!/usr/bin/env python
from Foundation import NSData, NSPropertyListSerialization
import fnmatch
import sys
from zipfile import ZipFile
# TODO: Add error checking.
def parse_plist(info_plist_string):
# Use PyObjC, pre-installed in Apple's Python dist.
data = NSData.dataWithBytes_length_(info_plist_string, len(info_plist_string))
return NSPropertyListSerialization.propertyListWithData_options_format_error_(data, 0, None, None)
def parse_ipa_info(ipa_path):
ipa_zip = ZipFile(ipa_path)
files = ipa_zip.namelist()
info_plist = fnmatch.filter(files, "Payload/*.app/Info.plist")[0]
info_plist_bin = ipa_zip.read(info_plist)
info = parse_plist(info_plist_bin)[0]
ipa_zip.close()
return info
if __name__ == "__main__":
print parse_ipa_info(sys.argv[1])
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment