网络上出了什么问题,同事就一句,“那就抓个包看看呗”。 不会抓.. 抓了也不会分析.. 好吧,还是简单学会下如何使用wireshark吧。
本文简单说明wireshark的抓包操作,便于日常数据包的抓取分析等操作。如有错误,麻烦指正,谢谢。
详细说明操作可参看书籍《wireshark数据包分析实战》。
软件版本:V 1.12.1
安装软件wireshark就不说了~ 记得安装WinPcap驱动。
打开软件,在进行抓包前先说下一些常用的选项
如图先选择所要监听的接口,在开始之前,先点击Options按钮。
进行相应的网络操作后,暂停抓包
界面分三个面板,红色标记的是所抓包的列表;选择其中一个包后,中间绿色标记的面板会显示该包的详细信息;最下面用蓝色标记的面板则是该数据报的原始数据。
从红色面板可以简单看出一个包在列表中所对应的序号、被捕获的相对时间、原地址、目标地址、协议、包的长度和概要信息。
中间面板分层次的显示一个数据包的内容,个人自行在旁边进行了分层,可依次展开,查看每层的详细内容。
最下面的面板为原始数据,平常不大会进行分析查看。
开始最为重要的一部分,分析数据
首先筛选出所要分析类型的数据包,便于查找分析,在Filter:控件后面输入过滤表达式。
这个时候可以运用上面我在第二面板旁边标注的层次关系来考虑编写过滤表达式,可能好记一点。
比如你想过滤出mac地址为44:19:B6:66:93:40的数据包,则对应链路层,表达式可写:eth.addr == 44:19:B6:66:93:40 (注意这边用==)。
比如你想过滤出192.168.2.1的数据包,ip对应网络层,表达式可写:ip.addr == 192.168.2.1,如是源ip过滤,则写ip.src== 192.168.2.1。
比如你想过滤出端口8000的数据包,端口对应在传输层,这个时候再考虑是tcp协议还是udp协议,如tcp,则写tcp.port == 8000;若只想过滤源端口,则是tcp.srcport == 8000
如果有些数据包一时写不出表达式,那么可以找个类似的数据包,然后展开对应分层,进行如图操作后,会给出具体的过滤表达式:
- 常用的一些协议并不需要那么麻烦,如arp、dns、dhcp(应该输bootp)、http可以直接输入过滤。
- 单击选择你要分析的数据包,可以按Ctrl+M,将其标记,以黑底白字显示。
- 如果想查看确切发生的时间点,可以按如下所列快捷键,
- 或者将此数据包作为基准,而之后的数据包以此计算相对时间戳,可以右键单机该数据包,选择set time reference
将刷选的数据进行选择保存
如果是1.8版本之前的,则选择File->Save As
如果是1.8版本之后的,则选择File->Export Specified Packets
在弹出的对话框默认选择了显示过滤的包,并选择了所有。