本文使用WireShark版本为1.11.0,其他版本在界面和功能上可能略有不同,读者请根据自己所使用的版本,自行类推。
有时候,我们需要将抓到的报文保存成文件,以便之后的分析和研究。点击Save As…或者使用快捷键组合“Shift+Ctrl+S”。
弹出另存为对话框,选择需要保存的文件格式。如果不选择的话,默认保存成pcap或者pcapng文件。
如果不需要保存所有的报文,只需要保存部分报文。则点击Export Specified Packets…
弹出对话框后,可以根据Packet Range来设置自己希望保存的报文。
其他输出方式可参考以下选项,读者可选择自己希望输出的格式,在此不再赘述。
WireShark有两种方法可以打开抓包文件
在你打开新文件时,如果你没有保存当前文件,Wireshark会提示你是否保存,以避免数据丢失,当然你可以在首选项禁止保存提示。
WireShark支持打开的文件格式如下图:
有时候你需要将多个抓包文件合并到一起。Wireshark上只能在同一个实体运行一个抓包进程,所以有的情况,可能需要同时开启多个Wireshark实体同时进行抓包,此时合并抓包文件的功能就很有用了。
有两种方法可以合并抓取文件:
打开的对话框,可以选择如何合并。
前文我们已经提到过如何使用WireShark抓取一个网卡上的报文。接下来我们介绍一下Capture Option的配置,以便大家更加灵活的使用WireShark来应对各种抓包情况。
Capture Option从如下图菜单打开。
弹出Capture Option对话框。在Capture框里列出的所有本机可识别的网卡,在网卡前打勾即可选定。需要同时抓取多个网卡的报文,则在此选择多块网卡即可。
双击网卡,弹出对话框,设置每块网卡的抓包属性。
在处理TCP协议时,如果想要查看TCP流中的应用层数据,例如查看telnet流中的密码或者HTTP交互的报文,这些都可以通过Wireshark的"Following TCP streams"功能来实现。
在包列表中选择一个你感兴趣的TCP包,然后选择Wireshark工具栏菜单的"Following TCP Streams"选项(或者使用包列表鼠标右键的上下文菜单)。
Wireshark会创建合适的显示过滤器,并弹出一个对话框显示TCP流的所有数据。
流的内容出现的顺序同他们在网络中出现的顺序一致。从A到B的通信标记为红色,从B到A的通信标记为蓝色。当然,可以在"Edit/Preferences"菜单项的"Colores"修改颜色。
在抓取过程中,TCP流不能实时更新。想得到最近的内容需要重新打开对话框。
你可以用以下格式浏览流数据:
在抓包过程中,每个包在进入时都被加上时间戳,这个时间戳将会保存在抓包文件中,可以在以后分析和研究时使用。
那么,时间戳是从哪里来的呢?Wireshark从libpcap(WinPcap) libraray中获得时间戳。而libpcap(winpcap)又是从操作系统内核获得的时间。如果抓取数据是从文件载入的,很显然Wireshark从文件中获得时间戳数据。
抓取时,Wireshark使用libpcap(WinPcap)抓取库(支持纳秒精度)。除非你在专用的抓取硬件上进行抓取,一般这样的精度已经足够了。
在View菜单下,选择Time Display Format下拉菜单,则可以选择合适的时间格式。
可用的预置格式:
可用精度:
用户可以设置参考时间,以此作为后续包的起始时间。此方法用于查看特定包之间的时间间隔。
在期望作为起点的包上右键,选择Set Time Reference(toggle)。
可以看到包已经被设置为参考时间点,其后的包以此作为起始时间进行显示。
需要注意的是,参考时间是不能保存到包文件中的,关闭文件后就会丢失。而时间参考可能仅仅在时间格式为"Seconds Since Beginning of Capture"模式下有用,其他时间显示形式下可能无法显示。
Wireshark自身不会创建时间戳,最终是通过读取系统时间来获得。所以,准确性取决于实际的抓取系统,包括操作系统,物理机的性能等等。
通常USB网卡提供的精度会较差,内置的网卡精度较好。
名字解析尝试将数字地址解析成适合人们阅读的格式。WireShark通过系统/网络服务(例如获取主机名)或指定的赋值文件来解析名称。
名字解析可以分协议层进行允许和禁止。
以太网地址解析尝试将MAC地址(e.g. 00:0f:e2:45:4f:48)解析为适合阅读的地址。
Wireshark会向操作系统ARP名字解析发出请求,将以太网地址转换为对应的IP地址(e.g. 00:0f:e2:45:4f:48->192.168.0.1)。
如果ARP解析错误,Wireshark会尝试将以太网地址解析为已知设备名。这种解析需要用户指定一个ethers文件为mac地址分配名称。(e.g. 00:0f:e2:45:4f:48 -> H3CSS).
如果ARP解析和ethers文件都无法成功解析,Wireshark会尝试转换mac地址的前三个字节为厂商名的缩写。mac地址的前三个字节是IEEE为各厂商分配的独立地址,通过前三个字节可以得出每个网络设备的供应商,当然这些也是可以修改的。(e.g. 00:0f:e2:45:4f:48 -> Hangzhou_45:4f:48).
IP地址解析将IP地址(e.g. 216.239.37.99)转换为适合阅读的地址。
Wireshark会向DNS请求,将IP地址转换为相关联的主机名(e.g. 216.239.37.99 -> www.google.com)。
如果DNS解析不成功,Wireshark会尝试使用用户提供的主机文件将IP地址转换为对应的主机名。(e.g. 216.239.37.99 -> www.google.com)。
端口名解析将TCP/UDP端口(e.g.80)转换为更加易读的方式。
Wireshark会向操作系统发出请求,转换TCP/UDP端口为已知名称(e.g. 80->http)。
WireShark提供多种多样的统计功能。
文件摘要。
Comments Summary是以文字形式显示文件摘要。
所抓取的所有报文的层次结构统计。
不同地址的会话统计。
通讯终端地址统计
包长分布统计。
可以使用display filter先进行包过滤。若是不填写filter,则默认是所抓取的所有报文。
可以生成包数目随时间变化的曲线图。
其他统计选项都与具体协议和功能有关,读者可自行尝试。
WireShark是一款开源软件,所以,如果需要让WireShark认出更多的协议报文,一来可以等待WireShark发布新版本,二来可以自行根据标准进行开发。其原理和开发文档读者可自行GOOGLE。
随着我司SDN解决方案的推出,其重要组件VCF Controller是安装在Ubuntu上的。所以有时候需要在Ubuntu下安装支持openflow协议的WireShark,以便后续抓取openflow报文进行研究和分析。
WireShark安装包及插件可以在FTP/测试资料专区中取到。
安装依赖包,将所有的依赖包都装上。再安装WireShark 1.6.7。
将openflow.so上传至 /usr/lib/wireshark/libwireshark1/plugins/
运行WireShark,可以抓到openflow的报文,并看到openflow协议的内容。
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2025 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
Copyright © 2013 - 2025 Tencent Cloud.
All Rights Reserved. 腾讯云 版权所有