7 个版本 (4 个重大变更)
0.5.0 | 2021年2月8日 |
---|---|
0.4.0 | 2020年11月27日 |
0.3.2 | 2020年11月3日 |
0.3.1 | 2020年8月13日 |
0.1.0 | 2020年6月24日 |
#1737 in 解析器实现
每月22次下载
545KB
2.5K SLoC
flash-lso
Adobe 本地共享对象 (LSO) 文件格式 (.sol)、AMF0 和 AMF3 的解析器和序列化器,100% 安全的 Rust 实现
此crate的主要目标是尽可能安全,针对格式错误和不合法的输入进行防御,并在识别到这种情况时进行干净失败。
示例
use std::fs::File;
use std::io::Read;
use flash_lso::read::Reader;
fn main() {
let mut x = File::open(path).expect("Couldn't open file");
let mut data = Vec::new();
let _ = x.read_to_end(&mut data).expect("Unable to read file");
let d = Reader::default().parse_full(&data).expect("Failed to parse lso file");
println!("{:#?}", d);
}
Web
web
目录包含一个使用 yew 的 LSO 文件示例网络查看器。要运行,首先像这样构建到 WASM
cd web
wasm-pack build --out-name wasm --out-dir ./static --target web --release
然后像这样提供静态目录
# If needed install miniserve with `cargo install miniserve`
miniserve ./static --index index.html
开发 / 测试
该项目包含一系列集成测试,以验证其能够将 LSO 文件序列化然后反序列化,生成的输出与其输入相同。还有一个 lso-to-json 项目,可以将 LSO 文件导出到 JSON 以进行调试和测试。
特性
启用 serde 支持
flash-lso = { version = "0.2.0", features = ["serde"] }
启用 (alpha) Flex 支持
flash-lso = { version = "0.2.0", features = ["flex"] }
模糊测试
该项目使用 cargo-fuzz 确保正确处理无效数据
cargo fuzz run --release fuzz_amf3_body
许可证
该项目遵循 MIT 许可证
依赖
~3.5MB
~78K SLoC