官方中文正文为项目官方提供的中文文档(原文转载),本站未作翻译、未改动文字,仅剔除图片与无关章节。
eCapture(旁观者)
使用 eBPF 捕获 SSL/TLS 明文,无需中间人(MITM)代理或安装自定义 CA 证书。
English · 汉字
Linux 支持 x86_64(内核 4.18+)、aarch64(内核 5.5+)和 LoongArch64 loong64(内核 6.6+)。Android 继续支持 x86_64 和 aarch64,且最低内核要求不变。
需要 root 权限或特定的 Linux capabilities。
不支持 Windows 和 macOS。
简介
eCapture 的汉字名字为“旁观者”,寓意“当局者迷,旁观者清”,与其核心能力“旁路观察”相契合,同时也与英文名称在发音上有相似之处。
eCapture 使用 eBPF 的 uprobe / Traffic Control 等技术,在不修改目标程序的前提下,捕获用户空间和内核空间中的各类数据,适用于 TLS/SSL 明文抓取、命令审计和数据库查询审计等场景。
快速上手
下载
ELF 可执行文件
Linux 支持 x86_64、aarch64 和 LoongArch64;Android 支持 x86_64 和 aarch64。
可从 Release 页面下载对应的二进制包,解压后直接使用:
sudo ecapture --help
Docker 镜像
仅支持 Linux。
# 拉取镜像
docker pull gojue/ecapture:latest
# 运行
docker run --rm --privileged=true --net=host -v ${HOST_PATH}:${CONTAINER_PATH} gojue/ecapture ARGS
⚠️ 安全提醒:
--privileged=true会授予容器完整的宿主机访问权限。生产环境中,建议优先使用更细粒度的 Linux capabilities。详情请参阅 最小权限指南。
See Docker Hub for more information.
快速体验
📷 原文此处有图片,请前往 GitHub 仓库查看完整内容。
下面以捕获基于 OpenSSL 动态链接库加密的网络通讯为例:
sudo ecapture tls
eCapture 会自动检测系统中的 OpenSSL 库并开始抓取明文数据。当你发起 HTTPS 请求,例如 curl https://baidu.com 时,抓取到的请求和响应会直接显示出来:
...
INF module started successfully. moduleName=EBPFProbeOPENSSL
??? UUID:233479_233479_curl_5_1_39.156.66.10:443, Name:HTTPRequest, Type:1, Length:73
GET / HTTP/1.1
Host: baidu.com
Accept: */*
User-Agent: curl/7.81.0
...
📄 更多完整的输出示例,请参阅 docs/example-outputs.md。
模块介绍
eCapture 包含 8 个模块,分别支持对 OpenSSL、GnuTLS、NSS/NSPR、BoringSSL 和 GoTLS 等 TLS/SSL 加密库的明文捕获,同时支持 Bash、MySQL 和 PostgreSQL 的审计与分析。
- bash:捕获 bash 命令行输入与执行内容
- zsh:捕获 zsh 命令行输入与执行内容
- gnutls:捕获基于 GnuTLS 加密通信的明文内容
- gotls:捕获 Go 语言程序中基于内置 TLS/HTTPS 实现的明文通信
- mysqld:捕获 MySQL 查询语句,支持 MySQL 5.6 / 5.7 / 8.0 及 MariaDB
- nss:捕获基于 NSS/NSPR 加密通信的明文内容
- postgres:捕获 PostgreSQL 10+ 的查询语句
- tls:捕获基于 OpenSSL/BoringSSL 的明文 TLS/SSL 流量,支持 OpenSSL 1.0.x / 1.1.x / 3.x 及更高版本,以及 BoringSSL 的所有发行版本
你可以通过 ecapture -h 查看各个子命令列表。
OpenSSL 模块
eCapture 默认会读取 /etc/ld.so.conf 中的库加载目录并定位 openssl 等动态链接库的位置。你也可以通过 --libssl 参数显式指定动态库路径。
如果目标程序使用静态编译方式,则可以直接将 --libssl 参数设置为该程序的路径。
OpenSSL 模块支持三种捕获模式:
pcap/pcapng:将捕获到的明文数据保存为pcap-NG格式。keylog/key:将 TLS 握手密钥保存到文件中。text:直接抓取明文数据,并输出到指定文件或命令行终端。
对 OpenSSL、GoTLS 和 GnuTLS,--eventaddr 是统一的主事件目的端,支持
stdout、普通路径或 file:// URI、tcp://host:port 以及使用有序二进制帧的
ws:///wss://。模式决定 text、NSS Key Log 或 pcapng 表示,地址只决定传输方式。
--keylogfile 和 --pcapfile 仍是相应模式的兼容文件别名;显式 --eventaddr
不能与对应的主别名同时使用。pcapng 模式下的 --keylogfile 仍是独立的可选密钥文件。
--logaddr 只承载 eCapture 自身的运行日志。控制台运行日志输出到 stderr,而
事件 stdout 只包含捕获数据。eCaptureQ 是附加的 typed publisher,不会取代
--eventaddr 或 --logaddr。
Pcap 模式
支持基于 TCP 的 HTTP 1.0/1.1/2.0 以及基于 UDP 的 HTTP/3 (QUIC) 流量抓取。
你可以通过 -m pcap 或 -m pcapng 参数指定抓包模式,并配合 --pcapfile 和 -i 参数使用。当前为了兼容保留的 --pcapfile 默认值为 save.pcapng。
sudo ecapture tls -m pcap -i eth0 --pcapfile=ecapture.pcapng tcp port 443
该命令会将捕获到的明文数据包保存为 pcapng 文件,可使用 Wireshark 打开进行分析。
📄 完整的 pcapng 模式输出示例,请参阅 docs/example-outputs.md。
Keylog 模式
你可以通过 -m keylog 或 -m key 参数指定密钥导出模式,并配合 --keylogfile 参数使用,当前为了兼容保留的默认输出文件为 ecapture_openssl_key.log。
捕获到的 OpenSSL TLS Master Secret 信息会保存到 --keylogfile 中。你也可以同时开启 tcpdump 抓包,然后使用 Wireshark 打开对应 pcap 文件,并设置 Master Secret 路径,即可解密并查看明文数据包。
sudo ecapture tls -m keylog -keylogfile=openssl_keylog.log
也可以直接使用 tshark 进行实时解密和展示:
tshark -o tls.keylog_file:ecapture_masterkey.log -Y http -T fields -e http.file_data -f "port 443" -i eth0
Text 模式
sudo ecapture tls -m text
该命令会输出所有明文数据包。
GoTLS 模块
该模块与 OpenSSL 模块的原理相似。
启动方式
Step 1:
sudo ecapture gotls --elfpath=/home/cfc4n/go_https_client --hex
Step 2:
/home/cfc4n/go_https_client
更多帮助
sudo ecapture gotls -h
其他模块
eCapture 还支持其他模块,例如 bash、mysqld、nss、postgres 等,更多详细信息可通过 ecapture -h 查看。
使用演示
介绍文章
eCapture:无需 CA 证书抓取 HTTPS 明文通讯
视频:Linux 上使用 eCapture
📷 原文此处有图片,请前往 GitHub 仓库查看完整内容。
视频:Android 上使用 eCapture
📷 原文此处有图片,请前往 GitHub 仓库查看完整内容。
eCaptureQ 图形界面程序
eCaptureQ 是 eCapture 的跨平台图形界面客户端,用于可视化展示 eBPF TLS 抓包能力。它基于 Rust + Tauri + React 构建,提供实时响应式界面,无需 CA 证书即可轻松分析加密流量,降低了复杂 eBPF 抓包技术的使用门槛。
它支持两种模式:
- 集成模式:Linux/Android 一体化运行
- 远程模式:Windows/macOS/Linux 客户端连接远程 eCapture 服务
事件转发项目
视频演示
https://github.com/user-attachments/assets/c8b7a84d-58eb-4fdb-9843-f775c97bdbfb
Protobuf 协议说明
有关 eCapture/eCaptureQ 使用的 Protobuf 日志格式说明,详见:
星标成长曲线
安全与运维
- 安全策略 — 漏洞报告流程与支持版本说明
- 最小权限指南 — 所需的 Linux capabilities 与最小权限配置
- 防御与检测 — 如何检测和防御未经授权的使用
- 性能基准测试 — 可重复的性能开销与事件丢失测量方法
- 发布验证 — 如何验证发布产物的完整性
贡献
请参考 CONTRIBUTING 了解提交补丁、问题反馈和贡献流程,感谢您的支持与参与。
二次开发
自行编译
你可以按需定制功能,例如设置 uprobe 的偏移地址,以支持静态编译的 OpenSSL 库。编译方法可参考 编译指南。
Loong64 发布产物在 Ubuntu 24.04 x86_64 上使用 LLVM 18 交叉构建,入口为
TARGET_ARCH=loong64。sysroot、BTF、验收命令和当前运行时验证限制见
Loong64 构建与验证。
动态修改配置
当 eCapture 运行后,你可以通过 HTTP 接口动态修改配置,详情请参考 HTTP API 文档。
事件转发
eCapture 支持多种事件转发方式,你可以将事件转发到 Burp Suite 等抓包工具。详情请参考 事件转发 API 文档。
微信公众号
📷 原文此处有图片,请前往 GitHub 仓库查看完整内容。
- 本文标题:ecapture - 使用 eBPF 捕获 SSL/TLS 明文——无需
- 本文链接:https://www.cn121.com/mobile/gojue-ecapture.html
- 原项目:gojue/ecapture 版权归原作者 gojue 及贡献者所有
- 收录信息:本站于 2026-10-18 收录本项目,本页所列协议与仓库指标均为收录当时的状态;该日期之后原项目的版本更新与协议变更,本页不作同步。
- 开源协议:收录时本项目采用 Apache-2.0(查看 LICENSE 原文),本站转载其原始文档(未改动文字,仅剔除图片与无关章节);使用、修改、分发请以该仓库 LICENSE 原文为准。本站对原文仅作排版与图片地址适配, 并保留原项目的 NOTICE 与署名要求。
- 站点出处:本文首发于 OneTwoOne,收录自 GitHub 开源项目 gojue/ecapture。
- 内容说明:本页正文为项目官方提供的中文文档(原文转载),本站未作翻译、未改动文字,仅剔除了图片与赞助等无关章节、并把相对链接改为绝对地址;页首简介为机器翻译自仓库描述。
- 引用声明:商业转载、第三方聚合或 AI 检索训练引用时,请务必保留以上来源出处、本文永久链接,以及原项目的版权声明与许可信息。
- 下架通道:若原项目此后变更或收紧了许可协议、或作者/权利人认为本站的收录方式(译文、排版适配、简介翻译等)超出其授权范围,请通过 xyd3302001@163.com 发送下架通知,并附上项目地址与本页链接。本站核实后将第一时间删除本页内容,或改为不复制原文的目录性收录;署名更正等其他要求可一并提出。