From 5a35ab9eee8d070cbc6a0f073e131cd6e567ed4d Mon Sep 17 00:00:00 2001 From: Jesse Luehrs Date: Wed, 22 May 2019 02:08:01 -0400 Subject: problem 37 --- src/crack.rs | 30 ++++++++++++++++++++++++++++++ src/lib.rs | 1 + 2 files changed, 31 insertions(+) (limited to 'src') diff --git a/src/crack.rs b/src/crack.rs index 731cfbd..535b12a 100644 --- a/src/crack.rs +++ b/src/crack.rs @@ -1016,6 +1016,36 @@ impl<'a> SRPClient for CorrectSRPClient<'a> { } } +#[derive(Debug)] +pub struct ZeroKeySRPClient<'a> { + server: &'a mut crate::dh::SRPServer, +} + +impl<'a> ZeroKeySRPClient<'a> { + pub fn new(server: &'a mut crate::dh::SRPServer) -> ZeroKeySRPClient<'a> { + ZeroKeySRPClient { server } + } +} + +impl<'a> SRPClient for ZeroKeySRPClient<'a> { + fn server(&mut self) -> &mut crate::dh::SRPServer { + self.server + } + + fn key_exchange_impl( + &mut self, + user: &str, + _: &str, + ) -> (Vec, Vec, num_bigint::BigUint) { + let a_pub = num_bigint::BigUint::from(0 as u8); + let (session, salt, _b_pub) = + self.server.exchange_pubkeys(user, &a_pub); + + let s = num_bigint::BigUint::from(0 as u8); + (session, salt, s) + } +} + fn crack_single_byte_xor_with_confidence(input: &[u8]) -> (u8, f64) { let mut min_diff = 100.0; let mut best_key = 0; diff --git a/src/lib.rs b/src/lib.rs index 97ce460..42e484d 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -42,6 +42,7 @@ pub use crack::DiffieHellmanMessageExchanger; pub use crack::NullDiffieHellmanMessageExchanger; pub use crack::ParameterInjectionDiffieHellmanMessageExchanger; pub use crack::SRPClient; +pub use crack::ZeroKeySRPClient; pub use dh::DHKeyPair; pub use dh::SRPServer; pub use dh::SRPUser; -- cgit v1.2.3-54-g00ecf