【学习笔记】Wireshark的用法

  计算机网络课上,需要我们灵活运用网络协议分析仪wireshark,最近一直在看,感觉有点难,并不是软件本身操作难,而是看懂一大群包的含义难,这个难主要也因为它是全英文的~~。。

好了,大致总结一下,基本都是大神的,引用的,与大家分享。

wireshark 开始抓包

开始界面

【学习笔记】Wireshark的用法

wireshark是捕获机器上的某一块网卡的网络包,当你的机器上有多块网卡的时候,你需要选择一个网卡。

点击Caputre->Interfaces.. 出现下面对话框,选择正确的网卡。然后点击"Start"按钮, 开始抓包

【学习笔记】Wireshark的用法

Wireshark 窗口介绍

【学习笔记】Wireshark的用法

WireShark 主要分为这几个界面

1. Display Filter(显示过滤器),  用于过滤

2. Packet List Pane(封包列表), 显示捕获到的封包, 有源地址和目标地址,端口号。 颜色不同,代表

3. Packet Details Pane(封包详细信息), 显示封包中的字段

4. Dissector Pane(16进制数据)

5. Miscellanous(地址栏,杂项)

【学习笔记】Wireshark的用法

使用过滤是非常重要的, 初学者使用wireshark时,将会得到大量的冗余信息,在几千甚至几万条记录中,以至于很难找到自己需要的部分。搞得晕头转向。

过滤器会帮助我们在大量的数据中迅速找到我们需要的信息。

过滤器有两种,

一种是显示过滤器,就是主界面上那个,用来在捕获的记录中找到所需要的记录

一种是捕获过滤器,用来过滤捕获的封包,以免捕获太多的记录。 在Capture -> Capture Filters 中设置

保存过滤

在Filter栏上,填好Filter的表达式后,点击Save按钮, 取个名字。比如"Filter 102",

【学习笔记】Wireshark的用法

Filter栏上就多了个"Filter 102" 的按钮。

【学习笔记】Wireshark的用法

过滤表达式的规则

表达式规则

1. 协议过滤

比如TCP,只显示TCP协议。

2. IP 过滤

比如 ip.src ==192.168.1.102 显示源地址为192.168.1.102,

ip.dst==192.168.1.102, 目标地址为192.168.1.102

3. 端口过滤

tcp.port ==80,  端口为80的

tcp.srcport == 80,  只显示TCP协议的愿端口为80的。

4. Http模式过滤

http.request.method=="GET",   只显示HTTP GET方法的。

5. 逻辑运算符为 AND/ OR

常用的过滤表达式

过滤表达式 用途
http 只查看HTTP协议的记录
ip.src ==192.168.1.102 or ip.dst==192.168.1.102  源地址或者目标地址是192.168.1.102
   
   

封包列表(Packet List Pane)

封包列表的面板中显示,编号,时间戳,源地址,目标地址,协议,长度,以及封包信息。 你可以看到不同的协议用了不同的颜色显示。

你也可以修改这些显示颜色的规则,  View ->Coloring Rules.

【学习笔记】Wireshark的用法

封包详细信息 (Packet Details Pane)

这个面板是我们最重要的,用来查看协议中的每一个字段。

各行信息分别为

Frame:   物理层的数据帧概况

Ethernet II: 数据链路层以太网帧头部信息

Internet Protocol Version 4: 互联网层IP包头部信息

Transmission Control Protocol:  传输层T的数据段头部信息,此处是TCP

Hypertext Transfer Protocol:  应用层的信息,此处是HTTP协议

【学习笔记】Wireshark的用法

TCP包的具体内容

从下图可以看到wireshark捕获到的TCP包中的每个字段。

【学习笔记】Wireshark的用法

看到这, 基本上对wireshak有了初步了解, 现在我们看一个TCP三次握手的实例

三次握手过程为

【学习笔记】Wireshark的用法

这图我都看过很多遍了, 这次我们用wireshark实际分析下三次握手的过程。

打开wireshark, 打开浏览器输入 http://www.cr173.com

在wireshark中输入http过滤, 然后选中GET /tankxiao HTTP/1.1的那条记录,右键然后点击"Follow TCP Stream",

这样做的目的是为了得到与浏览器打开网站相关的数据包,将得到如下图

【学习笔记】Wireshark的用法

图中可以看到wireshark截获到了三次握手的三个数据包。第四个包才是HTTP的, 这说明HTTP的确是使用TCP建立连接的。

第一次握手数据包

客户端发送一个TCP,标志位为SYN,序列号为0, 代表客户端请求建立连接。 如下图

