配置文件文件中plist周围的二进制数据是什么?

Cha*_*pta 20 xcode cocoa-touch plist ios provisioning-profile

.mobileprovision文件的结构如下所示:

<!-- small binary data -->

<?xml version="1.0" encoding="UTF-8"?>
<!-- plist data -->
</plist>

<!-- large binary data -->
Run Code Online (Sandbox Code Playgroud)

我有几个问题:

  1. 这个二进制数据是什么?
  2. 它有用吗?
  3. 如何在不搜索XML边界的情况下从.mobileprovision文件中提取plist?

具体来说,当上面的Q1和Q3都得到回答时,我会将这个问题视为已回答(并同时授予+100奖励).

Cha*_*pta 25

我终于得到了关于SO的另一个问题答案的答案.

基本上.mobileprovision文件是CMS加密的XML文件.它可以security在OS X上解码:

security cms -D -i /path/to/profile.mobileprovision
Run Code Online (Sandbox Code Playgroud)


Neo*_*cho 7

我没有回答您的初始问题,但我可以解释如何从.mobileprovision文件中提取签名证书:

  1. .mobileprovision的plist部分有一个键'DeveloperCertificates',其值是一个NSData数组.
  2. 每个NSData都是一个.cer文件 - 您正在寻找的签名证书.

我有一个简短的shell脚本,用于直接从.mobileprovision文件中提取签名证书的主题:https://gist.github.com/2147247 - 该脚本仅使用前面提到的数组中的一个证书,该证书应该是常见的情况.

正如您在脚本中看到的那样,我对第三个问题没有答案,我只是删掉了第一行和结束标记之后的所有内容.