Skip to content

MASTG-TOOL-0136: plistlib

O módulo plistlib faz parte da biblioteca padrão do Python e permite ler, modificar e gravar arquivos .plist (Property List) programaticamente. Ele suporta os formatos XML e binário de plist e fornece uma API nativa baseada em dicionários.

Isso torna o plistlib uma alternativa multiplataforma ao PlistBuddy, adequada para casos de uso de script ou automação.

Lendo um Arquivo Plist

O exemplo a seguir imprime o conteúdo de um arquivo plist ao carregá-lo em um dicionário Python:

import plistlib

with open("Info.plist", "rb") as f:
    plist = plistlib.load(f)

print(plist)

Isso imprime uma representação em dicionário do plist, que pode ser inspecionada e modificada como qualquer outro dicionário Python.

Lendo Entradas Específicas do Plist

Após analisar o plist, você pode acessar chaves de dicionário e elementos de array usando a sintaxe regular do Python. O exemplo abaixo imprime o terceiro formato de ícone do aplicativo:

print(plist["CFBundleIcons~ipad"]["CFBundlePrimaryIcon"]["CFBundleIconFiles"][2])
# Saída: AppIcon-140x40

Alterando Valores do Plist

Para modificar uma entrada, como o CFBundleDisplayName, atribua um novo valor e grave o dicionário atualizado de volta no arquivo usando plistlib.dump:

plist["CFBundleDisplayName"] = "My New App Name"

with open("Info.plist", "wb") as f:
    plistlib.dump(plist, f)

Adicionando e Excluindo Valores do Plist

Novas chaves podem ser adicionadas ou removidas usando operações regulares de dicionário Python:

# Adiciona um novo dicionário
plist["CustomDictionary"] = {"CustomProperty": "OWASP MAS"}

# Exclui uma chave
del plist["CustomDictionary"]["CustomProperty"]

# Salva o plist atualizado
with open("Info.plist", "wb") as f:
    plistlib.dump(plist, f)