查看抓包信息

一旦你捕获了一些数据包或者打开了以前保护的捕获文件,你就可以通过单击数据包列表窗格中的数据包来查看数据包列表窗格中显示的数据包,这将在树状视图和字节视图窗格中显示所选数据包

然后,就可以展开树的任何部分来查看每个包中每个协议的详细信息。单击树中的一个项目将突出显示字节视图中相应的字节。下图显示了一个选中TCP报文的示例,“Wireshark选择查看一个TCP报文”。它还具有选定的TCP报头中的确认号,该编号在字节视图中显示为选定的字节。

wireshark抓包 android wireshark抓包后怎么看_字段

此外,你还可以在单独的窗口中查看各个数据包,如下图,

  • 通过双击“数据包列表”中的项目
  • 在“数据包列表”中选中一个感兴趣的数据包并选择“视图-在新窗口中显示数据包”

这两个方法

wireshark抓包 android wireshark抓包后怎么看_字段_02


wireshark抓包 android wireshark抓包后怎么看_剪贴板_03


wireshark抓包 android wireshark抓包后怎么看_wireshark_04

这允许您轻松地比较两个或多个包,甚至跨多个文件。

弹出菜单

”数据包列表“列标题的弹出菜单

选中一个,单机鼠标右键

wireshark抓包 android wireshark抓包后怎么看_wireshark抓包 android_05

  • Align Left:此列中的值左对齐
  • Align Center:此列中的值居中对齐
  • Align Right:此列中的值右对齐
  • Column Preferences(列首选项):打开此列的“所选项”对话框
  • Edit Column(编辑列):打开此列的列编辑器工具栏
  • Resize To Contents(调整为内容大小):调整列大小以适合其值
  • Resolve Names(解析名称):如果此列包含地址,请解析它们
  • No., Time, Source, et al.:通过选择显式或者隐藏其项
  • Remove Column(删除列):
    删除此列,类似于在“首选项”对话框中删除它。

“数据包列表”窗格中的弹出菜单


wireshark抓包 android wireshark抓包后怎么看_字符串_06

  • 标记/取消标记数据包:标记或者取消标记一个包
  • 忽略/不忽略数据包:在分析捕获文件时忽略或者检查此数据包
  • 设置/不设置时间参考:设置或者重置时间参考
  • 时间平移:打开“时间平移”对话框,允许你调整某些或者所有数据包的时间
  • 分组(数据包)注释:打开数据包注释,可以在其他向单个数据包添加数据。注意,有些文件格式不支持注释功能
  • 编辑解析的名称:允许您输入要解析选定地址的名称
  • 作为过滤器应用:
  • 根据所选的最新数据包列表或者数据包详细信息项立即替换或者附加当前显示过滤器
  • 第一个子菜单项显示过滤器,后续项显示过滤器的不同应用方式
  • 准备作为过滤器:
  • 根据所选的最新数据包列表或数据包详细信息项更改当前显示筛选器,但不应用它。
  • 第一个子菜单项显示筛选器,后续项显示更改筛选器的不同方式。
  • 对话过滤器:
  • 使用所选数据包的地址信息应用显示过滤器
  • 比如,IP菜单项将设置一个筛选器,以显示当前数据包的两个IP地址之间的通讯量
  • 对话着色:根据所选数据包中的地址信息创建新的着色规则
  • SCTP:允许您分析和准备此SCTP关联的过滤器
  • 跟踪TCP流:打开一个窗口,其中显示与选定数据包在同一个TCP连接上捕获的所有TCP段
  • 跟踪UDP流:打开一个窗口,其中显示与选定数据包在同一个UDP连接上捕获的所有UDP段
  • 跟踪DCCP流:打开一个窗口,其中显示与选定数据包在同一个DCCP连接上捕获的所有DCCP段
  • 跟踪TLS流:打开一个窗口,其中显示与选定数据包在同一个TLS连接上捕获的所有TLS段
  • 跟踪HTTP流:打开一个窗口,其中显示与选定数据包在同一个HTTP连接上捕获的所有HTTP段
  • 复制摘要作为文本:将显示的摘要字段作为文本复制到剪贴板
  • 复制… as CSV:将显示的摘要字段作为逗号分隔文本复制到剪贴板
  • 复制… as YAML:将显示的摘要字段作为逗号分隔文本复制到剪贴板
  • 复制… as filter:复制所选数据包详细信息及其子项(如显示)。
  • 复制→ Bytes as Hex + ASCII Dump:以完整的“hexdump”格式将数据包字节复制到剪贴板。
  • 复制… as Hex Dump: 将数据包字节以“hexdump”格式复制到剪贴板,而不使用ascii部分。
  • 复制…as Printable Text: 将数据包字节作为ASCII文本复制到剪贴板,不包括不可打印字符。
  • 复制…as a Hex Stream: 将数据包字节作为不定时的十六进制数字列表复制到剪贴板。
  • 复制…as Raw Binary:将数据包字节作为原始二进制文件复制到剪贴板。数据使用MIME类型“application/octet stream”存储在剪贴板中。
  • 协议所选项:调整所选协议的首选项
  • 解码为:改变或者应用两个解析器之间的新关系
  • 在新窗口中显示分组(数据包):在单独的窗口中显示选定的数据包。单独的窗口仅显示数据包的详细信息和字节

