DevCop95/shodan_reconsx
GitHub: DevCop95/shodan_reconsx
一款基于 Shodan CTL 数据的便携式被动主机名侦察工具,无需 API 密钥或第三方依赖即可枚举目标域名关联的主机名。
Stars: 4 | Forks: 0
# Recons101x
[](https://github.com/DevCop95/shodan_reconsx/actions/workflows/ci.yml)
[](https://github.com/DevCop95/shodan_reconsx/releases)
[](LICENSE)

Recons101x 是一款便携的被动侦察工具,用于枚举由 `ctl.shodan.io` 发布的主机名。它仅使用 Python 3 即可在 Linux、Termux 和 Windows 上运行。无需 Shodan API 密钥或第三方包。
请仅对您拥有或明确获得授权测试的资产使用此工具。
## 环境要求
- Python 3.10 或更高版本
- 可访问 `ctl.shodan.io` 的网络连接
## 安装说明
克隆并进入该仓库:
```
git clone https://github.com/DevCop95/shodan_reconsx.git
cd shodan_reconsx
```
启动程序无需安装即可直接运行。如需安装 `recons101x` 命令:
```
python -m pip install .
recons101x example.com
```
## 快速开始
Linux 或 Termux:
```
chmod +x scan.sh
./scan.sh example.com
```
Windows PowerShell:
```
.\scan.ps1 example.com
```
任意平台:
```
python src/recons101x.py example.com
```
TXT 输出包含 `domainhostname`。状态消息和横幅会写入 stderr,从而确保 stdout 可安全用于管道和重定向。
当 stderr 是交互式终端时,横幅会使用 ANSI 亮红色。设置标准的 `NO_COLOR` 环境变量即可禁用颜色。
## 批量扫描
创建一个 `domains.txt` 文件:
```
# 每行一个 domain
example.com
example.org
```
运行批量任务:
```
./scan.sh --input domains.txt --output results.txt
```
空行和以 `#` 开头的行将被忽略。重复的域名会被自动移除。
## JSON 输出
```
./scan.sh example.com --format json --output results.json
```
## 可选的 DNS 解析
```
./scan.sh example.com --resolve --workers 20
```
使用 `--resolve` 时,TXT 输出将变为 `domainhostnameip1,ip2`。此选项仅执行 DNS 查找。它不会扫描端口,也不会向发现的主机名发送请求。
## 选项
```
./scan.sh --help
```
可用的控制项包括 HTTP 超时、重试次数、并发 DNS worker、输入文件、输出文件以及 TXT 或 JSON 格式化。
## 项目结构
```
recons101x/
|-- assets/
| `-- shodanx.png
|-- src/
| `-- recons101x.py
|-- tests/
| `-- test_recons101x.py
|-- .gitignore
|-- CHANGELOG.md
|-- CONTRIBUTING.md
|-- LICENSE
|-- MANIFEST.in
|-- README.md
|-- SECURITY.md
|-- pyproject.toml
|-- scan.ps1
`-- scan.sh
```
## 运行测试
测试套件使用 Python 的标准库,无需额外的包:
```
python -m unittest discover -s tests -v
```
## 贡献与安全
在提交更改之前,请参阅 [CONTRIBUTING.md](CONTRIBUTING.md)。请按照 [SECURITY.md](SECURITY.md) 中的说明私下报告安全漏洞。
## 许可证
基于 [MIT License](LICENSE) 发布。
标签:AI合规, Cutter, Python, 实时处理, 无后门, 资产测绘