MacOS client works!
modified: frida_client/src/client.rs modified: frida_core/src/mac_tun.rs
This commit is contained in:
parent
9474cb8652
commit
39e64a4944
@ -68,8 +68,10 @@ pub mod general {
|
|||||||
loop {
|
loop {
|
||||||
match dev_reader.read(&mut buf).await {
|
match dev_reader.read(&mut buf).await {
|
||||||
Ok(n) => {
|
Ok(n) => {
|
||||||
//info!("Read from tun.");
|
#[cfg(not(target_os = "macos"))]
|
||||||
dx.send(buf[..n].to_vec()).unwrap();
|
dx.send(buf[..n].to_vec()).unwrap();
|
||||||
|
#[cfg(target_os = "macos")]
|
||||||
|
dx.send(buf[4..n].to_vec()).unwrap();
|
||||||
},
|
},
|
||||||
Err(_e) => { /*error!("Read failed {}", e);*/ }
|
Err(_e) => { /*error!("Read failed {}", e);*/ }
|
||||||
}
|
}
|
||||||
@ -87,6 +89,8 @@ pub mod general {
|
|||||||
rr = rx.recv() => {
|
rr = rx.recv() => {
|
||||||
if let Some(bytes) = rr {
|
if let Some(bytes) = rr {
|
||||||
//info!("Write to tun. len={:?}", bytes.len());
|
//info!("Write to tun. len={:?}", bytes.len());
|
||||||
|
#[cfg(target_os = "macos")]
|
||||||
|
let bytes = [vec![0, 0, 0, 2], bytes].concat();
|
||||||
|
|
||||||
if let Err(e) = dev_writer.write(&bytes).await {
|
if let Err(e) = dev_writer.write(&bytes).await {
|
||||||
//error!("Writing error: {:?}", e);
|
//error!("Writing error: {:?}", e);
|
||||||
@ -340,7 +344,7 @@ pub mod desktop {
|
|||||||
|
|
||||||
cmd("route", &["add", "-host", endpoint_ip, &gateway.unwrap()]);
|
cmd("route", &["add", "-host", endpoint_ip, &gateway.unwrap()]);
|
||||||
|
|
||||||
cmd("route", &["change", "default", "-interface", "utun3"]); // todo: change that
|
cmd("route", &["change", "default", "-interface", "utun3"]); // TODO: change that
|
||||||
|
|
||||||
cmd("route", &["add", "-host", endpoint_ip, &gateway.unwrap()]);
|
cmd("route", &["add", "-host", endpoint_ip, &gateway.unwrap()]);
|
||||||
}
|
}
|
||||||
|
@ -1,9 +1,10 @@
|
|||||||
|
use std::fs::File;
|
||||||
|
use std::io::{Read, Write};
|
||||||
use std::os::fd::{AsRawFd, FromRawFd};
|
use std::os::fd::{AsRawFd, FromRawFd};
|
||||||
use std::{ffi::CString, process::Command};
|
use std::{ffi::CString, process::Command};
|
||||||
use std::sync::Arc;
|
use std::sync::Arc;
|
||||||
use std::error::Error;
|
use std::error::Error;
|
||||||
use log::info;
|
use log::info;
|
||||||
use tokio::fs::File;
|
|
||||||
use tokio::io::{AsyncReadExt, AsyncWriteExt};
|
use tokio::io::{AsyncReadExt, AsyncWriteExt};
|
||||||
|
|
||||||
use crate::device::AbstractDevice;
|
use crate::device::AbstractDevice;
|
||||||
@ -49,12 +50,12 @@ pub struct DeviceReader {
|
|||||||
|
|
||||||
impl DeviceWriter {
|
impl DeviceWriter {
|
||||||
pub async fn write(&mut self, buf: &Vec<u8>) -> Result<usize, Box<dyn Error>> {
|
pub async fn write(&mut self, buf: &Vec<u8>) -> Result<usize, Box<dyn Error>> {
|
||||||
Ok(self.writer.write(buf).await?)
|
Ok(self.writer.write(buf)?)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl DeviceReader {
|
impl DeviceReader {
|
||||||
pub async fn read(&mut self, buf: &mut Vec<u8>) -> Result<usize, Box<dyn Error>> {
|
pub async fn read(&mut self, buf: &mut Vec<u8>) -> Result<usize, Box<dyn Error>> {
|
||||||
Ok(self.reader.read_buf(buf).await?)
|
Ok(self.reader.read(buf)?)
|
||||||
}
|
}
|
||||||
}
|
}
|
Loading…
x
Reference in New Issue
Block a user