jagaor/passivelens-v3

GitHub: jagaor/passivelens-v3

PassiveLens 是一款被动 Web 技术指纹识别工具,通过公开数据源和间接渠道分析目标技术栈,无需直接向目标发送数据包。

Stars: 0 | Forks: 0

![banner](https://static.pigsec.cn/wp-content/uploads/repos/cas/17/174a2e8baa125340a62cda8f1a82b8d7ab74c75467b7bfccba5f788460a216cf.png) ## 架构 ![architecture](https://static.pigsec.cn/wp-content/uploads/repos/cas/d6/d6ac35815ecba9c40b2f44610b077e8132f035ec1aac8b67f45f6ff9a452c886.png) ## 演示 ![demo](https://static.pigsec.cn/wp-content/uploads/repos/cas/7f/7fe02c619e94d880d29fd54a36a6a914e43ffc29afa59bd98e95da42a16d2f76.png) # PassiveLens ![Python 3.11](https://img.shields.io/badge/python-3.11-blue.svg) ![MIT License](https://img.shields.io/badge/license-MIT-green.svg) ![pytest](https://img.shields.io/badge/pytest-passing-brightgreen.svg) **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,寻找 `