Skip to content

Commit 06623e6

Browse files
PR1A: README facelift + GitHub Pages version strings
Cosmetic documentation refresh, no functional code changes. - README: plain-text description, quick-start block, promoted TUI screenshot as hero, PRs-Welcome + platform badges, Go Report Card cache-buster -> v=0.5.1, replaced em dashes with hyphens / "n/a" - docs/_layouts/default.html: Download v0.5.0 -> v0.5.1, Go badge 1.24.2+, Go Report Card cache-buster v=0.5.1 New per-feature flag-table rows and Feature Matrix entries are added in their respective feature PRs (PR2-PR5) as upkeep. Co-authored-by: Cursor <cursoragent@cursor.com>
1 parent 9d0c56c commit 06623e6

2 files changed

Lines changed: 54 additions & 25 deletions

File tree

README.md

Lines changed: 51 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -9,11 +9,21 @@
99
[![Go](https://img.shields.io/badge/Go-1.24.2+-00ADD8?style=for-the-badge&logo=go&logoColor=white)](https://go.dev)
1010
[![License: GPL v3](https://img.shields.io/badge/License-GPLv3-blue.svg?style=for-the-badge)](LICENSE)
1111
[![CodeQL](https://img.shields.io/github/actions/workflow/status/TMHSDigital/subenum/codeql.yml?label=CodeQL&style=for-the-badge)](https://github.com/TMHSDigital/subenum/actions/workflows/codeql.yml)
12-
[![Go Report Card](https://goreportcard.com/badge/github.com/TMHSDigital/subenum?style=for-the-badge&v=0.5.0)](https://goreportcard.com/report/github.com/TMHSDigital/subenum)
12+
[![Go Report Card](https://goreportcard.com/badge/github.com/TMHSDigital/subenum?style=for-the-badge&v=0.5.1)](https://goreportcard.com/report/github.com/TMHSDigital/subenum)
13+
[![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=for-the-badge)](./docs/CONTRIBUTING.md)
14+
[![Platform](https://img.shields.io/badge/platform-Linux%20%7C%20macOS%20%7C%20Windows-lightgrey?style=for-the-badge)](#installation)
1315

1416
<br>
1517

16-
[Quick Start](#installation) &nbsp;|&nbsp; [Configuration](#configuration) &nbsp;|&nbsp; [Usage](#usage) &nbsp;|&nbsp; [Architecture](#system-architecture) &nbsp;|&nbsp; [Changelog](./CHANGELOG.md)
18+
**Fast concurrent subdomain enumeration, written in Go.** Point it at a domain and a wordlist; it brute-forces DNS across a worker pool and prints the subdomains that resolve. Built for pentesters, bug-bounty hunters, and operators doing authorized reconnaissance of their own infrastructure.
19+
20+
<br>
21+
22+
<img src="docs/assets/tui-form.png" alt="subenum interactive TUI" width="640"/>
23+
24+
<br>
25+
26+
[Quick Start](#quick-start) &nbsp;|&nbsp; [Configuration](#configuration) &nbsp;|&nbsp; [Usage](#usage) &nbsp;|&nbsp; [Architecture](#system-architecture) &nbsp;|&nbsp; [Changelog](./CHANGELOG.md)
1727

1828
</div>
1929

@@ -28,6 +38,33 @@
2838

2939
<br>
3040

41+
## Quick Start
42+
43+
```bash
44+
git clone https://github.com/TMHSDigital/subenum.git
45+
cd subenum
46+
go build -buildvcs=false -o subenum
47+
./subenum -w examples/sample_wordlist.txt example.com
48+
```
49+
50+
No network required to try it out. Simulation mode generates synthetic results with zero DNS queries:
51+
52+
```bash
53+
./subenum -simulate -hit-rate 20 -w examples/sample_wordlist.txt example.com
54+
```
55+
56+
Or launch the interactive terminal UI with no flags:
57+
58+
```bash
59+
./subenum -tui
60+
```
61+
62+
<br>
63+
64+
---
65+
66+
<br>
67+
3168
## Feature Matrix
3269

3370
| Module | Description |
@@ -38,7 +75,7 @@
3875
| Graceful Shutdown | Trap SIGINT/SIGTERM, drain in-flight workers, flush partial results |
3976
| Input Validation | RFC-compliant domain syntax and strict `ip:port` format enforcement |
4077
| Wordlist Dedup | Deduplicate wordlist entries in a single pass before scanning begins |
41-
| Simulation Mode | Generate synthetic DNS results at a configurable hit rate zero network I/O |
78+
| Simulation Mode | Generate synthetic DNS results at a configurable hit rate, with zero network I/O |
4279
| Output Pipeline | Resolved domains to stdout (pipe-clean); progress and diagnostics to stderr |
4380
| Interactive TUI | Form-based config and live-scrolling results via `-tui`; session values persisted |
4481

@@ -134,7 +171,7 @@ docker compose run subenum
134171
make build # compile binary
135172
make test # run test suite with race detector
136173
make lint # run golangci-lint
137-
make simulate # safe run no DNS queries
174+
make simulate # safe run - no DNS queries
138175
make tui # launch interactive TUI
139176
make docker-build # build Docker image
140177
make help # list all targets
@@ -154,25 +191,25 @@ make help # list all targets
154191

155192
| Flag | Default | Description |
156193
| :--- | :---: | :--- |
157-
| `-w <file>` | | Wordlist file, one prefix per line **(required)** |
194+
| `-w <file>` | n/a | Wordlist file, one prefix per line **(required)** |
158195
| `-t <n>` | `100` | Concurrent worker goroutines |
159196
| `-timeout <ms>` | `1000` | Per-query DNS timeout in milliseconds |
160197
| `-dns-server <ip:port>` | `8.8.8.8:53` | DNS server address (validated on startup) |
161198
| `-attempts <n>` | `1` | DNS resolution attempts per subdomain (1 = no retry) |
162199
| `-force` | `false` | Continue scanning even if wildcard DNS is detected |
163-
| `-o <file>` | | Write results to file in addition to stdout |
200+
| `-o <file>` | n/a | Write results to file in addition to stdout |
164201
| `-v` | `false` | Verbose output: IPs, timings, per-query detail (stderr) |
165202
| `-progress` | `true` | Live progress line on stderr |
166203
| `-simulate` | `false` | Simulation mode: no real DNS queries |
167-
| `-hit-rate <n>` | `15` | Simulated resolution rate, percent (1100) |
204+
| `-hit-rate <n>` | `15` | Simulated resolution rate, percent (1-100) |
168205
| `-tui` | `false` | Launch the interactive Terminal UI |
169-
| `-version` | | Print version and exit |
170-
| `-retries <n>` | | **Deprecated** alias for `-attempts`, prints a warning |
206+
| `-version` | n/a | Print version and exit |
207+
| `-retries <n>` | n/a | **Deprecated** - alias for `-attempts`, prints a warning |
171208

172209
<br>
173210

174211
> [!NOTE]
175-
> Wildcard DNS is detected automatically before scanning begins. If the target resolves wildcard records, the tool exits with a warning all subdomains would match, making results meaningless. Pass `-force` to override.
212+
> Wildcard DNS is detected automatically before scanning begins. If the target resolves wildcard records, the tool exits with a warning, since all subdomains would match, making results meaningless. Pass `-force` to override.
176213
177214
> [!CAUTION]
178215
> Simulation mode (`-simulate`) generates synthetic results and performs zero network I/O. Do not confuse simulated output with real DNS data.
@@ -209,7 +246,7 @@ subenum -w <wordlist> [flags] <domain>
209246
./subenum -w wordlist.txt -attempts 3 -timeout 2000 example.com
210247
```
211248

212-
**Pipe-friendly only resolved subdomains on stdout**
249+
**Pipe-friendly - only resolved subdomains on stdout**
213250
```bash
214251
./subenum -w wordlist.txt example.com | cut -d' ' -f2 | your-takeover-scanner
215252
```
@@ -219,7 +256,7 @@ subenum -w <wordlist> [flags] <domain>
219256
./subenum -w wordlist.txt -force example.com
220257
```
221258

222-
**Simulation zero network I/O**
259+
**Simulation - zero network I/O**
223260
```bash
224261
./subenum -simulate -hit-rate 20 -w examples/sample_wordlist.txt example.com
225262
```
@@ -236,15 +273,7 @@ Press `Ctrl+C` at any time to abort. In-flight queries drain and partial results
236273
./subenum -tui
237274
```
238275

239-
No flags required. Fill in the form and press `ctrl+r` to start scanning. Last-used values are saved to `~/.config/subenum/last.json` and restored on next launch.
240-
241-
<br>
242-
243-
<div align="center">
244-
245-
![subenum TUI — Configure Scan](docs/assets/tui-form.png)
246-
247-
</div>
276+
No flags required. Fill in the form and press `ctrl+r` to start scanning. Last-used values are saved to `~/.config/subenum/last.json` and restored on next launch. The interface is shown at the top of this README.
248277

249278
<br>
250279

@@ -257,7 +286,7 @@ No flags required. Fill in the form and press `ctrl+r` to start scanning. Last-u
257286
| `space` | Toggle Simulate / Force |
258287
| `ctrl+r` | Start scan |
259288
| `ctrl+c` | Abort scan (scan view) / quit (form) |
260-
| `r` | New scan restores last-used values |
289+
| `r` | New scan - restores last-used values |
261290
| `q` | Quit after scan completes |
262291

263292
</details>

docs/_layouts/default.html

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -329,7 +329,7 @@
329329
<a href="{{ '/docker.html' | relative_url }}"{% if page.title == 'Docker Usage' %} class="active"{% endif %}>Docker</a>
330330
<a href="{{ '/CONTRIBUTING.html' | relative_url }}"{% if page.title == 'Contributing' %} class="active"{% endif %}>Contributing</a>
331331
<div class="nav-right">
332-
<a href="https://github.com/TMHSDigital/subenum/releases/latest" target="_blank">Download v0.5.0</a>
332+
<a href="https://github.com/TMHSDigital/subenum/releases/latest" target="_blank">Download v0.5.1</a>
333333
</div>
334334
</nav>
335335

@@ -343,9 +343,9 @@
343343
<div class="hero-badges">
344344
<img src="https://img.shields.io/github/actions/workflow/status/TMHSDigital/subenum/go.yml?branch=main&style=flat-square&label=build" alt="build">
345345
<img src="https://img.shields.io/github/v/release/TMHSDigital/subenum?style=flat-square" alt="release">
346-
<img src="https://img.shields.io/badge/Go-1.22+-00ADD8?style=flat-square&logo=go&logoColor=white" alt="go">
346+
<img src="https://img.shields.io/badge/Go-1.24.2+-00ADD8?style=flat-square&logo=go&logoColor=white" alt="go">
347347
<img src="https://img.shields.io/badge/License-GPLv3-blue?style=flat-square" alt="license">
348-
<img src="https://goreportcard.com/badge/github.com/TMHSDigital/subenum?style=flat-square&v=0.5.0" alt="go report">
348+
<img src="https://goreportcard.com/badge/github.com/TMHSDigital/subenum?style=flat-square&v=0.5.1" alt="go report">
349349
</div>
350350

351351
<a href="https://github.com/TMHSDigital/subenum/releases/latest" class="btn-hero btn-hero-primary" target="_blank">Download latest release</a>

0 commit comments

Comments
 (0)