跳过内容

MASTG-TECH-0138: 将 Plist 文件转换为 JSON

您可以将 Plist 文件(例如Info.plistPrivacyInfo.xcprivacy(即使扩展名不同,也是 Plist 文件))转换为 JSON 格式,以便更轻松地阅读和分析。

使用 plutil

使用 Plutil 将任何 Plist 文件(例如 PrivacyInfo.xcprivacy)转换为 JSON 格式

plutil -convert json -o PrivacyInfo.xcprivacy.json SocialApp.app/PrivacyInfo.xcprivacy

使用 plistlib

使用 Python 的内置 plistlib 模块将任何 Plist 文件(例如PrivacyInfo.xcprivacy)转换为 JSON 格式

import plistlib
import json

with open('SocialApp.app/PrivacyInfo.xcprivacy', 'rb') as fp:
    data = plistlib.load(fp)

with open('PrivacyInfo.json', 'w', encoding='utf-8') as fp:
    json.dump(data, fp, indent=2, ensure_ascii=False)

输出如下:

{
  "NSPrivacyAccessedAPITypes": [
    {
      "NSPrivacyAccessedAPIType": "NSPrivacyAccessedAPICategoryUserDefaults",
      "NSPrivacyAccessedAPITypeReasons": [
        "CA92.1",
        "1C8F.1",
        "C56D.1"
      ]
    },
    ...
  ],
  "NSPrivacyCollectedDataTypes": [
    {
      "NSPrivacyCollectedDataType": "NSPrivacyCollectedDataTypeName",
      "NSPrivacyCollectedDataTypeLinked": true,
      "NSPrivacyCollectedDataTypePurposes": [
        "NSPrivacyCollectedDataTypePurposeAppFunctionality",
        "NSPrivacyCollectedDataTypePurposeOther"
      ],
      "NSPrivacyCollectedDataTypeTracking": false
    },
    ...
  ],
  "NSPrivacyTracking": true,
  "NSPrivacyTrackingDomains": [
    "trk-v2.socialapp.com",
    "trk-v2.socialapp.us",
    ...
  ]
}

使用 IPSW

使用 ipsw 将任何 Plist 文件(例如 Info.plist)转换为 JSON 格式

$ ipsw plist ./Info.plist
{
    "BuildMachineOSBuild": "23B74",
    "CFBundleDevelopmentRegion": "en",
    "CFBundleExecutable": "MASTestApp",
    "CFBundleIdentifier": "org.owasp.mastestapp.MASTestApp",
    "CFBundleInfoDictionaryVersion": "6.0",
    "CFBundleName": "MASTestApp",
    "CFBundlePackageType": "APPL",
    "CFBundleShortVersionString": "1.0",
    "CFBundleSupportedPlatforms": [
        "iPhoneOS"
    ],
    ...
}