Skip to content

模式选择:Text、Keylog 或 pcapng ​

相关源文件

以下文件被用作生成此维基页面的上下文:

本页面提供了一个技术决策框架,用于在 eCapture 核心 TLS 模块(TLS 捕获 (OpenSSL/BoringSSL)、GoTLS 捕获 和 GnuTLS 捕获)提供的三种输出捕获模式(text、keylog 和 pcapng)之间进行选择。它详细介绍了每种模式相关的内部表示机制、目标位置要求、伪像结构以及操作注意事项。


1. 捕获模式决策矩阵 ​

通过 -m 或 --format 配置核心 TLS 捕获会话时,必须选择与下游分析工作流匹配的表示格式。下表从关键架构维度对比了这三种模式:

维度文本模式 (text)密钥日志模式 (keylog)pcapng 模式 (pcapng)
主要用例即时明文检查、终端调试或简单的日志聚合。在 Wireshark 中解密单独的报文捕获(例如通过 tcpdump 捕获)。集成了网络数据块和嵌入式解密材料的一体化报文捕获。
产物内容UTF-8 格式的明文负载(HTTP、TLS 应用数据转录)。NSS Key Log 格式行(CLIENT_RANDOM ...)。原始报文块与解密机密块 (DSB) 的组合。
目标位置规则若为空则默认为 stdout;支持文件、TCP 流和二进制 WebSocket。需要明确的目标位置(stdout、文件、TCP、WebSocket);以 0600 权限截断文件。需要明确的目标位置;生成无帧的二进制字节流;拒绝字节滚动(rotation)。
敏感性与安全性普通敏感度;直接记录应用程序文本负载。敏感;暴露能够解密所捕获流量的主会话密钥。敏感;同时包含拦截的原始报文和会话解密密钥。
实现实体通过 TextHandler 实现的 internal/output/writers.EventFormatText docs/agent/output-pipeline.md:14, internal/output/writers/factory.go:29通过 KeylogHandler 实现的 internal/output/writers.EventFormatKeylog docs/agent/output-pipeline.md:15, internal/output/writers/factory.go:30通过 pcapng.Session 实现的 internal/output/writers.EventFormatPcapng docs/agent/output-pipeline.md:16, internal/output/writers/factory.go:31

Sources: docs/agent/output-pipeline.md:1-124, internal/output/writers/factory.go:26-144, docs/agent/output-pipeline-refactor-taskbook.md:67-94


2. 模式选择到代码的映射 ​

此图表将面向用户的模式标志连接到 eCapture 内部的配置结构和接收器(sink)构建逻辑。

Sources: internal/output/writers/factory.go:48-144, docs/agent/output-pipeline-refactor-taskbook.md:67-115


3. 模式详细分析 ​

3.1 文本模式 (text) ​

文本模式直接从 eBPF uprobe/kprobe 挂钩点拦截解密后的应用缓冲区,并将其格式化为 UTF-8 可读字符串。

  • 数据流: 事件由 TextHandler 处理,该处理器使用 String() 或 StringHex() 表示法格式化负载,且不会受到操作日志的污染 docs/agent/output-pipeline.md:14, cli/cmd/output_pipeline_test.go:36。
  • 目标位置: 默认情况下,文本模式以 stdout 为目标。然而,它完全支持重定向到文件、TCP 监听器或二进制 WebSocket 流(--eventaddr)docs/agent/output-pipeline.md:68。
  • 注意事项: 文本模式不捕获原始 TCP/IP 报文头或底层分帧元数据;它记录的是 TLS 库挂钩报告的应用层负载和连接元组。

Sources: docs/agent/output-pipeline.md:14, cli/cmd/output_pipeline_test.go:33-46

3.2 密钥日志模式 (keylog) ​

密钥日志模式提取由 OpenSSL、GoTLS 或 GnuTLS 协商的 TLS 主密钥(例如 CLIENT_RANDOM 或 TLS 1.3 的 EXPORTER_SECRET / 握手密钥)。

Sources: docs/agent/output-pipeline.md:71, docs/agent/output-pipeline-refactor-taskbook.md:75-81, internal/output/writers/pipeline_test.go:77-104

3.3 pcapng 模式 (pcapng) ​

pcapng 模式构建符合标准的 PCAP Next Generation 捕获产物,将拦截的报文块与嵌入式解密机密块 (DSB) 相结合。

Sources: docs/agent/output-pipeline.md:16, docs/agent/output-pipeline-refactor-taskbook.md:82-94, internal/output/writers/factory.go:70-75


4. 输出流水线路由架构 ​

下图展示了捕获的领域事件如何通过 EventDispatcher 流向不同的表示处理器,并输出到独立的 ByteSink 传输层。

Sources: docs/agent/output-pipeline.md:14-18, docs/agent/output-pipeline-refactor-taskbook.md:67-94


5. 注意事项与验证规则摘要 ​

Sources: docs/agent/output-pipeline.md:27-29, internal/output/writers/factory.go:48-137, cli/cmd/output_pipeline_test.go:71-180

模式选择:Text、Keylog 或 pcapng has loaded
下载