2个版本
| 0.1.1 | 2024年2月7日 |
|---|---|
| 0.1.0 | 2024年1月20日 |
#1222 in 解析实现
23KB
397 行
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_file、from_bytes、from_reader 或 new 方法从 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