You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
memflow-pcileech/memflow-pcileech/examples/read_phys.rs

46 lines
1.2 KiB
Rust

use std::env;
use std::time::Instant;
use log::{info, Level};
use memflow::prelude::v1::*;
fn main() {
simple_logger::SimpleLogger::new()
.with_level(Level::Debug.to_level_filter())
.init()
.unwrap();
let args: Vec<String> = env::args().collect();
let conn_args = if args.len() > 1 {
ConnectorArgs::parse(&args[1]).expect("unable to parse arguments")
} else {
ConnectorArgs::new()
};
let mut conn = memflow_pcileech::create_connector(&conn_args)
.expect("unable to initialize memflow_pcileech");
let mut mem = vec![0; 8];
conn.phys_read_raw_into(Address::from(0x1000).into(), &mut mem)
.unwrap();
info!("Received memory: {:?}", mem);
let start = Instant::now();
let mut counter = 0;
loop {
let mut buf = vec![0; 0x1000];
conn.phys_read_raw_into(Address::from(0x1000).into(), &mut buf)
.unwrap();
counter += 1;
if (counter % 10000) == 0 {
let elapsed = start.elapsed().as_millis() as f64;
if elapsed > 0.0 {
info!("{} reads/sec", (f64::from(counter)) / elapsed * 1000.0);
info!("{} ms/read", elapsed / (f64::from(counter)));
}
}
}
}