Plist 查看器(二进制与 XML)
属性列表是 macOS 和 iOS 保存几乎一切内容的方式:应用偏好设置、Info.plist、配置描述文件、备份清单。其中一半是编辑器里就能读的 XML,另一半是苹果的二进制格式——打开后只是一堵以 bplist 开头的字节墙。 这个工具两种都能读。二进制不是靠翻找字符串,而是真正解码:文件末尾 32 字节的尾部记录了偏移量和引用整数的宽度以及对象表的位置,所有值都要经由这张表才能取到——也就是说,从文件头一路向前扫是读不出任何东西的。一、二、四、八字节整数,浮点数,基于苹果自有纪元的日期,原始数据,UID,数组,集合和字典,全都保留类型返回。 结果以树形展示,同时提供 JSON 和 XML plist,于是原本无法编辑的二进制文件变得可以编辑。如果发现它其实是 NSKeyedArchiver 归档——一张由 UID 引用连接的扁平对象表,iOS 保存任何稍复杂的东西时都会这么写——工具会明确指出,因为这正解释了为什么内容看起来与应用所存的结构毫不相似。不会上传任何内容。
使用方法
- 拖入 .plist 或 .mobileconfig 文件,或粘贴 XML plist 文本。
- 格式会自动识别,二进制文件还会显示其中的对象数量。
- 阅读树形结构:每一行显示键、类型和取值。
- 要加工就复制 JSON,要编辑就复制 XML plist。
- 数据和日期会标明类型,而不是压成字符串。
常见问题
- 二进制 plist 和 XML plist 有什么区别?
- 只有编码不同。它们保存相同的值,macOS 也把两者视为等价。二进制更小、加载更快,所以即便文档里以 XML 举例,设备上的文件大多仍是二进制。
- 为什么我的文件全是没意义的数字和以 $ 开头的键?
- 多半是 NSKeyedArchiver 归档。它把对象平铺存放在 $objects 中,用 UID 引用而不是嵌套来连接,所以你看到的是归档的形状而非应用的。查看器发现 $archiver 键时会提示这一点。
- 为什么在别的工具里日期差了 31 年?
- 苹果从 2001-01-01 而不是 1970-01-01 开始计秒,相差 978307200 秒。把 plist 日期当作 Unix 时间戳来读就会落到 1970 年代;这里已应用该偏移,日期是正确的。
- 二进制数据会怎样处理?
- 保留为数据类型并给出长度。JSON 没有字节串,因此在 JSON 输出中放在 __data_base64 键下以 base64 表示;在 XML 输出中则还原为 <data> 元素。
- 能编辑或写出二进制 plist 吗?
- 它会把二进制 plist 转成 XML,你可以编辑后用 plutil 或任意 plist 库转换回去。写出二进制格式不是本工具的职责。
- 我的文件会被上传吗?
- 不会。文件在浏览器中解析,不发送到任何服务器——这对偏好设置文件尤其重要,它们常含有账号名和路径。
相关工具
Excel (XLSX) 转 CSV、JSON 和 Markdown
在浏览器中打开 .xlsx 工作簿,把任意工作表导出为 CSV、JSON 或 Markdown 表格——文件不会离开你的设备。
MessagePack 解码器
粘贴 base64 或 hex 的 MessagePack 字节,在浏览器中读出取值——类型、嵌套映射、二进制块与时间戳。
ICS 日历查看器与重复规则展开
打开 .ics 邀请或日历导出文件,看清里面究竟有什么,并把重复规则展开成真正的日期。
PWA Manifest 构建器
为 Progressive Web App 构建有效 `manifest.json` — name、icons、theme color、display mode、scope、orientation — 附匹配的 HTML `<link>` 和 Apple meta 标签。
XML ↔ JSON 转换器
XML 与 JSON 双向转换,完整属性支持,可配置属性前缀和文本键。浏览器原生 DOMParser 处理命名空间、CDATA、注释。
EPUB 查看器 · 元数据与正文提取
在浏览器中打开 .epub:元数据、带字数统计的章节列表、纯文本正文,以及阅读器为何拒绝这本书的结构检查。