我想编写一个程序,从ipa文件中获取应用程序的详细信息,例如应用程序名称、版本和捆绑标识符。然而,这个文件不是纯文本文件,它以某种方式进行编码,我的程序无法解析。
有没有办法解码这个文件? 更新 为了澄清问题,我正在编写一个Python程序,从我从Xcode导出的ipa文件中获取应用程序的详细信息。
有没有办法解码这个文件? 更新 为了澄清问题,我正在编写一个Python程序,从我从Xcode导出的ipa文件中获取应用程序的详细信息。
如果你有一台MacBook电脑,这个过程会很容易。
然后按照以下指南进行操作:http://osxdaily.com/2011/04/07/extract-and-explore-an-ios-app-in-mac-os-x/
对于那些没有苹果开发者登录的人,这里是来自被接受的答案链接的两个答案(你必须登录才能看到):
PlistBuddy
/usr/libexec/PlistBuddy -c "Print :CFBundleIdentifier" yourBinaryOrXmlPlist.plist
我的Python版本: https://gist.github.com/noamtm/a8ddb994df41583b64f8
在我的研究中,棘手的部分是解析二进制plist,因为Python的PlistLib无法读取它:
from Foundation import NSData, NSPropertyListSerialization
# Use PyObjC, pre-installed in Apple's Python dist.
def parse_plist(info_plist_string):
data = NSData.dataWithBytes_length_(info_plist_string, len(info_plist_string))
return NSPropertyListSerialization.propertyListWithData_options_format_error_(data, 0, None, None)
我从苹果的开发者论坛上获得了答案:
PlistBuddy是你要找的工具:
/usr/libexec/PlistBuddy -c "Print :CFBundleIdentifier" yourBinaryOrXmlPlist.plist
plutil
来完成此操作:# Convert a binary plist to XML
plutil -convert xml1 info.plist
# Convert XML back to binary
plutil -convert binary1 info.plist
如需更多细节,请在终端中输入man plutil
。
如果您想以编程方式解析文本或二进制.plist
文件,例如使用Python,则可以使用标准库模块plistlib
:
import plistlib
with open ('/etc/bootpd.plist', 'rb') as plist:
conf = plistlib.load(plist)
print(conf['dhcp_enabled'])
from zipfile import ZipFile
import plistlib
with ZipFile("/content/sample_data/Experience Abu Dhabi.app.zip", 'r') as zObject:
zObject.extractall(
path="/content/sample_data/temp")
path = "/content/sample_data/temp/Experience Abu Dhabi.app/Info.plist"
with open(path, 'rb') as f:
data = plistlib.load(f)
print(data)