Skip to content

MASTG-TECH-0138: Converter Arquivos Plist para JSON

Você pode converter arquivos Plist, como Info.plist ou PrivacyInfo.xcprivacy (também um arquivo Plist apesar da extensão), para o formato JSON para facilitar a legibilidade e análise.

Usando plutil

Use Plutil para converter qualquer arquivo Plist, como PrivacyInfo.xcprivacy, para o formato JSON:

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

Usando plistlib

Use o módulo plistlib integrado ao Python para converter qualquer arquivo Plist, como PrivacyInfo.xcprivacy, para o formato 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)

Que produz:

{
  "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",
    ...
  ]
}

Usando IPSW

Use ipsw para converter qualquer arquivo Plist, como Info.plist, para o formato 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"
    ],
    ...
}