3分钟上手eCapture:2025版TLS明文抓包神器安装指南
还在为HTTPS抓包需要配置CA证书而烦恼?面对静态编译的Go程序束手无策?eCapture让你告别证书欺骗,无需侵入应用即可捕获TLS明文流量。本文将带你3分钟完成从安装到捕获的全流程,轻松应对各类加密通讯监控场景。
📋 准备工作
系统要求
- 内核版本:Linux 4.18+(x86_64)或5.5+(aarch64)
- 架构支持:x86_64/aarch64(兼容Android GKI)
- 必要权限:需要root权限执行
环境检查
# 检查内核版本
uname -r
# 验证BTF支持(可选)
cat /boot/config-$(uname -r) | grep CONFIG_DEBUG_INFO_BTF
⚡ 快速安装
方法1:直接下载二进制(推荐)
访问Release页面获取对应架构的预编译包,解压后即可使用:
# 以x86_64为例
wget https://link.gitcode.com/i/359887cf54db6e1e4b1ecc07d17db83a/download/v0.7.4/ecapture_v0.7.4_linux_x86_64.tar.gz
tar zxvf ecapture_v0.7.4_linux_x86_64.tar.gz
sudo cp ecapture /usr/local/bin/
方法2:源码编译
# 克隆仓库
git clone --recurse-submodules https://link.gitcode.com/i/acca064ad956db65030142d79e02e1dc.git
cd ecapture
# 设置国内代理加速依赖下载
export GOPROXY=https://goproxy.cn
# 编译(支持BTF的系统)
make
# 无BTF支持的系统
make nocore
# 交叉编译(如arm64)
CROSS_ARCH=arm64 make
# 安装到系统路径
sudo make install
⚠️ 编译依赖:golang 1.21+、clang 9.0+、cmake 3.18+,Ubuntu用户可通过
builder/init_env.sh一键配置环境
🚀 基础使用示例
1. 捕获OpenSSL明文(Text模式)
sudo ecapture tls -m text -p 443
此命令将监控443端口的TLS流量,直接输出解密后的明文内容到终端。
2. 生成Wireshark可解析的PCAP文件
sudo ecapture tls -m pcapng -i eth0 --pcapfile capture.pcapng tcp port 443
使用Wireshark打开生成的capture.pcapng即可查看完整解密流量。
3. 监控Golang程序TLS通讯
sudo ecapture gotls --elfpath=/path/to/go程序
针对静态编译的Go程序,可直接指定程序路径进行捕获。
4. 数据库审计(以MySQL为例)
sudo ecapture mysqld
自动捕获MySQL 5.6+/8.0的SQL查询语句,无需修改数据库配置。
🧩 核心功能模块
| 模块名 | 功能说明 | 支持版本 |
|---|---|---|
| tls | OpenSSL全版本捕获 | 1.0.x/1.1.x/3.0.x+ |
| gotls | Golang TLS库监控 | Go 1.11+ |
| bash | Shell命令审计 | 所有bash版本 |
| mysqld | MySQL查询捕获 | 5.6/5.7/8.0 |
| postgres | PostgreSQL审计 | 10+ |
| gnutls | GnuTLS库支持 | 3.5+ |
📊 高级配置
密钥日志模式(Keylog)
sudo ecapture tls -m keylog --keylogfile=ssl_keys.log
生成的ssl_keys.log可导入Wireshark(编辑→首选项→Protocols→TLS→(Pre)-Master-Secret log filename)实现动态解密。
进程过滤
# 按进程ID过滤
sudo ecapture tls -p 1234
# 按进程名过滤
sudo ecapture tls --comm=nginx
🏗️ 系统架构
eCapture采用eBPF技术实现用户态/内核态双重监控,通过Uprobe/TC等机制Hook关键函数:
核心模块位于user/module/目录,各探针实现如下:
- OpenSSL探针:probe_openssl.go
- GoTLS捕获:probe_gotls.go
- 流量处理:probe_pcap.go
❓ 常见问题
Q:捕获不到流量怎么办?
A:检查以下几点:
- 目标程序是否使用静态编译(需指定
--libssl参数) - 是否使用了不支持的TLS库(如BoringSSL需单独配置)
- 内核版本是否满足最低要求
Q:支持Docker容器内的程序吗?
A:完全支持,可通过--pid参数指定容器PID命名空间:
sudo ecapture tls --pid $(docker inspect -f {{.State.Pid}} 容器ID)
📌 下期预告
- 📱 Android平台抓包实战(支持Android 12+ GKI设备)
- 🕵️♂️ 高级过滤规则编写指南
- 📈 性能优化与大规模部署方案
如果你觉得这个工具对你有帮助,请点赞收藏并关注项目更新!遇到问题欢迎在Issues反馈。
官方文档:README_CN.md
源码地址:https://link.gitcode.com/i/acca064ad956db65030142d79e02e1dc
技术交流:项目提供贡献指南,欢迎提交PR和Issue
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考






