From c3292a3f47d1458a47821347f165a4f0b94fbf28 Mon Sep 17 00:00:00 2001 From: alterdekim Date: Wed, 11 Dec 2024 05:11:41 +0300 Subject: [PATCH] modified: Cargo.lock modified: frida_core/src/linux_tun.rs --- Cargo.lock | 13 +++++++++++++ frida_core/src/linux_tun.rs | 30 ++++++++++++++++++++++++------ 2 files changed, 37 insertions(+), 6 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 531a259..c0c1fec 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1683,6 +1683,7 @@ dependencies = [ "env_logger", "frida_core", "log", + "network-interface", "tokio", "tokio-util", "x25519-dalek", @@ -2805,6 +2806,18 @@ dependencies = [ "jni-sys", ] +[[package]] +name = "network-interface" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "433419f898328beca4f2c6c73a1b52540658d92b0a99f0269330457e0fd998d5" +dependencies = [ + "cc", + "libc", + "thiserror 1.0.69", + "winapi", +] + [[package]] name = "nix" version = "0.29.0" diff --git a/frida_core/src/linux_tun.rs b/frida_core/src/linux_tun.rs index a46613d..6a1065f 100644 --- a/frida_core/src/linux_tun.rs +++ b/frida_core/src/linux_tun.rs @@ -7,13 +7,31 @@ use crate::device::AbstractDevice; use log::info; pub fn create(cfg: AbstractDevice) -> (DeviceReader, DeviceWriter) { + + let builder = Tun::builder(); + + if cfg.tun_name.is_some() { + builder.name(&cfg.tun_name.unwrap()); + } + + if cfg.mtu.is_some() { + builder.mtu(cfg.mtu.unwrap().into()); + } + + if cfg.address.is_some() { + builder.address(cfg.address.unwrap()); + } + + if cfg.netmask.is_some() { + builder.netmask(cfg.netmask.unwrap()); + } + + if cfg.destination.is_some() { + builder.destination(cfg.destination.unwrap()); + } + let tun = Arc::new( - Tun::builder() - .name(&cfg.tun_name.unwrap()) // if name is empty, then it is set by kernel. - .mtu(cfg.mtu.unwrap().into()) - .address(cfg.address.unwrap()) - .netmask(cfg.netmask.unwrap()) - .destination(cfg.destination.unwrap()) + builder .up() // or set it up manually using `sudo ip link set up`. .try_build() // or `.try_build_mq(queues)` for multi-queue support. .unwrap(),