Skip to main content

Rust quickstart

Open a page-store file and walk every page, verifying CRC trailers:

use opensqlany::PageStore;

fn main() -> Result<(), opensqlany::Error> {
let store = PageStore::open("database.db")?;

let sb = store.superblock()?;
println!("format {}.{}.{}", sb.format_major, sb.version_a, sb.version_b);

for page in store.pages().skip(1) {
page.verify_crc()?;
let t = page.trailer();
println!("page {} type {:?}", page.index(), t.page_type());
}

Ok(())
}

Working with deobfuscated input

If your input is a QuickBooks .QBW file, peel the additive-progression layer off first:

use opensqlany::{ApModel, PageStore};

let raw = std::fs::read("Company.QBW")?;
let model = ApModel::detect(&raw)?;
let plaintext = model.deobfuscate(raw);
let store = PageStore::from_bytes(plaintext)?;
// ...same iteration as above
# Ok::<(), opensqlany::Error>(())

See AP deobfuscation for the format details.