diff options
author | Jesse Luehrs <doy@tozt.net> | 2015-04-06 01:26:20 -0400 |
---|---|---|
committer | Jesse Luehrs <doy@tozt.net> | 2015-04-06 01:26:20 -0400 |
commit | 82fde31b637e72d381857e3e2cb669298073edd1 (patch) | |
tree | 69153e3b49c06584c15e895787e15c6e8c8b71d8 /src | |
parent | 3dbdba1a7f5f0094c1d3075b3ca91b07196fcbf2 (diff) | |
download | matasano-82fde31b637e72d381857e3e2cb669298073edd1.tar.gz matasano-82fde31b637e72d381857e3e2cb669298073edd1.zip |
real problem 22
Diffstat (limited to 'src')
-rw-r--r-- | src/crack.rs | 15 | ||||
-rw-r--r-- | src/lib.rs | 2 |
2 files changed, 16 insertions, 1 deletions
diff --git a/src/crack.rs b/src/crack.rs index b351249..396eb6b 100644 --- a/src/crack.rs +++ b/src/crack.rs @@ -1,7 +1,7 @@ use std::ascii::AsciiExt; use std::borrow::ToOwned; use std::collections::{HashMap, HashSet}; -use rand::SeedableRng; +use rand::{Rng, SeedableRng}; use data::ENGLISH_FREQUENCIES; use primitives::{fixed_xor, unpad_pkcs7, hamming, repeating_key_xor}; @@ -357,6 +357,19 @@ pub fn crack_fixed_nonce_ctr_statistically (input: Vec<Vec<u8>>) -> Vec<Vec<u8>> return plaintext_lines; } +pub fn recover_mersenne_twister_seed_from_time (output: u32) -> Option<u32> { + let now = ::time::now().to_timespec().sec as u32; + for i in -10000..10000i32 { + let seed = (now as i32).wrapping_add(i) as u32; + let mut mt = MersenneTwister::from_seed(seed); + let test_output: u32 = mt.gen(); + if test_output == output { + return Some(seed); + } + } + return None; +} + pub fn clone_mersenne_twister_from_output (outputs: &[u32]) -> MersenneTwister { fn untemper (val: u32) -> u32 { fn unxorshift<F> (f: F, mut y: u32, n: usize, mask: u32) -> u32 where F: Fn(u32, usize) -> u32 { @@ -1,6 +1,7 @@ extern crate rustc_serialize as serialize; extern crate openssl; extern crate rand; +extern crate time; mod aes; mod base64; @@ -36,5 +37,6 @@ pub use crack::find_single_byte_xor_encrypted_string; pub use crack::crack_single_byte_xor; pub use crack::crack_repeating_key_xor; pub use crack::crack_fixed_nonce_ctr_statistically; +pub use crack::recover_mersenne_twister_seed_from_time; pub use crack::clone_mersenne_twister_from_output; pub use crack::recover_16_bit_mt19937_key; |