【学习笔记】Wireshark的用法

第二次握手的数据包

服务器发回确认包, 标志位为 SYN,ACK. 将确认序号(Acknowledgement Number)设置为客户的I S N加1以.即0+1=1, 如下图

【学习笔记】Wireshark的用法

第三次握手的数据包

客户端再次发送确认包(ACK) SYN标志位为0,ACK标志位为1.并且把服务器发来ACK的序号字段+1,放在确定字段中发送给对方.并且在数据段放写ISN的+1, 如下图:

【学习笔记】Wireshark的用法

就这样通过了TCP三次握手,建立了连接

File菜单介绍

菜单项 快捷键 描述
Open… Ctr+O 显示打开文件对话框,让您載入捕捉文件用以浏览。
Open Recent   弹出一个子菜单显示最近打开过的文件供选择。
Merg   显示合并捕捉文件的对话框。让您选择一个文件和当前打开的文件合并。
Close Ctrl+W 关闭当前捕捉文件,如果您未保存,系统将提示您是否保存(如果您预设了禁止提示保存,将不会提示)
Save Crl+S 保存当前捕捉文件,如果您没有设置默认的保存文件名,Wireshark出现提示您保存文件的对话框。
Save As Shift+Ctrl+S 让您将当前文件保存为另外一个文件面,将会出现一个另存为的对话框
File Set>List Files   允许您显示文件集合的列表。将会弹出一个对话框显示已打开文件的列表。
File Set>Next File   如果当前載入文件是文件集合的一部分,将会跳转到下一个文件。如果不是,将会跳转到最后一个文件。这个文件选项将会是灰色。
File set>Previous Files   如果当前文件是文件集合 的一部分,将会调到它所在位置的前一个文件。如果不是则跳到文件集合的第一个文件,同时变成灰色。
Export> as “Plain Text” File…   这个菜单允许您将捕捉文件中所有的或者部分的包导出为plain ASCII text格式。它将会弹出一个Wireshark导出对话框。
Export >as “PostScript” Files   将捕捉文件的全部或部分导出为PostScrit文件。
Export > as “CVS” (Comma Separated Values Packet Summary)File…   导出文件全部或部分摘要为.cvs格式(可用在电子表格中)。。
Export > as “PSML” File…   导出文件的全部或部分为PSML格式(包摘要标记语言)XML文件。将会弹出导出文件对话框。
Export as “PDML” File…   导出文件的全部或部分为PDML(包摘要标记语言)格式的XML文件。
Export > Selected Packet Bytes…   导出当前在Packet byte面版选择的字节为二进制文件。
Print Ctr+P 打印捕捉包的全部或部分,将会弹出打印对话框。
Quit Ctrl+Q 退出Wireshark,如果未保存文件,Wireshark会提示是否保存。

Edit——包括如下项目:查找包,时间参考,标记一个多个包,设置预设参数。(剪切,拷贝,粘贴不能立即执行。)
 
【学习笔记】Wireshark的用法
 
Edit菜单项

菜单项 快捷键 描述
Copy>As Filter Shift+Ctrl+C 使用详情面版选择的数据作为显示过滤。显示过滤将会拷贝到剪贴板。
Find Packet… Ctr+F 打开一个对话框用来通过限制来查找包
Find Next Ctrl+N 在使用Find packet以后,使用该菜单会查找匹配规则的下一个包
Find Previous Ctr+B 查找匹配规则的前一个包。
Mark Packet(toggle) Ctrl+M 标记当前选择的包。
Find Next Mark Shift+Ctrl+N 查找下一个被标记的包
Find Previous Mark Ctrl+Shift+B 查找前一个被标记的包
Mark ALL Packets   标记所有包
Unmark All Packet   取消所有标记
Set Time Reference(toggle) Ctrl+T 以当前包时间作为参考
Find Next Reference   找到下一个时间参考包
Find Previous Refrence…   找到前一个时间参考包
Preferences… Shift+Ctrl+P 打开首选项对话框,个性化设置Wireshark的各项参数,设置后的参数将会在每次打开时发挥作用。

View ——控制捕捉数据的显示方式,包括颜色,字体缩放,将包显示在分离的窗口,展开或收缩详情面版的地树状节点
 
【学习笔记】Wireshark的用法
 
“View”菜单项

