updated the tool to use rayon and have output capabilities

This commit is contained in:
pyro committed 2026-05-12 13:15:27 -05:00
1 parent 217bc7c84a
commit d8affb25d6
3534 files changed
+11341 -93

No files matched your search

Generated
+390 -9
View File
@@ -1,6 +1,6 @@
# This file is automatically @generated by Cargo. # This file is automatically @generated by Cargo.
# It is not intended for manual editing. # It is not intended for manual editing.
version = 3 version = 4
[[package]] [[package]]
name = "addr2line" name = "addr2line"
@@ -66,6 +66,17 @@ dependencies = [
"windows-sys 0.52.0", "windows-sys 0.52.0",
] ]
[[package]]
name = "async-trait"
version = "0.1.89"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9035ad2d096bed7955a320ee7e2230574d28fd3c3a0f186cbea1ff3c7eed5dbb"
dependencies = [
"proc-macro2",
"quote",
"syn",
]
[[package]] [[package]]
name = "atomic-waker" name = "atomic-waker"
version = "1.1.2" version = "1.1.2"
@@ -197,6 +208,37 @@ version = "0.8.6"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "06ea2b9bc92be3c2baa9334a323ebca2d6f074ff852cd1d7b11064035cd3868f" checksum = "06ea2b9bc92be3c2baa9334a323ebca2d6f074ff852cd1d7b11064035cd3868f"
[[package]]
name = "crossbeam-deque"
version = "0.8.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9dd111b7b7f7d55b72c0a6ae361660ee5853c9af73f70c3c2ef6858b950e2e51"
dependencies = [
"crossbeam-epoch",
"crossbeam-utils",
]
[[package]]
name = "crossbeam-epoch"
version = "0.9.18"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5b82ac4a3c2ca9c3460964f020e1402edd5753411d7737aa39c3714ad1b5420e"
dependencies = [
"crossbeam-utils",
]
[[package]]
name = "crossbeam-utils"
version = "0.8.21"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d0a5c400df2834b80a4c3327b3aad3a4c4cd4de0629063962b03235697506a28"
[[package]]
name = "data-encoding"
version = "2.11.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a4ae5f15dda3c708c0ade84bfee31ccab44a3da4f88015ed22f63732abe300c8"
[[package]] [[package]]
name = "dns-lookup" name = "dns-lookup"
version = "2.0.4" version = "2.0.4"
@@ -205,10 +247,16 @@ checksum = "e5766087c2235fec47fafa4cfecc81e494ee679d0fd4a59887ea0919bfb0e4fc"
dependencies = [ dependencies = [
"cfg-if", "cfg-if",
"libc", "libc",
"socket2", "socket2 0.5.7",
"windows-sys 0.48.0", "windows-sys 0.48.0",
] ]
[[package]]
name = "either"
version = "1.15.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "48c757948c5ede0e46177b7add2e67155f70e33c07fea8284df6576da70b3719"
[[package]] [[package]]
name = "encoding_rs" name = "encoding_rs"
version = "0.8.34" version = "0.8.34"
@@ -218,6 +266,18 @@ dependencies = [
"cfg-if", "cfg-if",
] ]
[[package]]
name = "enum-as-inner"
version = "0.6.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a1e6a265c649f3f5979b601d26f1d05ada116434c87741c9493cb56218f76cbc"
dependencies = [
"heck",
"proc-macro2",
"quote",
"syn",
]
[[package]] [[package]]
name = "equivalent" name = "equivalent"
version = "1.0.1" version = "1.0.1"
@@ -320,6 +380,17 @@ dependencies = [
"slab", "slab",
] ]
[[package]]
name = "getrandom"
version = "0.2.17"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ff2abc00be7fca6ebc474524697ae276ad847ad0a6b3faa4bcb027e9a4614ad0"
dependencies = [
"cfg-if",
"libc",
"wasi",
]
[[package]] [[package]]
name = "gimli" name = "gimli"
version = "0.29.0" version = "0.29.0"
@@ -452,13 +523,23 @@ dependencies = [
"http-body", "http-body",
"hyper", "hyper",
"pin-project-lite", "pin-project-lite",
"socket2", "socket2 0.5.7",
"tokio", "tokio",
"tower", "tower",
"tower-service", "tower-service",
"tracing", "tracing",
] ]
[[package]]
name = "idna"
version = "0.4.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7d20d6b07bfbc108882d88ed8e37d39636dcc260e15e30c45e6ba089610b917c"
dependencies = [
"unicode-bidi",
"unicode-normalization",
]
[[package]] [[package]]
name = "idna" name = "idna"
version = "0.5.0" version = "0.5.0"
@@ -479,6 +560,19 @@ dependencies = [
"hashbrown", "hashbrown",
] ]
[[package]]
name = "ipconfig"
version = "0.3.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "4d40460c0ce33d6ce4b0630ad68ff63d6661961c48b6dba35e5a4d81cfb48222"
dependencies = [
"socket2 0.6.3",
"widestring",
"windows-registry",
"windows-result",
"windows-sys 0.61.2",
]
[[package]] [[package]]
name = "ipnet" name = "ipnet"
version = "2.9.0" version = "2.9.0"
@@ -508,9 +602,15 @@ dependencies = [
[[package]] [[package]]
name = "libc" name = "libc"
version = "0.2.155" version = "0.2.186"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "97b3888a4aecf77e811145cadf6eef5901f4782c53886191b2f693f24761847c" checksum = "68ab91017fe16c622486840e4c83c9a37afeff978bd239b5293d61ece587de66"
[[package]]
name = "linked-hash-map"
version = "0.5.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0717cef1bc8b636c6e1c1bbdefc09e6322da8a9321966e8928ef80d20f7f770f"
[[package]] [[package]]
name = "linux-raw-sys" name = "linux-raw-sys"
@@ -518,12 +618,30 @@ version = "0.4.14"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "78b3ae25bc7c8c38cec158d1f2757ee79e9b3740fbc7ccf0e59e4b08d793fa89" checksum = "78b3ae25bc7c8c38cec158d1f2757ee79e9b3740fbc7ccf0e59e4b08d793fa89"
[[package]]
name = "lock_api"
version = "0.4.14"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "224399e74b87b5f3557511d98dff8b14089b3dadafcab6bb93eab67d3aace965"
dependencies = [
"scopeguard",
]
[[package]] [[package]]
name = "log" name = "log"
version = "0.4.21" version = "0.4.21"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "90ed8c1e510134f979dbc4f070f87d4313098b704861a105fe34231c70a3901c" checksum = "90ed8c1e510134f979dbc4f070f87d4313098b704861a105fe34231c70a3901c"
[[package]]
name = "lru-cache"
version = "0.1.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "31e24f1ad8321ca0e8a1e0ac13f23cb668e6f5466c2c57319f6a5cf1cc8e3b1c"
dependencies = [
"linked-hash-map",
]
[[package]] [[package]]
name = "memchr" name = "memchr"
version = "2.7.2" version = "2.7.2"
@@ -642,6 +760,29 @@ dependencies = [
"vcpkg", "vcpkg",
] ]
[[package]]
name = "parking_lot"
version = "0.12.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "93857453250e3077bd71ff98b6a65ea6621a19bb0f559a85248955ac12c45a1a"
dependencies = [
"lock_api",
"parking_lot_core",
]
[[package]]
name = "parking_lot_core"
version = "0.9.12"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2621685985a2ebf1c516881c026032ac7deafcda1a2c9b7850dc81e3dfcb64c1"
dependencies = [
"cfg-if",
"libc",
"redox_syscall",
"smallvec",
"windows-link",
]
[[package]] [[package]]
name = "percent-encoding" name = "percent-encoding"
version = "2.3.1" version = "2.3.1"
@@ -686,6 +827,15 @@ version = "0.3.30"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d231b230927b5e4ad203db57bbcbee2802f6bce620b1e4a9024a07d94e2907ec" checksum = "d231b230927b5e4ad203db57bbcbee2802f6bce620b1e4a9024a07d94e2907ec"
[[package]]
name = "ppv-lite86"
version = "0.2.21"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "85eae3c4ed2f50dcfe72643da4befc30deadb458a9b590d720cde2f2b1e97da9"
dependencies = [
"zerocopy",
]
[[package]] [[package]]
name = "proc-macro2" name = "proc-macro2"
version = "1.0.85" version = "1.0.85"
@@ -704,6 +854,65 @@ dependencies = [
"proc-macro2", "proc-macro2",
] ]
[[package]]
name = "rand"
version = "0.8.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5ca0ecfa931c29007047d1bc58e623ab12e5590e8c7cc53200d5202b69266d8a"
dependencies = [
"libc",
"rand_chacha",
"rand_core",
]
[[package]]
name = "rand_chacha"
version = "0.3.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88"
dependencies = [
"ppv-lite86",
"rand_core",
]
[[package]]
name = "rand_core"
version = "0.6.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c"
dependencies = [
"getrandom",
]
[[package]]
name = "rayon"
version = "1.12.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "fb39b166781f92d482534ef4b4b1b2568f42613b53e5b6c160e24cfbfa30926d"
dependencies = [
"either",
"rayon-core",
]
[[package]]
name = "rayon-core"
version = "1.13.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "22e18b0f0062d30d4230b2e85ff77fdfe4326feb054b9783a3460d8435c8ab91"
dependencies = [
"crossbeam-deque",
"crossbeam-utils",
]
[[package]]
name = "redox_syscall"
version = "0.5.18"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ed2bf2547551a7053d6fdfafda3f938979645c44812fbfcda098faae3f1a362d"
dependencies = [
"bitflags 2.5.0",
]
[[package]] [[package]]
name = "reqwest" name = "reqwest"
version = "0.12.4" version = "0.12.4"
@@ -747,13 +956,21 @@ dependencies = [
"winreg", "winreg",
] ]
[[package]]
name = "resolv-conf"
version = "0.7.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1e061d1b48cb8d38042de4ae0a7a6401009d6143dc80d2e2d6f31f0bdd6470c7"
[[package]] [[package]]
name = "rustbuster" name = "rustbuster"
version = "0.1.0" version = "0.1.0"
dependencies = [ dependencies = [
"clap", "clap",
"dns-lookup", "dns-lookup",
"rayon",
"reqwest", "reqwest",
"trust-dns-resolver",
] ]
[[package]] [[package]]
@@ -806,6 +1023,12 @@ dependencies = [
"windows-sys 0.52.0", "windows-sys 0.52.0",
] ]
[[package]]
name = "scopeguard"
version = "1.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49"
[[package]] [[package]]
name = "security-framework" name = "security-framework"
version = "2.11.0" version = "2.11.0"
@@ -897,6 +1120,16 @@ dependencies = [
"windows-sys 0.52.0", "windows-sys 0.52.0",
] ]
[[package]]
name = "socket2"
version = "0.6.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3a766e1110788c36f4fa1c2b71b387a7815aa65f88ce0229841826633d93723e"
dependencies = [
"libc",
"windows-sys 0.61.2",
]
[[package]] [[package]]
name = "strsim" name = "strsim"
version = "0.11.1" version = "0.11.1"
@@ -905,9 +1138,9 @@ checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f"
[[package]] [[package]]
name = "syn" name = "syn"
version = "2.0.66" version = "2.0.87"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c42f3f41a2de00b01c0aaad383c5a45241efc8b2d1eda5661812fda5f3cdcff5" checksum = "25aa4ce346d03a6dcd68dd8b4010bcb74e54e62c90c573f394c46eae99aba32d"
dependencies = [ dependencies = [
"proc-macro2", "proc-macro2",
"quote", "quote",
@@ -953,6 +1186,26 @@ dependencies = [
"windows-sys 0.52.0", "windows-sys 0.52.0",
] ]
[[package]]
name = "thiserror"
version = "1.0.69"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b6aaf5339b578ea85b50e080feb250a3e8ae8cfcdff9a461c9ec2904bc923f52"
dependencies = [
"thiserror-impl",
]
[[package]]
name = "thiserror-impl"
version = "1.0.69"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1"
dependencies = [
"proc-macro2",
"quote",
"syn",
]
[[package]] [[package]]
name = "tinyvec" name = "tinyvec"
version = "1.6.0" version = "1.6.0"
@@ -980,7 +1233,7 @@ dependencies = [
"mio", "mio",
"num_cpus", "num_cpus",
"pin-project-lite", "pin-project-lite",
"socket2", "socket2 0.5.7",
"windows-sys 0.48.0", "windows-sys 0.48.0",
] ]
@@ -1041,9 +1294,21 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c3523ab5a71916ccf420eebdf5521fcef02141234bbc0b8a49f2fdc4544364ef" checksum = "c3523ab5a71916ccf420eebdf5521fcef02141234bbc0b8a49f2fdc4544364ef"
dependencies = [ dependencies = [
"pin-project-lite", "pin-project-lite",
"tracing-attributes",
"tracing-core", "tracing-core",
] ]
[[package]]
name = "tracing-attributes"
version = "0.1.31"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7490cfa5ec963746568740651ac6781f701c9c5ea257c58e057f3ba8cf69e8da"
dependencies = [
"proc-macro2",
"quote",
"syn",
]
[[package]] [[package]]
name = "tracing-core" name = "tracing-core"
version = "0.1.32" version = "0.1.32"
@@ -1053,6 +1318,52 @@ dependencies = [
"once_cell", "once_cell",
] ]
[[package]]
name = "trust-dns-proto"
version = "0.23.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3119112651c157f4488931a01e586aa459736e9d6046d3bd9105ffb69352d374"
dependencies = [
"async-trait",
"cfg-if",
"data-encoding",
"enum-as-inner",
"futures-channel",
"futures-io",
"futures-util",
"idna 0.4.0",
"ipnet",
"once_cell",
"rand",
"smallvec",
"thiserror",
"tinyvec",
"tokio",
"tracing",
"url",
]
[[package]]
name = "trust-dns-resolver"
version = "0.23.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "10a3e6c3aff1718b3c73e395d1f35202ba2ffa847c6a62eea0db8fb4cfe30be6"
dependencies = [
"cfg-if",
"futures-util",
"ipconfig",
"lru-cache",
"once_cell",
"parking_lot",
"rand",
"resolv-conf",
"smallvec",
"thiserror",
"tokio",
"tracing",
"trust-dns-proto",
]
[[package]] [[package]]
name = "try-lock" name = "try-lock"
version = "0.2.5" version = "0.2.5"
@@ -1087,7 +1398,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "31e6302e3bb753d46e83516cae55ae196fc0c309407cf11ab35cc51a4c2a4633" checksum = "31e6302e3bb753d46e83516cae55ae196fc0c309407cf11ab35cc51a4c2a4633"
dependencies = [ dependencies = [
"form_urlencoded", "form_urlencoded",
"idna", "idna 0.5.0",
"percent-encoding", "percent-encoding",
] ]
@@ -1194,6 +1505,47 @@ dependencies = [
"wasm-bindgen", "wasm-bindgen",
] ]
[[package]]
name = "widestring"
version = "1.2.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "72069c3113ab32ab29e5584db3c6ec55d416895e60715417b5b883a357c3e471"
[[package]]
name = "windows-link"
version = "0.2.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f0805222e57f7521d6a62e36fa9163bc891acd422f971defe97d64e70d0a4fe5"
[[package]]
name = "windows-registry"
version = "0.6.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "02752bf7fbdcce7f2a27a742f798510f3e5ad88dbe84871e5168e2120c3d5720"
dependencies = [
"windows-link",
"windows-result",
"windows-strings",
]
[[package]]
name = "windows-result"
version = "0.4.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7781fa89eaf60850ac3d2da7af8e5242a5ea78d1a11c49bf2910bb5a73853eb5"
dependencies = [
"windows-link",
]
[[package]]
name = "windows-strings"
version = "0.5.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7837d08f69c77cf6b07689544538e017c1bfcf57e34b4c0ff58e6c2cd3b37091"
dependencies = [
"windows-link",
]
[[package]] [[package]]
name = "windows-sys" name = "windows-sys"
version = "0.48.0" version = "0.48.0"
@@ -1212,6 +1564,15 @@ dependencies = [
"windows-targets 0.52.5", "windows-targets 0.52.5",
] ]
[[package]]
name = "windows-sys"
version = "0.61.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ae137229bcbd6cdf0f7b80a31df61766145077ddf49416a728b02cb3921ff3fc"
dependencies = [
"windows-link",
]
[[package]] [[package]]
name = "windows-targets" name = "windows-targets"
version = "0.48.5" version = "0.48.5"
@@ -1342,3 +1703,23 @@ dependencies = [
"cfg-if", "cfg-if",
"windows-sys 0.48.0", "windows-sys 0.48.0",
] ]
[[package]]
name = "zerocopy"
version = "0.8.27"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0894878a5fa3edfd6da3f88c4805f4c8558e2b996227a3d864f47fe11e38282c"
dependencies = [
"zerocopy-derive",
]
[[package]]
name = "zerocopy-derive"
version = "0.8.27"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "88d2b8d9c68ad2b9e4340d7832716a4d21a22a1154777ad56ea55c51a9cf3831"
dependencies = [
"proc-macro2",
"quote",
"syn",
]
+2
View File
@@ -8,4 +8,6 @@ edition = "2021"
[dependencies] [dependencies]
clap = { version = "4.5.4", features = ["derive"] } clap = { version = "4.5.4", features = ["derive"] }
dns-lookup = "2.0.4" dns-lookup = "2.0.4"
rayon = "1.12.0"
reqwest = { version = "0.12.4", features = ["blocking"] } reqwest = { version = "0.12.4", features = ["blocking"] }
trust-dns-resolver = "0.23.2"
+325 -84
View File
@@ -1,21 +1,31 @@
use std::fs;
use reqwest::{self, StatusCode};
use clap::Parser; use clap::Parser;
use rayon::iter::{IntoParallelRefIterator, ParallelIterator};
use rayon::ThreadPoolBuilder;
use reqwest::{self, StatusCode};
use std::fs::File;
use std::io::BufWriter;
use std::io::Write;
use std::path::PathBuf;
use std::process::exit;
use std::sync::mpsc::{channel, Sender};
use std::thread; use std::thread;
use dns_lookup::lookup_host; use std::{collections::HashMap, fs};
use trust_dns_resolver::config::*;
use trust_dns_resolver::Resolver;
enum OutputMessage {
UrlResult(String),
SubDomainResult(String),
Shutdown,
}
/// Subdomain Bruteforcer, and directory bruteforcer written in rust, and multi threaded!!! /// Subdomain Bruteforcer, and directory bruteforcer written in rust, and multi threaded!!!
#[derive(Parser, Debug)] #[derive(Parser, Debug)]
#[command(version, about, long_about = None)] #[command(version, about, long_about = None)]
struct Args{ struct Args {
/// target to attack, can be a URL or a dns name, you can specify more than one by comma separating the targets /// target to attack, can be a URL or a dns name, you can specify more than one by comma separating the targets
#[arg(short, long)] #[arg(short, long)]
target: String, target: Option<String>,
///Threads to use, there is not upper limit so if you lock up your comptuer that's on you
#[arg(long)]
threads: usize,
/// wordlist to use for subdomains /// wordlist to use for subdomains
#[arg(short, long, default_value_t = String::from("none"))] #[arg(short, long, default_value_t = String::from("none"))]
@@ -24,42 +34,158 @@ struct Args{
///wordlist to use for directories ///wordlist to use for directories
#[arg(short, long, default_value_t = String::from("none"))] #[arg(short, long, default_value_t = String::from("none"))]
dirwordlist: String, dirwordlist: String,
///output files to write, will create two files yourinput_urls.txt and yourinput_subs.txt
#[arg(short, long)]
outfile: Option<String>,
///input file full of urls formatted to one url per line.
#[arg(short, long)]
urlfile: Option<PathBuf>,
///input file full of domains formatted to one domain per line.
#[arg(short, long)]
domainfile: Option<PathBuf>,
///number of threads to use by default it will use the rayon global pool default.
#[arg(long)]
threads: Option<usize>,
} }
fn try_sub(
fn try_sub(domain: String){ domain: String,
let ips = lookup_host(&domain); wildcard_reses: HashMap<&String, Vec<String>>,
if ips.is_ok(){ tx: Sender<OutputMessage>,
let mut ip_string = String::new(); output: bool,
for ip in ips.unwrap(){ ) {
ip_string = format!("{},{}",ip, ip_string); let mut opts = ResolverOpts::default();
opts.edns0 = true;
let resolver = Resolver::new(ResolverConfig::default(), opts).unwrap();
let mut ips = Vec::new();
if let Ok(ipv4s) = resolver.ipv4_lookup(&domain) {
ipv4s.iter().for_each(|ip| ips.push(ip.0.to_string()));
}
if let Ok(ipv6s) = resolver.ipv6_lookup(&domain) {
ipv6s.iter().for_each(|ip| ips.push(ip.0.to_string()));
}
let mut wild_card = None;
for target in wildcard_reses.keys() {
if domain.contains(&target.to_string()) {
wild_card = wildcard_reses.get(target);
} }
println!("{} {}", domain, ip_string); }
if !ips.is_empty() {
if let Some(wild_ips) = wild_card {
if ips.len() == wild_ips.len() {
let mut wild_only = true;
for ip in &ips {
if !wild_ips.contains(ip) {
wild_only = false;
}
}
if wild_only {
return;
}
}
}
if output {
if let Err(e) = tx.send(OutputMessage::SubDomainResult(format!(
"{}: {}",
&domain,
ips.join(", ")
))) {
eprintln!("error sending output! {}", e);
}
}
println!("{} {}", domain, ips.join(", "));
} }
} }
fn try_dir(url: String, tx: Sender<OutputMessage>, output: bool) {
fn try_dir(url: String){
let resp_stat = reqwest::blocking::get(&url); let resp_stat = reqwest::blocking::get(&url);
if resp_stat.is_ok(){ if resp_stat.is_ok() {
let resp = resp_stat.unwrap().status(); let resp = resp_stat.unwrap().status();
match resp{ match resp {
StatusCode::OK => println!("{} {}",resp, url), StatusCode::OK => {
StatusCode::ACCEPTED => println!("{} {}", resp, url), if output {
StatusCode::CONTINUE => println!("{} {}", resp, url), if let Err(e) = tx.send(OutputMessage::UrlResult(format!("{} {}", resp, url))) {
StatusCode::CREATED => println!("{} {}", resp, url), eprintln!("error sending output! {}", e);
StatusCode::FOUND => println!("{} {}", resp, url), }
StatusCode::IM_A_TEAPOT => println!("And what a beautiful teapot you are {}", url), }
StatusCode::MOVED_PERMANENTLY => println!("{} {}", resp, url), println!("{} {}", resp, url);
StatusCode::PERMANENT_REDIRECT => println!("{} {}", resp, url), }
StatusCode::TEMPORARY_REDIRECT => println!("{} {}", resp, url), StatusCode::ACCEPTED => {
_ => () if output {
if let Err(e) = tx.send(OutputMessage::UrlResult(format!("{} {}", resp, url))) {
eprintln!("error sending output! {}", e);
}
}
println!("{} {}", resp, url);
}
StatusCode::CONTINUE => {
if output {
if let Err(e) = tx.send(OutputMessage::UrlResult(format!("{} {}", resp, url))) {
eprintln!("error sending output! {}", e);
}
}
println!("{} {}", resp, url);
}
StatusCode::CREATED => {
if output {
if let Err(e) = tx.send(OutputMessage::UrlResult(format!("{} {}", resp, url))) {
eprintln!("error sending output! {}", e);
}
}
println!("{} {}", resp, url);
}
StatusCode::FOUND => {
if output {
if let Err(e) = tx.send(OutputMessage::UrlResult(format!("{} {}", resp, url))) {
eprintln!("error sending output! {}", e);
}
}
println!("{} {}", resp, url);
}
StatusCode::IM_A_TEAPOT => {
if output {
if let Err(e) = tx.send(OutputMessage::UrlResult(format!("{} {}", resp, url))) {
eprintln!("error sending output! {}", e);
}
}
println!("And what a beautiful teapot you are {}", url);
}
StatusCode::MOVED_PERMANENTLY => {
if output {
if let Err(e) = tx.send(OutputMessage::UrlResult(format!("{} {}", resp, url))) {
eprintln!("error sending output! {}", e);
}
}
println!("{} {}", resp, url);
}
StatusCode::PERMANENT_REDIRECT => {
if output {
if let Err(e) = tx.send(OutputMessage::UrlResult(format!("{} {}", resp, url))) {
eprintln!("error sending output! {}", e);
}
}
println!("{} {}", resp, url);
}
StatusCode::TEMPORARY_REDIRECT => {
if output {
if let Err(e) = tx.send(OutputMessage::UrlResult(format!("{} {}", resp, url))) {
eprintln!("error sending output! {}", e);
}
}
println!("{} {}", resp, url);
}
_ => (),
} }
} }
} }
fn main() { fn main() {
print!(" print!(
"
@@ -129,74 +255,189 @@ fn main() {
╙█▄▄▄▀▀▀▓▄▄▄▄▄▄▄▓▀▀ ╙█▄▄▄▀▀▀▓▄▄▄▄▄▄▄▓▀▀
"); "
);
let mut dirs_to_try = Vec::new(); let mut dirs_to_try = Vec::new();
let mut subs_to_try = Vec::new(); let mut subs_to_try = Vec::new();
let args = Args::parse(); let args = Args::parse();
let mut targets = Vec::new(); let mut targets = Vec::new();
for target in args.target.split(",").collect::<Vec<&str>>(){ let (tx, rx) = channel();
targets.push(target.to_owned()); if let Some(given_targets) = args.target {
} for target in given_targets.split(",").collect::<Vec<&str>>() {
if args.dirwordlist != String::from("none"){ targets.push(target.to_owned());
let dirwordlist = fs::read_to_string(args.dirwordlist).expect("error reading directory wordlist");
for dir in dirwordlist.split("\n").collect::<Vec<&str>>(){
dirs_to_try.push(dir.trim_end().trim_start().to_owned());
} }
} }
if args.subwordlist != String::from("none"){ if let Some(url_file) = args.urlfile {
let subwordlist = fs::read_to_string(args.subwordlist).expect("error reading subdomain word list"); if let Ok(url_string) = fs::read_to_string(url_file) {
for sub in subwordlist.split("\n").collect::<Vec<&str>>(){ url_string.lines().into_iter().for_each(|url| {
subs_to_try.push(sub.trim_end().trim_start().to_owned()) targets.push(url.to_string());
});
} }
} }
let mut domains_to_try = Vec::new(); if let Some(domain_file) = args.domainfile {
let mut urls_to_try = Vec::new(); if let Ok(domain_string) = fs::read_to_string(domain_file) {
println!("loading targets, and wordlists..."); domain_string.lines().into_iter().for_each(|domain| {
for target in targets{ targets.push(domain.to_string());
if target.contains("/"){ });
for dir in &dirs_to_try{ }
let url = format!("{}/{}", target, dir); }
urls_to_try.push(url.to_owned()); if targets.is_empty() {
println!("no targets provided!");
exit(1);
}
if let Some(thread) = args.threads {
ThreadPoolBuilder::new()
.num_threads(thread)
.build_global()
.unwrap();
}
println!(
"INFO:::{} threads will be used:::",
rayon::current_num_threads()
);
println!("detecting if a wild card record exists...");
let mut opts = ResolverOpts::default();
opts.edns0 = true;
let resolver = Resolver::new(ResolverConfig::default(), opts).unwrap();
let mut wild_card_results = HashMap::new();
for target in &targets {
if !target.contains("http") {
subs_to_try.push(target.clone());
let mut ips = Vec::new();
if let Ok(ipv4s) = resolver.ipv4_lookup(&format!("burstpyrofoo.{}", target)) {
ipv4s.iter().for_each(|ip| {
ips.push(ip.0.to_string());
});
println!("INFO:::wildcard found: {} {}:::", target, ips.join(", "));
} }
} if let Ok(ipv6s) = resolver.ipv6_lookup(&format!("burstpyrofoo.{}", target)) {
else if target.contains(".") == true{ println!("wildcard found!");
for sub in &subs_to_try{ ipv6s.iter().for_each(|ip| {
let domain = format!("{}.{}", sub, target); ips.push(ip.0.to_string());
domains_to_try.push(domain.to_owned()); });
} }
} if !ips.is_empty() {
else{ wild_card_results.insert(target, ips);
println!("{} is not a valid target, please supply either a domain or url", target); }
} else {
dirs_to_try.push(target.clone());
} }
} }
let mut threads = Vec::new(); if args.dirwordlist != String::from("none") {
let urls_len = urls_to_try.len(); let dirwordlist =
let domains_len = domains_to_try.len(); fs::read_to_string(args.dirwordlist).expect("error reading directory wordlist");
println!("DONE!, {} URLS to try, and {} subdomains to try", &urls_len, &domains_len); for dir in dirwordlist.split("\n").collect::<Vec<&str>>() {
if urls_len > 0{ for target in &targets {
let dir_chunk_size = urls_len / &args.threads; if target.contains("http") {
let url_vecs: Vec<Vec<String>> = urls_to_try.chunks(dir_chunk_size).map(|x| x.to_vec()).collect(); dirs_to_try.push(format!("{}/{}", target, dir.trim()));
for urlvec in url_vecs{ }
for url in urlvec{
threads.push(thread::spawn(move || {
try_dir(url)
}));
} }
} }
} }
if domains_len > 0 { if args.subwordlist != String::from("none") {
let domain_chunk_size = domains_len /&args.threads; let subwordlist =
let domain_vecs: Vec<Vec<String>> = domains_to_try.chunks(domain_chunk_size).map(|x| x.to_vec()).collect(); fs::read_to_string(args.subwordlist).expect("error reading subdomain word list");
for domainvec in domain_vecs{ for sub in subwordlist.split("\n").collect::<Vec<&str>>() {
for domain in domainvec{ for target in &targets {
threads.push(thread::spawn(move || { if !target.contains("http") {
try_sub(domain); subs_to_try.push(format!("{}.{}", sub.trim(), target));
})) }
} }
} }
for thread in threads{
let _ = thread.join();
}
} }
println!("done bruteforcing, happy hunting!"); println!("INFO:::loading targets, and wordlists...:::");
let urls_len = dirs_to_try.len();
let domains_len = subs_to_try.len();
println!(
"INFO:::DONE!, {} URLS to try, and {} subdomains to try:::",
&urls_len, &domains_len
);
let mut output = false;
let mut urlpath = PathBuf::new();
let mut subpath = PathBuf::new();
if args.outfile.is_some() {
output = true;
let path = args.outfile.clone().unwrap();
urlpath = PathBuf::from(format!("{}_urls.txt", &path));
subpath = PathBuf::from(format!("{}_subs.txt", &path));
println!(
"INFO:::results will be saved to {}_urls.txt and {}_subs.txt:::",
path, path
);
}
let write_handler = thread::spawn(move || {
if output {
let urlfile = File::create(urlpath).unwrap();
let subfile = File::create(subpath).unwrap();
let mut urlwrite = BufWriter::new(urlfile);
let mut subwrite = BufWriter::new(subfile);
const FLUSHEVERY: usize = 10;
let mut url_counter = 0;
let mut sub_counter = 0;
loop {
let msg = rx.recv().unwrap();
match msg {
OutputMessage::UrlResult(res) => {
if let Err(e) = writeln!(urlwrite, "{}", res) {
println!("error writing url file! {}", e);
} else {
url_counter += 1;
}
}
OutputMessage::SubDomainResult(res) => {
if let Err(e) = writeln!(subwrite, "{}", res) {
println!("error writing sub file! {}", e);
} else {
sub_counter += 1;
}
}
OutputMessage::Shutdown => {
urlwrite.flush().unwrap();
subwrite.flush().unwrap();
break;
}
}
if url_counter == FLUSHEVERY {
if let Err(e) = urlwrite.flush() {
println!("error writing url file! {e}");
}
}
if sub_counter == FLUSHEVERY {
if let Err(e) = subwrite.flush() {
println!("error writing sub file! {e}");
}
}
}
} else {
println!("INFO:::results will be printed to console and not saved...:::");
}
});
rayon::scope(|s| {
if !dirs_to_try.is_empty() {
s.spawn(|_| {
dirs_to_try.par_iter().for_each(|url| {
try_dir(url.to_string(), tx.clone(), output);
});
});
}
if !subs_to_try.is_empty() {
s.spawn(|_| {
subs_to_try.par_iter().for_each(|sub| {
try_sub(
sub.to_string(),
wild_card_results.clone(),
tx.clone(),
output,
);
});
})
}
});
println!("INFO:::enumeration finished!:::");
if output {
println!("INFO:::waiting for output writer to finish...:::");
tx.send(OutputMessage::Shutdown).unwrap();
}
write_handler.join().unwrap();
println!("INFO:::done bruteforcing, happy hunting!":::);
} }
+1
View File
@@ -0,0 +1 @@
{"rustc_fingerprint":16956027585667248358,"outputs":{"17747080675513052775":{"success":true,"status":"","code":0,"stdout":"rustc 1.94.1 (e408947bf 2026-03-25)\nbinary: rustc\ncommit-hash: e408947bfd200af42db322daf0fadfe7e26d3bd1\ncommit-date: 2026-03-25\nhost: x86_64-unknown-linux-gnu\nrelease: 1.94.1\nLLVM version: 21.1.8\n","stderr":""},"7971740275564407648":{"success":true,"status":"","code":0,"stdout":"___\nlib___.rlib\nlib___.so\nlib___.so\nlib___.a\nlib___.so\n/home/pyro/.rustup/toolchains/stable-x86_64-unknown-linux-gnu\noff\npacked\nunpacked\n___\ndebug_assertions\npanic=\"unwind\"\nproc_macro\ntarget_abi=\"\"\ntarget_arch=\"x86_64\"\ntarget_endian=\"little\"\ntarget_env=\"gnu\"\ntarget_family=\"unix\"\ntarget_feature=\"fxsr\"\ntarget_feature=\"sse\"\ntarget_feature=\"sse2\"\ntarget_has_atomic=\"16\"\ntarget_has_atomic=\"32\"\ntarget_has_atomic=\"64\"\ntarget_has_atomic=\"8\"\ntarget_has_atomic=\"ptr\"\ntarget_os=\"linux\"\ntarget_pointer_width=\"64\"\ntarget_vendor=\"unknown\"\nunix\n","stderr":""},"11857020428658561806":{"success":true,"status":"","code":0,"stdout":"___\nlib___.rlib\nlib___.so\nlib___.so\nlib___.a\nlib___.so\n/home/pyro/.rustup/toolchains/stable-x86_64-unknown-linux-gnu\noff\npacked\nunpacked\n___\ndebug_assertions\npanic=\"unwind\"\nproc_macro\ntarget_abi=\"\"\ntarget_arch=\"x86_64\"\ntarget_endian=\"little\"\ntarget_env=\"gnu\"\ntarget_family=\"unix\"\ntarget_feature=\"fxsr\"\ntarget_feature=\"sse\"\ntarget_feature=\"sse2\"\ntarget_has_atomic=\"16\"\ntarget_has_atomic=\"32\"\ntarget_has_atomic=\"64\"\ntarget_has_atomic=\"8\"\ntarget_has_atomic=\"ptr\"\ntarget_os=\"linux\"\ntarget_pointer_width=\"64\"\ntarget_vendor=\"unknown\"\nunix\n","stderr":""}},"successes":{}}
+3
View File
@@ -0,0 +1,3 @@
Signature: 8a477f597d28d172789f06886806bc55
# This file is a cache directory tag created by cargo.
# For information about cache directory tags see https://bford.info/cachedir/
View File
Whitespace-only changes.
@@ -0,0 +1 @@
This file has an mtime of when this was started.
@@ -0,0 +1 @@
2dde84fbaeced444
@@ -0,0 +1 @@
{"rustc":5391851738765093524,"features":"[\"auto\", \"default\", \"wincon\"]","declared_features":"[\"auto\", \"default\", \"test\", \"wincon\"]","target":9753318193087561239,"profile":10323283122568503036,"path":5060897550942228049,"deps":[[2362169830071005739,"anstyle_query",false,12256565723880552111],[2905435160510042220,"colorchoice",false,4456714328864568249],[11377377817968559775,"anstyle",false,10171982982607624291],[11524778796437627830,"is_terminal_polyfill",false,6356193813223759158],[15059673609494012180,"anstyle_parse",false,15033293755765630331],[17244083487491527972,"utf8parse",false,17300088740466330303]],"local":[{"CheckDepInfo":{"dep_info":"debug/.fingerprint/anstream-7249270139fefd7a/dep-lib-anstream","checksum":false}}],"rustflags":[],"config":8247474407144887393,"compile_kind":0}
@@ -0,0 +1 @@
This file has an mtime of when this was started.
@@ -0,0 +1 @@
9093f880d5cf86b4
@@ -0,0 +1 @@
{"rustc":5391851738765093524,"features":"[\"auto\", \"default\", \"wincon\"]","declared_features":"[\"auto\", \"default\", \"test\", \"wincon\"]","target":9753318193087561239,"profile":13785225790516125199,"path":5060897550942228049,"deps":[[2362169830071005739,"anstyle_query",false,5476468444148258435],[2905435160510042220,"colorchoice",false,8226862032990226513],[11377377817968559775,"anstyle",false,2870375068657451557],[11524778796437627830,"is_terminal_polyfill",false,5099070270784383791],[15059673609494012180,"anstyle_parse",false,13014854229766655780],[17244083487491527972,"utf8parse",false,2025987086353643700]],"local":[{"CheckDepInfo":{"dep_info":"debug/.fingerprint/anstream-ca937e03ca3f00b8/dep-lib-anstream","checksum":false}}],"rustflags":[],"config":8247474407144887393,"compile_kind":0}
@@ -0,0 +1 @@
This file has an mtime of when this was started.
@@ -0,0 +1 @@
250277c3ea9ed527
@@ -0,0 +1 @@
{"rustc":5391851738765093524,"features":"[\"default\", \"std\"]","declared_features":"[\"default\", \"std\"]","target":12848940486553721285,"profile":13785225790516125199,"path":7116384825293994005,"deps":[],"local":[{"CheckDepInfo":{"dep_info":"debug/.fingerprint/anstyle-c2f3d9ce59e33348/dep-lib-anstyle","checksum":false}}],"rustflags":[],"config":8247474407144887393,"compile_kind":0}
@@ -0,0 +1 @@
This file has an mtime of when this was started.
@@ -0,0 +1 @@
6358a513a1242a8d
@@ -0,0 +1 @@
{"rustc":5391851738765093524,"features":"[\"default\", \"std\"]","declared_features":"[\"default\", \"std\"]","target":12848940486553721285,"profile":10323283122568503036,"path":7116384825293994005,"deps":[],"local":[{"CheckDepInfo":{"dep_info":"debug/.fingerprint/anstyle-cda286b897636a9f/dep-lib-anstyle","checksum":false}}],"rustflags":[],"config":8247474407144887393,"compile_kind":0}
@@ -0,0 +1 @@
This file has an mtime of when this was started.
@@ -0,0 +1 @@
7b25826405fda0d0
@@ -0,0 +1 @@
{"rustc":5391851738765093524,"features":"[\"default\", \"utf8\"]","declared_features":"[\"core\", \"default\", \"utf8\"]","target":5033495598916551966,"profile":10323283122568503036,"path":16400613309236792306,"deps":[[17244083487491527972,"utf8parse",false,17300088740466330303]],"local":[{"CheckDepInfo":{"dep_info":"debug/.fingerprint/anstyle-parse-7774bc769943aac1/dep-lib-anstyle_parse","checksum":false}}],"rustflags":[],"config":8247474407144887393,"compile_kind":0}
@@ -0,0 +1 @@
This file has an mtime of when this was started.
@@ -0,0 +1 @@
244fbb60f70c9eb4
@@ -0,0 +1 @@
{"rustc":5391851738765093524,"features":"[\"default\", \"utf8\"]","declared_features":"[\"core\", \"default\", \"utf8\"]","target":5033495598916551966,"profile":13785225790516125199,"path":16400613309236792306,"deps":[[17244083487491527972,"utf8parse",false,2025987086353643700]],"local":[{"CheckDepInfo":{"dep_info":"debug/.fingerprint/anstyle-parse-fc4724f8893a3ce0/dep-lib-anstyle_parse","checksum":false}}],"rustflags":[],"config":8247474407144887393,"compile_kind":0}
@@ -0,0 +1 @@
This file has an mtime of when this was started.
@@ -0,0 +1 @@
aff6207a961118aa
@@ -0,0 +1 @@
{"rustc":5391851738765093524,"features":"[]","declared_features":"[]","target":13335253778279134839,"profile":10323283122568503036,"path":13588889843138063333,"deps":[],"local":[{"CheckDepInfo":{"dep_info":"debug/.fingerprint/anstyle-query-566efab180f7bc9d/dep-lib-anstyle_query","checksum":false}}],"rustflags":[],"config":8247474407144887393,"compile_kind":0}
@@ -0,0 +1 @@
This file has an mtime of when this was started.
@@ -0,0 +1 @@
83d617cd0853004c
@@ -0,0 +1 @@
{"rustc":5391851738765093524,"features":"[]","declared_features":"[]","target":13335253778279134839,"profile":13785225790516125199,"path":13588889843138063333,"deps":[],"local":[{"CheckDepInfo":{"dep_info":"debug/.fingerprint/anstyle-query-9430afec7da5e505/dep-lib-anstyle_query","checksum":false}}],"rustflags":[],"config":8247474407144887393,"compile_kind":0}
@@ -0,0 +1 @@
This file has an mtime of when this was started.
@@ -0,0 +1 @@
88cd679ceba8692c
@@ -0,0 +1 @@
{"rustc":5391851738765093524,"features":"[]","declared_features":"[]","target":5116616278641129243,"profile":2225463790103693989,"path":18104243295821950904,"deps":[[3546373100931343613,"syn",false,3861453105350196831],[13236762933977798352,"proc_macro2",false,8537918591826186395],[16437840124237027127,"quote",false,5412739456136711908]],"local":[{"CheckDepInfo":{"dep_info":"debug/.fingerprint/async-trait-4e74662e4e43304e/dep-lib-async_trait","checksum":false}}],"rustflags":[],"config":8247474407144887393,"compile_kind":0}
@@ -0,0 +1 @@
This file has an mtime of when this was started.
@@ -0,0 +1 @@
5491547d54939c27
@@ -0,0 +1 @@
{"rustc":5391851738765093524,"features":"[]","declared_features":"[\"portable-atomic\"]","target":14411119108718288063,"profile":15657897354478470176,"path":15527342706982090352,"deps":[],"local":[{"CheckDepInfo":{"dep_info":"debug/.fingerprint/atomic-waker-843b52043047247e/dep-lib-atomic_waker","checksum":false}}],"rustflags":[],"config":8247474407144887393,"compile_kind":0}
@@ -0,0 +1 @@
This file has an mtime of when this was started.
@@ -0,0 +1 @@
bc65783aa9db93fa
@@ -0,0 +1 @@
{"rustc":5391851738765093524,"features":"[]","declared_features":"[\"portable-atomic\"]","target":14411119108718288063,"profile":2241668132362809309,"path":15527342706982090352,"deps":[],"local":[{"CheckDepInfo":{"dep_info":"debug/.fingerprint/atomic-waker-d6c2ddae633ac1aa/dep-lib-atomic_waker","checksum":false}}],"rustflags":[],"config":8247474407144887393,"compile_kind":0}
@@ -0,0 +1 @@
This file has an mtime of when this was started.
@@ -0,0 +1 @@
b5d7b0c0c9a040d1
@@ -0,0 +1 @@
{"rustc":5391851738765093524,"features":"[]","declared_features":"[]","target":2631145339540467737,"profile":2225463790103693989,"path":7045749759694450536,"deps":[],"local":[{"CheckDepInfo":{"dep_info":"debug/.fingerprint/autocfg-1aea6988d788c165/dep-lib-autocfg","checksum":false}}],"rustflags":[],"config":8247474407144887393,"compile_kind":0}
@@ -0,0 +1 @@
This file has an mtime of when this was started.
@@ -0,0 +1 @@
e2a371ca18388bde
@@ -0,0 +1 @@
{"rustc":5391851738765093524,"features":"[\"alloc\", \"default\", \"std\"]","declared_features":"[\"alloc\", \"default\", \"std\"]","target":13060062996227388079,"profile":2241668132362809309,"path":5551949133805718033,"deps":[],"local":[{"CheckDepInfo":{"dep_info":"debug/.fingerprint/base64-05c11f181c9cd5a6/dep-lib-base64","checksum":false}}],"rustflags":[],"config":8247474407144887393,"compile_kind":0}
@@ -0,0 +1 @@
This file has an mtime of when this was started.
@@ -0,0 +1 @@
1a907be1c8188997
@@ -0,0 +1 @@
{"rustc":5391851738765093524,"features":"[\"alloc\", \"default\", \"std\"]","declared_features":"[\"alloc\", \"default\", \"std\"]","target":13060062996227388079,"profile":15657897354478470176,"path":5551949133805718033,"deps":[],"local":[{"CheckDepInfo":{"dep_info":"debug/.fingerprint/base64-e5cc050039038c59/dep-lib-base64","checksum":false}}],"rustflags":[],"config":8247474407144887393,"compile_kind":0}
@@ -0,0 +1 @@
This file has an mtime of when this was started.
@@ -0,0 +1 @@
58685831da33f430
@@ -0,0 +1 @@
{"rustc":5391851738765093524,"features":"[]","declared_features":"[\"arbitrary\", \"bytemuck\", \"compiler_builtins\", \"core\", \"example_generated\", \"rustc-dep-of-std\", \"serde\", \"std\"]","target":12657915593679244726,"profile":15657897354478470176,"path":5510510112491842035,"deps":[],"local":[{"CheckDepInfo":{"dep_info":"debug/.fingerprint/bitflags-1f130d746b686320/dep-lib-bitflags","checksum":false}}],"rustflags":[],"config":8247474407144887393,"compile_kind":0}
@@ -0,0 +1 @@
This file has an mtime of when this was started.
@@ -0,0 +1 @@
3b542e1e0312e64a
@@ -0,0 +1 @@
{"rustc":5391851738765093524,"features":"[]","declared_features":"[\"arbitrary\", \"bytemuck\", \"compiler_builtins\", \"core\", \"example_generated\", \"rustc-dep-of-std\", \"serde\", \"std\"]","target":12657915593679244726,"profile":2241668132362809309,"path":5510510112491842035,"deps":[],"local":[{"CheckDepInfo":{"dep_info":"debug/.fingerprint/bitflags-ddd6fb338367e2a1/dep-lib-bitflags","checksum":false}}],"rustflags":[],"config":8247474407144887393,"compile_kind":0}
@@ -0,0 +1 @@
This file has an mtime of when this was started.
@@ -0,0 +1 @@
9f398d96149cf161
@@ -0,0 +1 @@
{"rustc":5391851738765093524,"features":"[\"default\", \"std\"]","declared_features":"[\"default\", \"serde\", \"std\"]","target":9641554635012368048,"profile":15657897354478470176,"path":1433402356311659891,"deps":[],"local":[{"CheckDepInfo":{"dep_info":"debug/.fingerprint/bytes-282dd19c4b3c17d1/dep-lib-bytes","checksum":false}}],"rustflags":[],"config":8247474407144887393,"compile_kind":0}
@@ -0,0 +1 @@
This file has an mtime of when this was started.
@@ -0,0 +1 @@
9270c33b75ba94f2
@@ -0,0 +1 @@
{"rustc":5391851738765093524,"features":"[\"default\", \"std\"]","declared_features":"[\"default\", \"serde\", \"std\"]","target":9641554635012368048,"profile":2241668132362809309,"path":1433402356311659891,"deps":[],"local":[{"CheckDepInfo":{"dep_info":"debug/.fingerprint/bytes-f5dedda3637484ff/dep-lib-bytes","checksum":false}}],"rustflags":[],"config":8247474407144887393,"compile_kind":0}
@@ -0,0 +1 @@
This file has an mtime of when this was started.
@@ -0,0 +1 @@
9d71b3b13956e6ad
@@ -0,0 +1 @@
{"rustc":5391851738765093524,"features":"[]","declared_features":"[\"jobserver\", \"libc\", \"once_cell\", \"parallel\"]","target":14191615625821551695,"profile":2225463790103693989,"path":5182650557410257406,"deps":[],"local":[{"CheckDepInfo":{"dep_info":"debug/.fingerprint/cc-8fb13211634ba0eb/dep-lib-cc","checksum":false}}],"rustflags":[],"config":8247474407144887393,"compile_kind":0}
@@ -0,0 +1 @@
This file has an mtime of when this was started.
@@ -0,0 +1 @@
94982330f489c2ff
@@ -0,0 +1 @@
{"rustc":5391851738765093524,"features":"[]","declared_features":"[\"compiler_builtins\", \"core\", \"rustc-dep-of-std\"]","target":14691992093392644261,"profile":2241668132362809309,"path":16069518019749620653,"deps":[],"local":[{"CheckDepInfo":{"dep_info":"debug/.fingerprint/cfg-if-4c131d49fee0abb9/dep-lib-cfg_if","checksum":false}}],"rustflags":[],"config":8247474407144887393,"compile_kind":0}
@@ -0,0 +1 @@
This file has an mtime of when this was started.
@@ -0,0 +1 @@
815d4009793c4f24
@@ -0,0 +1 @@
{"rustc":5391851738765093524,"features":"[]","declared_features":"[\"compiler_builtins\", \"core\", \"rustc-dep-of-std\"]","target":14691992093392644261,"profile":15657897354478470176,"path":16069518019749620653,"deps":[],"local":[{"CheckDepInfo":{"dep_info":"debug/.fingerprint/cfg-if-9e8ca6ed031de0b9/dep-lib-cfg_if","checksum":false}}],"rustflags":[],"config":8247474407144887393,"compile_kind":0}
@@ -0,0 +1 @@
This file has an mtime of when this was started.
@@ -0,0 +1 @@
96bc22c4a2b9e091
@@ -0,0 +1 @@
{"rustc":5391851738765093524,"features":"[\"color\", \"default\", \"derive\", \"error-context\", \"help\", \"std\", \"suggestions\", \"usage\"]","declared_features":"[\"cargo\", \"color\", \"debug\", \"default\", \"deprecated\", \"derive\", \"env\", \"error-context\", \"help\", \"std\", \"string\", \"suggestions\", \"unicode\", \"unstable-doc\", \"unstable-styles\", \"unstable-v5\", \"usage\", \"wrap_help\"]","target":725892165292113192,"profile":15657897354478470176,"path":6603582439274354907,"deps":[[3811900418443909595,"clap_builder",false,6005179314902238385],[7701503647698962294,"clap_derive",false,10274433118510361951]],"local":[{"CheckDepInfo":{"dep_info":"debug/.fingerprint/clap-1bd10a80a857723a/dep-lib-clap","checksum":false}}],"rustflags":[],"config":8247474407144887393,"compile_kind":0}
@@ -0,0 +1 @@
This file has an mtime of when this was started.
@@ -0,0 +1 @@
02b2da9655631202
@@ -0,0 +1 @@
{"rustc":5391851738765093524,"features":"[\"color\", \"default\", \"derive\", \"error-context\", \"help\", \"std\", \"suggestions\", \"usage\"]","declared_features":"[\"cargo\", \"color\", \"debug\", \"default\", \"deprecated\", \"derive\", \"env\", \"error-context\", \"help\", \"std\", \"string\", \"suggestions\", \"unicode\", \"unstable-doc\", \"unstable-styles\", \"unstable-v5\", \"usage\", \"wrap_help\"]","target":725892165292113192,"profile":15657897354478470176,"path":6603582439274354907,"deps":[[3811900418443909595,"clap_builder",false,6005179314902238385],[7701503647698962294,"clap_derive",false,3138201158350000891]],"local":[{"CheckDepInfo":{"dep_info":"debug/.fingerprint/clap-38671d1ac12ff85a/dep-lib-clap","checksum":false}}],"rustflags":[],"config":8247474407144887393,"compile_kind":0}
@@ -0,0 +1 @@
This file has an mtime of when this was started.
Loaded 100 of 3534 files, more files were not shown because too many files have changed in this diff. Show more