汉字 | English
Tip
支持Linux系统内核x86_64 4.18及以上版本,aarch64 5.5及以上版本; 需要ROOT权限或特定的 Linux capabilities; 不支持Windows、macOS系统;
eCapture的汉字名字为旁观者,即「当局者迷,旁观者清」,与其本身功能旁路、观察
契合,且发音与英文有相似之处。eCapture使用eBPF Uprobe/Traffic Control技术,实现各种用户空间/内核空间的数据捕获,无需改动原程序。
Important
支持 Linux/Android的x86_64/aarch64 CPU架构。
下载 release 的二进制包,可直接使用。
Tip
仅支持Linux x86_64/aarch64。
# 拉取镜像
docker pull gojue/ecapture:latest
# 运行
docker run --rm --privileged=true --net=host -v ${宿主机文件路径}:${容器内路径} gojue/ecapture ARGS
⚠️ 安全提醒:--privileged=true会授予容器完整的宿主机访问权限。在生产环境中,建议使用特定的 capabilities 替代。参阅 最小权限指南。
捕获基于Openssl动态链接库加密的网络通讯。
sudo ecapture tlseCapture 会自动检测系统的 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/nspr/boringssl/gotls等类库的TLS/SSL加密类库的明文捕获、Bash、Mysql、PostGres软件审计。
- bash 捕获bash命令行的输入输出
- gnutls 捕获基于gnutls类库加密通讯的明文内容
- gotls 捕获使用Golang语言编写的,基于内置crypt类库实现TLS/HTTPS加密通讯的明文内容
- mysqld 捕获Mysqld的SQL查询,适用于数据库审计场景,支持Mysqld 5.6/5.7/8.0等
- nss 捕获基于nss类库加密通讯的明文内容
- postgres 支持postgres 10+的数据库审计,捕获查询语句
- tls 捕获基于Openssl/Boringssl的加密通讯的明文内容,支持Openssl 1.0.x/1.1.x/3.x以及更新版本,支持BoringSSL所有发行版本
你可以通过ecapture -h来查看这些自命令列表。
执行sudo ecapture -h查看详细帮助文档。
eCapture默认查找/etc/ld.so.conf文件,查找SO文件的加载目录,并查找openssl等动态链接路位置。你也可以通过--libssl
参数指定动态链接库路径。
如果目标程序使用静态编译方式,则可以直接将--libssl参数设定为该程序的路径。
openssl模块支持3种捕获模式
- pcap/pcapng模式,将捕获的明文数据以pcap-NG格式存储。
- keylog/key模式,保存TLS的握手密钥到文件中。
- text模式,直接捕获明文数据,输出到指定文件中,或者打印到命令行。
支持了TLS加密的基于TCP的http 1.0/1.1/2.0应用层协议, 以及基于UDP的 http3 QUIC应用层协议。
你可以通过-m pcap或-m pcapng参数来指定,需要配合--pcapfile、-i参数使用。其中--pcapfile参数的默认值为ecapture_openssl.pcapng。
sudo ecapture tls -m pcap -i eth0 --pcapfile=ecapture.pcapng tcp port 443📄 完整的 pcapng 模式输出请参阅 docs/example-outputs.md。
将捕获的明文数据包保存为pcapng文件,再使用Wireshark打开查看,之后就可以看到明文的网络包了。
你可以通过-m keylog或-m key参数来指定,需要配合--keylogfile参数使用,默认为ecapture_masterkey.log。
捕获的openssl TLS的密钥Master Secret信息,将保存到--keylogfile中。你也可以同时开启tcpdump抓包,再使用Wireshark打开,设置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 eth0sudo ecapture tls -m text 将会输出所有的明文数据包。(v0.7.0起,不再捕获SSLKEYLOG信息。)
与openssl模块类似。
cfc4n@vm-server:~$# uname -r
4.18.0-305.3.1.el8.x86_64
cfc4n@vm-server:~$# cat /boot/config-`uname -r` | grep CONFIG_DEBUG_INFO_BTF
CONFIG_DEBUG_INFO_BTF=ysudo ecapture gotls --elfpath=/home/cfc4n/go_https_client --hex确保该程序会触发https请求。
/home/cfc4n/go_https_clientsudo ecapture gotls -heCapture 还支持其他模块,如bash、mysql、nss、postgres等,你可以通过ecapture -h查看详细帮助文档。
eCaptureQ是 eCapture 的跨平台图形界面客户端,将 eBPF TLS 抓包能力可视化呈现。采用 Rust + Tauri + React 技术栈构建,提供实时响应式界面,无需 CA 证书即可轻松分析加密流量。让复杂的 eBPF 抓包技术变得简单易用。 支持两种模式:
- 集成模式:Linux/Android 一体化运行
- 远程模式:Windows/macOS/Linux 客户端连接远程 eCapture 服务
eCaptureQ.Demo.mp4
关于 eCapture/eCaptureQ 使用的 Protobuf 日志模式的详细信息,请参见:
- 安全策略 — 漏洞报告流程与支持的版本
- 最小权限指南 — 所需的 Linux capabilities 与最小权限配置
- 防御与检测 — 如何检测和防御未经授权的使用
- 性能基准测试 — 性能开销测量方法与预期特征
- 发布验证 — 如何验证发布产物的完整性
参考 CONTRIBUTING的介绍,提交缺陷、补丁、建议等,非常感谢。
你可以定制自己想要的功能,比如设定uprobe
的偏移地址,用来支持被静态编译的Openssl类库。编译方法可以参考 编译指南 的介绍。
当eCapture运行后,你可以通过HTTP接口动态修改配置,参考HTTP API 文档。
eCapture支持多种事件转发方式,你可以将事件转发至Burp Suite等抓包软件,详情参考事件转发API 文档。
本项目获得 JetBrains IDE 许可证的支持。感谢 JetBrains 对开源社区的贡献。