菜单项 快捷键 描述
Main Toolbar   显示隐藏Main toolbar(主工具栏)
Filter Toolbar   显示或隐藏Filter Toolbar(过滤工具栏)
Statusbar   显示或隐藏状态栏
Packet List   显示或隐藏Packet List pane(包列表面板)
Packet Details   显示或隐藏Packet details pane(包详情面板)
Packet Bytes   显示或隐藏packet Bytes pane(包字节面板)
Time Display Fromat>Date and Time of Day: 1970-01-01 01:02:03.123456   选择这里告诉Wireshark将时间戳设置为绝对日期-时间格式(年月日,时分秒)
Time Display Format>Time of Day: 01:02:03.123456   将时间设置为绝对时间-日期格式(时分秒格式)
Time Display Format > Seconds Since Beginning of Capture: 123.123456   将时间戳设置为秒格式,从捕捉开始计时,见
Time Display Format > Seconds Since Previous Captured Packet: 1.123456   将时间戳设置为秒格式,从上次捕捉开始计时
Time Display Format > Seconds Since Previous Displayed Packet: 1.123456   将时间戳设置为秒格式,从上次显示的包开始计时
Time Display Format > ——    
Time Display Format > Automatic (File Format Precision)   根据指定的精度选择数据包中时间戳的显示方式
Time Display Format > Seconds: 0   设置精度为1秒
Time Display Format > …seconds: 0….   设置精度为1秒,0.1秒,0.01秒,百万分之一秒等等。
Name Resolution > Resolve Name   仅对当前选定包进行解析
Name Resolution > Enable for MAC Layer   是否解析Mac地址
Name Resolution > Enable for Network Layer   是否解析网络层地址(ip地址)
Name Resolution > Enable for Transport Layer   是否解析传输层地址
Colorize Packet List   是否以彩色显示包
Auto Scrooll in Live Capture   控制在实时捕捉时是否自动滚屏,如果选择了该项,在有新数据进入时, 面板会项上滚动。您始终能看到最后的数据。反之,您无法看到满屏以后的数据,除非您手动滚屏
Zoom In Ctrl++ 增大字体
Zoom Out Ctrl+- 缩小字体
Normal Size Ctrl+= 恢复正常大小
Resiz All Columnus   恢复所有列宽
  注意
除非数据包非常大,一般会立刻更改
Expend Subtrees   展开子分支
Expand All   看开所有分支,该选项会展开您选择的包的所有分支。
Collapse All   收缩所有包的所有分支
Coloring Rulues…   打开一个对话框,让您可以通过过滤表达来用不同的颜色显示包。这项功能对定位特定类型的包非常有用
Show Packet in New Window   在新窗口显示当前包,(新窗口仅包含View,Byte View两个面板)
Reload Ctrl+R 重新再如当前捕捉文件

GO——包含到指定包的功能。
 
 
【学习笔记】Wireshark的用法
“GO”菜单项

菜单项 快捷键 描述
Back Alt+Left 跳到最近浏览的包,类似于浏览器中的页面历史纪录
ForWard Alt+Right 跳到下一个最近浏览的包,跟浏览器类似
Go to Packet Ctrl+G 打开一个对话框,输入指定的包序号,然后跳转到对应的包。
Go to Corresponding Packet   跳转到当前包的应答包,如果不存在,该选项为灰色
Previous Packet Ctrl+UP 移动到包列表中的前一个包,即使包列表面板不是当前焦点,也是可用的
Next Packet Ctrl+Down 移动到包列表中的后一个包,同上
First Packet   移动到列表中的第一个包
Last Packet   移动到列表中的最后一个包

Capture——捕捉数据包

【学习笔记】Wireshark的用法

“Capture”菜单项

菜单项 快捷键 说明
Interface…   在弹出对话框选择您要进行捕捉的网络接口
Options… Ctrl+K 打开设置捕捉选项的对话框并可以在此开始捕捉
Start   立即开始捕捉,设置都是参照最后一次设置。
Stop Ctrl+E 停止正在进行的捕捉
Restart   正在进行捕捉时,停止捕捉,并按同样的设置重新开始捕捉.仅在您认为有必要时
Capture Filters…   打开对话框,编辑捕捉过滤设置,可以命名过滤器,保存为其他捕捉时使用

Analyze ——包含处理显示过滤,允许或禁止分析协议,配置用户指定解码和追踪TCP流等功能。
 
【学习笔记】Wireshark的用法
 
“analyze”菜单项

