A parser/encoder for Adobe Local Shared Object (LSO) file format (.sol), AMF0 and AFM3 in 100% safe rust.
- Parsing and encoding fully supported
- Heavily tested and fuzzed
- Circular references fully supported
- Support for externalizable types (flash.utils.IExternalizable)
- Support for Adobe flex types
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);
}
To aid with development, there is a sub-project: reader, which can parse either a single file or all files in a directory and will report on which files succeeded and failed to parse
In future this will be used to verify and compare the output with the official implementation
This project makes use of cargo-fuzz to ensure correct handling of invalid data
cargo fuzz run --release fuzz_amf3_body
building:
wasm-pack build --out-name wasm --out-dir ./static --target web --release
miniserve ./static --index index.html
This project is licensed under MIT.
Icons used in the web editor (web/static/icon) are sourced from https://feathericons.com under MIT
Some test cases are covered under their own License, see README.md for details