diff --git a/src/main.rs b/src/main.rs index 2846a2db582db30d48d9bef86f23db2e12996922..62de53404b008746280cbab4df4ee30ca17cd044 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,3 +1,5 @@ +#![allow(dead_code)] + static ABC: [u32; 4] = [0x9fdd9158, 0x85715808, 0xac73323a, @@ -140,24 +142,72 @@ static CODED: [u32; 132] = 0]; +/// +/// Count the number of zeroes +/// +fn count_zero(num: u32) -> u32 { -fn codgen() { + let mut count_zero = 0; + let mut count_one = 0; + for x in 0..32 { + if num % 2 == 0 { + count_zero += 1; + } else { + count_one += 1; + } + num << 1; + } + count_zero ^ count_one } +/// +/// Modify the seed for decoding +/// +fn codgen(seed: &mut u32) -> u32 { + + let n: u32; + let (x, y): (u32, u32); + + n = count_zero(*seed); + + println!("Seed:\n{:b}", *seed); + // Inte OK än + x = seed.rotate_left(2); + println!("{:b}", x); + + // Fungerade fint + y = *seed >> 6; + + *seed = x ^ y ^ n; + + (*seed) ^ 0x464b713e + + +} + +/// +/// Decodes a string +/// fn decode(coded: &[u32], plain: &mut[u8], seed: &mut u32) -> u32 { + let x = 3; x + } fn main() { println!("Time to decode!"); - let mut seed = 0x0e0657c1; + //let mut seed = 0x0e0657c1; + let mut seed = 0x3e944b9f; - decode(&CODED, &mut PLAIN, &mut seed); + //decode(&CODED, unsafe { &mut PLAIN }, &mut seed); + // + codgen(&mut seed); + println!("Ran codgen, new seed: {:x}", seed); } /*