数据包捕获摘要¶
REA 通过调用方选择的 Wireshark 4.x tshark 和 capinfos 对已保存的 pcap/pcapng 文件进行摘要。使用 inspect_packet_capture 处理所选字段、过滤器和 decode-as 规则;使用本系列工具获取地址、DNS、SNI、协议栈和 URI 清单。它不采集流量,也不获取已记录的目标。
提供工具¶
export REA_TSHARK_COMMAND=/absolute/path/tshark
export REA_CAPINFOS_COMMAND=/absolute/path/capinfos
# Linux only; default /usr/bin/prlimit
export REA_TSHARK_PRLIMIT_COMMAND=/absolute/path/prlimit
rea inspect-pcap-client
rea inspect-pcap-capture /captures/session.pcapng --json
若未显式指定工具命令,本系列工具将通过 PATH 解析它们并记录该选择来源。在 Linux 和 macOS 上,它运行第一个包含可执行文件的绝对 PATH 条目中发现的工具,与数据包捕获工具所做的选择相同;相对 PATH 条目会被跳过。Windows 将 PATH/PATHEXT 解析保留在进程启动器中。客户端检查不读取捕获文件;在 PATH/PATHEXT 未暴露绝对候选者的主机上,其可执行文件摘要和解析路径将报告为未解析。否则,将报告规范的可执行文件路径和 SHA-256。pcap 提供方与数据包工具共享所选工具的身份检查,运行期间解析的可执行文件发生更改将以 artifact-changed Evidence 失败。捕获检查需要 Linux 上带有 util-linux prlimit,或 Windows 上带有自有 Job Objects。macOS 捕获检查返回能力差距,因为新的原生内存边界未经验证;其版本探测仍然可用。binary_session 单独公布这些操作:不支持的捕获主机不会禁用客户端探测,也不会从目录中移除任一工具。在打开任何捕获字节之前,所选的工具目录或不可读的工具会构成配置能力拒绝,并指明其选定路径。工具及已安装的库/插件被视为调用方可信。使用空的私有个人 Wireshark 配置;这不是操作系统沙箱。
仅检查所需事实¶
MCP inspect_pcap_capture 接受 path 和可选的 detail: "summary"。完整交付仍为默认行为。摘要提交并保留相同的完整 Evidence,返回身份、捕获元数据、观测计数、保留计数、源覆盖率和诊断长度,不包含大型列表。然后将其 normalized_result.parent_evidence_id 与 inspect_analysis_view 的源类型 retained-evidence 结合使用:
{"kind":"pcap","facet":"endpoints","offset":0,"limit":20}
{"kind":"pcap","facet":"dns-queries","offset":0,"limit":20}
{"kind":"pcap","facet":"dns-addresses","query":"example.com","offset":0,"limit":20}
{"kind":"pcap","facet":"tls-sni","offset":0,"limit":20}
{"kind":"pcap","facet":"diagnostics","stream":"tshark","offset":0,"limit":4096}
其他行分面包括 protocols、http-uris 和 unattributed-addresses。默认值为 offset 0 和 limit 64。DNS 问题页面提供地址计数;选择一个精确保留的问题即可分页查看其地址。诊断窗口按 UTF-16 代码单元计数;其他窗口按行计数。缺失或不明确的选择器将失败。未知的旧版诊断保持未知状态,而非观测到的空流。便携式 CLI 视图使用现有的 inspect-analysis-view 工作流,其中包含内联的完整 Evidence。视图从不重新读取源文件或启动 Wireshark,且在原始文件被删除后仍可工作。分页耗尽涵盖保留的分面;它不确立网络完整性,也不恢复缺失的流量。
解读溯源与覆盖率¶
target.sha256 将观测结果绑定到已接受的稳定捕获快照。两个工具都读取该副本,该副本在分析后会再次进行哈希。捕获元数据和字面字段值是生产者观测结果;地址/协议计数和 DNS 关联是派生结果。捕获 Evidence 具有历史参考权威性。
capture_start 和 capture_end 是从 capinfos -S 纪元秒派生的 RFC 3339 UTC 时间点,保留所有生产者小数位(精确到纳秒)。空捕获、格式错误的时间戳以及 0000–9999 年之外的时间点保持 null;不带时区的主机本地时间戳不会被推断。
snapshot_length 是 capinfos 报告的文件头数据包大小限制。其单独推断的截断长度不会取代该限制;未设置的文件头限制保持 null。
地址按每个数据包计数一次,包括回环和嵌套 IP 出现。DNS 地址仅与同一响应数据包中的一个问题关联;可能包含额外记录,因此这不证明最终解析结果。不明确的地址保留在单独的清单中。协议分布按精确的非空 frame.protocols 栈字符串计数。TShark 报告空栈的帧(包括零长度数据包)仍计入数据包总数,但不会添加协议行。全空栈清单可以具有完整的已检查覆盖率;它不确立网络流量的不存在。TLS SNI 是记录的握手元数据,并非进程身份或目的地真实性的证明。
所有已检查的清单都在资源预算内保留;不应用固定的 200/100/50 项截断。HTTP 传输凭据在不重写其他 URI 字节的情况下被排除;不明确的凭据跨度会导致省略。当 TShark 因未报告 Host 头而无法构造 http.request.full_uri 时,URI 清单会包含绝对形式的 HTTP 请求目标;相对请求目标不会被提升为绝对 URI。清单也使用 http2.request.full_uri;解码的 HTTP/2 :path 若没有对应的完整 URI,则覆盖率保持部分状态。HTTP URI 配置文件涵盖 HTTP/1 和 HTTP/2;HTTP/3 URI 语义未检查。所有接受的 URI 字段共享相同的凭据排除和源值保留规则。计数在省略或合并之前保留不同的观测源 URI。coverage: "partial" 记录未解析的 DNS 归属或 URI 项丢失;组件凭据排除也被显式计数。诊断信息保留两个工具的 stderr 流。记录的字段不确立解密负载、因果性、进程身份、未记录流量的不存在或当前部署。
资源与生命周期¶
每个 provider 同一时间只允许一次检查。并发调用会返回容量错误;close 会在释放资源前排空活动工作。捕获数据以流式方式写入具有 2 GiB 磁盘预算的只读自有快照。原生捕获命令强制 Linux 地址空间上限:最多 1 GiB、300 CPU 秒、每文件 64 MiB,且禁止核心转储,同时保留更严格的继承限制。Windows 对每个自有工具树使用 1 GiB 已提交内存限制。这些不是聚合的机器或文件系统配额。
TShark 输出限制为 8 MiB;在分配前会检查其已知的五级选定字段形状和 128 MiB 图扩展估算。保留的事实有单独的 16 MiB 估算。Capinfos 输出限制为 64 KiB。命令墙钟截止时间为:解析 300 秒、元数据 60 秒、探测 20 秒。原生所有权准备有其自身的有限生命周期。
格式错误/超大的输出不会返回部分成功。未经验证的部分 JSON 不会作为事实返回。capinfos 或 TShark 的 stdout 或 stderr 中出现无效 UTF-8 属于不可读输出错误;替换解码后的文本不会作为生产者证据进行解析。有效 UTF-8 中的字面 U+FFFD 字符仍作为文本保留。取消会传递到探测、采集、命令和投影环节。清理失败会返回类型化错误,在可用时保留已完成的 Evidence,并保留自有资源以供 close 时重试。
验证范围¶
当前的后续验证使用 Linux/Node 24.18.0 和 Wireshark 4.0.17。私有真实录制语料会对照独立的原始帧/IP 解析和 Python 聚合、公共 CLI/stdio MCP 一致性、SDK 模式、源代码哈希和保留视图进行检查。合成的原生工具单独测试格式错误输出、取消、源/快照变更、容量和清理;它们不确立真实 Wireshark 或其他平台的行为。
原始提案报告了其早期实现上的 Linux 4.6.6、macOS/Windows 4.6.9 验证。这些报告没有验证新的最终内存边界。实际的 Windows/Bun Wireshark 执行在此处未经验证;macOS 捕获支持需要单独的、可强制执行的边界决策。
此验证器演练了构建好的 CLI/stdio MCP、模式、工件标识和清理。没有 --pcap 时,捕获检查将报告为未验证。私有捕获、密钥和 provider 运行时文件不会被提交。
本页原文 Markdown:在 AtomGit 查看·内容源自开源项目 rea2/rea