A modular, multi-threaded web reconnaissance tool built entirely in Rust. Inspired by Black Hat Rust.
web_tester is a command-line security scanner written in Rust with a focus on performance and modularity. It combines port scanning, subdomain enumeration, and HTTP probing into a single tool, using a thread pool for concurrent execution and clap for a clean CLI interface.
- Port Scanner — Multi-threaded TCP port scanning across a configurable range
- Subdomain Enumeration — Wordlist-based active subdomain discovery with DNS resolution
- HTTP Probing — Sends HTTP requests to discovered hosts and checks response status codes
- Colored Output — Clear, color-coded terminal output for easy result reading
- Modular Design — Each capability is cleanly separated into its own module
- Fast & Concurrent — Uses a thread pool to scan multiple targets simultaneously
| Dependency | Purpose |
|---|---|
clap 4.5 |
CLI argument parsing with derive macros |
threadpool |
Multi-threaded task execution |
reqwest (blocking) |
HTTP requests for web probing |
dns-lookup |
DNS resolution for subdomain enumeration |
url |
URL parsing and validation |
colored |
Terminal color output |
serde / serde_json |
JSON serialization for structured output |
# Clone the repo
git clone https://github.com/Cythonic1/web_tester.git
cd web_tester
# Build in release mode
cargo build --release
# Run
./target/release/web_tester --helpUsage: web_tester [OPTIONS] <COMMAND>
Commands:
all Run all scans
git-leak Run only the Git leak module
robots Run the robots.txt scanner
sub-domain-passive
dir-enum
sub-domain-active
help Print this message or the help of the given subcommand(s)
Options:
-t, --target <TARGET> (e.g) https://pythonic01.com
--timeout <TIMEOUT> Global timeout for requests [default: 10]
-v, --verbose Enable verbose logging
-h, --help Print help
-V, --version Print versionRun
--helpon any subcommand for full options.
web_tester/
├── src/
│ ├── main.rs # Entry point, CLI dispatch via clap
│ ├── port_scanner.rs # Multi-threaded TCP port scanner
│ ├── subdomain.rs # Wordlist-based subdomain enumeration + DNS resolution
│ └── http_probe.rs # HTTP request probing and status code checking
├── n0kovo_subdomains_small.txt # Bundled subdomain wordlist
├── Cargo.toml
└── Cargo.lock
- CLI argument parsing via
clap - Port scanner with multi-threading
- Subdomain enumeration with DNS resolution
- HTTP probing module
- Colored output
- Filter results by HTTP status code
- Fix malformed URL error handling
- Fix passive subdomain parsing edge cases
Cythonic1 — GitHub
For educational and authorized security testing purposes only. Do not use against systems you do not have permission to test.