wireshark的使用
1、界面介绍
1.网卡选择
2.首页
常用按钮从左到右的功能依次是:
- 列出可用接口。
- 抓包时需要设置的一些选项。一般会保留最后一次的设置结果。开始新的一次抓包。
- 暂停抓包。
- 继续进行本次抓包。
- 打开抓包文件。可以打开之前抓包保存后的文件。不仅可以打开wireshark软件保存的文件,也可以打开tcpdump使用-w参数保存的文件。
- 保存文件。把本次抓包或者分析的结果进行保存。
- 关闭打开的文件。文件被关闭后,就会切换到初始界面。·重载抓包文件。
3.数据包列表,显示捕获到的数据包,每个数据包编号,时间戳,源地址,目标地址,协议,长度,以及数据包信息。
4.数据包详细信息,在数据包列表中选择指定数据包,在数据包详细信息中会显示数据包的所有详细信息内容。数据包详细信息面板是最重要的,用来查看协议中的每一个字段。各行信息分别为. Frame:物理层的数据帧概况
- Frame:物理层的数据帧概况
- Ethernet ll:数据链路层以太网帧头部信息
- Internet Protocol Version 4:互联网层IP包头部信息
- User Datagram Protocol:传输层的数据段头部信息,此处是UDP
- Hypertext Transfer Protocol:应用层的信息,此处是HTTP协议
5.我们可以在过滤器窗口筛选出http协议的相关数据包,并且查看TCP包的每个字段
2、wireshark过滤器
wireshar工具中自带了两种类型的过滤器,学会使用这两种过滤器会帮助我们在大量的数据中迅速找到我们需要的信息。
1.设置数据抓取选项
点击常用按钮中的设置按钮,就会弹出设置选项对话框。在这个对话框中我们可以选中需要监听的接口,设置混杂模式,设置抓取数据包的过滤条件。如下图:
首先,选中需要监听获取数据包的接口。接口列表区列出了所有可以使用的接口。如果接口前面的复选框被选中,说明对这个接口监听捕获数据包。
其次,设置混杂模式。设置混杂模式的作用是将网卡设置到混杂模式。如果不设置混杂模式,你的计算机只能获取数据包发往的目标是你计算机和从你计算机出去的数据包。如果设置了混杂模式,你就可以捕获局域网中所有的数据包。如果窗口中的"Use promiscuous mode on all interfaces"前面的复选框被选中,说明对所有的接口使用混杂模式。如果想单独设置,可以双击接口列表中的接口,会弹出如下的对话框。然后选中或者去掉“Capture packets in promiscuousmode”前面复选框。然后点ok按钮。
2.显示过滤器
显示过滤器应用于捕获文件,用来告诉wireshark只显示那些符合过滤条件的数据包。显示过滤器比捕获过滤器更常用。他可以用来过滤不想看到的数据包,但是不会把数据删除。如果想恢复原状,只要把过滤条件删除即可。
过滤器表达式对话框,是的wireshark的可以很简单的设置过滤表达式。点击“Expression”按钮就可以打开这个对话框。如下图:
对话框分左中右三部分。左边为可以使用的所有协议域(过滤项)。右边为和协议域相关的条件值(过滤值)。中间为协议域与条件值之间的关系(过滤关系)。
一条基本的表达式由过滤项、过滤关系、过滤值三项组成。
比如: http contains baidu.com,http为过滤项,contains为过滤关系, baidu.com为过滤值,表示显示http协议包中包含关键词“baidu.com”的所有数据包
比如: ip.addr == 192.168.1.1,ip.addr是过滤项、==是过滤关系,192.168.1.1是过滤值(整条表达示的意思是找出所有ip协议中源或目标ip、等于、192.168.1.1的数据包)
3.过滤关系
过滤关系就是大于、小于、等于等几种等式关系,我们可以直接看官方表格,注意其中有“English”和“C-like”两个字段,这个意思是说“English”和“C-like”这两种写法在wireshark中是等价的、都是可用的。
4.复合过滤表达式
所谓复合过滤表达式,就是指由多条基本过滤表达式组合而成的表达示。基本过滤表达式的写法还是不变的,复合过滤表达示多出来的东西就只是基本过滤表达示的“连接词”。我们依然直接参照官方表格,同样“English”和“C-like”这两个字段还是说明这两种写法在wireshark中是等价的、都是可用的。
5.执行ping www.baidu.com获取的数据包列表如下
观察上述获取的数据包列表,含有大量的无效数据。这时可以通过设置显示器过滤条件进行提取分析信息。ip.addr == 14.215.177.39 and icmp。并进行过滤
6.常见用显示过滤需求及其对应表达式
- 数据链路层:
- 筛选mac地址为04:f9:38:ad:13:26的数据包: eth.addr == 04:f9:38:ad:13:26
- 筛选源mac地址为04:f9:38:ad:13:26的数据包: eth.src == 04:f9:38:ad:13:26
- 网络层:
- 筛选ip地址为192.168.1.1的数据包: ip.addr == 192.168.1.1
- 筛选192.168.1.0网段的数据: ip contains 192.168.1
- 筛选192.168.1.1和192.168.1.2之间的数据包: ip.addr == 192.168.1.1 && ip.addr ==192.168.1.2
- 筛选从192.168.1.1到192.168.1.2的数据包: ip.src == 192.168.1.1 && ip.dst == 192.168.1.2
- 传输层:
- 筛选tcp协议的数据包: tcp
- 筛选除tcp协议以外的数据包:!tcp
- 筛选端口为80的数据包: tcp.port == 80
- 筛选12345端口和80端口之间的数据包: tcp.port == 12345 && tcp.port == 80
- 筛选从12345端口到80端口的数据包: tcp.srcport == 12345 && tcp.dstport == 80
- 应用层:
- 特别说明: http中http.request表示请求头中的第一行(如GET indexjsp HTTP/1.1),http.response表示响应头中的第一行(如HTTP/1.1 200 OK),其他头部都用http.header_name形式。
- 筛选url中包含.php的http数据包: http.request.uri contains .php
- 筛选内容包含username的http数据包: http contains username
3、使用wireshark分析TCP三次握手
1.设置过滤阿里云服务器的IP地址: ip.addr == 47.104.157.132
2.使用TCP调试助手连接阿里云服务器上的TCP服务端
3.我们发现wireshark捕获到了3条TCP数据
- 第一次握手数据包:客户端发送一个TCP,标志位为SYN,序列号为0,代表客户端请求建立连接。如下图
- 第二次握手:服务器发回确认包,标志位为SYN,ACK.将确认序号(AcknowledgementNumber)设置为客户的seq加1以.即O+1=1,如下图
- 第三次握手:客户端再次发送确认包(ACK) SYN标志位为0,ACK标志位为1,如下图:
4、使用wireshark分析TCP数据包
1.使用tcp调试助手向阿里云服务器TCP服务端发送hello,并且接收到服务器返回的hello world
2.我们发现wireshark捕获到了四条TCP数据