Solve challenge 7 using openssl.
This commit is contained in:
27
src/set1.rs
27
src/set1.rs
@@ -1,6 +1,7 @@
|
||||
#![allow(dead_code)]
|
||||
use crate::bytes::Bytes;
|
||||
use crate::bytes_base64::BytesBase64;
|
||||
use openssl::symm::{decrypt, Cipher};
|
||||
use std::io::{BufRead, BufReader, Write};
|
||||
use std::str;
|
||||
|
||||
@@ -148,11 +149,25 @@ pub fn challenge6() {
|
||||
let key_size = guess_key_size(&bytes);
|
||||
let bytes_tranposed = transpose(&bytes, key_size);
|
||||
let key = Bytes(bytes_tranposed.iter().map(|b| guess_key(&b)).collect());
|
||||
let msg = Bytes::xor_cycle(&bytes, &key);
|
||||
let msg = Bytes::xor_cycle(&bytes, &key).to_utf8();
|
||||
|
||||
let partial_msg = Bytes(msg.0[..20].to_vec()).to_utf8();
|
||||
println!(
|
||||
"[okay] Challenge 6: size={} msg={}...",
|
||||
key_size, partial_msg
|
||||
);
|
||||
let partial_msg = msg[..20].to_string();
|
||||
println!("[okay] Challenge 6: {}...", partial_msg);
|
||||
}
|
||||
|
||||
pub fn challenge7() {
|
||||
fn read(path: &str) -> Bytes {
|
||||
let s = std::fs::read_to_string(path).unwrap();
|
||||
BytesBase64::from_base64(&s).to_bytes()
|
||||
}
|
||||
let ciphertext = &read("data/7.txt").0;
|
||||
let key = b"YELLOW SUBMARINE";
|
||||
let cipher = Cipher::aes_128_ecb();
|
||||
let data = decrypt(cipher, key, None, ciphertext);
|
||||
let result = match data {
|
||||
Ok(data) => Bytes(data).to_utf8(),
|
||||
Err(err) => err.to_string(),
|
||||
};
|
||||
let partial_msg = result[..20].to_string();
|
||||
println!("[okay] Challenge 7: {}...", partial_msg);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user