S8C88/CertGrab
GitHub: S8C88/CertGrab
TLS/SSL 证书链抓取与解析工具,同时支持 Heartbleed、POODLE 等已知漏洞及弱加密套件检测。
Stars: 0 | Forks: 0
# CertGrab

**TLS/SSL 证书抓取与漏洞检测工具** — 网络工程师
风格。连接任何支持 TLS 的服务,获取完整的证书
链,解析 X.509 字段,并可选地检测 Heartbleed、POODLE
以及不安全的 cipher suite。
## 功能
- 🔍 **完整证书链获取** — 获取并解析链中的每一个证书
- 📋 **详尽输出** — subject、issuer、SANs、有效期、fingerprint、key 类型
- 🛡️ **漏洞扫描** — Heartbleed (CVE-2014-0160)、POODLE (CVE-2014-3566)、弱 cipher
- ⚡ **零外部依赖** — 使用 Python 3.14+ `ssl.Certificate` API
- 🧪 **全面 mock 测试** — 可随处安全运行,不联系任何真实 host
## 快速开始
```
# 从 host 获取 certificate
python3 certgrab.py -t example.com
# 自定义 port
python3 certgrab.py -t example.com -p 8443
# 运行 vulnerability 检查
python3 certgrab.py -t example.com --check-vulns
# 增加慢速连接的 timeout
python3 certgrab.py -t 10.0.0.1 -p 443 --check-vulns --timeout 15
```
## 用法
```
usage: certgrab.py [-h] -t TARGET [-p PORT] [--check-vulns] [--timeout TIMEOUT] [--version]
CertGrab v1.0 — TLS/SSL certificate grabber and vulnerability checker
options:
-h, --help show this help message and exit
-t, --target Target hostname or IP address
-p, --port Target port (default: 443)
--check-vulns Check Heartbleed, POODLE, weak ciphers
--timeout Connection timeout in seconds (default: 10)
--version show program's version and exit
```
## 架构
```
graph TD
A[CLI: -t target -p port] --> B{grab_certificate_chain}
B --> C[Socket connect]
C --> D[TLS handshake]
D --> E[get_peer_cert_chain]
E --> F[parse_ssl_cert x N]
F --> G[Formatted output]
A -->|--check-vulns| H[check_heartbleed]
A -->|--check-vulns| I[check_poodle]
A -->|--check-vulns| J[check_insecure_ciphers]
H --> G
I --> G
J --> G
```
### 证书解析流程
```
sequenceDiagram
participant CLI
participant Grabber
participant Socket
participant TLS
participant Parser
CLI->>Grabber: target, port, timeout
Grabber->>Socket: create_connection
Socket-->>Grabber: raw socket
Grabber->>TLS: context.wrap_socket
TLS-->>Grabber: tls_sock
Grabber->>TLS: get_peer_cert_chain
TLS-->>Grabber: [Cert, Cert, ...]
loop for each cert
Grabber->>Parser: parse_ssl_cert(cert)
Parser-->>Grabber: {subject, issuer, sans, ...}
end
Grabber-->>CLI: [dict, dict, ...]
```
## 漏洞检测
| 检测项 | CVE | 方法 |
|-------|-----|--------|
| Heartbleed | 2014-0160 | 发送超大的 TLS heartbeat;检测响应大小 |
| POODLE | 2014-3566 | 尝试 SSLv3 连接;成功即代表存在漏洞 |
| 弱 cipher | 多种 | 使用弱 cipher 列表进行协商;检测协商出的 cipher |
## 测试
```
python3 -m pytest tests/ -v
```
所有测试均使用 mock 的网络调用 — 不联系任何真实 host。
## 许可证
MIT © 2026 S8C88
标签:Python, TLS/SSL, 安全规则引擎, 密码学证书, 底层编程, 插件系统, 无后门, 网络工具, 逆向工具