fix: more cleaning up for FreeBSD

This commit is contained in:
Andrew Rioux
2024-09-19 02:42:32 -04:00
parent f6428b92fe
commit 1dfd7e0499
12 changed files with 58 additions and 29 deletions

View File

@@ -1,6 +1,6 @@
[package]
name = "sparse-05-client"
version = "0.5.0"
version = "0.7.0"
edition = "2021"
[dependencies]
@@ -12,7 +12,7 @@ libc = "0.2.147"
rand = "0.7"
rmp-serde = "1.1.2"
serde = { version = "1.0.188", features = ["derive"] }
sparse-05-common = { version = "0.1.0", path = "../sparse-05-common" }
sparse-05-common = { version = "0.7.0", path = "../sparse-05-common" }
structopt = { version = "0.3.26", features = ["paw"] }
tempfile = "3.8.0"
tokio = { version = "1.32.0", features = ["full"] }

View File

@@ -10,6 +10,7 @@ pub fn print_capabilities(capabilities: &Capabilities, ip: &IpAddr) {
"\tOperating system: \t{}",
match &capabilities.operating_system {
OperatingSystem::Linux => "Linux",
OperatingSystem::FreeBSD => "FreeBSD",
OperatingSystem::Windows => "Windows",
}
);
@@ -57,7 +58,7 @@ pub fn print_capabilities(capabilities: &Capabilities, ip: &IpAddr) {
}
);
}
OperatingSystem::Windows => {
OperatingSystem::Windows | OperatingSystem::FreeBSD => {
println!(
"\tAdmin user: \t\t{}",
match capabilities.root {

View File

@@ -26,6 +26,7 @@ impl std::str::FromStr for TargetOs {
fn from_str(input: &str) -> Result<Self, Self::Err> {
match input {
"linux" => Ok(Self::Linux),
"freebsd" => Ok(Self::FreeBSD),
"windows" => Ok(Self::Windows),
"windows-service" => Ok(Self::WindowsService),
_ => Err("could not parse target operating system"),

View File

@@ -1,6 +1,6 @@
[package]
name = "sparse-05-common"
version = "0.1.0"
version = "0.7.0"
edition = "2021"
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html

View File

@@ -1,6 +1,6 @@
[package]
name = "sparse-05-server"
version = "0.5.0"
version = "0.7.0"
edition = "2021"
[dependencies]
@@ -13,7 +13,7 @@ libc = { version = "0.2.147" }
serde = { version = "1.0.188", features = ["derive"] }
rmp-serde = "1.1.2"
catconf = "0.1.2"
sparse-05-common = { version = "0.1.0", path = "../sparse-05-common" }
sparse-05-common = { version = "0.7.0", path = "../sparse-05-common" }
ecies-ed25519 = { version = "0.5.1", features = ["serde"] }
packets = { path = "../../packets" }
pcap-sys = { path = "../../pcap-sys", optional = true }

View File

@@ -34,7 +34,7 @@ impl Interface {
.ok_or(anyhow!("could not get an ethernet interface"))?
} else {
interfaces
.find(|eth| eth.starts_with("eth") || eth.starts_with("en"))
.find(|eth| eth.starts_with("eth") || eth.starts_with("en") || eth.starts_with("vtnet") || eth.starts_with("vmx"))
.ok_or(anyhow!("could not get an ethernet interface"))?
};
@@ -57,27 +57,24 @@ impl Interface {
}};
}
log::debug!("opening interface {interface_name}...");
let mut interface = retry!(pcap_sys::Interface::<pcap_sys::DevDisabled>::new(
&interface_name
));
retry!(interface.set_buffer_size(1024));
retry!(interface.set_buffer_size(2048));
retry!(interface.set_non_blocking(false));
retry!(interface.set_promisc(false));
retry!(interface.set_timeout(10));
log::debug!("Configured raw listener interface");
let interface = retry!(interface.activate());
log::debug!("Activated raw listener interface");
if cfg!(windows) {
retry!(interface.set_filter(&format!("udp port {port}"), true, None));
} else {
log::debug!("setting pcap filter");
if cfg!(linux) {
retry!(interface.set_filter(&format!("inbound and udp port {port}"), true, None));
} else {
retry!(interface.set_filter(&format!("udp port {port}"), true, None));
}
log::debug!("Updated filter for listener interface");
if interface.datalink() != pcap_sys::consts::DLT_EN10MB {