【保姆级教学】抓包工具Wireshark使用教程
wireshark介绍
今天讲一下另一款底层抓包软件,之前写过两篇抓包软件
分别是
- fiddler抓包【https://www.cnblogs.com/zichliang/p/16067941.html】
- mitmdump抓包【https://www.cnblogs.com/zichliang/p/16067941.html】
Wireshark (前身 Ethereal) 是一个网络包分析工具该工具主要是用来捕获网络数据包,并自动解析数据包为用户显示数据包的详细信息,供用户对数据包进行分析
当然wireshark更多的偏向于硬件底层多一点。偏向于底层接口抓包。
wireshark可以通过过滤器可以筛选出想要分析的内容。包括按照协议过滤、端口和主机名过滤、数据包内容过滤。
那常见的协议过滤是哪几种呢?
常见协议包抓取
- ARP协议
- ICMP协议
- TCP协议
- UDP协议
- DNS协议
- HTTP协议
WireShark应用
- 网络管理员会使用wireshark来检查网络问题
- 网络安全工程师 使用Wireshark 来检查资讯安全相关问题
- 软件测试工程师使用wireshark抓包,来分析自己测试的软件
- 开发人员 使用Wireshark来为新的通讯协议除错
- 从事socket编程的工程师会用wireshark来调试
- 普通使用 使用Wireshark 来学习网络协议的相关知识
- 还可以抓一些敏感信息....
下载及安装
Kali Linux系统自带 Wireshark 工具,而windows 需要手动安装wireshark
下面贴上下载官网:
https://www.wireshark.org/download.html
下载完之后一直点下一步安装即可。
wireshark的界面介绍
首先安装完了之后,我们打开抓包软件
可以看到有很多的网络接口,那我们应该如何选择呢?
win+r =====> cmd ====> ipconfig
选择我们现在正在上网的网卡
这里用的wifi 就直接抓wlan这个网卡了。
直接鼠标双击点进去
可以看到有很多的数据包
整体来说,界面主要分为以下几部分:
菜单栏:Wireshark的标准菜单栏。
工具栏:常用功能的快捷图标按钮,提供快速访问菜单中经常用到的项目的功能。
过滤器:提供处理当前显示过滤得方法。
Packet List面板:显示每个数据帧的摘要。这里采用表格的形式列出了当前捕获文件中的所有数据包,其中包括了数据包序号、数据包捕获的相对时间、数据包的源地址和目标地址、数据包的协议以及在数据包中找到的概况信息等。
Packet Details面板:分析数据包的详细信息。这个面板分层次地显示了一个数据包中的内容,并且可以通过展开或是收缩来显示这个数据包中所捕获的全部内容。
Packet Bytes面板:以十六进制和ASCII码的形式显示数据包的内容。这里显 示了一个数据包未经处理的原始样子,也就是在链路上传播时的样子。
状态栏:包含有专家信息、注释、包的数量和Profile。
在此之前了解下抓包的两种模式。
混杂模式与普通模式
不勾选就是普通模式
那什么是混杂模式 和普通模式呢?
- 混杂模式: 混杂模式就是接收所有经过网卡的数据包,包括不是发给本机的包,即不验证MAC地址
- 普通模式: 普通模式下网卡只接收发给本机的包 (包括广播包)传递给上层程序,其它的包一律丢弃
一般来说,混杂模式不会影响网卡的正常工作,多在网络监听工具上使用
菜单栏
文件:打开文件集、保存包、导出HTTP对象
编辑:清除所有标记的包、忽略包和时间属性
视图:查看/隐藏工具栏和面板、编辑Time列、重设颜色
跳转:跳转到某个设置好的分组列表
捕获:用于设置模式和开始与停止
分析:创建显示过滤器宏、查看启用协议、保存关注解码
统计:创建图表并打开各种协议统计窗口
电话:执行所有语音功能(图表、图形、回放)
无线:用于设置无线蓝牙等抓包的功能
工具:根据包内容构建防火墙规则、访问Lua脚本工具
帮助:学习wireshark全球存储和个人配置文件
工具栏
从左至右
- 开始捕获
- 停止捕获
- 重新开始当前捕获
- 捕获选项
- 打开已保存的捕获文件
- 保存捕获文件
- 关闭捕获文件
- 重载捕获文件
- 查找一个分组
- 转到前一个文组
- 转到后一个分组
- 转到特定分组
- 转到首个分组
- 转到最新分组
- 在实时捕获时,自动滚动屏幕到最新的分组.
- 放大主窗口文本
- 收缩主窗口文本
- 使主窗口文本回归正常大小
- 调整分组列表以适应内容
过滤器
当用户面向大量需要处理的数据时,可以通过使用显示过滤器快速的过滤自己需要的数据。
下文会详细介绍,搜索即可过滤。
Packet List面板
No. :包的编号 ————————————默认wireshark是按照数据包编号从低到高排序,该编号不会发生改变,即使使用了过滤也同样如此
Time:包的时间戳。时间格式可以自己设置
Source 和Destination :包的源地址和目的地址
Protocol:包的协议类型
Length:包的长度
Info:包的附加信息
右击还有其他的一些配置
packet details
在数据包列表中选择指定数据包,在数据包详细信息中会显示数据包的所有详细信息内容。数据包详细信息面板是最重要的,用来查看协议中的每一个字段。各行信息分别为
(1)Frame: 物理层的数据帧概况
(2)Ethernet II: 数据链路层以太网帧头部信息
(3)Internet Protocol Version 4: 互联网层IP包头部信息
.... (这里点点点表示 不同的包所展示的是不同的内容)
分层的显示了一个数据包中的内容,并且可以通过展开或者收缩来显示这个数据包中所捕获的全部内容
还可以看到一些详细信息。
packet bytes
这个板块 分为两部分 左边这部分是16进制的数据,右边是ASCII格式
当在packet details面板中选择任意一个字段后,在packet bytes面板中包含该字段的字节也高亮显示
最底层状态栏
分为一些杂项和地址栏。个人感觉作用不大。
过滤器的使用。
刚刚点击了停止抓包 要是重新开启抓包点击左上角这个按钮
如果想保存就点击第一个,一般做测试都是不保存的。
然后就可以重新开始抓包了。
然后就正式开始过滤抓包了,我们想抓http相关的包====> 直接输入http或者tcp
可能这样显得不太直观。
举个三次握手四次挥手的例子。
当输入 tcp.flags.ack == 0
即代表底层握手(链接成功)
当输入 tcp.flags.syn == 1
即代表底层握手(数据发送成功)
不懂的可以自己去百度什么是三次握手四次挥手。
所抓到也都是底层链接成功和发送成功的包。
当然 命令和命令之间也可以通过and 或者or来完成与或非的关系。
即使讲到了链接和发送的命令 再讲一下发送成功结束的命令tcp.flags.fin==1
其中展示了本机向此服务器发送成功的数据包
之前所讲到的所有协议包 都可以在这里过滤,比如 udp,http,tcp 等等等
IP过滤
刚刚讲了可以通过协议过滤 那我们再抓取网站数据的时候能不能通过IP过滤呢。
搜下我们本地发送了那些包
ip.src_host==192.168.2.51
可以清楚的看到source来源就都是我们的主机了
搜下目标地址是百度的包 百度的IP地址是180.101.50.188
ip.dst_host == 180.101.50.188
还有一个命令 ip.addr 代表着 只有IP是xxx 就全部显现出来,不管是接收 还是发送
wireshark解析ARP协议
在了解使用wireshark分析arp协议之前,我们先来了解下,什么是是arp协议?
通俗点说,在局域网中通信时使用的是MAC地址,而不是常见的IP地址。
所以在局域网的两台主机间通信时,必须要知道对方的MAC地址,这就是ARP协议要做的事:将IP地址转换为MAC地址。
光看这个讲arp可能太笼统了,我们肯定之前听过一个名称——arp欺骗,那什么是arp欺骗呢?
ARP攻击就是通过伪造IP地址和MAC地址实现ARP欺骗,能够在网络中产生大量的ARP通信量,
攻击者只要持续不断的发出伪造的ARP响应包就能更改目标主机ARP缓存中的IP-MAC条目,造成网络中断或中间人攻击。
当局域网中一台机器,反复向其他机器,特别是向网关,发送这样无效假冒的ARP应答信息包时,严重的网络堵塞就会开始。
由于网关MAC地址错误,所以从网络中计算机发来的数据无法正常发到网关,自然无法正常上网。这就造成了无法访问外网的问题,
由于很多时候网关还控制着我们的局域网LAN上网,所以这时我们的LAN访问也就出现问题了
这里也介绍完了
我们先来抓下arp的包 ,直接在过滤器中搜索ARP,并且随意打开一个包
- Hardware type(网卡类型):以太网(Ethernet)是1。我们常见的网络都是以太网
- Protocol type:查询中提供的网络地址的类型,IPv4是0x0800。
- Harware size:网卡地址长度,以太网网卡是6字节。
- Protocol size:查询中提供的网络地址的的长度,IPv4是4字节。
- Opcode:查询包值为1,响应包值为2。
- Sender MAC address:发送者的Mac地址。
- Sender IP address:发送者的IP地址。
- Target MAC address:接收者的Mac地址,指向性查询包是MAC地址表中记录的mac,广播性查询包是00:00:00:00:00:00。(注意区分ARP头和Eth头,指向性查询包Eth头的dst mac是MAC地址表中记录的mac,而广播性查询包是ff:ff:ff:ff:ff:ff)。
- Target protocol address:要查询目标的mac地址的ip。
再来看一下回复包
故: 由一个request 和一个reply 组成的一组arp包,有请求有回复组成的arp响应。
WireShark解析ICMP协议
使用Ping命令用来测试网络的可达性。从而接受ICMP的报文包
首先我们ping下自己的网关
然后找下wireshark中刚刚抓到的包
重点看下ICMP里面的内容
type:报文类型,8代表请求,0代表应答;
code:为0,表示为回显应答成功;
checksum:表示认证这个ICMP报文是否被篡改过。校验完整性。
checksum Status: 表示校验的结果,Good代表没问题。
identifier:表示标识符ID
Sequence Number: 表示序列号
Data: 具体发送到数据包,当然肯定是通过加密的。
这是请求数据,还有一组回复数据
可以看到。标示符和序列号都是一样的
wireshark 解析TCP协议
即两台电脑或者是两台机器之间的相互链接>>>中间会经历一个三次握手 四次挥手的过程。
TCP 三次握手
如下图所示是示意图>>>
我们随意打开一个网页:百度 IP是180.101.50.188
如上图所示 有syn的tcp链接包
然后我们来看下TCP协议的具体的内容
封包信息:
- Frame: 物理层的数据帧概况
- Ethernet II: 数据链路层以太网帧头部信息
- Internet Protocol Version 4: 网络层IP包头部信息
- Transmission Control Protocol: 传输层TCP数据段头部信息
传输层TCP数据段信息
- 源端口:source Port: 44922
- 目的端口:Destination Port: 19999
- 序号:sequence Number: o
- 确认号:Acknowledgment number: o
- 报头长度:Header Length: 4o bytes
- 标志位:Flags: ox002 (SYN)
- 校验和:Checksum: oxac81
当然这么看肯定不太直观,还要结合这回复包去看每一条信息。所以我们可以打开流数据包来查看tcp协议报文
选择限制显示过滤器 选择百度的地址
这样看起来就非常的直观了。
TCP断开链接 四次挥手
既然有链接,肯定就有断开链接 天下无不散之筵席嘛,不可能一直互相连接的。
而断开链接则有另一个名词—— 四次挥手
和三次握手一样,我们直接关闭百度这个网站,
然后去wireshark中搜索180.101.50.242这个ip(由于百度的地址会改变,我们需要实时查看下百度的ip)
首先就会发起
第一步:客户端打算断开连接
第二步:服务器收到连接释放报文段(FIN报文)后,就向客户端发送ACK应答报文
第三步:服务器也打算断开连接,向客户端发送连接释放(FIN)报文段
第四步:客户端收到来自服务器的连接释放(FIN)报文段后,会向服务器发送一个ACK应答报文段,以连接释放(FIN)报文段的确认序号 ack 作为ACK应答报文段的序列号 seq,以连接释放(FIN)报文段的序列号 seq+1作为确认序号ack。
wireShark 解析HTTP协议
http的底层本质上还是TCP协议。
话不多说,直接请求百度地址。
这里百度地址不是www.baidu地址
然后打开抓包软件 搜索tcp
还可以查看具体信息
总结
总的来说,WireShark非常强大,不仅可以抓各种包,还能对局域网的某些数据进行监控抓包分析。非常强大。
不过要慎用。
【保姆级教学】抓包工具Wireshark使用教程的更多相关文章
- 网络抓包工具 wireshark 入门教程
Wireshark Wireshark(前称Ethereal)是一个网络数据包分析软件.网络数据包分析软件的功能是截取网络数据包,并尽可能显示出最为详细的网络数据包数据.Wireshark使用WinP ...
- 抓包工具Wireshark过滤器
抓包工具WireShark分为两种过滤器: 捕捉过滤器(CaptureFilters) 显示过滤器(DisplayFilters) 捕捉过虑器语法: Protocol Direction Host ...
- socket和抓包工具wireshark
socket和抓包工具wireshark 最近在学习Python代码中的socket和抓包工具wireshark,故又将socket等概念又学习了一遍,温故而知新: Python代码如下: serve ...
- fiddler2抓包工具使用图文教程
fiddler2抓包工具使用图文教程 三.fiddler实用功能使用说明: 1.fiddler捕获浏览器的会话: 能支持http代理的任意程序都能被fiddler捕获到,由于fiddler的运行机制就 ...
- 网络抓包工具-Wireshark学习资料
wireshark一个非常牛逼的网络抓包工具.转载一系列博文 一站式学习Wireshark(一):Wireshark基本用法 一站式学习Wireshark(二):应用Wireshark观察基本网络协议 ...
- 抓包工具Wireshark的使用
WireShark是非常流行的网络封包分析软件,功能十分强大.可以截取各种网络封包,显示网络封包的详细信息. WireShark界面简介 启动WireShark的界面如下: 选择网卡 wireshar ...
- 学习tcpIp必备的抓包工具wireshark
wireshark是一个优秀的抓包工具 ip.src=192.168.10.123 发送http的一端 ip.dst=192.168.10.126 接收http的一端 如下图所示:
- 软件测试必须掌握的抓包工具Wireshark,你会了么?
作为软件测试工程师,大家在工作中肯定经常会用到各种抓包工具来辅助测试,比如浏览器自带的抓包工具-F12,方便又快捷:比如时下特别流行的Fiddler工具,使用各种web和APP测试的各种场景的抓包分析 ...
- GNS3与抓包工具Wireshark的关联
转至:https://blog.51cto.com/xpleaf/1615145 (一)前言 本博文分享GNS3与Wireshark关联的方法. 显然现在网络上已经有类似的文章分享,而本博文旨在提供更 ...
- 抓包工具charles使用教程指南
0x01 前言: Charles是一款抓包修改工具,相比起burp,charles具有界面简单直观,易于上手,数据请求控制容易,修改简单,抓取数据的开始暂停方便等等优势!下面来详细介绍下这款强大好用的 ...
随机推荐
- 股票数据Scrapy爬虫实例(亲测有效)
步骤: 步骤1:建立工程和Spider模板 scrapy startproject BaiduStocks cd BaiduStocks scrapy genspider stocks baidu.c ...
- [BUUCTF]Web刷题记录
为提升观感体验,本篇博文长期更新,新题目以二次编辑形式附在最后 [ACTF2020 新生赛]Exec 打开后发现网页是关于执行一个ping指令,经过测试是直接执行的,所以就直接命令执行了 127.0. ...
- 高尔顿钉板的统计意义—R实现
提到高尔顿,人们总是把他和钉板实验联系在一起,偶尔也会有人提及他是达尔文的表弟.实际上,作为维多利亚时代的人类学家.统计学家.心理学家和遗传学家,同时又是热带探险家.地理学家.发明家.气象学家,高尔顿 ...
- python入门教程之十五获取对象属性的几种方法
当我们拿到一个对象的引用时,如何知道这个对象是什么类型.有哪些方法呢? 使用type() 首先,我们来判断对象类型,使用type()函数: 基本类型都可以用type()判断: >>> ...
- python入门教程之二环境搭建
环境搭建 1python解释器 当我们编写Python代码时,我们得到的是一个包含Python代码的以.py为扩展名的文本文件.要运行代码,就需要Python解释器去执行.py文件. 由于整个Pyth ...
- [PKM] 个人知识管理
1 个人知识管理的需求 1.1 背景 随着信息大爆炸,碎片化的知识越来越多,原来中小学阶段在学校中习得的.传统的.基于纸质笔记的知识管理方式已不能满足当前的诉求. 传统的基于纸质笔记的知识管理方式 工 ...
- [GIT]指定分支下创建分支
1 解决方案 Eg: master分支下创建 $ git checkout master //切换到master分支下 $ git branch branch_tmp_A //在本地仓库创建临时分支b ...
- [MAUI 项目实战] 手势控制音乐播放器(四):圆形进度条
@ 目录 关于图形绘制 创建自定义控件 使用控件 创建专辑封面 项目地址 我们将绘制一个圆形的音乐播放控件,它包含一个圆形的进度条.专辑页面和播放按钮. 关于图形绘制 使用MAUI的绘制功能,需要Mi ...
- 四月十二号java基础知识
1.面向对象的编程思想是力图使在计算机语言中对事物的描述与现实世界中该事物的本来面目尽可能地一致.2.类(class)和对象(object)是面向对象程序设计方法中最核心的概念3.类是对某一事物的描述 ...
- Semantic Kernel 入门系列:💾Native Function
语义的归语义,语法的归语法. 基础定义 最基本的Native Function定义只需要在方法上添加 SKFunction 的特性即可. using Microsoft.SemanticKernel. ...