sslrelay/examples/modifydata/src/main.rs
2021-10-07 15:36:50 -07:00

45 lines
No EOL
1.3 KiB
Rust

use sslrelay::{self, ConfigType, HandlerCallbacks, CallbackRet};
// Handler object
#[derive(Clone)] // Must have Clone trait implemented.
struct Handler;
/*
Callback traits that can be used to read or inject/modify data
into upstream or downstream data.
*/
impl HandlerCallbacks for Handler {
// DownStream non blocking callback
fn ds_nb_callback(&self, _in_data: Vec<u8>) {
println!("[+] Data before complete rewrite:\n{:#04X?}", _in_data);
}
// DownStream blocking callback
fn ds_b_callback(&mut self, _in_data: Vec<u8>) -> CallbackRet {
_in_data.reverse();
println!("[+] Data rewritten to:\n{:#04X?}", _in_data);
CallbackRet::Relay(_in_data)
}
// UpStream non blocking callback
fn us_nb_callback(&self, _in_data: Vec<u8>) {
println!("[+] Data before complete rewrite:\n{:#04X?}", _in_data);
}
// UpStream blocking callback
fn us_b_callback(&mut self, _in_data: Vec<u8>) -> CallbackRet {
_in_data.reverse();
println!("[+] Data rewritten to:\n{:#04X?}", _in_data);
CallbackRet::Relay(_in_data)
}
}
fn main() {
// Create new SSLRelay object
let mut relay = sslrelay::SSLRelay::new(Handler, ConfigType::Default);
// Start listening
relay.start();
}