modified: frida_core/src/linux_tun.rs

modified:   frida_core/src/main.rs
This commit is contained in:
Michael Wain 2024-12-09 01:57:54 +03:00
parent 32eec5252a
commit a1852140d3
2 changed files with 14 additions and 7 deletions

View File

@ -1,5 +1,8 @@
use std::sync::Arc; use std::sync::Arc;
use std::error::Error; use std::error::Error;
use tokio_tun::Tun;
use std::net::Ipv4Addr;
use std::os::unix::io::AsRawFd;
pub fn create() -> (DeviceReader, DeviceWriter) { pub fn create() -> (DeviceReader, DeviceWriter) {
let tun = Arc::new( let tun = Arc::new(
@ -14,23 +17,27 @@ pub fn create() -> (DeviceReader, DeviceWriter) {
println!("tun created, name: {}, fd: {}", tun.name(), tun.as_raw_fd()); println!("tun created, name: {}, fd: {}", tun.name(), tun.as_raw_fd());
let (mut reader, mut _writer) = tokio::io::split(tun); let tun_writer = tun.clone();
(DeviceReader {reader: tun}, DeviceWriter {writer: tun_writer})
} }
pub struct DeviceWriter { pub struct DeviceWriter {
writer: Tun
} }
pub struct DeviceReader { pub struct DeviceReader {
reader: Tun
} }
impl DeviceWriter { impl DeviceWriter {
pub async fn write(&self, buf: &Vec<u8>) -> Result<usize, Box<dyn Error>> { pub async fn write(&self, buf: &Vec<u8>) -> Result<usize, Box<dyn Error>> {
self.writer.send_all(buf).await
} }
} }
impl DeviceReader { impl DeviceReader {
pub async fn read(&self, buf: &mut Vec<u8>) -> Result<usize, Box<dyn Error>> { pub async fn read(&self, buf: &mut Vec<u8>) -> Result<usize, Box<dyn Error>> {
self.reader.recv(buf).await
} }
} }

View File

@ -16,7 +16,7 @@ async fn main() {
.filter(None, LevelFilter::Info) .filter(None, LevelFilter::Info)
.init(); .init();
let (reader, writer) = tun::create_tun(); let (reader, _writer) = tun::create_tun();
let a = tokio::spawn(async move { let a = tokio::spawn(async move {
let mut buf = Vec::new(); let mut buf = Vec::new();
@ -25,11 +25,11 @@ async fn main() {
// info!("We've got {} bytes of data!", c) // info!("We've got {} bytes of data!", c)
let r = reader.read(&mut buf).await; let r = reader.read(&mut buf).await;
match r { match r {
Ok(c) => {}, Ok(_c) => {},
Err(e) => error!("We've got a nasty error message!") Err(_e) => error!("We've got a nasty error message!")
} }
} }
}); });
a.await; let _ = a.await;
} }