菜单项 快捷键 说明
Display Filters…   打开过滤器对话框编辑过滤设置,可以命名过滤设置,保存为其他地方使用,见第 6.6 节 “定义,保存过滤器”
Apply as Filter>…   更改当前过滤显示并立即应用。根据选择的项,当前显示字段会被替换成选择在Detail面板的协议字段
Prepare a Filter>…   更改当前显示过滤设置,当不会立即应用。同样根据当前选择项,过滤字符会被替换成Detail面板选择的协议字段
Firewall ACL Rules   为多种不同的防火墙创建命令行ACL规则(访问控制列表),支持Cisco IOS, Linux Netfilter (iptables), OpenBSD pf and Windows Firewall (via netsh). Rules for MAC addresses, IPv4 addresses, TCP and UDP ports, 以及IPv4+混合端口
以上假定规则用于外部接口
Enable Protocols… Shift+Ctrl+R 是否允许协议分析,见第 9.4.1 节 “”Enable Protocols”对话框”

Statistics ——包括的菜单项用户显示多个统计窗口,包括关于捕捉包的摘要,协议层次统计等等。
 
【学习笔记】Wireshark的用法

菜单项 快捷键 描述
Summary   显示捕捉数据摘要
Protocol Hierarchy   显示协议统计分层信息
Conversations/   显示会话列表(两个终端之间的通信)
EndPoints   显示端点列表(通信发起,结束地址)
IO Graphs   显示用户指定图表,(如包数量-时间表)
Conversation List   通过一个组合窗口,显示会话列表
Endpoint List   通过一个组合窗口显示终端列表
Service Response Time   显示一个请求及其相应之间的间隔时间

Help——包含一些辅助用户的参考内容。如访问一些基本的帮助文件,支持的协议列表,用户手册。在线访问一些网站,“关于”

菜单项 快捷键 描述
Open… Ctr+O 显示打开文件对话框,让您載入捕捉文件用以浏览。
Open Recent   弹出一个子菜单显示最近打开过的文件供选择。

如何进行“简单”的抓包筛选。

其实关于wireshark来说,比较重要的还是数对抓包之后的“查询统计分析”,如何在海量的数据包中,抓取出自己关注的数据包是处理问题的第一步,最后再讲解一下如何进行“简单”的抓包筛选。

为了直观,本篇博文以一次实例进行,我在本地对网卡进行了抓包,登录了一次QQ,与网友聊天,并且,访问了一次我的博客www.zike.me,那我就从海量数据包中,抓取关于这两个操作的相关数据包。

首先,我进行了本地抓包,进行了上述两个操作,stop抓包,仅仅十多秒钟,我抓到了3543个数据包,其中存在有我需要的数据包。(从这里看出了“筛选分析”有多么重要,如果数据流量较大,我试验过,较小的网络中,1分钟左右的抓包,可以获取300万数据包)

原始数据包

【学习笔记】Wireshark的用法

抓包分析

输入:oicq进行筛选

【学习笔记】Wireshark的用法

oicq协议分析

【学习笔记】Wireshark的用法

oicq统计结果

查看单包的数据,在data处可以看见QQ号码

【学习笔记】Wireshark的用法

详细数据包

选取第一个数据包,点击右键,我们可以看见有很多选项,我们选取“follow UDP stream”,即追踪该UDP流,跟踪整个会话

【学习笔记】Wireshark的用法

跟踪会话

可以看见,我的得到了该次聊天会话

【学习笔记】Wireshark的用法

wireshark抓包分析

同时,我们还可以选择另外一种筛选方式,在详细数据包中,我们选择QQ号码那一栏作为筛选的数据,点击数据包QQ号码处,右键,作为筛选……

【学习笔记】Wireshark的用法

wireshark筛选分析

接下来,我们看看由浏览器发起的对www.zike.me的访问,我们主要看进行对dns数据包的筛选

第一步还是选择协议,dns

【学习笔记】Wireshark的用法

dns数据包

同时,也可以直接选择所访问的域名:dns.qry.name == “www.zike.me”,直接进行筛选

【学习笔记】Wireshark的用法

wireshark抓包筛选分析

下图可以看见,我本机发起了对www.zike.me的查询,我本地的缓存域名服务器是中国电信的61.128.128.68

【学习笔记】Wireshark的用法

dns回应包

然后看见DNS服务器进行回应,回复说www.zike.me的IP地址是173.231.1.221

【学习笔记】Wireshark的用法

dns服务器回应数据包

同时,我们可以对本次抓包进行统计概况,如下图

【学习笔记】Wireshark的用法

wireshark统计汇总

可以看见总述里面,包数,实时流量大小等等。

【学习笔记】Wireshark的用法

wireshark summary

对本次抓包的协议总述

【学习笔记】Wireshark的用法

也就这么多了,希望对大家有用。

上一篇:vue.js 开发生态总结


下一篇:SQL学习笔记四之MySQL数据操作