“数据包详细信息”窗格的弹出菜单

wireshark抓包 android wireshark抓包后怎么看_wireshark_07

  • 展开子树:展开当前选定的子树
  • 折叠子树:折叠当前选定的子树
  • 全部展开:展开捕获中所有数据包中的所有子树。
  • 全部折叠:
  • Wireshark保留所有展开的协议子树的列表,并使用它确保在显示数据包时展开正确的子树。
  • 此菜单项折叠捕获列表中所有数据包的树视图。
  • 作为列应用:使用所选协议项在数据包列表中创建新列。
  • 作为筛选器应用
  • 根据所选的最新数据包列表或数据包详细信息项立即替换或附加当前显示筛选器。
  • 第一个子菜单项显示筛选器,后续项显示筛选器的不同应用方式。
  • 准备为过滤器
  • 根据所选的最新数据包列表或数据包详细信息项更改当前显示筛选器,但不应用它。
  • 第一个子菜单项显示筛选器,后续项显示更改筛选器的不同方式。
  • 用滤镜着色
  • 此菜单项使用显示过滤器,其中包含来自所选协议项的信息,以构建新的着色规则。
  • 复制→ 所有可见项目:复制显示的数据包详细信息。
  • 复制→ 选中树的所有可见项目:复制所选数据包详细信息及其子项(如显示)。
  • 复制→ 描述:将所选字段的显示文本复制到剪贴板
  • 复制→ 字段名称:将所选字段的名称复制到剪贴板
  • 复制—值:将所选字段的值复制到剪贴板
  • 复制→ 作为过滤器:根据当前选择的项目准备一个显示筛选器,并将其复制到剪贴板。
  • 复制→ 将字节复制为十六进制+ASCII传输:将数据包字节以完整的“hexdump”格式复制到剪贴板。
  • 复制→ …as Hex Dump:将数据包字节以“hexdump”格式复制到剪贴板,不带ASCII部分。
  • 复制→ ……as Printable Text:将数据包字节以ASCII文本的形式复制到剪贴板,不包括不可打印字符。
  • 复制→…as a Hex Stream:将数据包字节作为十六进制数字的无标点符号列表复制到剪贴板。
  • 复制→…as Raw Binary:将数据包字节作为原始二进制复制到剪贴板。数据使用MIME类型“application/octet-stream”存储在剪贴板中。
  • 复制→…as Escaped String:将数据包字节作为c风格转义序列复制到剪贴板。

