Finished adding a basic flake
It can now build the Linux C2 beacon
This commit is contained in:
parent
b2278cc8e8
commit
4475d23d1d
1
.gitignore
vendored
1
.gitignore
vendored
@ -4,3 +4,4 @@ examples/bind-shell/key-generator/privkey
|
||||
core
|
||||
**/core
|
||||
.direnv
|
||||
result
|
||||
|
||||
8
Cargo.lock
generated
8
Cargo.lock
generated
@ -475,6 +475,12 @@ version = "2.0.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "6999dc1837253364c2ebb0704ba97994bd874e8f195d665c50b7548f6ea92764"
|
||||
|
||||
[[package]]
|
||||
name = "fs_extra"
|
||||
version = "1.3.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "42703706b716c37f96a77aea830392ad231f44c9e9a67872fa5548707e11b11c"
|
||||
|
||||
[[package]]
|
||||
name = "futures"
|
||||
version = "0.3.28"
|
||||
@ -783,6 +789,7 @@ version = "0.1.0"
|
||||
dependencies = [
|
||||
"autotools",
|
||||
"cc",
|
||||
"fs_extra",
|
||||
"libc",
|
||||
]
|
||||
|
||||
@ -901,6 +908,7 @@ version = "0.1.0"
|
||||
dependencies = [
|
||||
"cmake",
|
||||
"errno 0.2.8",
|
||||
"fs_extra",
|
||||
"futures",
|
||||
"libc",
|
||||
"packets",
|
||||
|
||||
49
flake.nix
49
flake.nix
@ -44,8 +44,13 @@
|
||||
pkg-config
|
||||
];
|
||||
|
||||
toolchain = pkgs.pkgsBuildHost.rust-bin.fromRustupToolchainFile
|
||||
./rust-toolchain.toml;
|
||||
windowsBuildTools = buildTools ++ (with pkgs; [
|
||||
pkgsCross.mingwW64.stdenv.cc
|
||||
pkgsCross.mingwW64.windows.pthreads
|
||||
]);
|
||||
|
||||
toolchain =
|
||||
pkgs.pkgsMusl.rust-bin.fromRustupToolchainFile ./rust-toolchain.toml;
|
||||
|
||||
craneLib = (crane.mkLib pkgs).overrideToolchain toolchain;
|
||||
|
||||
@ -54,36 +59,49 @@
|
||||
commonArgs = {
|
||||
inherit src;
|
||||
|
||||
#strictDeps = true;
|
||||
strictDeps = true;
|
||||
|
||||
#CARGO_BUILD_RUSTFLAGS = "-C target-feature=+crt-static";
|
||||
CARGO_BUILD_RUSTFLAGS = "-C target-feature=+crt-static";
|
||||
CARGO_BUILD_TARGET = "x86_64-unknown-linux-musl";
|
||||
|
||||
SPARSE_BUILD_LIBPCAP = "${libpcap-src}";
|
||||
#SPARSE_BUILD_LIBNL = "${libnl}";
|
||||
SPARSE_BUILD_LIBNL = "${libnl}";
|
||||
|
||||
nativeBuildInputs = buildTools;
|
||||
buildInputs = buildTools;
|
||||
|
||||
doCheck = false;
|
||||
};
|
||||
|
||||
commonWindowsArgs = commonArgs // {
|
||||
CARGO_BUILD_TARGET = "x86_64-pc-windows-gnu";
|
||||
|
||||
nativeBuildInputs = windowsBuildTools;
|
||||
buildInputs = windowsBuildTools;
|
||||
};
|
||||
|
||||
artifacts = craneLib.buildDepsOnly commonArgs;
|
||||
windowsArtifacts = craneLib.buildDepsOnly commonWindowsArgs;
|
||||
|
||||
sparse-05-linux-server = craneLib.buildPackage (commonArgs // {
|
||||
inherit artifacts;
|
||||
|
||||
pname = "sparse-05-server";
|
||||
cargoExtraArgs = "-p sparse-05-server --locked";
|
||||
});
|
||||
|
||||
sparse-05-windows-server = craneLib.buildPackage (commonWindowsArgs // {
|
||||
inherit windowsArtifacts;
|
||||
|
||||
pname = "sparse-05-server";
|
||||
cargoExtraArgs = "-p sparse-05-server --locked";
|
||||
});
|
||||
|
||||
sparse-c2-linux-beacon = craneLib.buildPackage (commonArgs // {
|
||||
inherit artifacts;
|
||||
|
||||
pname = "sparse-c2-beacon";
|
||||
cargoExtraArgs = "-p sparse-c2-beacon --locked";
|
||||
doCheck = false;
|
||||
|
||||
nativeBuildInputs = buildTools;
|
||||
buildInputs = buildTools;
|
||||
});
|
||||
|
||||
crate = craneLib.buildPackage (commonArgs // {
|
||||
inherit artifacts;
|
||||
buildInputs = buildTools;
|
||||
});
|
||||
in with pkgs; {
|
||||
devShells.default = craneLib.devShell rec {
|
||||
@ -92,10 +110,11 @@
|
||||
buildInputs = buildTools;
|
||||
|
||||
SPARSE_BUILD_LIBPCAP = "${libpcap-src}";
|
||||
#SPARSE_BUILD_LIBNL = "${libnl}";
|
||||
SPARSE_BUILD_LIBNL = "${libnl}";
|
||||
};
|
||||
|
||||
packages = rec {
|
||||
inherit sparse-05-linux-server sparse-05-windows-server;
|
||||
inherit sparse-c2-linux-beacon;
|
||||
|
||||
default = sparse-c2-linux-beacon;
|
||||
|
||||
@ -11,3 +11,4 @@ libc = "0.2.142"
|
||||
[build-dependencies]
|
||||
autotools = "0.2"
|
||||
cc = "1.0"
|
||||
fs_extra = "1.3.0"
|
||||
|
||||
@ -13,10 +13,18 @@
|
||||
// You should have received a copy of the GNU Affero General Public License
|
||||
// along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
use fs_extra::dir::{copy, CopyOptions};
|
||||
|
||||
fn main() -> std::io::Result<()> {
|
||||
cc::Build::new().file("src/bridge.c").compile("bridge");
|
||||
|
||||
let dst = autotools::Config::new("libnl").reconf("-vi").build();
|
||||
let libnl_src = format!("{}/libnl_src", std::env::var("OUT_DIR").unwrap());
|
||||
|
||||
let mut options = CopyOptions::new();
|
||||
options.copy_inside = true;
|
||||
copy(std::env!("SPARSE_BUILD_LIBNL"), &libnl_src, &options);
|
||||
|
||||
let dst = autotools::Config::new(libnl_src).reconf("-vi").build();
|
||||
|
||||
println!("cargo:rustc-link-search=native={}/lib", dst.display());
|
||||
println!("cargo:rustc-link-lib=static=nl-3");
|
||||
|
||||
@ -28,3 +28,4 @@ packets = { path = "../packets" }
|
||||
|
||||
[build-dependencies]
|
||||
cmake = "0.1"
|
||||
fs_extra = "1.3.0"
|
||||
|
||||
@ -13,8 +13,19 @@
|
||||
// You should have received a copy of the GNU Affero General Public License
|
||||
// along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
use fs_extra::dir::{copy, CopyOptions};
|
||||
|
||||
fn main() {
|
||||
let dst = cmake::Config::new(std::env!("SPARSE_BUILD_LIBPCAP"))
|
||||
if std::env::var("CARGO_CFG_TARGET_OS").unwrap() == "windows" {
|
||||
println!("cargo:rustc-lib-lib=pcap");
|
||||
} else {
|
||||
let libpcap_src = format!("{}/pcap_src", std::env::var("OUT_DIR").unwrap());
|
||||
|
||||
let mut options = CopyOptions::new();
|
||||
options.copy_inside = true;
|
||||
copy(std::env!("SPARSE_BUILD_LIBPCAP"), &libpcap_src, &options);
|
||||
|
||||
let dst = cmake::Config::new(&libpcap_src)
|
||||
.define("BUILD_SHARED_LIBS", "OFF")
|
||||
.define("BUILD_WITH_LIBNL", "OFF")
|
||||
.define("DISABLE_BLUETOOTH", "ON")
|
||||
@ -32,5 +43,7 @@ fn main() {
|
||||
|
||||
// panic!("hahahahah test {}", dst.display());
|
||||
println!("cargo:rustc-link-search=native={}/lib", dst.display());
|
||||
println!("cargo:rustc-link-lib=pcap");
|
||||
println!("cargo:rustc-link-search=native={}/lib64", dst.display());
|
||||
println!("cargo:rustc-link-lib=static=pcap");
|
||||
}
|
||||
}
|
||||
|
||||
@ -10,10 +10,12 @@ ecies-ed25519 = { version = "0.5.1", features = ["serde"] }
|
||||
ed25519-dalek = "1.0.1"
|
||||
libc = "0.2.147"
|
||||
rand = "0.7"
|
||||
raw_tty = "0.1.0"
|
||||
rmp-serde = "1.1.2"
|
||||
serde = { version = "1.0.188", features = ["derive"] }
|
||||
sparse-05-common = { version = "0.1.0", path = "../sparse-05-common" }
|
||||
structopt = { version = "0.3.26", features = ["paw"] }
|
||||
tempfile = "3.8.0"
|
||||
tokio = { version = "1.32.0", features = ["io-std", "net", "fs", "macros", "rt"] }
|
||||
|
||||
[target.'cfg(unix)'.dependencies]
|
||||
raw_tty = "0.1.0"
|
||||
|
||||
@ -16,13 +16,13 @@ catconf = "0.1.2"
|
||||
sparse-05-common = { version = "0.1.0", path = "../sparse-05-common" }
|
||||
ecies-ed25519 = { version = "0.5.1", features = ["serde"] }
|
||||
packets = { path = "../../packets" }
|
||||
|
||||
[target.'cfg(unix)'.dependencies]
|
||||
pcap-sys = { path = "../../pcap-sys" }
|
||||
pcap-sys = { path = "../../pcap-sys", optional = true }
|
||||
|
||||
[build-dependencies]
|
||||
cc = "1.0"
|
||||
|
||||
[features]
|
||||
default = ["pcap"]
|
||||
docker-breakout = []
|
||||
exit = []
|
||||
pcap = ["dep:pcap-sys"]
|
||||
|
||||
@ -9,7 +9,7 @@ use packets::{self, EthernetPkt};
|
||||
use sparse_05_common::messages::TransportType;
|
||||
|
||||
pub enum Interface {
|
||||
#[cfg(target_os = "linux")]
|
||||
#[cfg(feature = "pcap")]
|
||||
RawUdp(pcap_sys::Interface<pcap_sys::DevActivated>, u16),
|
||||
Udp(UdpSocket, u16),
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user