summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorJesse Luehrs <doy@tozt.net>2019-05-22 02:08:01 -0400
committerJesse Luehrs <doy@tozt.net>2019-05-22 02:08:01 -0400
commit5a35ab9eee8d070cbc6a0f073e131cd6e567ed4d (patch)
treed30527d024f2be72797137175d89cad1ed55cd65 /src
parentc272cfc4241f2c19fd948202caf0328b172958c4 (diff)
downloadmatasano-master.tar.gz
matasano-master.zip
problem 37HEADmaster
Diffstat (limited to 'src')
-rw-r--r--src/crack.rs30
-rw-r--r--src/lib.rs1
2 files changed, 31 insertions, 0 deletions
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<u8>, Vec<u8>, 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;