wireshark抓包 android wireshark抓包后怎么看_字段_08

  • 显示分组字节:
  • 导出分组字节流:此菜单项与同名的“文件”菜单项相同。它允许您将原始数据包字节导出到二进制文件。
  • Wiki协议页:在web浏览器中显示与当前选定协议对应的wiki页面。
  • 过滤器字段参考:在web浏览器中显示与当前选定协议对应的筛选器字段引用网页。
  • 协议首选项:调整所选协议的首选项。
  • 解码为:改变或应用两个解剖器之间的新关系。
  • Go to Linked Packet(转到链接包):如果所选字段具有相应的数据报,比如DNS响应的匹配请求,请转到该字段
  • 在新窗口中显示链接包: 如果所选字段具有相应的数据包,如DNS响应的匹配请求,请在单独的窗口中显示选定的数据包。

"数据包字节"窗格中的弹出菜单

wireshark抓包 android wireshark抓包后怎么看_剪贴板_09

  • 将字节复制为十六进制ASCII转储:将数据包字节以完整的“hexdump”格式复制到剪贴板。
  • …as Hex Dump:将数据包字节以“hexdump”格式复制到剪贴板,不带ASCII部分。
  • …as Printable Text:将数据包字节以ASCII文本的形式复制到剪贴板,不包括不可打印字符。
  • …as a Hex Stream:将数据包字节作为十六进制数字的无标点符号列表复制到剪贴板。
  • …as Raw Binary:将数据包字节作为原始二进制复制到剪贴板。数据使用MIME类型“application/octet-stream”存储在剪贴板中。
  • …as Escaped String:将数据包字节作为c风格转义序列复制到剪贴板。
  • 按字节显示为十六进制:以十六进制数字显示字节数据。
  • Show bytes as bits:以二进制数字显示字节数据。
  • 根据分组显示文本:用文本显示“hexdump”数据。
  • …as ASCII:显示“hextump”文本时使用ASCII编码。
  • …as EBCDIC:显示“hextump”文本时使用EBCDIC编码。

查看时过滤数据包

Wireshark有两种过滤语言:捕获过滤器和显示过滤器。

  • 捕获过滤器用于在捕获时过滤哪些数据包,将在捕获时过滤中讨论。
  • 显示过滤器用于在显示时过滤哪些数据包,并在下面讨论。

显示过滤器允许您集中精力在您感兴趣的数据包上,同时隐藏当前不感兴趣的数据包。它们允许您仅根据以下内容显示数据包:

  • 协议
  • 字段
  • 字段值
  • 字段之间的比较

构建显示筛选器表达式

输入filterexpression后,不要忘记按enter键或单击apply display filter按钮。

显示筛选字段

最简单的显示过滤器是显示单个协议的过滤器。

如果需要只显示包含特定协议的报文,可以在Wireshark窗口的display filter工具栏中输入协议名,然后按enter键进行过滤。如下图:

wireshark抓包 android wireshark抓包后怎么看_wireshark_10


注意:

  • 协议和字段名通常是小写的。
  • 输入filterexpression后,不要忘记按enter键或单击apply display filter按钮。

可以过滤Wireshark支持的任何协议。可用协议和字段的完整列表可以通过菜单项View→Internals→Supported protocols获得。

wireshark抓包 android wireshark抓包后怎么看_wireshark_11


wireshark抓包 android wireshark抓包后怎么看_wireshark抓包 android_12

比较数值

您可以构建使用很多不同的比较运算符比较值的显示过滤器。比如,值显示来自IP地址192.168.0.1的数据包,可以使用ip.addr=192.168.0.1.

支持的符号:

描述

例子

eq

==

等于

ip.src==10.0.0.5

ne

!=

不等于

ip.src!=10.0.0.5

gt

>

大于

frame.len > 10

lt

<

小于

frame.len < 128

ge

>=

大于等于

frame.len ge 0x100

le

<=

小于等于

frame.len <= 0x20

contains

包含值

sip.To contains "a1762"

matches (不建议使用)

~(建议使用)

协议或者文本字段与perl兼容的正则表达式匹配

http.host matches "acme\\.(org|com|net)"

bitwise_and

&

按位与非0

tcp.flags & 0x02

所有字段都有一个类型,下面提供了类型列表,并提供如何在显示过滤器中使用这些类型的实例

(1)无符号整数

可以是8、16、24、32或者64位,可以用十进制、八进制或者十六进制表示整数。以下过滤器等效:

