wireshark学习系列——————5、处理已捕捉到的数据包

浏览您捕捉的包

在你已经捕捉完成之后,或者打开先前保存的包文件时,通过点击包列表面版中的包,可以在包详情面板看到关于这个包树状结构以及字节面版

通过点击左侧"+"标记,你可以展开树状视图的任意部分。你可以在面板点击任意字段来选择它。例如:在下图“Wireshark选择了一个TCP包后的界面”显示的就是选中TCP字段。同样可以选择TCP包头的应答号(ack:190),同时会出现在下方的字节浏览面版中。

Wireshark选择了一个TCP包后的界面


在Wireshark正在捕捉时,您也可以进行同样的选择。(前提是您在捕捉选项对话框选择了实时更新列表(update list of packet in real time ))

另外,您可以使用分离的窗口浏览单独的数据包,如下图,想要这样做,你只需要在选中包列表面版中您感兴趣的包,菜单 Display->Show Packet in New Windows 。它可以让你很轻松地比较两个或多个包。

在分离窗口浏览包


弹出菜单项

在包列表面板,包详情面板,包字节面板点击右键,都会出现对应的上下文弹出菜单

包列表面板的弹出菜单


下表列出了该面版可用弹出菜单项的概述,主菜单能实现同样功能的菜单项,以及简短的描述。

项目

对应主菜单项

描述

Mark Packet(toggle)

Edit

标记/取消标记包

Set Time Reference(toggle)

Edit

设置/重设时间参考

-----

 

 

Apply as Filter

Analyze

用当前选中的项作为过滤显示

Prepare a Filter

Analyze

准备将当前选择项作为过滤器

Conversation Filter

-

将当前选择项的地址信息作为过滤设置。选中该选项以后,会生成一个显示过滤,

用于显示当前包两个地址之间的会话

STCP

-

有待补充

Follow TCP Stream

Analyze

浏览两个节点间的一个完整TCP流所有数据

Follow SLL Stream

Analyze

同上,将TCP替换成SSL理解

-----

 

 

Copy/Summary(TEXT)

-

将摘要字段复制到剪贴板。(以tab分开的文本)

Copy/Summary(CVS)

-

将摘要字段复制到剪贴板,(CVS格式,逗号分开)

Copy/As Filter

-

以当前选择项,建立一个显示过滤器,复制到剪贴板

Copy/Bytes(Offset Hex Text)

-

以16进制转储格式将包字节复制到剪贴板。

Copy/Bytes(Offset Text)

-

以16进制转储格式将包字节复制到剪贴板。不包括文本部分。

Copy/ Bytes (Printable Text Only)

-

以ASCII码格式将包字节复制到剪贴板,包括非打印字符。

Copy/ Bytes (HEX Stream)

-

以16进制未分段列表数字方式将包字节复制到剪贴板,

(an unpunctuated list of hex digits 应该有专有名词,有兴趣的查一下)

Copy/ Bytes (Binary Stream)

-

以raw binary格式将包字节复制到剪贴板。

数据在剪贴板以"MIME-type application/octet-stream"存储,该功能在GTK+1.x环境下不支持

Export Selected Packet Bytes...

File

与文件菜单同名项目功能一样。允许将Raw packet 字节转换为二进制文件它

---

 

 

Decode As...

Analyze

在两个解析之间建立或修改新关联(不知所云)

Print...

File

打印包

Show Packet in New Window

View

在新窗口显示选中的包

包详情面板的弹出菜单

下表介绍了包详情列表菜单项的功能描述,及其他可以提供该功能的主菜单

项目

对应的主菜单

描述

Expand Subtrees

View

展开当前选择的子树

Expand All

View

展开捕捉文件的所有包的所有子树

Collapse All

View

关闭包中所有已展开的子树

-----

 

 

Copy/Description

-

复制选择字段显示的文本到剪贴板

Copy/AS Filter

Edit

将选择项目作为显示过滤内容复制到剪贴板

Copy/Bytes(Offset Hex Text)

-

将包字节以Hexdump-like格式存储到剪贴板;类似于包列表面板中同名的命令,

但是拷贝结果仅仅是树分支中被选中部分(包字节面板中被选中字节)

Copy/Bytes(Offset Hex)

-

以Hexdump-linke格式保存到剪贴,不包括文本部分。类似于包列表命令,

不同之处在于此处仅拷贝树分支选中部分(包字节面板选中部分)

COPY/Bytes (printable Text Only)

-

以ASCII格式拷贝包字节,非打印字符除外;类似于包列表面板中同样的命令。

不同点在于此处仅拷贝选择的树分支(包字符被选择部分)

Copy/Bytes(Hex Stream)

-

j以unpunctuated list hex digits形式保存到剪贴板,类似于包列表面板中的命令

