updated the tool to use rayon and have output capabilities
This commit is contained in:
Generated
+390
-9
@@ -1,6 +1,6 @@
|
||||
# This file is automatically @generated by Cargo.
|
||||
# It is not intended for manual editing.
|
||||
version = 3
|
||||
version = 4
|
||||
|
||||
[[package]]
|
||||
name = "addr2line"
|
||||
@@ -66,6 +66,17 @@ dependencies = [
|
||||
"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]]
|
||||
name = "atomic-waker"
|
||||
version = "1.1.2"
|
||||
@@ -197,6 +208,37 @@ version = "0.8.6"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
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]]
|
||||
name = "dns-lookup"
|
||||
version = "2.0.4"
|
||||
@@ -205,10 +247,16 @@ checksum = "e5766087c2235fec47fafa4cfecc81e494ee679d0fd4a59887ea0919bfb0e4fc"
|
||||
dependencies = [
|
||||
"cfg-if",
|
||||
"libc",
|
||||
"socket2",
|
||||
"socket2 0.5.7",
|
||||
"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]]
|
||||
name = "encoding_rs"
|
||||
version = "0.8.34"
|
||||
@@ -218,6 +266,18 @@ dependencies = [
|
||||
"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]]
|
||||
name = "equivalent"
|
||||
version = "1.0.1"
|
||||
@@ -320,6 +380,17 @@ dependencies = [
|
||||
"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]]
|
||||
name = "gimli"
|
||||
version = "0.29.0"
|
||||
@@ -452,13 +523,23 @@ dependencies = [
|
||||
"http-body",
|
||||
"hyper",
|
||||
"pin-project-lite",
|
||||
"socket2",
|
||||
"socket2 0.5.7",
|
||||
"tokio",
|
||||
"tower",
|
||||
"tower-service",
|
||||
"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]]
|
||||
name = "idna"
|
||||
version = "0.5.0"
|
||||
@@ -479,6 +560,19 @@ dependencies = [
|
||||
"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]]
|
||||
name = "ipnet"
|
||||
version = "2.9.0"
|
||||
@@ -508,9 +602,15 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "libc"
|
||||
version = "0.2.155"
|
||||
version = "0.2.186"
|
||||
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]]
|
||||
name = "linux-raw-sys"
|
||||
@@ -518,12 +618,30 @@ version = "0.4.14"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
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]]
|
||||
name = "log"
|
||||
version = "0.4.21"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
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]]
|
||||
name = "memchr"
|
||||
version = "2.7.2"
|
||||
@@ -642,6 +760,29 @@ dependencies = [
|
||||
"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]]
|
||||
name = "percent-encoding"
|
||||
version = "2.3.1"
|
||||
@@ -686,6 +827,15 @@ version = "0.3.30"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
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]]
|
||||
name = "proc-macro2"
|
||||
version = "1.0.85"
|
||||
@@ -704,6 +854,65 @@ dependencies = [
|
||||
"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]]
|
||||
name = "reqwest"
|
||||
version = "0.12.4"
|
||||
@@ -747,13 +956,21 @@ dependencies = [
|
||||
"winreg",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "resolv-conf"
|
||||
version = "0.7.6"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "1e061d1b48cb8d38042de4ae0a7a6401009d6143dc80d2e2d6f31f0bdd6470c7"
|
||||
|
||||
[[package]]
|
||||
name = "rustbuster"
|
||||
version = "0.1.0"
|
||||
dependencies = [
|
||||
"clap",
|
||||
"dns-lookup",
|
||||
"rayon",
|
||||
"reqwest",
|
||||
"trust-dns-resolver",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
@@ -806,6 +1023,12 @@ dependencies = [
|
||||
"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]]
|
||||
name = "security-framework"
|
||||
version = "2.11.0"
|
||||
@@ -897,6 +1120,16 @@ dependencies = [
|
||||
"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]]
|
||||
name = "strsim"
|
||||
version = "0.11.1"
|
||||
@@ -905,9 +1138,9 @@ checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f"
|
||||
|
||||
[[package]]
|
||||
name = "syn"
|
||||
version = "2.0.66"
|
||||
version = "2.0.87"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "c42f3f41a2de00b01c0aaad383c5a45241efc8b2d1eda5661812fda5f3cdcff5"
|
||||
checksum = "25aa4ce346d03a6dcd68dd8b4010bcb74e54e62c90c573f394c46eae99aba32d"
|
||||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
@@ -953,6 +1186,26 @@ dependencies = [
|
||||
"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]]
|
||||
name = "tinyvec"
|
||||
version = "1.6.0"
|
||||
@@ -980,7 +1233,7 @@ dependencies = [
|
||||
"mio",
|
||||
"num_cpus",
|
||||
"pin-project-lite",
|
||||
"socket2",
|
||||
"socket2 0.5.7",
|
||||
"windows-sys 0.48.0",
|
||||
]
|
||||
|
||||
@@ -1041,9 +1294,21 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "c3523ab5a71916ccf420eebdf5521fcef02141234bbc0b8a49f2fdc4544364ef"
|
||||
dependencies = [
|
||||
"pin-project-lite",
|
||||
"tracing-attributes",
|
||||
"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]]
|
||||
name = "tracing-core"
|
||||
version = "0.1.32"
|
||||
@@ -1053,6 +1318,52 @@ dependencies = [
|
||||
"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]]
|
||||
name = "try-lock"
|
||||
version = "0.2.5"
|
||||
@@ -1087,7 +1398,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "31e6302e3bb753d46e83516cae55ae196fc0c309407cf11ab35cc51a4c2a4633"
|
||||
dependencies = [
|
||||
"form_urlencoded",
|
||||
"idna",
|
||||
"idna 0.5.0",
|
||||
"percent-encoding",
|
||||
]
|
||||
|
||||
@@ -1194,6 +1505,47 @@ dependencies = [
|
||||
"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]]
|
||||
name = "windows-sys"
|
||||
version = "0.48.0"
|
||||
@@ -1212,6 +1564,15 @@ dependencies = [
|
||||
"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]]
|
||||
name = "windows-targets"
|
||||
version = "0.48.5"
|
||||
@@ -1342,3 +1703,23 @@ dependencies = [
|
||||
"cfg-if",
|
||||
"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",
|
||||
]
|
||||
|
||||
@@ -8,4 +8,6 @@ edition = "2021"
|
||||
[dependencies]
|
||||
clap = { version = "4.5.4", features = ["derive"] }
|
||||
dns-lookup = "2.0.4"
|
||||
rayon = "1.12.0"
|
||||
reqwest = { version = "0.12.4", features = ["blocking"] }
|
||||
trust-dns-resolver = "0.23.2"
|
||||
|
||||
+325
-84
@@ -1,21 +1,31 @@
|
||||
use std::fs;
|
||||
use reqwest::{self, StatusCode};
|
||||
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 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!!!
|
||||
#[derive(Parser, Debug)]
|
||||
#[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
|
||||
#[arg(short, long)]
|
||||
target: String,
|
||||
|
||||
///Threads to use, there is not upper limit so if you lock up your comptuer that's on you
|
||||
#[arg(long)]
|
||||
threads: usize,
|
||||
target: Option<String>,
|
||||
|
||||
/// wordlist to use for subdomains
|
||||
#[arg(short, long, default_value_t = String::from("none"))]
|
||||
@@ -24,42 +34,158 @@ struct Args{
|
||||
///wordlist to use for directories
|
||||
#[arg(short, long, default_value_t = String::from("none"))]
|
||||
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(domain: String){
|
||||
let ips = lookup_host(&domain);
|
||||
if ips.is_ok(){
|
||||
let mut ip_string = String::new();
|
||||
for ip in ips.unwrap(){
|
||||
ip_string = format!("{},{}",ip, ip_string);
|
||||
fn try_sub(
|
||||
domain: String,
|
||||
wildcard_reses: HashMap<&String, Vec<String>>,
|
||||
tx: Sender<OutputMessage>,
|
||||
output: bool,
|
||||
) {
|
||||
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){
|
||||
fn try_dir(url: String, tx: Sender<OutputMessage>, output: bool) {
|
||||
let resp_stat = reqwest::blocking::get(&url);
|
||||
if resp_stat.is_ok(){
|
||||
if resp_stat.is_ok() {
|
||||
let resp = resp_stat.unwrap().status();
|
||||
match resp{
|
||||
StatusCode::OK => println!("{} {}",resp, url),
|
||||
StatusCode::ACCEPTED => println!("{} {}", resp, url),
|
||||
StatusCode::CONTINUE => println!("{} {}", resp, url),
|
||||
StatusCode::CREATED => println!("{} {}", resp, url),
|
||||
StatusCode::FOUND => println!("{} {}", resp, url),
|
||||
StatusCode::IM_A_TEAPOT => println!("And what a beautiful teapot you are {}", url),
|
||||
StatusCode::MOVED_PERMANENTLY => println!("{} {}", resp, url),
|
||||
StatusCode::PERMANENT_REDIRECT => println!("{} {}", resp, url),
|
||||
StatusCode::TEMPORARY_REDIRECT => println!("{} {}", resp, url),
|
||||
_ => ()
|
||||
match resp {
|
||||
StatusCode::OK => {
|
||||
if output {
|
||||
if let Err(e) = tx.send(OutputMessage::UrlResult(format!("{} {}", resp, url))) {
|
||||
eprintln!("error sending output! {}", e);
|
||||
}
|
||||
}
|
||||
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() {
|
||||
print!("
|
||||
print!(
|
||||
"
|
||||
|
||||
|
||||
|
||||
@@ -129,74 +255,189 @@ fn main() {
|
||||
╙█▄▄▄▀▀▀▓▄▄▄▄▄▄▄▓▀▀
|
||||
|
||||
|
||||
");
|
||||
"
|
||||
);
|
||||
let mut dirs_to_try = Vec::new();
|
||||
let mut subs_to_try = Vec::new();
|
||||
let args = Args::parse();
|
||||
let mut targets = Vec::new();
|
||||
for target in args.target.split(",").collect::<Vec<&str>>(){
|
||||
targets.push(target.to_owned());
|
||||
}
|
||||
if args.dirwordlist != String::from("none"){
|
||||
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());
|
||||
let (tx, rx) = channel();
|
||||
if let Some(given_targets) = args.target {
|
||||
for target in given_targets.split(",").collect::<Vec<&str>>() {
|
||||
targets.push(target.to_owned());
|
||||
}
|
||||
}
|
||||
if args.subwordlist != String::from("none"){
|
||||
let subwordlist = fs::read_to_string(args.subwordlist).expect("error reading subdomain word list");
|
||||
for sub in subwordlist.split("\n").collect::<Vec<&str>>(){
|
||||
subs_to_try.push(sub.trim_end().trim_start().to_owned())
|
||||
if let Some(url_file) = args.urlfile {
|
||||
if let Ok(url_string) = fs::read_to_string(url_file) {
|
||||
url_string.lines().into_iter().for_each(|url| {
|
||||
targets.push(url.to_string());
|
||||
});
|
||||
}
|
||||
}
|
||||
let mut domains_to_try = Vec::new();
|
||||
let mut urls_to_try = Vec::new();
|
||||
println!("loading targets, and wordlists...");
|
||||
for target in targets{
|
||||
if target.contains("/"){
|
||||
for dir in &dirs_to_try{
|
||||
let url = format!("{}/{}", target, dir);
|
||||
urls_to_try.push(url.to_owned());
|
||||
if let Some(domain_file) = args.domainfile {
|
||||
if let Ok(domain_string) = fs::read_to_string(domain_file) {
|
||||
domain_string.lines().into_iter().for_each(|domain| {
|
||||
targets.push(domain.to_string());
|
||||
});
|
||||
}
|
||||
}
|
||||
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(", "));
|
||||
}
|
||||
}
|
||||
else if target.contains(".") == true{
|
||||
for sub in &subs_to_try{
|
||||
let domain = format!("{}.{}", sub, target);
|
||||
domains_to_try.push(domain.to_owned());
|
||||
if let Ok(ipv6s) = resolver.ipv6_lookup(&format!("burstpyrofoo.{}", target)) {
|
||||
println!("wildcard found!");
|
||||
ipv6s.iter().for_each(|ip| {
|
||||
ips.push(ip.0.to_string());
|
||||
});
|
||||
}
|
||||
}
|
||||
else{
|
||||
println!("{} is not a valid target, please supply either a domain or url", target);
|
||||
if !ips.is_empty() {
|
||||
wild_card_results.insert(target, ips);
|
||||
}
|
||||
} else {
|
||||
dirs_to_try.push(target.clone());
|
||||
}
|
||||
}
|
||||
let mut threads = Vec::new();
|
||||
let urls_len = urls_to_try.len();
|
||||
let domains_len = domains_to_try.len();
|
||||
println!("DONE!, {} URLS to try, and {} subdomains to try", &urls_len, &domains_len);
|
||||
if urls_len > 0{
|
||||
let dir_chunk_size = urls_len / &args.threads;
|
||||
let url_vecs: Vec<Vec<String>> = urls_to_try.chunks(dir_chunk_size).map(|x| x.to_vec()).collect();
|
||||
for urlvec in url_vecs{
|
||||
for url in urlvec{
|
||||
threads.push(thread::spawn(move || {
|
||||
try_dir(url)
|
||||
}));
|
||||
if args.dirwordlist != String::from("none") {
|
||||
let dirwordlist =
|
||||
fs::read_to_string(args.dirwordlist).expect("error reading directory wordlist");
|
||||
for dir in dirwordlist.split("\n").collect::<Vec<&str>>() {
|
||||
for target in &targets {
|
||||
if target.contains("http") {
|
||||
dirs_to_try.push(format!("{}/{}", target, dir.trim()));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
if domains_len > 0 {
|
||||
let domain_chunk_size = domains_len /&args.threads;
|
||||
let domain_vecs: Vec<Vec<String>> = domains_to_try.chunks(domain_chunk_size).map(|x| x.to_vec()).collect();
|
||||
for domainvec in domain_vecs{
|
||||
for domain in domainvec{
|
||||
threads.push(thread::spawn(move || {
|
||||
try_sub(domain);
|
||||
}))
|
||||
if args.subwordlist != String::from("none") {
|
||||
let subwordlist =
|
||||
fs::read_to_string(args.subwordlist).expect("error reading subdomain word list");
|
||||
for sub in subwordlist.split("\n").collect::<Vec<&str>>() {
|
||||
for target in &targets {
|
||||
if !target.contains("http") {
|
||||
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!":::);
|
||||
}
|
||||
|
||||
@@ -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":{}}
|
||||
@@ -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/
|
||||
Binary file not shown.
@@ -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}
|
||||
Binary file not shown.
@@ -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}
|
||||
Binary file not shown.
@@ -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}
|
||||
Binary file not shown.
@@ -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}
|
||||
Binary file not shown.
@@ -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}
|
||||
Binary file not shown.
@@ -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}
|
||||
Binary file not shown.
@@ -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}
|
||||
Binary file not shown.
@@ -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}
|
||||
Binary file not shown.
@@ -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}
|
||||
Binary file not shown.
@@ -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}
|
||||
Binary file not shown.
@@ -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}
|
||||
Binary file not shown.
@@ -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}
|
||||
Binary file not shown.
@@ -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}
|
||||
Binary file not shown.
@@ -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}
|
||||
Binary file not shown.
@@ -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}
|
||||
Binary file not shown.
@@ -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}
|
||||
Binary file not shown.
@@ -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}
|
||||
Binary file not shown.
@@ -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}
|
||||
Binary file not shown.
@@ -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}
|
||||
Binary file not shown.
@@ -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}
|
||||
Binary file not shown.
@@ -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}
|
||||
Binary file not shown.
@@ -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}
|
||||
Binary file not shown.
@@ -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}
|
||||
Binary file not shown.
@@ -0,0 +1 @@
|
||||
This file has an mtime of when this was started.
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user