ranjbarhadi/dnsgen
GitHub: ranjbarhadi/dnsgen
Go 语言实现的域名排列组合生成工具,用于从已知域名列表自动派生候选子域名以辅助资产发现和安全评估。
Stars: 0 | Forks: 0
# dnsgen
一个快速、轻量且现代的 Go 版本,移植自 [AlephNullSK](https://github.com/AlephNullSK) 的 [dnsgen](https://github.com/AlephNullSK/dnsgen)。
`dnsgen` 根据输入的域名列表和可选的 wordlist 生成域名排列组合。它旨在协助安全评估、bug bounty 狩猎和子域名发现。
## 🚀 核心功能
* **原版逻辑一致性:** 实现了 Python 版本中全部 8 个核心排列生成器。
* **快速且轻量:** 采用 Go 构建,具有极高的执行速度和较低的资源消耗。
* **零外部数据依赖:** 默认的 wordlist 通过 Go 的 `//go:embed` 直接嵌入到二进制文件中。
* **Bug 修复:** 解决了原 Python 版本中的一个问题,即从带有长度限制(`-l` / `--wordlen`)的输入域名中提取的自定义词汇在生成过程中会被忽略的问题。
* **支持流水线处理:** 将日志正确写入 `stderr`,并将纯净的域名输出写入 `stdout`,便于与 `massdns` 或 `nmap` 等命令轻松集成。
## 📦 安装说明
要安装 `dnsgen`,请确保已安装 Go,然后运行:
```
go install github.com/ranjbarhadi/dnsgen/dnsgenGo/cmd/dnsgen@latest
```
*(或者在仓库根目录下本地构建):*
```
cd dnsgen
go build -o dnsgen cmd/dnsgen/main.go
```
## 🛠 使用说明
你可以通过标准输入(stdin)或传递文件路径的方式将域名提供给 `dnsgen`。
```
# 使用 stdin
cat domains.txt | ./dnsgen -
# 使用 input file
./dnsgen domains.txt
```
### CLI 选项
```
Usage:
dnsgen [flags] [INPUT_FILE]
Flags:
-f, --fast Fast generation mode (skips insertion permutators to generate a smaller subset)
-h, --help help for dnsgen
-l, --wordlen int Minimum length of custom words extracted from domains (default 6)
-o, --output string Output file path (defaults to stdout)
-v, --verbose Enable verbose logging (outputs stats to stderr)
-w, --wordlist string Path to custom wordlist file (uses embedded words.txt by default)
```
## 🧠 包含的排列引擎
`dnsgen` 实现了所有默认的生成器:
1. **在每个索引处插入词汇:** 在子域名各部分之间的每个位置插入 wordlist 中的词汇。
2. **修改数字:** 对子域名中的数字进行递增和递减操作(保留前导零格式,例如 `01` -> `02`)。
3. **环境前缀:** 添加与环境相关的常见子域名(`dev`、`staging`、`uat`、`prod`、`test`)。
4. **云服务提供商拓展:** 在前面添加云平台组合(例如 `service-cloud`)。
5. **区域前缀:** 在前面添加区域格式(例如 `us-east`、`eu-west`)。
6. **微服务模式:** 在后面附加标准的微服务标识符(`-service`、`-api`)。
7. **内部工具:** 在前面或后面添加内部平台标识(例如 `jenkins`、`gitlab`)。
8. **常见端口:** 在前面添加端口名称或数字(例如 `8080`、`port-8080`)。
## 🤝 致谢
本工具是 [AlephNullSK](https://github.com/AlephNullSK) 编写的优秀 Python 库 [dnsgen](https://github.com/AlephNullSK/dnsgen) 的 Go 移植版。所有核心排列逻辑和默认 wordlist 均源自他们的工作。
标签:EVTX分析, Go语言, 动态插桩, 反取证, 域名生成, 子域名枚举, 安全评估, 文档结构分析, 日志审计, 程序破解, 系统安全