ip.len le 1500

ip.len le 02734

ip.len le 0x5dc

(2)带符号整数
可以是8、16、24、32或者64位,可以用十进制、八进制或者十六进制表示整数

(3)布尔型

可以是1(为真)或0(为假)。

无论其值是真还是假,都存在一个bool字段。比如,tcp.flags.syn在包含标志的所有TCP数据包都存在,无论SYN标识是0还是1;要只匹配设置了SYN标识的TCP数据包,需要使用tcp.flags.syn ==1

(4)以太网地址

:.-分隔的6个字节,分隔符之间由一个或者两个字节

eth.dst == ff:ff:ff:ff:ff:ff
eth.dst == ff-ff-ff-ff-ff-ff
eth.dst == ffff.ffff.ffff

(5)IPV4地址

ip.addr == 192.168.0.1

无分类域间路由(CIDR)符号可以用来测试IPv4地址是否在某个子网中。例如,这个显示过滤器将查找129.111 Class-B网络中的所有数据包:

ip.addr == 129.111.0.0/16

(6)IPV6地址

ipv6.addr == ::1

与IPv4地址一样,IPv6地址也可以匹配子网。
(7)文本字符粗

http.request.uri == "https://www.wireshark.org/"

字符串是一个字节序列。像lower()这样的函数使用ASCII,否则不需要特定的编码。字符串字面值使用双引号指定。字符也可以使用十六机制\xhh或者八进制\ddd使用字节转义序列指定,其中h和d分别为十六进制或者八进制

dns.qry.name contains "www.\x77\x69\x72\x65\x73\x68\x61\x72\x6b.org"

或者,可以使用原始字符串语法。这样的字符串以r或r为前缀,并将反斜杠视为文字字符。

http.user_agent matches r"\(X11;"

(8)日期和时间

frame.time == "Sep 26, 2004 23:18:04.954975"
ntp.xmt ge "2020-07-04 12:34:56"

绝对时间字段的值用字符串表示,使用上述两种格式之一。分数秒可以省略或指定达到纳秒精度;额外的尾随零是允许的,但其他数字不允许。该字符串不能带有时区后缀,并且解析时总是按照当地时区进行,即使对于UTC中显示的字段也是如此。

在第一种格式中,缩写的月份名称必须使用英语区域设置。在第二种格式中,可以省略任意数量的时间字段,从最低有效(秒)到最高,但至少必须指定整个日期:

frame.time < "2022-01-01"

在第二种格式中,T可以出现在日期和时间之间,就像在ISO 8601中一样,但在删除较次要的时间时不会出现。

一些例子

udp contains 81:60:03

匹配UDP报头或者负载中包含3字节序列0x81、0x60、0x03的数据包

sip.To contains "a1762"

匹配SIP To-header中包含字符串“a1762”的信息包。

http.host matches "acme\\.(org|com|net)"

匹配HOST报头包含acme.org、acme.com或acme.net的HTTP数据包。比较是不区分大小写的。

tcp.flags & 0x02

匹配所有包含“tcp.flags”的数据包与0x02相与为1的字段,即设置SYN位

组合表达式

例子

and

&&

ip.src==10.0.0.5 and tcp.flags.fin

or

xor

^^

tr.dst[0:3] == 0.6.29 xor tr.src[0:3] == 0.6.29

not

!

not llc

[…]

in

切片表达式

Wireshark允许您以相当复杂的方式选择序列的子序列。在标签之后,可以放置一对方括号[],其中包含用逗号分隔的范围说明符列表。

eth.src[0:3] == 00:00:83

上面的示例使用n:m格式指定单个范围。在这种情况下,n是起始偏移量,m是指定范围的长度。

eth.src[1-2] == 00:83

上面的示例使用n-m格式指定单个范围。在这种情况下,n是开始偏移量,m是结束偏移量。

eth.src[:4] == 00:00:83:00

上面的例子使用:m格式,它取序列开始的所有内容来偏移m。它等价于0:m

eth.src[4:] == 20:20

