通过 Wireshark 导出解释的帧信息

Exporting interpreted frame information by Wireshark

我想知道是否有一种方法可以导出 Wireshark 中显示的特定信息 packet/frame 在帧字节中不容易看到的信息(解释信息?)。我对无线帧的帧持续时间(以微秒为单位)wlan_radio.duration)特别感兴趣。

我查看了 data exporting Wireshark 的帮助,但我找不到导出解释信息的选项。

我知道我正在寻找的实现在 packet-ieee80211-radio.c 内,我愿意编写自己的代码来提取这些信息,但对我来说似乎有点复杂,我想知道如果已经存在执行此操作的方法。

我也愿意使用其他工具,例如 tcpdump,但据我所知,tcpdump 不提供帧持续时间。

谢谢!

在 Wireshark 中,您可以通过右键单击该字段然后选择 "Apply as Column" 或较长的 [=46] 将字段添加为列=]"Edit -> Preferences -> Columns" 方法,然后您可以选择 "File -> Export Packet Dissections -> As Plain Text..."(或您喜欢的任何格式)。

您也可以使用 tshark(Wireshark 的 CLI 配套工具)以 3 种方式之一完成此操作:

  1. 如果您已经将感兴趣的字段添加为 Wireshark 中的列,那么只需 运行 tshark -r file.pcap 即可打印 Wireshark 中的每个配置列。

  2. 您不必依赖 Wireshark 的列设置。您可以独立于 Wireshark 的列设置直接控制在 tshark 中打印哪些列,因此您可以使用如下内容:

    tshark -r file.pcap -o 'gui.column.format:"No.","%m","Time","%t","Source","%s","Destination","%d","Protocol","%p","Length","%L","Duration","%Cus:wlan_radio.duration","Info","%i"'

    注意:提供的格式适用于 Unix。如果您使用 Windows,则应使用双外引号并转义所有内双引号,例如 "gui.column.format:\"No.\",\"%m\", ..."

    运行 tshark -G column-formats 用于 "built-in" 列格式的列表。如果字段未列出,那么您始终可以使用 "Some Field","%Cus:someproto.somefield" 方法添加所谓的 custom 列。

  3. 您可以使用 tshark-T fields 选项来仅提取感兴趣的字段。这种方法是我提取数据的首选方法,我发现它对于生成 .csv 文件特别有用,您可以将其导入电子表格以进行进一步分析和数据操作,包括生成图表、图形等。因此,例如:

    tshark -r file.pcap -T fields -E separator=, -E quote=d -Y "wlan_radio.duration" -e frame.number -e frame.time -e _ws.col.Source -e _ws.col.Destination -e _ws.col.Protocol -e frame.len -e wlan_radio.duration -e _ws.col.Info > file.csv

    注意:这里我特意使用 Wireshark 列来说明你可以做到这一点以及如何做到这一点,但如果你不想依赖 Wireshark 列, 那么你应该避免使用 _ws.col.foo 字段并直接从协议字段中提取数据,如 wlan_radio.duration (以及显示的其他字段)的情况。

最后一点,如果您要向 Wireshark 添加自定义列,例如 wlan_radio.duration 字段,那么您可以考虑创建一个特定的 个人资料 "WLAN analysis"。这样,如果您不使用 802.11 流量,则可以使用默认配置文件(或更适合分析该流量的其他配置文件),并且仅在相关时使用 "WLAN" 配置文件。通过 "Edit -> Configuration Profiles..." 创建配置文件。您可以通过单击状态栏右下角的配置文件轻松切换 Wireshark 中的配置文件。最后,要使 tshark 使用特定的配置文件,您可以使用 tshark -C "WLAN" ... 或者您的配置文件的任何名称。