jagaor/passivelens-v3
GitHub: jagaor/passivelens-v3
PassiveLens 是一款被动 Web 技术指纹识别工具,通过公开数据源和间接渠道分析目标技术栈,无需直接向目标发送数据包。
Stars: 0 | Forks: 0

## 架构

## 演示

# PassiveLens



**PassiveLens** 是一款被动 Web 技术指纹识别工具。它的目标是识别 CMS、Web 服务器、JavaScript 框架、CDN、WAF、analytics 及其他网站使用的技术,且**不会向目标发送任何直接的数据包**。相反,它利用 crt.sh 等公开来源、通过代理或第三方网络获取的 HTTP 标头、favicon 哈希(兼容 Shodan)以及从 HTML 中提取的 JavaScript 库签名来实现这一目标。
## 动机
在 OSINT 领域和渗透测试的侦察阶段,被动指纹识别对于以下方面至关重要:
- **避免惊动目标**:不会产生直接的流量或日志。
- **在未经事先授权的情况下收集信息**:前提是遵守公开数据源的使用条款。
- **发现攻击向量**:了解技术栈有助于查找已知漏洞。
- **补充主动工具**:如 WhatWeb 或 Wappalyzer,这些工具需要直接接触目标。
## 架构
PassiveLens 由六个独立的模块组成,并通过使用 [Typer](https://typer.tiangolo.com/) 构建的 CLI 进行调度。整体流程如下:
```
flowchart TD
A[CLI Typer] --> B[resolver.py: crt.sh subdomain enumeration]
B --> C[collector.py: HTTP headers via httpx]
C --> D[hasher.py: favicon download & mmh3 hash]
C --> E[jsscanner.py: JS library paths from HTML]
D --> F[fingerprint_engine.py: Wappalyzer patterns matching]
E --> F
C --> F
F --> G[enricher.py: Shodan API (optional)]
G --> H[report.py: JSON, table, Markdown]
```
- **resolver.py**:查询 crt.sh 的公开 API 以枚举目标的子域名。
- **collector.py**:使用 httpx 获取已发现主机的 HTTP 标头(带有磁盘缓存)。从不跟随超过一次重定向,并使用通用的 User-Agent。
- **hasher.py**:下载主机的 favicon(同样带有缓存),并使用 mmh3 计算其 MurmurHash3,格式兼容 Shodan。
- **jsscanner.py**:使用 BeautifulSoup4 解析 HTML,寻找 `