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.
|
# 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",
|
||||||
|
]
|
||||||
|
|||||||
@@ -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
@@ -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!":::);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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