summaryrefslogtreecommitdiffstats
path: root/src/crack.rs
diff options
context:
space:
mode:
authorJesse Luehrs <doy@tozt.net>2015-04-07 01:05:28 -0400
committerJesse Luehrs <doy@tozt.net>2015-04-07 01:05:28 -0400
commit4213d57bdf70b6339bc4affdc751c296f9aa14f0 (patch)
treed5edc98e6a650e3c08734724b91e98f6d4ec7deb /src/crack.rs
parent6c827b1db129cb4d60e4cc27d6f6759b79773aa2 (diff)
downloadmatasano-4213d57bdf70b6339bc4affdc751c296f9aa14f0.tar.gz
matasano-4213d57bdf70b6339bc4affdc751c296f9aa14f0.zip
problem 25
Diffstat (limited to 'src/crack.rs')
-rw-r--r--src/crack.rs8
1 files changed, 8 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;