summaryrefslogtreecommitdiffstats
path: root/src/crack.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/crack.rs')
-rw-r--r--src/crack.rs30
1 files changed, 30 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;