Skip to content
Wireshark Wiki 中文翻译整理专题首页原始页面

Development/Extcap

“extcap 接口是一种通用的插件接口,允许外部二进制程序直接在 wireshark 中充当捕获接口。它用于捕获来源不是传统捕获模型的场景(从接口进行实时捕获、从管道、从文件等)。” -- doc/README.extcap(现位于 8.2. Extcap: Developer Guide)

本页面旨在帮助讨论 extcap 内部机制的开发。

  • 问题

  • 问题:发现速度慢,接口列表无法配置

  • 当前流程

  • 新流程

  • 问题

问题

(也许应该填到 bugzilla 中,但这里可以把它放在一个总览里。)所有 extcap bug:https://bugs.wireshark.org/bugzilla/buglist.cgi?quicksearch=extcap

问题:发现速度慢,接口列表无法配置

即使你从本地接口捕获(参见 tshark -i lo),根据 strace,它也会调用所有 extcap helper(两次)。我还没有用 GUI 检查过,但情况很可能会更糟。

还有另一种反复出现的模式,“ssh”、“cisco”和“randpkt”都是伪名称,但它们实际的捕获行为取决于配置(SSH host、ssh 的远程接口、randpkt 的 packet types)。这种伪接口也会使 UI 变得杂乱。

想法(建议):

  • 让每个 extcap 二进制程序报告其(最大)能力和标识符(“ssh”、“randpkt”等),这必须是一个快速操作。可能可以使用当前的 --extcap-config

问题:capabilities 指的是什么?--extcap-config 当前需要一个接口。

  • 前缀之后的数据(标识符加冒号(“:”))依赖于接口,可能的用法:ssh:host:eth0

问题:这很快会变得混乱——应该通过 identifiers 传输什么?——可以通过 --extcap-interface-config 发现受支持的接口特定选项(想法)

问题:会破坏向下兼容性——在 interface prefix 匹配之前(在 tshark 中)或在选中 extcap 类型之前(在 Wireshark 中),不要扫描接口

问题:这应该是一个 extcap utility 功能——Extcap 可以接收参数以在发现过程中提供帮助。

问题:这计划在未来实现

或者,我们可以对文件名施加限制,并要求某种模式(*dump[.ext]),这样会更快。

当前流程

基于 doc/README.extcap(8.2. Extcap: Developer Guide),对于 extcap 目录中的所有 extcap 二进制程序:

  • 发现版本和接口:--extcap-interfaces

  • 查找接口的 DLT:--extcap-interface IFACE --extcap-dlts

  • 配置选项(用于 UI):--extcap-interface IFACE --extcap-config

  • (开始捕获时)开始捕获:--extcap-interface IFACE [params] --capture [--extcap-capture-filter CFILTER] --fifo FIFO

新流程

对于所有 extcap 二进制程序:

  • 发现版本、标识符以及可能影响发现的参数(例如 SSH host、Android serial)

问题——在仅打印 utility 之后,androiddump 应该显示什么?仅 androiddump 就可能有多达 10 个连接,而不知道该使用哪一个。

对于每个 extcap 二进制程序和给定参数(用于 tshark -D 或 GUI 中的发现):

  • 查找 extcap 接口(“eth0”、“eth1” -> “ssh:example.com:eth0”、“ssh:example.com:eth1”)。(注意:根据需要,这取决于之前对参数的配置)

  • 查找接口特定选项(XXX 既然参数已经是接口名称的一部分,这些选项现在还存在吗?)

  • (开始捕获时)使用给定选项开始捕获。

我并不真正理解为什么需要 “ssh:example.com:eth0”。这会让列表变得更加杂乱,而且对于减少接口数量或发现并没有真正帮助(因为它实际上并没有以任何方式发现任何东西)。这里真正的问题是像 androiddump 这样的 utility,它们需要在启动期间扫描接口及其能力。但这是关于扫描何时发生以及如何处理的问题。它必须在每次启动期间完成,而且只有 utility 知道它是如何以及何时完成的。extcap 不能强制也不能影响这次扫描如何或何时发生。可以做的是先扫描可能的 extcap,并延迟实际的接口查询,直到 GUI 完成加载之后。这样,GUI 加载速度很快,但只有当我们确实想开始一条 trace 时,才会为该特定 extcap 加载接口列表。

问题

执行一个程序并通过管道通信的可行性如何?这也可以避免在进程列表中泄露密码,并允许保留一些代价高昂的状态。

回答:extcap utilities 背后的想法是提供一个现有 utility,并扩展其能力,使其能够直接将 traces 发送到 wireshark。我同意,对于 sshdump 来说这会带来一个安全考虑,但可以通过使用 ssh/ciscodump 的 identity file 来解决。

Imported from https://wiki.wireshark.org/Development/Extcap on 2020-08-11 23:12:46 UTC

相关 Wireshark Wiki 页面

网络分析技术档案