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