From 4e1e64a5b48e8493babdabe4adf99263a1ebb86b Mon Sep 17 00:00:00 2001 From: Pyro57000 <147988717+Pyro57000@users.noreply.github.com> Date: Mon, 20 Nov 2023 10:52:51 -0600 Subject: [PATCH] run test ssl in parallel against a list of urls --- multi_testssl/Cargo.lock | 7 +++++++ multi_testssl/Cargo.toml | 8 ++++++++ multi_testssl/src/main.rs | 30 ++++++++++++++++++++++++++++++ 3 files changed, 45 insertions(+) create mode 100644 multi_testssl/Cargo.lock create mode 100644 multi_testssl/Cargo.toml create mode 100644 multi_testssl/src/main.rs diff --git a/multi_testssl/Cargo.lock b/multi_testssl/Cargo.lock new file mode 100644 index 0000000..738d212 --- /dev/null +++ b/multi_testssl/Cargo.lock @@ -0,0 +1,7 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 3 + +[[package]] +name = "multi_testssl" +version = "0.1.0" diff --git a/multi_testssl/Cargo.toml b/multi_testssl/Cargo.toml new file mode 100644 index 0000000..3d064a2 --- /dev/null +++ b/multi_testssl/Cargo.toml @@ -0,0 +1,8 @@ +[package] +name = "multi_testssl" +version = "0.1.0" +edition = "2021" + +# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html + +[dependencies] diff --git a/multi_testssl/src/main.rs b/multi_testssl/src/main.rs new file mode 100644 index 0000000..d2c1789 --- /dev/null +++ b/multi_testssl/src/main.rs @@ -0,0 +1,30 @@ +use std::fs; +use std::env; +use std::process::{Command, Stdio}; +fn main() { + let args: Vec = env::args().collect(); + if args.len() != 2{ + print!(" +USAGE: +multidirb /path/to/urls.txt + ") + } + else{ + let text = fs::read_to_string(&args[1]).expect("error reading urls file"); + fs::create_dir("./testssl_output").expect("error creating folder"); + let lines: Vec<&str> = text.split("\n").collect(); + for line in lines{ + let words: Vec<&str> = line.split(" ").collect(); + for word in words{ + if word.contains("http"){ + let url = word; + let word_vec: Vec<&str> = word.split("/").collect(); + let filename = format!("./testssl_output/{}",word_vec[2]); + let outfile = fs::File::create(filename).expect("error creating output file"); + let command_output = Stdio::from(outfile); + Command::new("testssl").arg(url).stdout(command_output).spawn().expect("error running dirb command"); + } + } + } + } +} \ No newline at end of file