#plist #convert-binary #binary-format #human-readable #parser #file-format #nskeyedarchiver

bin+lib nskeyedarchiver_converter

将 NSKeyedArchiver 编码的 plist 转换为人可读格式

2个版本

0.1.1 2024年2月7日
0.1.0 2024年1月20日

#1222 in 解析实现


用于procreate

MIT/Apache

23KB
397

NSKeyedArchiver Converter

A demo image of NSKeyedArchiver Converter

将 NSKeyedArchiver 编码的 plist 转换为人可读格式。

苹果因其发明和使用自己的专有格式而闻名。许多跨苹果操作系统的程序使用 NSKeyedArchiver 来序列化和存储自定义对象。问题是,在苹果生态系统之外读取它可能存在问题。该格式本身是一个二进制 plist,但它使用一些技术来有效地存储对象。因此,确定其中编码的对象是什么很难。

此工具可以帮助您将 NSKeyedArchiver 编码的 plist 转换为人可读的 常规 plist、二进制 plist 或 JSON 文件,以进行进一步分析。

一个演示图片展示了使用 Xplist 打开的原始文件和转换后的文件。

命令行工具

Convert NSKeyedArchiver encoded plists to human readable formats

Usage: nskeyedarchiver_converter [OPTIONS] <PLIST_IN> <FILE_OUT>

Arguments:
  <PLIST_IN>  Path to a NSKeyedArchiver encoded plist
  <FILE_OUT>  Path to an output file

Options:
  -p             Export in a plist format (default)
  -b             Export in a plist binary format
  -j             Export in a json format
  -n             Leave $null values. By default they're omitted
  -t             Treat dictionaries and arrays as regular classes. A $classes key gets retained. By default those are transformed into native plist structures
  -h, --help     Print help
  -V, --version  Print version

例如,如果您想将 foo.bin 转换为 foo.plist,请运行以下命令: nskeyedarchiver_converter ./foo.bin ./foo.plist

Rust库

使用 from_filefrom_bytesfrom_readernew 方法从 nskeyedarchiver_converter::Converter 读取现有的 NSKeyedArchiver 编码文件。然后调用 decode 方法,该方法返回 plist::Value。在底层,此库使用 plist crate,因此请参阅他们的文档以获取更多详细信息。

use nskeyedarchiver_converter::Converter;

Converter::from_file("./foo.bin")?
    .decode()?
    .to_file_xml("./foo.plist")?;

依赖关系

~5.5MB
~101K SLoC