Created
September 28, 2021 01:10
-
-
Save skoji/de158cfe008e242057a791773982b64e to your computer and use it in GitHub Desktop.
EPUB3 OCF unobfuscate test code (not sure it is correct or not)
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// unobfuscate test code in OCF https://www.w3.org/publishing/epub3/epub-ocf.html#obfus-algorithm | |
// [dependencies] | |
// sha-1 = "0.9.8" | |
use sha1::{Digest, Sha1}; | |
use std::fs::File; | |
use std::io::prelude::*; | |
use std::path::Path; | |
const KEY: &[u8] = b"key string"; | |
const SRC: &str = "resource_to_decrypt.bin"; | |
const DEST: &str = "resource_decrypted.bin"; | |
fn main() { | |
let mut hasher = Sha1::new(); | |
hasher.update(KEY); | |
let r = hasher.finalize(); | |
println!("{:?}", r); | |
let path = Path::new(SRC); | |
let opath = Path::new(DEST); | |
let mut file = File::open(&path).unwrap(); | |
let mut buffer = Vec::new(); | |
file.read_to_end(&mut buffer).unwrap(); | |
for i in 0..52 { | |
for (index, v) in r.iter().enumerate() { | |
buffer[i * r.len() + index] = buffer[i * r.len() + index] ^ v; | |
} | |
} | |
let mut outfile = File::create(opath).unwrap(); | |
outfile.write_all(&buffer).unwrap(); | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment