modified: frida_core/src/linux_tun.rs
modified: frida_core/src/main.rs
This commit is contained in:
parent
32eec5252a
commit
a1852140d3
@ -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
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -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;
|
||||||
}
|
}
|
Loading…
x
Reference in New Issue
Block a user