CyberChef P-list Viewer(属性列表查看器)

分类:数据格式(Data Formats) 操作:P-list Viewer
Property List macOS iOS XML Binary NeXTSTEP

什么是 Property List(属性列表)?

在 macOS、iOS、NeXTSTEP 与 GNUstep 等编程框架中,property list(属性列表)文件用于存储序列化对象。Apple 在操作系统中大量使用 plist 文件保存用户偏好、应用设置与配置数据。

属性列表(常简称 plist)通过字典、数组、字符串、数字、日期与二进制数据等类型,以结构化方式存储层次化数据,可视为一种轻量级的简单数据存储格式。

常见用途: plist 会出现在系统偏好(如 ~/Library/Preferences/*.plist)、应用设置、启动守护进程配置(如 /Library/LaunchDaemons/*.plist),以及应用包内的 Info.plist(定义应用元数据)等场景中。

属性列表的存储格式

属性列表可用三种不同格式保存,各有适用场景:

1. XML 格式属性列表(XML Property List)

XML 格式为人类可读的纯文本,便于手工编辑与版本管理。CyberChef 的 P-list Viewer 操作主要面向该格式。

<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>ApplicationName</key> <string>MyApp</string> <key>Version</key> <real>1.5</real> <key>EnableFeature</key> <true/> </dict> </plist>

2. 二进制属性列表(Binary Property List)

二进制 plist 比 XML 更紧凑、解析更快,Apple 工具在生产环境中常将 plist 转为二进制。在 CyberChef 中可先使用 From Binary 操作转换,再用 P-list Viewer 查看。

3. OpenStep / ASCII 格式

较旧的遗留格式,语法类似 JSON 或 JavaScript 对象字面量。现代系统中已少见,但仍可能因向后兼容而被支持。

属性列表数据类型

<dict>
字典(键值对)
<array>
有序值集合
<string>
UTF-8 文本
<integer>
整数(64 位)
<real>
浮点数
<true/> <false/>
布尔值
<date>
ISO 8601 日期
<data>
Base64 编码的二进制数据

在 CyberChef 中使用 P-list Viewer

CyberChef 中的 P-list Viewer 会解析属性列表数据,并以易读的结构化形式展示。分析配置文件、应用偏好,或检视取证中导出的 plist 时尤为有用。

基本步骤

  1. 将 plist 内容载入 CyberChef 的输入区
  2. 在「数据格式(Data format)」分类中添加 P-list Viewer 操作
  3. 输出区将显示解析后的层次结构
  4. 可选用 JSON 相关选项将 plist 转为 JSON,便于后续处理
提示:若为二进制 plist,可串联操作:From BinaryP-list Viewer,先转换再查看。也可在 P-list Viewer 之后使用 To JSON 得到标准 JSON 表示。

示例:应用偏好

示例 plist 结构
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>User</key> <dict> <key>Username</key> <string>john_doe</string> <key>UserID</key> <integer>501</integer> </dict> <key>RecentFiles</key> <array> <string>/Users/john/Documents/report.pdf</string> <string>/Users/john/Documents/data.xlsx</string> </array> <key>LastLogin</key> <date>2024-03-15T14:30:00Z</date> <key>DarkModeEnabled</key> <true/> </dict> </plist>
User: Username: john_doe UserID: 501 RecentFiles: [0]: /Users/john/Documents/report.pdf [1]: /Users/john/Documents/data.xlsx LastLogin: 2024-03-15T14:30:00Z DarkModeEnabled: true

常见分析场景

1. 查看系统偏好

分析保存在 ~/Library/Preferences/ 中的用户偏好与设置,有助于理解应用配置或排查问题。

2. 应用包(Bundle)分析

每个 macOS / iOS 应用都包含 Info.plist,用于声明能力、权限与元数据。安全分析或逆向时可用 P-list Viewer 检视这些文件。

3. Launch Daemon 配置

系统启动守护进程与代理(Launch Daemon / Agent)常用 plist 配置。分析这些文件可发现持久化手段、计划任务与服务配置。

4. 移动设备备份

iOS 备份中含大量 plist,保存应用数据、设置与用户信息。取证或数据恢复时可用 P-list Viewer 解析。

在 CyberChef 中处理二进制 plist

二进制 plist 文件通常以魔数 bplist 开头。在 CyberChef 中可这样处理:

  1. 根据文件头是否为 bplist00bplist15 等判断格式
  2. 使用 macOS 命令行转换:plutil -convert xml1 file.plist
  3. 或在导入 CyberChef 前用 Python 的 plistlib 模块转换
  4. 转为 XML 后,再照常使用 P-list Viewer
说明:CyberChef 的 P-list Viewer 主要针对 XML 文本。二进制 plist 通常需先在外部或链式操作中转换为 XML 再分析。

配方(Recipe)思路

以下是与 P-list Viewer 搭配使用的 CyberChef 配方示例:

安全注意事项

分析 plist 时应注意其可能包含:

对不可信来源的 plist 应采取适当管控;勿公开泄露敏感 plist 内容。

← 返回操作指南