From aa42eb5525047d55ed3206626101caf9e4db79ea Mon Sep 17 00:00:00 2001 From: Jesse Luehrs Date: Fri, 20 Mar 2015 10:12:49 -0400 Subject: fix warnings --- src/aes.rs | 24 +++++++++++++----------- 1 file changed, 13 insertions(+), 11 deletions(-) (limited to 'src/aes.rs') diff --git a/src/aes.rs b/src/aes.rs index 48f70b3..e3d555b 100644 --- a/src/aes.rs +++ b/src/aes.rs @@ -1,6 +1,6 @@ use std; +use std::borrow::ToOwned; use std::collections::{HashMap, HashSet}; -use std::collections::hash_map::Entry::{Occupied, Vacant}; use openssl; @@ -141,6 +141,14 @@ pub fn crack_padded_aes_128_ecb (f: &F) -> Vec where F: Fn(&[u8]) -> Vec< } pub fn crack_querystring_aes_128_ecb (encrypter: F) -> (String, Vec>) where F: Fn(&str) -> Vec { + fn incr_map_element (map: &mut HashMap, usize>, key: Vec) { + if let Some(val) = map.get_mut(&key) { + *val += 1; + return; + } + map.insert(key, 1); + }; + // find blocks that correspond to "uid=10&role=user" or "role=user&uid=10" let find_uid_role_blocks = || { let mut map = HashMap::new(); @@ -148,14 +156,8 @@ pub fn crack_querystring_aes_128_ecb (encrypter: F) -> (String, Vec>) let email_bytes: Vec = std::iter::repeat(c).take(9).collect(); let email = std::str::from_utf8(&email_bytes[..]).unwrap(); let ciphertext = encrypter(email); - match map.entry(ciphertext[..16].to_vec()) { - Occupied(mut o) => { *o.get_mut() += 1; }, - Vacant(v) => { v.insert(1); }, - } - match map.entry(ciphertext[16..32].to_vec()) { - Occupied(mut o) => { *o.get_mut() += 1; }, - Vacant(v) => { v.insert(1); }, - } + incr_map_element(&mut map, ciphertext[..16].to_vec()); + incr_map_element(&mut map, ciphertext[16..32].to_vec()); } let mut most_common_blocks = vec![]; @@ -180,7 +182,7 @@ pub fn crack_querystring_aes_128_ecb (encrypter: F) -> (String, Vec>) } } - if let [(ref block1, i1), (ref block2, i2)] = &most_common_blocks[..] { + if let [(ref block1, _), (ref block2, _)] = &most_common_blocks[..] { return (block1.clone(), block2.clone()); } else { @@ -218,7 +220,7 @@ pub fn crack_querystring_aes_128_ecb (encrypter: F) -> (String, Vec>) possibles.push(modified_ciphertext); } } - return (String::from_str(email), possibles); + return (email.to_owned(), possibles); }; let (block1, block2) = find_uid_role_blocks(); -- cgit v1.2.3-54-g00ecf