codedeviate/recon
GitHub: codedeviate/recon
一款用 Rust 编写的多功能网络侦察 CLI,集 HTTP/TLS/DNS 多协议探测、浏览器指纹模拟、编码转换和 Rhai 脚本自动化于一体。
Stars: 0 | Forks: 0
# 侦察
[](https://github.com/codedeviate/recon)
[](LICENSE)
[](https://www.rust-lang.org)
[](https://github.com/codedeviate/recon/releases) [](https://crates.io/crates/recon-cli) [](https://github.com/codedeviate/homebrew-cli) 一个使用 Rust 编写的多功能网络侦察 CLI。它最初作为一个 curl 克隆项目启动,后来发展成为一个多协议调查工具,涵盖 HTTP(S)、 TLS 证书检查、DNS、WHOIS、ping、traceroute、条形码编码/ 解码、文件压缩与归档、Markdown / HTML / PDF 转换, 以及一个完整的 Rhai 脚本引擎,该引擎公开了所有协议探测和辅助功能以供 自动化使用。 ``` recon https://example.com/ # curl-style HTTP request recon example.com --cert # inspect server's TLS cert chain recon example.com --dns A,MX,TXT # DNS in one shot recon --spf --dmarc --dkim example.com # email-protection sweep recon --script my-flow.rhai # Rhai scripts with full HTTP/probe access ``` ## 核心亮点 - **40 多种 URL scheme**:HTTP(S)、FTP(S)、SCP、SFTP、TFTP、Gopher、Telnet、 SSH、IMAP(S)、POP3(S)、SMTP(S)、MQTT(S)、Redis、Memcached、LDAP(S)、 RTSP(S)、DICT、NTP、IPFS/IPNS、WS(S)、TCP、UDP、file,…… - **协议层 TLS**:证书检查、CRL 吊销 检查、客户端证书 mTLS、CA pinning、HSTS 持久化。 - **浏览器指纹模拟**(可选功能,0.77.0 版本):通过 BoringSSL 在 JA3 / JA4 / H2 指纹级别模拟 Chrome、Firefox、Safari、Edge、移动端浏览器或 OkHttp。请参阅下方的[浏览器指纹 模拟](#browser-fingerprint-impersonation)。 - **邮件防护扫描**:一条命令搞定 SPF、DMARC、DKIM、MTA-STS、TLS-RPT、BIMI (`recon --spf --dmarc --dkim --mta-sts --tls-rpt --bimi`)。 - **文档转换**:Markdown → HTML、Markdown → PDF、HTML → PDF 支持封面页、目录 (ToC)、分页符和 PDF 元数据。 - **编解码与加密**:哈希(10 种算法)、编码 / 解码(base64、 base32、hex、URL、percent,……)、加密 / 解密(age、PGP shellout)、 压缩 / 解压(gzip、brotli、zstd、lz4、snappy、deflate、xz、 zlib)、归档 / 提取(zip、tar、tar.gz,……)、条形码编码 / 解码 (QR、DataMatrix、Aztec、PDF417、MaxiCode 以及 1D 条形码)。 - **Rhai 脚本引擎**:每个 CLI 功能同时也都是一个脚本绑定 — `http()`、`dns()`、`ping()`、`tcp_connect()`、`mqtt_pub()`,…… 并为有状态流程提供带有粘性会话 (sticky-session) 的 `browser()`。 - **curl 兼容性**:大多数 curl 标志都能按预期工作(`-X`、 `-H`、`-d`、`-L`、`-o`、`-I`、`-K`、`-u`、`-x`、`--data-binary`、 `--retry`、`--time-cond`、`--xattr`、`-E` mTLS、`-n` netrc,……)。 请参阅 [docs/curl-parity-matrix.md](docs/curl-parity-matrix.md)。 ## 安装 ### Homebrew (macOS / Linuxbrew) ``` brew tap codedeviate/cli brew install recon # default rustls build # 或者,使用基于 BoringSSL 的浏览器指纹模拟: brew install recon-impersonate ``` 这两个 formula 安装的是同一个 `recon` 二进制文件,它们会相互冲突;请选择其中一个。 ### crates.io 该 crate 以 `recon-cli` 的名称发布(原生的 `recon` 名称自 2019 年起已被 预留)。安装后的二进制文件名称仍为 `recon`: ``` cargo install recon-cli # default build cargo install recon-cli --features impersonate # with impersonation ``` ### 从源码构建 ``` git clone https://github.com/codedeviate/recon.git cd recon make install # installs to ~/.cargo/bin # 或者使用 impersonate feature (BoringSSL,二进制文件增加约 5-10 MB, # 首次构建较慢): make install-impersonate ``` 仅构建而不安装: ``` make release # default build (rustls-only) make release-impersonate # release build + browser fingerprint # impersonation feature ``` `make help` 会列出所有目标。 ## 快速开始 ``` # 详细请求并捕获 header recon https://api.example.com/v1/items -i # POST JSON recon -X POST https://api.example.com/items \ -H 'Content-Type: application/json' \ -d '{"name":"thing"}' # 检查 TLS 证书链(适用于过期或自签名证书) recon https://example.com --cert # 在单个查询中使用多种 DNS 记录类型 recon --dns A,AAAA,MX,TXT,DNSKEY example.com # Email-protection 聚合报告 recon --spf --dmarc --dkim --mta-sts --tls-rpt --bimi example.com # 带两跳 registrar 引荐的 WHOIS recon --whois example.com # 将 markdown 文档保存为带 ToC 和封面的 PDF recon --md-to-pdf README.md \ --toc --gfm --doc-title 'recon README' \ -o README.pdf # 运行 Rhai 脚本 recon --script script/dns.rhai example.com A,MX ``` 有关按功能领域分组的更多示例: ``` recon --examples # ~60 sections of curated scenarios recon --help # long-form reference (e.g. tls, proxy, mqtt, jwt)
recon --flags # alphabetical curl-style flag index
```
### 配置
recon 读取分层的 TOML 配置:一个可选的系统层
(`/etc/recon/config.toml`,或在 macOS 上为 `$HOMEBREW_PREFIX/etc/recon/config.toml`)
和一个可选的用户层(`~/.recon/config.toml`)。这些
层级会进行深度合并,以用户层优先。使用 `recon --init` 引导你的用户层;
详情请参阅 `recon --help configuration` 或
[手册中的配置文件部分](docs/MANUAL.md#configuration-files)。
## 浏览器指纹模拟
recon 0.77.0 添加了一个可选的 Cargo 功能 `impersonate`,它引入了
[`rquest`](https://crates.io/crates/rquest) (BoringSSL) 以及
[`rquest-util`](https://crates.io/crates/rquest-util),这样 recon 就可以模拟
真实浏览器的 TLS+H2 指纹,而不是使用其默认的
reqwest+rustls 签名。当服务器使用 JA3 / JA4
指纹分析或 HTTP/2 SETTINGS-frame 分析来区分机器人与真实浏览器时,这非常有用。
```
make install-impersonate # one-time, installs feature-on binary
recon --impersonate chrome_131 https://example.com/
recon --impersonate firefox_128 https://tls.peet.ws/api/all
recon --impersonate safari_ios_17.4.1 https://example.com/
```
`--ja3` / `--ja4` / `--http2-fingerprint` 在 CLI 中为实现前向兼容性而保留,但在 v1 版本中运行时会报错;指定的 profile 涵盖了验证码测试的使用场景。有关完整的 profile 列表和 v1 不兼容性规则,请参阅 `recon --help impersonate`。
## 文档
- **[docs/MANUAL.md](docs/MANUAL.md)** — 长篇用户手册。
镜像同步至 `docs/MANUAL.pdf`(已提交)。
- **[CHANGELOG.md](CHANGELOG.md)** — 包含每次发布的更新,采用 keep-a-changelog
格式。
- **[HISTORY.md](HISTORY.md)** — 每个功能的设计原理:为什么采用此
方案、拒绝了什么、推迟了什么。
- **[OUT-OF-SCOPE.md](OUT-OF-SCOPE.md)** — recon 不会做的事情及其原因。
- **[docs/curl-parity-matrix.md](docs/curl-parity-matrix.md)** — recon
↔ curl `--version` 功能映射。
- **[script/README.md](script/README.md)** — Rhai 脚本库,
每个绑定模块对应一个专门的 `.rhai` 文件。
- **`recon --help [topic]`** — 内置的按主题组织的帮助。
- **`recon --examples`** — 精选的可运行场景示例。
## 构建矩阵
```
make ci # default-feature: fmt-check + clippy + test
make ci-impersonate # ci + a parallel build/test pass with the
# impersonate feature (BoringSSL)
```
## 构建 Debian 软件包
在 macOS 上交叉编译 Linux 的 `recon` 二进制文件和 `.deb` 软件包(amd64 + arm64)——
无需 Docker。仅限默认构建(不对模拟变体进行打包)。
一次性前置条件:
```
brew install zig
cargo install cargo-zigbuild cargo-deb
rustup target add x86_64-unknown-linux-gnu aarch64-unknown-linux-gnu
make linux-deps # verifies the above
```
然后:
```
make dist # → dist/recon__{amd64,arm64}.deb + recon--{x86_64,aarch64}-linux.tar.gz
make deb # just the .deb packages
make tarball # just the binary tarballs
make dist-clean-deb # remove dist/
```
`.deb` 将 `recon` 安装到 `/usr/bin/recon`,并且仅依赖于 `libc6`
(Linux 构建中静态内置了 OpenSSL 和 sqlite)。使用
`dpkg-deb --info .deb` 检查文件内容。
`make dist` 还会构建**完全静态的 musl** 产物(零运行时依赖——
可在 Alpine、scratch container 或任何发行版上运行):`recon--{x86_64,aarch64}-linux-musl.tar.gz`
以及 `recon-musl__{amd64,arm64}.deb`(包名为 `recon-musl`,无 `libc6`
依赖)。请选择 `recon` (glibc) **或** `recon-musl` ——两者都会安装到 `/usr/bin/recon`。
## 许可证
MIT。代码库位于 https://github.com/codedeviate/recon。
[](https://github.com/codedeviate/recon/releases) [](https://crates.io/crates/recon-cli) [](https://github.com/codedeviate/homebrew-cli) 一个使用 Rust 编写的多功能网络侦察 CLI。它最初作为一个 curl 克隆项目启动,后来发展成为一个多协议调查工具,涵盖 HTTP(S)、 TLS 证书检查、DNS、WHOIS、ping、traceroute、条形码编码/ 解码、文件压缩与归档、Markdown / HTML / PDF 转换, 以及一个完整的 Rhai 脚本引擎,该引擎公开了所有协议探测和辅助功能以供 自动化使用。 ``` recon https://example.com/ # curl-style HTTP request recon example.com --cert # inspect server's TLS cert chain recon example.com --dns A,MX,TXT # DNS in one shot recon --spf --dmarc --dkim example.com # email-protection sweep recon --script my-flow.rhai # Rhai scripts with full HTTP/probe access ``` ## 核心亮点 - **40 多种 URL scheme**:HTTP(S)、FTP(S)、SCP、SFTP、TFTP、Gopher、Telnet、 SSH、IMAP(S)、POP3(S)、SMTP(S)、MQTT(S)、Redis、Memcached、LDAP(S)、 RTSP(S)、DICT、NTP、IPFS/IPNS、WS(S)、TCP、UDP、file,…… - **协议层 TLS**:证书检查、CRL 吊销 检查、客户端证书 mTLS、CA pinning、HSTS 持久化。 - **浏览器指纹模拟**(可选功能,0.77.0 版本):通过 BoringSSL 在 JA3 / JA4 / H2 指纹级别模拟 Chrome、Firefox、Safari、Edge、移动端浏览器或 OkHttp。请参阅下方的[浏览器指纹 模拟](#browser-fingerprint-impersonation)。 - **邮件防护扫描**:一条命令搞定 SPF、DMARC、DKIM、MTA-STS、TLS-RPT、BIMI (`recon --spf --dmarc --dkim --mta-sts --tls-rpt --bimi`)。 - **文档转换**:Markdown → HTML、Markdown → PDF、HTML → PDF 支持封面页、目录 (ToC)、分页符和 PDF 元数据。 - **编解码与加密**:哈希(10 种算法)、编码 / 解码(base64、 base32、hex、URL、percent,……)、加密 / 解密(age、PGP shellout)、 压缩 / 解压(gzip、brotli、zstd、lz4、snappy、deflate、xz、 zlib)、归档 / 提取(zip、tar、tar.gz,……)、条形码编码 / 解码 (QR、DataMatrix、Aztec、PDF417、MaxiCode 以及 1D 条形码)。 - **Rhai 脚本引擎**:每个 CLI 功能同时也都是一个脚本绑定 — `http()`、`dns()`、`ping()`、`tcp_connect()`、`mqtt_pub()`,…… 并为有状态流程提供带有粘性会话 (sticky-session) 的 `browser()`。 - **curl 兼容性**:大多数 curl 标志都能按预期工作(`-X`、 `-H`、`-d`、`-L`、`-o`、`-I`、`-K`、`-u`、`-x`、`--data-binary`、 `--retry`、`--time-cond`、`--xattr`、`-E` mTLS、`-n` netrc,……)。 请参阅 [docs/curl-parity-matrix.md](docs/curl-parity-matrix.md)。 ## 安装 ### Homebrew (macOS / Linuxbrew) ``` brew tap codedeviate/cli brew install recon # default rustls build # 或者,使用基于 BoringSSL 的浏览器指纹模拟: brew install recon-impersonate ``` 这两个 formula 安装的是同一个 `recon` 二进制文件,它们会相互冲突;请选择其中一个。 ### crates.io 该 crate 以 `recon-cli` 的名称发布(原生的 `recon` 名称自 2019 年起已被 预留)。安装后的二进制文件名称仍为 `recon`: ``` cargo install recon-cli # default build cargo install recon-cli --features impersonate # with impersonation ``` ### 从源码构建 ``` git clone https://github.com/codedeviate/recon.git cd recon make install # installs to ~/.cargo/bin # 或者使用 impersonate feature (BoringSSL,二进制文件增加约 5-10 MB, # 首次构建较慢): make install-impersonate ``` 仅构建而不安装: ``` make release # default build (rustls-only) make release-impersonate # release build + browser fingerprint # impersonation feature ``` `make help` 会列出所有目标。 ## 快速开始 ``` # 详细请求并捕获 header recon https://api.example.com/v1/items -i # POST JSON recon -X POST https://api.example.com/items \ -H 'Content-Type: application/json' \ -d '{"name":"thing"}' # 检查 TLS 证书链(适用于过期或自签名证书) recon https://example.com --cert # 在单个查询中使用多种 DNS 记录类型 recon --dns A,AAAA,MX,TXT,DNSKEY example.com # Email-protection 聚合报告 recon --spf --dmarc --dkim --mta-sts --tls-rpt --bimi example.com # 带两跳 registrar 引荐的 WHOIS recon --whois example.com # 将 markdown 文档保存为带 ToC 和封面的 PDF recon --md-to-pdf README.md \ --toc --gfm --doc-title 'recon README' \ -o README.pdf # 运行 Rhai 脚本 recon --script script/dns.rhai example.com A,MX ``` 有关按功能领域分组的更多示例: ``` recon --examples # ~60 sections of curated scenarios recon --help
标签:DNS分析, GitHub, Python安全, Rust, TLS证书, 二进制模式, 可视化界面, 多协议探测, 实时处理, 插件系统, 数字取证, 网络侦查, 网络流量审计, 自动化脚本, 通知系统