diff options
author | Jesse Luehrs <doy@tozt.net> | 2015-04-07 01:05:28 -0400 |
---|---|---|
committer | Jesse Luehrs <doy@tozt.net> | 2015-04-07 01:05:28 -0400 |
commit | 4213d57bdf70b6339bc4affdc751c296f9aa14f0 (patch) | |
tree | d5edc98e6a650e3c08734724b91e98f6d4ec7deb /src | |
parent | 6c827b1db129cb4d60e4cc27d6f6759b79773aa2 (diff) | |
download | matasano-4213d57bdf70b6339bc4affdc751c296f9aa14f0.tar.gz matasano-4213d57bdf70b6339bc4affdc751c296f9aa14f0.zip |
problem 25
Diffstat (limited to 'src')
-rw-r--r-- | src/crack.rs | 8 | ||||
-rw-r--r-- | src/lib.rs | 1 |
2 files changed, 9 insertions, 0 deletions
diff --git a/src/crack.rs b/src/crack.rs index 39a8e1a..abfd84a 100644 --- a/src/crack.rs +++ b/src/crack.rs @@ -427,6 +427,14 @@ pub fn recover_mt19937_key_from_time (token: &[u8]) -> Option<u32> { return None; } +pub fn crack_aes_128_ctr_random_access<F> (ciphertext: &[u8], edit: F) -> Vec<u8> where F: Fn(&[u8], usize, &[u8]) -> Vec<u8> { + let empty_plaintext: Vec<u8> = ::std::iter::repeat(b'\x00') + .take(ciphertext.len()) + .collect(); + let keystream = edit(ciphertext, 0, &empty_plaintext[..]); + return fixed_xor(&keystream[..], ciphertext); +} + fn crack_single_byte_xor_with_confidence (input: &[u8]) -> (u8, f64) { let mut min_diff = 100.0; let mut best_key = 0; @@ -42,3 +42,4 @@ 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; pub use crack::recover_mt19937_key_from_time; +pub use crack::crack_aes_128_ctr_random_access; |