#![allow(warnings)]
pub mod types;
pub mod config;
pub mod zip;
pub mod crc;
pub mod crypto;
pub mod stage1;
pub mod stage2;
pub mod stage3;
pub mod error;
pub mod cracker;
pub use types::*;
pub use config::{Config, Cli};
pub use error::{Result, PkCrackError};
pub use cracker::{PkCracker, AttackReport};
pub const KEY2_SPACE: usize = 1 << 23; pub const CONST: u32 = 0x08088405; pub const INVCONST: u32 = 0xd94fa8cd; pub const MAX_DELTA: u32 = 0x00FFFFFF + 0xFF;
pub const MSB_MASK: u32 = 0xFF000000;
pub const GOOD_NUM: usize = 1000;
pub const VERY_GOOD: usize = 100;
#[inline]
pub fn msb(x: u32) -> u8 {
((x >> 24) & 0xFF) as u8
}
#[inline]
pub fn key3_at(plaintext: &[u8], ciphertext: &[u8], i: usize) -> u8 {
plaintext[i] ^ ciphertext[i]
}