⽹络抓包⼯具wireshark⼊门教程详解
Wireshark(前称Ethereal)是⼀个⽹络数据包分析软件。⽹络数据包分析软件的功能是截取⽹络数据包,并尽可能显⽰出最为详细的⽹络数据包数据。
Wireshark使⽤WinPCAP作为接⼝,直接与⽹卡进⾏数据报⽂交换。
⽹络管理员使⽤Wireshark来检测⽹络问题,⽹络安全⼯程师使⽤Wireshark来检查资讯安全相关问题,开发者使⽤Wireshark来为新的通讯协定除错,普通使⽤者使⽤Wireshark来学习⽹络协定的相关知识。
当然,有的⼈也会“居⼼叵测”的⽤它来寻⼀些敏感信息。Wireshark相对于tcpdump⽽⾔,界⾯更友好,功能更强⼤。
wireshark基本使⽤
以下的介绍都是以mac下的wireshark 1.12.2版本为基础。
认识界⾯
说明:
常⽤按钮从左到右的功能依次是:
1、列出可⽤接⼝。
2、抓包时需要设置的⼀些选项。⼀般会保留最后⼀次的设置结果。
3、开始新的⼀次抓包。
4、暂停抓包。
5、继续进⾏本次抓包。
6、打开抓包⽂件。可以打开之前抓包保存后的⽂件。不仅可以打开wireshark软件保存的⽂件,也可以打开tcpdump使⽤-w参数保存的⽂件。
7、保存⽂件。把本次抓包或者分析的结果进⾏保存。
8、关闭打开的⽂件。⽂件被关闭后,就会切换到初始界⾯。
9、重载抓包⽂件。
wireshark设置数据抓取选项
点击常⽤按钮中的设置按钮,就会弹出设置选项对话框。在这个对话框中我们可以选中需要监听的接⼝,设置混杂模式,设置抓取数据包的过滤条件。如下图:
⾸先,选中需要监听获取数据包的接⼝。接⼝列表区列出了所有可以使⽤的接⼝。如果接⼝前⾯的复选框被选中,说明对这个接⼝监听捕获数据包。
其次,设置混杂模式。设置混杂模式的作⽤是将⽹卡设置到混杂模式。如果不设置混杂模式,你的计算机只能获取数据包发往的⽬标是你计算机和从你计算机出去的数据包。
如果设置了混杂模式,你就可以捕获局域⽹中所有的数据包。如果窗⼝中的 "Use promiscuous mode on all interfaces"前⾯的复选框被选中,说明对所有的接⼝使⽤混杂模式。如果想单独设置,可以双击接⼝列表中的接⼝,会弹出如下的对话框。然后选中或者去掉“Capture packets in promiscuous mode”前⾯复选框。然后点ok按钮。
再次,设置捕获过滤条件。在点设置按钮弹出的主设置对话框中和双击接⼝列表弹出的对话框中都会有“Capture Filter”项。
在⽂本框中我们可以设置捕获过滤条件。如,我们只捕获http相关的数据包,我们就可以设置捕获条件为“port 80”。
因为http使⽤的是80端⼝。
最后,所有的设置完毕后,点击设置主窗⼝中的“Start”按钮,开始捕获数据。数据捕获完后,可以点常⽤按钮中的“保存”按钮保存数据。
使⽤显⽰过滤器
显⽰过滤器应⽤于捕获⽂件,⽤来告诉wireshark只显⽰那些符合过滤条件的数据包。
显⽰过滤器⽐捕获过滤器更常⽤。他可以⽤来过滤不想看到的数据包,但是不会把数据删除。如果想恢复原状,只要把过滤条件删除即可。
字符串截取工具
过滤器表达式对话框,是的wireshark的可以很简单的设置过滤表达式。点击“Expression”按钮就可以打开这个对话框。如下图:
对话框分左中右三部分。左边为可以使⽤的所有协议域。右边为和协议域相关的条件值。
中间为协议域与条件值之间的关系。过滤器表达式对于初学者很有⽤。如上图,我们创建的表达式的作⽤是,只显⽰http协议包中包含关键词“bo56”的所有数据包。
Field name说明:
这个列表中展⽰了所有⽀持的协议。点击前⾯的三⾓标志后,可以列出本协议的可过滤字段。当选中“Field name”列表中的任何⼀项,只需要输⼊你想要的协议域,就会⾃动定位到相应的协议域选项。Relation说明:
is present    如果选择的协议域存在,则显⽰相关数据包。
contains    判断⼀个协议,字段或者分⽚包含⼀个值
matches            判断⼀个协议或者字符串匹配⼀个给定的Perl表达式。
Value(Protocol)说明:
此处输⼊合适的值。如果选择的协议域和这个值满⾜Relation中指定的关系,则显⽰相关数据包。
Predefined values说明:
有些协议域包含了预先定义的值,有点类似于c语⾔中的枚举类型。如果你选择的协议域包含这样的值,你可以在这个列表中选择。
Function函数说明:
过滤器的语⾔还有下⾯⼏个函数:
upper(string-field)-把字符串转换成⼤写
lower(string-field)-把字符串转换成⼩写
upper((和lower((在处理⼤⼩写敏感的字符串⽐较时很有⽤。例如:
upper(ncp.nds_stream_name) contains "BO56.COM"
lower(mount.dump.hostname) =="BO56.COM"
如果你熟悉了这个规则之后你就会发现⼿动输⼊表达式更有效率。当时⼿动在flter⽂本框中输⼊表达时,如果输⼊的语法有问题,⽂本框的背景⾊会变成红⾊。
这时候,你可以继续输⼊或者修改,知道⽂本框中的表达式正确后,⽂本框的背景⾊⼜会变成绿⾊。
wireshark使⽤着⾊规则
你经常会在数据包列表区域中看到不同的颜⾊。这就是wireshark做的很⼈性化的⼀⽅⾯。它可以让你指定条件,把符合条件的数据包按指定的颜⾊显⽰。这样你查数据包会更⽅便些。
下⾯我们说⼀下如何设置颜⾊规则。
点击“view”菜单,然后选择“Coloring Rules”选项就会弹出设置颜⾊规则设置对话框。你点击颜⾊规则设置的快捷按钮也可以打开颜⾊设置对话框。如下图:
打开的对话框中默认已经有⼀些规则。我们抓取的数据包中经常会看到⼀些不同的颜⾊,就是应⽤的这些默认的规则。点击“New”按钮可以添加规则。如下图:
name字段中填写规则的名称,⽅便记忆。
string字段中填写过滤规则。这⾥的语法和显⽰规则表达式⼀致。点击上图中的“Expression”按钮,你就会看到熟悉的规则表达式对话。
Foreground Color按钮⽤于选择前景⾊。
Background Color按钮⽤于选择背景⾊。
Disabled按钮⽤于指⽰是否禁⽤这条规则。
点击ok按钮后,规则⾃动会添加到规则列表中的最前端。
注意:wireshark在应⽤规则的时候,是按⾃上⽽下的顺序去应⽤规则。因此刚添加的规则会优先应⽤。如果你想调整顺序,可以选中要调整顺序的规则,然后点击右边的“UP” 或则 “Down” 按钮。颜⾊规则设置好后,只需要点apply按钮就可以应⽤规则了。规则效果应⽤如下图:
wireshark使⽤图表
图形分析是数据分析中必不可少的⼀部分。也是wireshark的⼀⼤亮点。wireshark有不同的图形展现功能,以帮助你了解捕获的数据包。下⾯我们对经常使⽤的IO图,双向时间图做下介绍。
IO图
wireshark的IO图让你可以对⽹络上的吞吐量绘图。让你了解⽹络数据传输过程中的峰值和波动情况。
通过“Statistics”菜单中的“IO Graphs”选项可以打开这个IO图对话框。如下图:
可以看到IO图表对话框中会分为三个区。
过滤器区:设置过滤条件,⽤于图形化展⽰过滤条件相关数据包的变化情况。⽽且可以为每个不同的条件指定不同的颜⾊。过滤条件的语法和之前介绍的显⽰过滤器的语法⼀致。过滤条件为空,此图形显⽰所有流量。
坐标区:在这⾥可以设置图表的x轴和y轴。x轴为时间,y轴为包的数量。如图,我们设置Y轴的单位是Bytes/Tick。
趋势图区:根据过滤器设置的条件和坐标区设置,数据分析后回在这个区域以图形化⽅式展⽰。点击图形中的点,会⾃动定位到相应的数据包。点击趋势图中的低⾕点,你会发现⼤量的数据包重传。
IO图表还可以通过函数对数据进⾏聚合处理。
点击Y轴中Unit选项中的Advanced后,就会再过滤器区就会增加Calc选项。如下图:
wireshark相关函数说明:
MIN( ), AVG( ), MAX( ) 分别是统计协议域中数值的最⼩,平均和最⼤值。注意,这三个聚合函数只对协议域的值为数字的才有效。
Count( ) 此函数计算时间间隔内事件发⽣的次数,在查看TCP分析标识符时很有⽤,例如重传。
Sum( ) 该函数统计事件的累加值。和MIN()函数⼀样,这个也只有协议域的值为数字的情况下才有效。
wireshark双向时间图
wireshark还有⼀个功能就是可以对⽹络传输中的双向时间进⾏绘图。
双向时间(round-trip time, RTT),就是⼀个数据包被确认正常接收所花费的时间。
以tcp协议为例,就是你push⼀个数据到⼀台主机,主机回应⼀个ack给你的主机,你的主机并成功接收ack回应。这两个过程花费的时间总和就是双向时间。双向时间通常⽤来寻⽹络传输过程中的慢点和瓶颈,⽤以判断⽹络传输是否有延迟。
通过“Statistics”菜单中的“Tcp  StreamGraph”中的“Round Trip Time Graph”选项可以打开这个双向时间图对话框。如下图:

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。