LV06-01-网络工具-02-wireshark
本文主要是网络基础——wireshark工具介绍和使用的相关笔记,若笔记中有错误或者不合适的地方,欢迎批评指正😃。
点击查看使用工具及版本
Windows | windows11 |
Ubuntu | Ubuntu16.04的64位版本 |
VMware® Workstation 16 Pro | 16.2.3 build-19376536 |
SecureCRT | Version 8.7.2 (x64 build 2214) - 正式版-2020年5月14日 |
开发板 | 正点原子 i.MX6ULL Linux阿尔法开发板 |
uboot | NXP官方提供的uboot,NXP提供的版本为uboot-imx-rel_imx_4.1.15_2.1.0_ga(使用的uboot版本为U-Boot 2016.03) |
linux内核 | linux-4.15(NXP官方提供) |
STM32开发板 | 正点原子战舰V3(STM32F103ZET6) |
点击查看本文参考资料
参考方向 | 参考原文 |
--- | --- |
一、wireshark
简介
WireShark
是非常流行的网络封包分析工具,可以截取各种网络数据包,并显示数据包详细信息。常用于开发测试过程中各种问题定位。Wireshark
于 1998
年首次发布,最初被称为 Ethereal
。2006
年,由于商标问题,开发商不得不将其名称改为 Wireshark
。另外该软件可以运行在 Windows
和 Linux
操作系统上。
二、wireshark
安装
1. 在Ubuntu
中安装
为了获取最新版本的wireshark
,我们通过PPA
来安装这个软件:
1 | sudo add-apt-repository ppa:wireshark-dev/stable |
主要是上边的三条命令,按照提示进行安装即可。通过这种方式进行安装,即使安装了旧版本的 Wireshark
,它也将更新为新版本。
安装时(安装过程可能比较慢长,可以做点其他的事),系统将会询问我们是否允许非超级用户捕获数据包。选择Yes
允许的话,即便不是root
用户,也可以使用软件捕获数据包,选择No
将会限制非超级用户捕获数据包,选择完毕后便会完成安装。
安装完成后,打开软件,软件界面如下图所示:
操作完成后,最好重启一下,这样就可以识别到当前系统的网卡啦,我安装好的时候是没显示ens
开头的信息的,重启一下Ubuntu
系统就好啦。
如果说在软件包设置那个界面选了 否(No
) ,这个时候当我们终端直接运行wiresirk
是没有问题的,可以正常打开界面,但是当我们开始抓包的时候就会弹出以下提醒,要是想在非root
用户下也可以捕获数据包,要怎么办呢?
我们在终端输入以下命令,便会重新弹出软件包设置界面。然后选择是即可。
1 | sudo dpkg-reconfigure wireshark-common |
软件设置完毕后,由于我们需要允许非超级用户捕获数据包,因此必须将该用户添加到 wireshark
组。使用 usermod
命令将自己添加到 wireshark
组。
1 | sudo usermod -aG wireshark $(whoami) |
如此便可以在非root
下,正常捕获数据包啦。
2. 在Windows
下安装
其实多数情况,我们可能会在虚拟机中的wireshark
中捕获数据包,然后放到Windows
下来分析,可能会更方便一些。我们可以在这里下载wireshark
软件的安装包:Wireshark · Go Deep-Download.
1 | https://www.wireshark.org/#download |
我们在这里下载Windows Installer (64-bit)
,下载完成后,双击.exe
可执行文件即可开始安装,这个没什么好说的,就是一路默认,一路next
就完事了。安装完成后,双击运行,界面如下所指示:
三、基本使用
1. 抓包实例
首先还是需要来看一下怎么抓包,这里我们抓取一下ping
命令操作过程中的数据包,这里我们直接在Windows
下的wireshark
软件中进行。
1.1 选择网卡
当我们进入wireshark
的时候,会看到接口选择界面,我们选择显示所有接口,由于我的电脑连接的是Wifi
所以我这里选择WLAN
。
双击之后,便会进入抓包的界面(或者就是【右键】→【start capture
】),如下图所示:
双击之后直接就开始抓包了,这个时候我还开着网页以及一些联网的应用,所以出来直接就有很多数据了,在Ubuntu
中的时候好像就没有这么多的。
1.2 ping
保持开启抓包的状态,然后我们打开Windows
中的命令提示符,输入以下命令:
1 | ping www.baidu.com |
然后就会测试我们能否与该网站连通,界面如下所示:
1.3 停止抓包
如下图所示,点击这个红色的方框就可以停止抓包了。
1.4 保存数据
我们通过该软件抓到的数据包是可以进行保存,并在其他计算机中使用该软件打开分析的。
然后我们这一次抓的包就会保存下来,保存的数据包文件后缀名为.pcapn
。
2. 界面简介
界面如下图所示:
- (1)菜单栏:用于调试,配置,保存等功能,其实所有的功能都可以在菜单栏进行操作;
- (2)工具栏:就是一些常用功能的快捷方式,如保存捕获数据、停止捕获和开始捕获等;
- (3)过滤栏:在这里指定过滤的规则,过滤我们需要的数据包;
- (4)数据包列表:这里是我们捕获的所有数据包,每一行就是一个数据包;
- (5)数据包详情:每个数据包的详细数据;
点击查看各部分说明
有的数据包详情中可能不仅仅有上图的四条:
Frame
: 物理层的数据帧概况,对应的是物理层;Ethernet II
: 数据链路层以太网帧头部信息,对应的是数据链路层;Internet Protocol Version 4
: 互联网层IP
包的头部信息,对应的是网络层Transmission Control Protocol
: 传输层的数据段头部信息,此处是TCP
,对应的是传输层Hypertext Transfer Protocol
: 应用层的信息,这一种就是HTTP
协议,对应的是应用层
与OSI
七层模型的对应关系如下图所示:
- (6)数据包字节:数据包对应的字节流,二进制的形式显示。
3. 过滤器
我们在抓取数据包的时候会抓取大量不相关的数据包,如何过滤出我们需要的呢?wireshark
给我们提供了提供了两个过滤器:捕获过滤器 和 显示过滤器。两个过滤器的过滤思路不同。
- 捕获过滤器:重点在动作,需要的数据包才抓,不需要的就不抓。
- 显示过滤器:重点在数据包的显示,所有的数据包已经抓了,只是不显示不需要的。
3.1 捕获过滤器
3.1.1 设置方式
我们只想抓一些自己需要的包,那么我们就需要在启动抓包之前或者停止抓包后使用捕获过滤器,我们在抓包开始之前,打开捕获过滤器界面:【菜单栏】→【捕获】→【选项】,然后便会打开以面板:
【注意】这里会有自动的语法检测,当输入框变为绿色的时候说明语法正确,可以开始捕获,若为粉红色,则不能开始捕获,开始按钮也为灰色,无法选中。
有一些通用的捕获过滤器表达式每一次都全部写一遍不免有些麻烦,我们可以在捕获过滤器选项中保存一些通用的过滤器,然后在设置捕获过滤器的时候直接选择即可:【菜单栏】→【捕获】→【捕获过滤器】
3.1.2 表达式语法
捕获过滤器表达式的语法格式被称为BPF
,(全称 Berkeley Packet Filter
),中文叫伯克利封包过滤器。语法格式为:
1 | <Protocol> <Direction> <Type> <Value> <逻辑运算符> <其他表达式> |
各部分含义如下:
协议 Protocol | 各种网络协议,比如:tcp、udp、http |
方向 Direction | 源地址(src)、目标地址(dst) |
类型 Type | 主机(host)、网段(net)、端口(port) |
值 value | 主机(host)、网段(net)、端口(port)等的值 |
逻辑运算符 | 与( && )、或( || )、非( !) |
其他表达式 | 需要同时应用的其他过滤器表达式 |
【注意】这些个元素可以自由组合。
点击查看实例
- 抓取
TCP
数据包
我们新增一个捕获过滤器,表达式的值设为:
1 | TCP |
然后我们就可以开始只捕捉TCP
的数据包了。
- 抓取固定源的数据包
1 | src host 192.168.1.10 |
这个就不再放图了,跟上边一样的设置方法。
3.3 显示过滤器
3.3.1 设置方式
下边我们来看一下另一种显示过滤器,这种过滤器会抓取全部的包,然后通过显示过滤器显示我们需要的包。显示过滤器的使用就在工具栏下边,即便是正在捕获数据包,也依然可以使用显示过滤器:
【注意】这里也会有自动的语法检测,当输入框变为绿色的时候说明语法正确,若为粉红色,说明语法有误,需要修改。
3.3.2 表达式语法
显示过滤器的语法如下:
1 | <协议>.<字段> <比较运算符> <值> <逻辑运算符> <其他表达式> |
各部分说明如下:
协议 | tcp、udp、http等 |
字段 | 源IP端口(srcport)、目标IP端口(dstport)等 |
比较运算符 | >、<、==、>=、<=、!= |
逻辑运算符 | and、or、not、xor(有且仅有一个条件被满足) |
例如,
1 | tcp.srcport == 443 # 只抓取源IP端口为443的tcp数据 |