上面的例子使用了n: 格式,它取从偏移量n到序列末尾的所有内容。

eth.src[2] == 83

上面的示例使用n格式指定一个范围。在这种情况下,选择位于偏移量n的序列中的元素。这等于n:1。

eth.src[0:3,1-2,:4,4:,2] ==
00:00:83:00:83:00:00:83:00:20:20:83

Wireshark允许您用逗号分隔的列表将单个范围串在一起,形成如上所示的复合范围。

成员操作符

wireshark允许您测试字段是否属于一组值或者字段。在字段名之后,使用in操作符,后面跟着{}包围的集合项。

tcp.port in {80, 443, 8080}
tcp.port == 80 || tcp.port == 443 || tcp.port == 8080

显示TCP源端口号为80、443或8080的报文

tcp.port in {443,4430..4434}

显示TCP源端口号为443、4430到4434的报文

http.request.method in {"HEAD", "GET"}
ip.addr in {10.0.0.5 .. 10.0.0.9, 192.168.1.1..192.168.1.9}
frame.time_delta in {10 .. 10.5}

函数

显示过滤语言有许多转换字段的函数:

函数

描述

upper

将字符串字段转换为大写。

lower

将字符串字段转换为小写。

len

返回字符串或bytes字段的字节长度。

count

返回帧中出现的字段数。

string

将非字符串字段转换为字符串。

upper和lower函数可以用来强制大小写不敏感的匹配:lower(http.server)包含“apache”
查找请求uri较长的HTTP请求:len(HTTP .request.uri) > 100。注意,len函数产生的字符串长度以字节为单位,而不是(多字节)字符。

通常一个IP帧只有两个地址(源地址和目的地址),但在ICMP错误或隧道的情况下,单个包可能包含更多的地址。这些数据包可以用count(ip.addr) > 2找到。

string函数将字段值转换为字符串,适合与“matches”或“contains”等操作符一起使用。整数字段被转换为其十进制表示形式。它可以用于IP/以太网地址(以及其他地址),但不能用于字符串或字节字段。

例如,匹配奇数帧数:

string(frame.number) matches "[13579]$"

匹配一个子网(172.16 ~ 172.31)中以255结尾的IP地址:

string(ip.dst) matches r"^172\.(1[6-9]|2[0-9]|3[0-1])\.[0-9]{1,3}\.255"

有时字段会改变名称

随着协议的发展,它们有时会改变名称或被新的标准所取代。例如,DHCP扩展并在很大程度上取代了BOOTP, TLS取代了SSL。如果协议分析器最初使用较旧的协议名称和字段,那么Wireshark开发团队可能会更新它以使用较新的名称和字段。在这种情况下,他们将从旧协议名添加一个别名到新协议名,以便使转换更容易。

例如,DHCP解析器最初是为BOOTP协议开发的,但在Wireshark 3.0中,所有的“BOOTP”显示过滤字段都被重命名为“DHCP”等效字段。您暂时仍然可以使用旧的过滤器名称,例如“bootp”。Type “等同于” dhcp “。但是当你使用bootp时,Wireshark会显示警告” “bootp” is deprecated "。对已弃用字段的支持将来可能会被移除。

”显示过滤器表达式“对话框

当你习惯了wireshark的过滤系统,知道你想在过滤器中使用什么标签时,简单的输入一个过滤器字符串就可以很快的完成。但是,如果你是wireshark的新手或者正在使用一个稍微不熟悉的协议时,那么是写显示过滤器就很难。这个适合就可以点击 ”显示过滤器表达式“对话框寻找所要求的。

定义和保存过滤器

节省记忆和重新输入您使用的一些更复杂的过滤器的时间。

要创建或编辑捕获过滤器,两种方法

(1)捕获过滤器书签菜单中选择“Manage capture filters”

wireshark抓包 android wireshark抓包后怎么看_剪贴板_13

(2)在主菜单中选择“capture→capture filters…”

wireshark抓包 android wireshark抓包后怎么看_wireshark_14

”捕获过滤器“对话框如下:

wireshark抓包 android wireshark抓包后怎么看_字符串_15

