Crates.io | tact-parser |
lib.rs | tact-parser |
version | 0.4.3 |
created_at | 2025-08-07 04:13:05.093513+00 |
updated_at | 2025-08-11 12:08:55.712357+00 |
description | Parser for TACT (Trusted Application Content Transfer) files used in Blizzard's NGDP distribution system |
homepage | https://github.com/wowemulation-dev/cascette-rs |
repository | https://github.com/wowemulation-dev/cascette-rs |
max_upload_size | |
id | 1784673 |
size | 321,941 |
Parser for TACT (Trusted Application Content Transfer) file formats used in Blizzard's NGDP distribution system.
Add this to your Cargo.toml
:
[dependencies]
tact-parser = "0.4"
This crate provides parsers for various TACT file formats used by Blizzard's content delivery network:
✅ Encoding Table (encoding.rs
)
✅ Install Manifest (install.rs
)
✅ Download Manifest (download.rs
)
✅ Size Files (size.rs
)
✅ Build Config (config.rs
)
✅ WoW Root (wow_root.rs
)
✅ TVFS (tvfs.rs
)
✅ ESpec Parser (espec.rs
)
use tact_parser::EncodingFile;
let data = std::fs::read("encoding")?;
let encoding = EncodingFile::parse(&data)?;
// Look up EKey for a given CKey
if let Some(ekey) = encoding.get_ekey(&ckey) {
println!("Found EKey: {:?}", ekey);
}
use tact_parser::InstallFile;
let data = std::fs::read("install")?;
let install = InstallFile::parse(&data)?;
// Filter files by tags
let files = install.filter_files(&["enUS", "Windows"]);
for file in files {
println!("{}: {} bytes", file.name, file.size);
}
use tact_parser::ESpec;
// Parse a complex block table specification
let spec = ESpec::parse("b:{1M*3=z:9,512K=n,*=z:6}")?;
// Check compression properties
println!("Uses compression: {}", spec.is_compressed());
println!("Type: {}", spec.compression_type());
// Convert back to string format
println!("ESpec: {}", spec.to_string());
use tact_parser::parse_build_config;
let data = std::fs::read_to_string("config")?;
let config = parse_build_config(&data)?;
// Access configuration values
if let Some(version) = config.get("version") {
println!("Build version: {}", version[0]);
}
The parsers are optimized for:
This crate integrates with other cascette-rs components:
blte
for decompressionngdp-crypto
for encrypted contentngdp-cdn
for downloading filesngdp-client
for CLI operationsThis project is dual-licensed under either:
at your option.