,不同之处在于仅复制选中子树部分(包字节面板选中部分)

Copy/Bytes(Binary Stream)

-

以raw binary格式拷贝到剪贴板;类似于包列表面板中的命令,不同之处在于

仅拷贝选中部分

子树(包字节面板选中部分)。数据以MIME-type“Application/octet-stream”

存储在剪贴板.该功能在GTK+1.x下不可用

Export Selected Packet Bytes...

File

同文件菜单中的同名项一样。导出raw packet 字节为二进制文件。

---

 

 

Apply as Filter

analyze

将当前选择项作为过滤内容,并应用

Preapare a Filter

Analyze

将当前选择项作为过滤内容,但不立即应用

Follow TCP Stream

Analyze

追踪两个节点见,被选择包所属TCP流的完整数据

Follow SSL Stream

Analyze

同上

-----

 

 

Wiki Protocol Page

-

显示当前选择协议的对应WIKI网站协议参考页

Filter Field Reference

-

显示当前过滤器的WEB参考

Protocol Preferences...

-

如果协议字段被选中,点击该选项,打开属性对话框,选择对应协议的页面

-----

 

 

Decode As...

Analyze

更改或应用两个解析器之间的关联

Resolve Name...

View

对选择的包进行名称解析,不是指所有的包

Go to corresponding Packet ...

Go

跳到当前选择包的相应包。

浏览时过滤包

Wireshark有两种过滤语法:一种是捕捉包时使用,另一种是显示包时使用。本节介绍第二种过滤语法:显示过滤。

显示过滤可以隐藏一些你不感兴趣的包,让你可以集中注意力在你感兴趣的那些包上面。你可以用从以下几个方面选择包:

  • 协议
  • 预设字段
  • 字段值
  • 字段值比较
  • 。。。以及许多

根据协议类型选择数据报,只需要在Filter框里输入你刚兴趣的协议,然后回车开始过滤。???显示了你输入tcp进行过滤后的图。

用TCP协议过滤


或许你没有注意到,上图显示的已经仅有TCP协议了(从图中可以看到1-10号包已经被隐藏)。因为包的编号是固定不变的,所以第一个包显示的编号是11。

建立显示过滤表达式

Wireshark提供了简单而强大的过滤语法,你可以用它们建立复杂的过滤表达式。你可以比较包中的值,合并表达式为多个指定表达式。本节介绍了相关操作。

显示过滤字段

包详情面板的每个字段都可以作为过滤使用。应用这些作为过滤将会仅显示包含该字段的包。例如:过滤字符串:TCP将会显示所有包含TCP协议的包。

通过"Help/Support Protocals"/帮助/协议支持菜单项访问"Display Filter Fields/显示过滤字段"可以查看完整完整的过滤字段列表。

比较值

你可以通过在许多不同的比较操作建立比较过滤。

English

C-linke

描述及范例

eq

==

Equal

ip.addr==10.0.0.5

ne

!=

Not equal

ip.addr!=10.0.0.5

gt

Greate than

frame.pkt_len>10

lt

Less than

frame.pkt_len<128

ge

>=

Greater than or equal to

frame.pkt_len ge 0x100

le

<=

Equal

frame.pkt_len <= 0x20

组合表达式

你可以用逻辑操作符将过滤表达式组合在一起使用

English

C-linke

描述和范例

and

&&

Logical AND

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

or

||

Logical OR

ip.addr==10.0.0.5 or ip.addr==192.1.1.1

xor

^^

Logical XOR

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

not

!

Logical Not

not llc

[...]

 

Substring Operator

Wireshark允许选择一个序列的子序列。在标签后你可以加上一对[]号,在里面包含用逗号(是不是冒号?)分离的列表范围。

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

上例使用n:m格式指定一个范围。在这种情况下,n是起始位置偏移(0表示没有偏移,即是第一位,同理1表示向右偏移一位,便是第二位),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个序列

eht.src[2] == 83

上例使用 n 形式指定一个单独的位置。在此例中中序列中的单元已经在偏移量n中指定。它等价于n:1

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

Wireshark 允许你将多个分号隔开的列表组合在一起表示复合区域,如上例所示

常见的错误


在组合表达式中使用"!="操作符,像eth.addr,ip.addr,tcp.port,udp.port等元素可能会产生非预期效果

如果有人想用ip.addr !=1.2.3.4 表达式来排除ip地址为1.2.3.4的包,很不幸。它不会像你期待的那样。经常有人用ip.addr ==1.2.3.4 表达式来选择所有包含ip地址为1.2.3.4的包,

相反,那个表达式为真值得条件是源地址或目标地址中的任意一个不等于1.2.3.4即可。因此,那个表达式ip.addr !=1.2.3.4 可以被读作:"该包包含的ip字段值必须不为1.2.3.4"。因为一个ip数据报同含源地址和目标地址,只要两个地址有一个不为1,2,3,4表达式就为真。

