计算机网络课上,需要我们灵活运用网络协议分析仪wireshark,最近一直在看,感觉有点难,并不是软件本身操作难,而是看懂一大群包的含义难,这个难主要也因为它是全英文的~~。。
好了,大致总结一下,基本都是大神的,引用的,与大家分享。
wireshark 开始抓包
开始界面
wireshark是捕获机器上的某一块网卡的网络包,当你的机器上有多块网卡的时候,你需要选择一个网卡。
点击Caputre->Interfaces.. 出现下面对话框,选择正确的网卡。然后点击"Start"按钮, 开始抓包
Wireshark 窗口介绍
WireShark 主要分为这几个界面
1. Display Filter(显示过滤器), 用于过滤
2. Packet List Pane(封包列表), 显示捕获到的封包, 有源地址和目标地址,端口号。 颜色不同,代表
3. Packet Details Pane(封包详细信息), 显示封包中的字段
4. Dissector Pane(16进制数据)
5. Miscellanous(地址栏,杂项)
使用过滤是非常重要的, 初学者使用wireshark时,将会得到大量的冗余信息,在几千甚至几万条记录中,以至于很难找到自己需要的部分。搞得晕头转向。
过滤器会帮助我们在大量的数据中迅速找到我们需要的信息。
过滤器有两种,
一种是显示过滤器,就是主界面上那个,用来在捕获的记录中找到所需要的记录
一种是捕获过滤器,用来过滤捕获的封包,以免捕获太多的记录。 在Capture -> Capture Filters 中设置
保存过滤
在Filter栏上,填好Filter的表达式后,点击Save按钮, 取个名字。比如"Filter 102",
Filter栏上就多了个"Filter 102" 的按钮。
过滤表达式的规则
表达式规则
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.
封包详细信息 (Packet Details Pane)
这个面板是我们最重要的,用来查看协议中的每一个字段。
各行信息分别为
Frame: 物理层的数据帧概况
Ethernet II: 数据链路层以太网帧头部信息
Internet Protocol Version 4: 互联网层IP包头部信息
Transmission Control Protocol: 传输层T的数据段头部信息,此处是TCP
Hypertext Transfer Protocol: 应用层的信息,此处是HTTP协议
TCP包的具体内容
从下图可以看到wireshark捕获到的TCP包中的每个字段。
看到这, 基本上对wireshak有了初步了解, 现在我们看一个TCP三次握手的实例
三次握手过程为
这图我都看过很多遍了, 这次我们用wireshark实际分析下三次握手的过程。
打开wireshark, 打开浏览器输入 http://www.cr173.com
在wireshark中输入http过滤, 然后选中GET /tankxiao HTTP/1.1的那条记录,右键然后点击"Follow TCP Stream",
这样做的目的是为了得到与浏览器打开网站相关的数据包,将得到如下图
图中可以看到wireshark截获到了三次握手的三个数据包。第四个包才是HTTP的, 这说明HTTP的确是使用TCP建立连接的。
第一次握手数据包
客户端发送一个TCP,标志位为SYN,序列号为0, 代表客户端请求建立连接。 如下图
第二次握手的数据包
服务器发回确认包, 标志位为 SYN,ACK. 将确认序号(Acknowledgement Number)设置为客户的I S N加1以.即0+1=1, 如下图
第三次握手的数据包
客户端再次发送确认包(ACK) SYN标志位为0,ACK标志位为1.并且把服务器发来ACK的序号字段+1,放在确定字段中发送给对方.并且在数据段放写ISN的+1, 如下图:
就这样通过了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面版选择的字节为二进制文件。 | |
Ctr+P | 打印捕捉包的全部或部分,将会弹出打印对话框。 | |
Quit | Ctrl+Q | 退出Wireshark,如果未保存文件,Wireshark会提示是否保存。 |
Edit——包括如下项目:查找包,时间参考,标记一个多个包,设置预设参数。(剪切,拷贝,粘贴不能立即执行。)
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 ——控制捕捉数据的显示方式,包括颜色,字体缩放,将包显示在分离的窗口,展开或收缩详情面版的地树状节点
“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——包含到指定包的功能。
“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——捕捉数据包
“Capture”菜单项
菜单项 | 快捷键 | 说明 |
---|---|---|
Interface… | 在弹出对话框选择您要进行捕捉的网络接口 | |
Options… | Ctrl+K | 打开设置捕捉选项的对话框并可以在此开始捕捉 |
Start | 立即开始捕捉,设置都是参照最后一次设置。 | |
Stop | Ctrl+E | 停止正在进行的捕捉 |
Restart | 正在进行捕捉时,停止捕捉,并按同样的设置重新开始捕捉.仅在您认为有必要时 | |
Capture Filters… | 打开对话框,编辑捕捉过滤设置,可以命名过滤器,保存为其他捕捉时使用 |
Analyze ——包含处理显示过滤,允许或禁止分析协议,配置用户指定解码和追踪TCP流等功能。
“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 ——包括的菜单项用户显示多个统计窗口,包括关于捕捉包的摘要,协议层次统计等等。
菜单项 | 快捷键 | 描述 |
---|---|---|
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万数据包)
原始数据包
抓包分析
输入:oicq进行筛选
oicq协议分析
- oicq统计结果
查看单包的数据,在data处可以看见QQ号码
详细数据包
选取第一个数据包,点击右键,我们可以看见有很多选项,我们选取“follow UDP stream”,即追踪该UDP流,跟踪整个会话
跟踪会话
可以看见,我的得到了该次聊天会话
wireshark抓包分析
同时,我们还可以选择另外一种筛选方式,在详细数据包中,我们选择QQ号码那一栏作为筛选的数据,点击数据包QQ号码处,右键,作为筛选……
wireshark筛选分析
接下来,我们看看由浏览器发起的对www.zike.me的访问,我们主要看进行对dns数据包的筛选
第一步还是选择协议,dns
dns数据包
同时,也可以直接选择所访问的域名:dns.qry.name == “www.zike.me”,直接进行筛选
wireshark抓包筛选分析
下图可以看见,我本机发起了对www.zike.me的查询,我本地的缓存域名服务器是中国电信的61.128.128.68
dns回应包
然后看见DNS服务器进行回应,回复说www.zike.me的IP地址是173.231.1.221
dns服务器回应数据包
同时,我们可以对本次抓包进行统计概况,如下图
wireshark统计汇总
可以看见总述里面,包数,实时流量大小等等。
wireshark summary
对本次抓包的协议总述
也就这么多了,希望对大家有用。