use crate::extractors::arcadyan::extract_obfuscated_lzma;
use crate::signatures::common::{SignatureError, SignatureResult, CONFIDENCE_HIGH};
pub const DESCRIPTION: &str = "Arcadyan obfuscated LZMA";
pub fn obfuscated_lzma_magic() -> Vec<Vec<u8>> {
vec![b"\x00\xD5\x08\x00".to_vec()]
}
pub fn obfuscated_lzma_parser(
file_data: &[u8],
offset: usize,
) -> Result<SignatureResult, SignatureError> {
const MAGIC_OFFSET: usize = 0x68;
let mut result = SignatureResult {
description: DESCRIPTION.to_string(),
confidence: CONFIDENCE_HIGH,
..Default::default()
};
if offset >= MAGIC_OFFSET {
let start_offset: usize = offset - MAGIC_OFFSET;
let dry_run = extract_obfuscated_lzma(file_data, start_offset, None);
if dry_run.success {
result.offset = start_offset;
return Ok(result);
}
}
Err(SignatureError)
}