接着上面的话题,如果你真想过滤捕捉文件中,ip地址包含1.2.3.4的包,正确的表达式应该是!(ip.addr==1.2.3.4)。它可以读作:"显示所有'字段名为ip.addr值存在1.2.3.4'为非真的包'",换句话说:"筛选所有字段名ip.addr的值中未出现1.2.3.4的包"

“Filter Expression/过滤表达式”对话框

当你熟悉Wireshark过滤系统,并了解你可以用那些标签进行过滤以后,你可以快速简单地输入过滤字符

但如果你是一个Wireshark新手,或者处理一些相对陌生的协议,你可能很难通过直接输入字符进行过滤。过滤表达式对话框会帮你解决这些问题

过滤表达式对话框

打开上图的对话框以后。将会显示一个按协议类型分组的树分支列表,一个关系选择框。

Field Name

从协议字段树中选择协议字段。每个可过滤协议都放在第一级。点击+号展开列表,可以获得关于那些协议的可过滤字段。

Relation

从可用关系列表中选择关系。is present是一元关系,表示如果你选择的字段存在,表达式就为真值。其它关系都为二元关系,需要附加数据(例如:一个值来匹配)来完成。

如果你从字段名列表选择一个字段,并选择一个二元关系(例如等于关系"=="),你可能需要输入值,也有可能是范围信息。

Value

在此输入合适的配置值,输入的值同样要符合你选择的field name的属性值类型(例如 字符串).

Predefined values

有些协议字段包含预设值可用,这一点跟C语言中的枚举变量类似。如果选择的协议有这样的值定义,你可以在此选择。

Range

此处作者留空了

OK

如果你已经建立好了表达式,点击OK即可创建你的过滤字符串

Cancel

你可以点击Cancle按钮不做任何修改离开Add Expression。。。对话框。

定义,保存过滤器

你可以定义过滤器,并给他们标记以便以后使用。这样可以省去回忆、重新输入某些你曾用过的复杂过滤器的时间。

定义新的过滤器或修改已经存在的过滤器有两种方法:1、在Capture 菜单选择CaptureFilters...;2、在Analyze菜单选择Display filter...。Wireshark 将会弹出如下图所示话框。

New

增加一个新的过滤器到列表中。当前输入的Filter name,Filter string值将会被使用。如果这些都为空,将会被设置为"new"(是说filtername还是说二者都是?)

Delete

删除选中的过滤器。如果没有过滤器被选中则为灰色

Filter name

修改当前选择的过滤器的名称

Filter string

修改当前选中过滤器的的内容。仅适用显示过滤:在输入时进行语法检查。

Add Expression

仅适用显示过滤:打开增加表达式对话框,辅助创建过滤表达式。

OK

仅适用显示过滤:为当前显示应用选择的过滤器,关闭当前对话框。

save

保存当前对话框设置。文件位置和格式见???

Close

关闭当前对话框。将会放弃未保存的设置。

查找包

当你捕捉到一些包以后,或者读取以前存储的包的时候,可以很容易的进行查找。从Edit菜单选择Find Packet...菜单项.Wireshark将会弹出如下所示对话框.

"Find Packet/查找包"对话框

首先你需要选择查找方式:

Display filter

在Filter:输入字段,选择查找方向,点击OK(过滤器方式)

例如:查找192.168.0.1发起的三步握手建立连接,使用如下字符:

ip.addr == 192.168.0.1 and tcp.flags.syn

显示过滤的详情

Hex Value

在包数据中搜索指定的序列

例如,使用"00:00"查找下一个包含两个空字节的包数据。

String

在包中查找字符串,可以指定多种参数

输入的查找值将会被进行语法检查。如果语法检查无误,输入框背景色会变成绿色,反之则是红色。

你可以指定查找的方向通过:

UP

向上查找包列表(包编号递减方式)

Down

向下查找包列表(包编号递增方式)

"FindNext/查找下一个"命令

适用最后一次的查找设置继续查找

 "FindPrevious/查找上一个"命令

适用最后一次的设置修改查找方向,继续查找。

到指定的包

通过"Go"菜单可以很轻松跳转到指定的包

 "GO Back"返回命令

使用Go back返回包历史记录,工作方式跟web浏览器的页面历史记录类似

"Go Forward /向前"命令

前进到包的历史记录,工作方式跟web浏览器的页面历史记录类似

 "Go to Packet/到指定的包"对话框

输入包的编号,点击OK,跳转到指定的包(他妈的我怎么看都是jumpto,怎么成了OK?).

Go to Corresponding Packet/到对应的包"命令

如果被选择协议字段指向文件中的另一个包,该命令将会跳转到那个包。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值