移动应用 活跃维护

ecapture

gojue/ecapture

使用 eBPF 捕获 SSL/TLS 明文——无需 MITM 代理或自定义 CA 安装。支持 x86_64 和 arm64 上的 Linux 和 Android。

15509
Stars 标星
1650
Forks 分支
104
Watchers 关注
4
Open Issues
C
主要语言
Apache-2.0
开源协议
17.0 MB
仓库大小
3 天前
最后推送
一键安装扩展 / 插件指令
dsh plugin --profile web add github:gojue/ecapture
git clone https://github.com/gojue/ecapture.git
git clone git@github.com:gojue/ecapture.git
README.md master

官方中文正文为项目官方提供的中文文档(原文转载),本站未作翻译、未改动文字,仅剔除图片与无关章节。

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

🔗 GitHub 仓库

Protobuf 协议说明

有关 eCapture/eCaptureQ 使用的 Protobuf 日志格式说明,详见:

星标成长曲线

安全与运维

贡献

请参考 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 发送下架通知,并附上项目地址与本页链接。本站核实后将第一时间删除本页内容,或改为不复制原文的目录性收录;署名更正等其他要求可一并提出。