过滤tcp,udp及端口号。
可以使用src|dst和tcp|udp关键词来确定来自源还是目标,tcp协议还是udp协议。
tcp|udp必须出现在src|dst之前。
(6)less|greater
选择长度符合要求的包。
(大于等于或小于等于)
(7)ip|etherproto
选择有指定的协议在以太网层或是ip层的包
(8)ether|ipbroadcast|multicast
选择以太网/ip层的广播或多播
(9)relop
创建一个复杂过滤表达式,来选择包的字节或字节范围符合要求的包。
6、 保存捕捉包
你可以通过File->SaveAs...菜单保存捕捉文件。
在保存时可以选择保存哪些包,以什么格式保存:
Windows下的界面:
LINUX下的界面:
通过这些对话框,你可以执行如下操作:
(1)输入你指定的文件名。
(2)选择保存的目录
(3)选择保存包的范围
(4)通过点击"Filetype/文件类型"下拉列表指定保存文件的格式。
(5)点击"Save/OK"按钮保存。
如果保存时遇到问题,会出现错误提示。
确认那个错误提示以后,你可以重试。
(6)点击"Cancel"按钮退出而不保存捕捉包。
7、输出格式
可以将Wireshark捕捉到的包保存为其原生格式文件(libpcap),也可以保存为其他格式供其他工具进行读取分析。
Wireshark可以保存为如下格式:
libpcap,tcpdumpandvariousothertoolsusingtcpdump'scaptureformat(*.pcap,*.cap,*.dmp)
Accellent5Views(*.5vw)
HP-UX'snettl(*.TRC0,*.TRC1)
MicrosoftNetworkMonitor-NetMon(*.cap)
NetworkAssociatesSniffer-DOS(*.cap,*.enc,*.trc,*fdc,*.syc)
NetworkAssociatesSniffer-Windows(*.cap)
NetworkInstrumentsObserverversion9(*.bfr)
NovellLANalyzer(*.tr1)
Sunsnoop(*.snoop,*.cap)
VisualNetworksVisualUpTimetraffic(*.*)
三、浏览捕捉的包
在捕捉完成之后,或者打开先前保存的包文件之后,通过点击包列表面版中的包,可以在包详情面板看到关于这个包树状结构以及字节面版
通过点击左侧"+"标记,可以展开树状视图的任意部分。
下面是一个例子:
当Wireshark正在捕捉时,也可以进行同样的选择。
(前提是在捕捉选项对话框选择了实时更新列表(updatelistofpacketinrealtime))
另外,还可以使用分离的窗口浏览单独的数据包,如下图,想要这样做,只需要在选中包列表面版中您感兴趣的包,菜单View->ShowPacketinNewWindows。
这样我们可以很轻松地比较两个或多个包。
或者在包列表面板中右键单击所选的包,选择ShowPacketinNewWindow:
又或者在包列表面板中双击所选择的包:
四、浏览时过滤包
Wireshark有两种过滤语法:
一种是捕捉包时使用,另一种是显示包时使用。
之前在“捕捉时过滤”里已经介绍过第一种过滤语法了,这里将介绍第二种:
显示过滤。
显示过滤可以隐藏一些你不感兴趣的包,让你可以集中注意力在你感兴趣的那些包上面。
可以从以下几个方面选择包:
协议
预设字段
字段值
字段值比较
……
根据协议类型选择数据报,只需要在Filter框里输入你感兴趣的协议,然后回车开始过滤。
下面显示了输入tcp进行过滤后的图。
显然,上图显示的已经仅有TCP协议了(从图中可以看到1-10号包已经被隐藏)。
因为包的编号是固定不变的,所以第一个包显示的编号是11。
注意:
1.使用过滤时,所有的包依然保留在捕捉文件里。
显示过滤只是更改捕捉文件的显示方式而非内容。
2.我们只能对Wireshark可以识别的协议进行过滤。
也可以对解析器已经添加到树视图的字段进行过滤,但仅限于解析器已经为字段加上了协议缩写的。
在AddExpression...对话框可以看到可用的字段列表。
例如:
想要限制包列表面板仅显示来自或指向192.168.0.1的包,可以使用:
ip.addr==192.168.0.
注意:
点击Clear可以移除过滤
1、建立显示过滤表达式
Wireshark提供了简单而强大的过滤语法,可以用它们建立复杂的过滤表达式。
你可以比较包中的值,合并表达式为多个指定表达式。
提示:
可以在WiresharkWikiDisplay页找到发现大量的显示过滤范例。
http:
//wiki.wireshark.org/DisplayFilters.
(1)显示过滤字段
包详情面板的每个字段都可以作为过滤使用。
应用这些作为过滤将会仅显示包含该字段的包。
例如:
过滤字符串TCP,将会显示所有包含TCP协议的包。
包详情面板:
通过"Help/SupportProtocals"/帮助/协议支持菜单项访问"DisplayFilterFields/显示过滤字段"可以查看完整的过滤字段列表。
(2) 比较值
可以通过在许多不同的比较操作建立比较过滤。
详见下表。
提示:
可以使用下表中的英语和比较符(c-link)项达到同样的效果,它们也可以混合使用。
表格:
显示滤镜比较操作符
English
C-linke
描述及范例
eq
==
Equal
ip.addr==10.0.0.5
ne
!
=
Notequal
ip.addr!
=10.0.0.5
gt
>
Greatethan
frame.pkt_len>10
lt
<
Lessthan
frame.pkt_len<128
ge
>=
Greaterthanorequalto
frame.pkt_lenge0x100
le
<=
Equal
frame.pkt_len<=0x20
(3)组合表达式
你可以用逻辑操作符将过滤表达式组合在一起使用,见下表。
显示过滤的逻辑操作符
English
C-linke
描述和范例
and
&&
LogicalAND
ip.addr==10.0.0.5andtcp.flags.fin
or
||
LogicalOR
ip.addr==10.0.0.5orip.addr==192.1.1.1
xor
^^
LogicalXOR
tr.dst[0:
3]==0.6.29xortr.src[0:
3]==0.6.29
not
!
LogicalNot
notllc
[...]
SubstringOperator
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允许你将多个分号隔开的列表组合在一起表示复合区域,如上例所示
(4) 常见的错误:
在组合表达式中使用"!
="操作符,像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的包"。
(5)“FilterExpression/过滤表达式”对话框
过滤表达式对话框
打开上图的对话框以后。
将会显示一个按协议类型分组的树分支列表,一个关系选择框。
FieldName:
从协议字段树中选择协议字段。
每个可过滤协议都放在第一级。
点击+号展开列表,可以获得关于那些协议的可过滤字段。
Relation:
从可用关系列表中选择关系。
ispresent是一元关系,表示如果你选择的字段存在,表达式就为真值。
其它关系都为二元关系,需要附加数据(例如:
一个值来匹配)来完成。
如果你从字段名列表选择一个字段,并选择一个二元关系(例如等于关系"=="),你可能需要输入值,也有可能是范围信息。
Value:
在此输入合适的配置值,输入的值同样要符合你选择的fieldname的属性值类型(例如字符串).
Predefinedvalues:
有些协议字段包含预设值可用,这一点跟C语言中的枚举变量类似。
如果选择的协议有这样的值定义,你可以在此选择。
Range:
此处作者留空了
OK:
如果你已经建立好了表达式,点击OK即可创建你的过滤字符串
Cancel:
你可以点击Cancle按钮不做任何修改离开AddExpression。
。
。
对话框。
(6)定义、保存过滤器
你可以定义过滤器,并给他们标记以便以后使用。
这样可以省去回忆、重新输入某些你曾用过的复杂过滤器的时间。
定义新的过滤器或修改已经存在的过滤器有两种方法:
方法一:
在Capture菜单选择CaptureFilters...;
方法二:
在Analyze菜单选择Displayfilter...。
Wireshark将会弹出如下图所示话框。
注意:
因为捕捉和显示滤镜的设定义和保存方式几乎完全一样,所以这里放在一起讲,二者之间的不同点会做标记。
警告:
必须使用Save来保存你的过滤器,OK或者Apply不会保存过滤器。
关闭wireshark时会随之消失。
相关选项介绍:
New:
增加一个新的过滤器到列表中。
当前输入的Filtername,Filterstring值将会被使用。
如果这些都为空,将会被设置为"new"。
Delete:
删除选中的过滤器。
如果没有过滤器被选中则为灰色。
Filtername:
修改当前选择的过滤器的名称(过滤器名称仅用在此处为了区分方便而已,没有其他用处。
可以将多个过滤器使用同一个名称,但这样使用起来会很不方便)。
Filterstring:
修改当前选中过滤器的的内容。
仅适用显示过滤,在输入时进行语法检查。
AddExpression:
仅适用显示过滤。
打开增加表达式对话框,辅助创建过滤表达式。
详见(5)“FilterExpression/过滤表达式”对话框
OK:
仅适用显示过滤,为当前显示应用选择的过滤器,关闭当前对话框。
Save:
保存当前对话框设置。
Close:
关闭当前对话框。
将会放弃未保存的设置。
五、 查找包
当你捕捉到一些包以后,或者读取以前存储的包的时候,可以很容易的进行查找。
从Edit菜单选择FindPacket...菜单项,Wireshark将会弹出下图所示对话框.
首先你需要选择查找方式:
Displayfilter:
在Filter:
输入字段,选择查找方向,点击OK(过滤器方式)
例如:
查找192.168.0.1发起的三步握手建立连接,使用如下字符:
ip.addr==192.168.0.1andtcp.flags.syn
HexValue:
在包数据中搜索指定的序列。
例如:
使用"00:
00"查找下一个包含两个空字节的包数据。
String:
在包中查找字符串,可以指定多种参数。
提示:
输入的查找值将会被进行语法检查。
如果语法检查无误,输入框背景色会变成绿色,反之则是红色。
你可以指定查找的方向通过:
UP:
向上查找包列表(包编号递减方式)
Down:
向下查找包列表(包编号递增方式)
Edit->FindNext/查找下一个:
适用最后一次的查找设置继续查找
Edit->FindPrevious/查找上一个:
适用最后一次的设置修改查找方向,继续查找
六、标记包
可以在包列表面板对包进行标记。
不管原来设置的颜色是怎样的,被标记的包的背景色将变为黑色。
标记包有助于在分析大的包文件时进行查找。
标记方法:
单击右键,选择MarkPacket:
警告:
包标记并没有存储在捕捉文件中或任何其他地方,关闭文件后,所有标记将会丢失。
在保存