wireshark抓包 android wireshark抓包后怎么看_字段_16

  • 向列表中添加一个新的筛选器。您可以通过双击筛选器名称或表达式来编辑它。
  • 为了方便起见,在此对话框中使用筛选器名称来标识筛选器,但不在其他地方使用。您可以使用相同的名称创建多个过滤器,但这不是很有用。
  • 当键入一个过滤器字符串时,背景颜色将取决于过滤器的有效性,类似于主要的捕获和显示过滤器工具栏。

wireshark抓包 android wireshark抓包后怎么看_wireshark抓包 android_17

  • 删除选定的过滤器。如果没有选择过滤器,这将是灰色的。

wireshark抓包 android wireshark抓包后怎么看_wireshark_18

  • 复制选定的筛选器。如果没有选择过滤器,这将是灰色的。

定义和保存过滤器宏

你可以用wireshark定义一个过滤器宏,并给它加上标签以备以后使用。这样可以节省记忆和重新键入一些更复杂的过滤器时间。

方法:

  • 打开对话框:主菜单栏Analyze → Display Filter Macros….

查找数据包

一旦捕获了一些数据包或读取了先前保存的捕获文件,就可以很容易地找到数据包。

”查找数据包“工具栏

主菜单中选择Edit→Find Packet

wireshark抓包 android wireshark抓包后怎么看_wireshark抓包 android_19


”查找数据包“工具栏如下图

wireshark抓包 android wireshark抓包后怎么看_字符串_20


您可以根据以下条件进行搜索:

wireshark抓包 android wireshark抓包后怎么看_字段_21

(1)显示过滤器
在文本输入字段中输入显示过滤器字符串,然后单机find按钮。

例如,要找到来自主机192.168.0.1的连接的三种握手方式,使用以下过滤字符串:

ip.src==192.168.0.1 and tcp.flags.syn==1

当您键入要查找的值时,将检查它的语法。如果值的语法检查成功,则输入字段的背景将变为绿色,如果失败,则将变为红色

(2)十六进制
在包数据中查找特定的字节序列

例如,使用“ef:bb:bf”来查找下一个包含UTF-8字节顺序标记的包。

(3)字符串
在数据包中数据中找一个字符串

(4)正在表达式

转到特定数据包

wireshark抓包 android wireshark抓包后怎么看_字符串_22

标记数据包

您可以在“报文列表”窗格中标记数据包。一个标记过的数据包将以黑色背景显示,无论颜色规则设置如何。在一个大型捕获文件中进行分析时,标记一个包对于以后找到它很有用。

标记的数据包信息不会存储在捕获文件或其他任何地方。当捕获文件关闭时,它将丢失。

在保存、导出或打印时,可以通过报文标记来控制报文的输出。

wireshark抓包 android wireshark抓包后怎么看_wireshark抓包 android_23


wireshark抓包 android wireshark抓包后怎么看_字段_24

忽略数据包

在“报文列表”区域框中,可以忽略报文。Wireshark会假装它们在捕获文件中不存在。一个被忽略的数据包将显示为白色背景和灰色前景,不管设置的着色规则。

被忽略的数据包信息不会存储在捕获文件或其他任何地方。当捕获文件关闭时,它将丢失。

时间显示格式和时间参考

当数据包被捕获时,每个数据包都有时间戳。这些时间戳将保存到捕获文件中,以便以后分析。

(2)有各种各样的显示格式和显示精度:

wireshark抓包 android wireshark抓包后怎么看_字符串_25

(2)包时间参考
用户可以设置数据包的时间引用。时间参考是所有后继包时间计算的起点。

如果您想查看与一个特殊包相关的时间值,例如一个新请求的开始,它将是有用的。可以在捕获文件中设置多个时间引用。

时间引用将不会永久保存,并将在关闭捕获文件时丢失。

只有当时间显示格式设置为“捕捉开始后的秒数”时,时间引用才有用。如果使用其他时间显示格式之一,时间引用将没有效果(也将没有意义)。

wireshark抓包 android wireshark抓包后怎么看_剪贴板_26