文本模式 (Text)
相关源码文件
以下文件被用作生成此维基页面的上下文:
- internal/probe/base/handlers/text_handler.go
- internal/probe/base/handlers/text_handler_test.go
- pkg/event_processor/base_event.go
- pkg/event_processor/http_request.go
- pkg/event_processor/http_response.go
- pkg/event_processor/iparser.go
- pkg/event_processor/iworker.go
- pkg/event_processor/processor.go
- pkg/event_processor/processor_test.go
目的与范围
本页面详细介绍了 文本模式 (-m text),这是 eCapture 核心 TLS 捕获模块(tls、gotls 和 gnutls)的默认运行模式。文本模式通过 eBPF 探针拦截加密的 TLS 套接字读/写操作,在内存中解密或捕获负载,并将人类可读的明文事件直接打印到标准输出或指定的事件地址。它旨在对 HTTP 请求、响应及任意应用层负载进行即时交互式检查,无需外部抓包或解密密钥文件。
Sources:
验证过的文本模式命令
要以文本模式运行 eCapture,请指定模块(tls、gotls 或 gnutls)并配合 -m text 参数。
OpenSSL / BoringSSL (tls)
ecapture tls -m text -p 1234或者,指定特定的共享库路径:
ecapture tls -m text --libssl /usr/lib/x86_64-linux-gnu/libssl.so.1.1Go 原生 TLS (gotls)
ecapture gotls -m text --pid 5678GnuTLS (gnutls)
ecapture gnutls -m text -p 9012Sources:
默认标准输出与可选的 --eventaddr
默认情况下,文本模式通过 writers.NewStdoutWriter() 将所有格式化的明文事件路由到标准输出 (stdout)。
在分布式或自动化环境中运行时,您可以使用可选的 --eventaddr 标志重定向捕获的事件。与仅承载引擎运行日志的 --logaddr 不同,--eventaddr 将处理后的事件流传输到远程 TCP 接收端、WebSocket 端点或文件描述符。
图 1:文本模式输出路由架构
Sources:
预期的明文事件与格式化
当应用程序通过挂钩的 TLS 会话读取或写入数据时,eCapture 会分发一个二进制事件结构 (BaseEvent),随后由 eventWorker 处理并由 TextHandler 格式化。
事件结构与布局
每个事件都会捕获元数据,包括进程 ID (PID)、线程 ID (TID)、进程名称 (Comm)、文件描述符 (Fd)、TLS 版本以及方向(Received 与 Send)。
图 2:事件解码与格式化实体流
通过 tls 或 gotls 捕获的 HTTP 请求的预期明文输出如下所示:
PID:469929, Comm:curl, TID:469929, Version:TLS1_3_VERSION, Received 308 bytes, Payload:
GET / HTTP/1.1
Host: example.com
User-Agent: curl/7.88.1
Accept: */*Sources:
简单验证流程
要验证文本模式捕获是否正常工作,请执行以下验证步骤:
- 启动目标应用程序:启动一个服务器,或者使用 OpenSSL、Go 或 GnuTLS 对 HTTPS 端点运行重复的客户端请求。
- 执行 eCapture:以 root 权限运行文本模式探针:bash
sudo ecapture tls -m text -bb - 触发流量:在另一个终端中执行请求:bash
curl -Iv https://www.example.com/ - 确认输出:观察运行 eCapture 的终端。明文 HTTP 标头和请求体应立即出现,无需解密密钥或 Wireshark。
Sources: