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这个网卡了。
直接鼠标双击点进去
可以看到有很多的数据包
在此之前了解下抓包的两种模式。
混杂模式与普通模式
不勾选就是普通模式
那什么是混杂模式 和普通模式呢?
- 混杂模式: 混杂模式就是接收所有经过网卡的数据包,包括不是发给本机的包,即不验证MAC地址
- 普通模式: 普通模式下网卡只接收发给本机的包 (包括广播包)传递给上层程序,其它的包一律丢弃
一般来说,混杂模式不会影响网卡的正常工作,多在网络监听工具上使用
页面介绍
整体来说,界面主要分为以下几部分:
菜单栏:Wireshark的标准菜单栏。
工具栏:常用功能的快捷图标按钮,提供快速访问菜单中经常用到的项目的功能。
过滤器:提供处理当前显示过滤得方法。
Packet List面板:显示每个数据帧的摘要。这里采用表格的形式列出了当前捕获文件中的所有数据包,其中包括了数据包序号、数据包捕获的相对时间、数据包的源地址和目标地址、数据包的协议以及在数据包中找到的概况信息等。
Packet Details面板:分析数据包的详细信息。这个面板分层次地显示了一个数据包中的内容,并且可以通过展开或是收缩来显示这个数据包中所捕获的全部内容。
Packet Bytes面板:以十六进制和ASCII码的形式显示数据包的内容。这里显 示了一个数据包未经处理的原始样子,也就是在链路上传播时的样子。
状态栏:包含有专家信息、注释、包的数量和Profile。
菜单栏
文件:打开文件集、保存包、导出HTTP对象
编辑:清除所有标记的包、忽略包和时间属性
视图:查看/隐藏工具栏和面板、编辑Time列、重设颜色
跳转:跳转到某个设置好的分组列表
捕获:用于设置模式和开始与停止
分析:创建显示过滤器宏、查看启用协议、保存关注解码
统计:创建图表并打开各种协议统计窗口
电话:执行所有语音功能(图表、图形、回放)
无线:用于设置无线蓝牙等抓包的功能
工具:根据包内容构建防火墙规则、访问Lua脚本工具
帮助:学习wireshark全球存储和个人配置文件
工具栏
从左至右
- 开始捕获
- 停止捕获
- 重新开始当前捕获
- 捕获选项
- 打开已保存的捕获文件
- 保存捕获文件
- 关闭捕获文件
- 重载捕获文件
- 查找一个分组
- 转到前一个文组
- 转到后一个分组
- 转到特定分组
- 转到首个分组
- 转到最新分组
- 在实时捕获时,自动滚动屏幕到最新的分组.
- 放大主窗口文本
- 收缩主窗口文本
- 使主窗口文本回归正常大小
- 调整分组列表以适应内容
过滤器
当用户面向大量需要处理的数据时,可以通过使用显示过滤器快速的过滤自己需要的数据。
下文会详细介绍,搜索即可过滤。
Packet List面板
过滤器的使用。
刚刚点击了停止抓包 要是重新开启抓包点击左上角这个按钮
如果想保存就点击第一个,一般做测试都是不保存的。
然后就可以重新开始抓包了。
然后就正式开始过滤抓包了,我们想抓http相关的包====> 直接输入http或者tcp
可能这样显得不太直观。
举个三次握手四次挥手的例子。
当输入 tcp.flags.ack == 0
即代表底层握手(链接成功)
当输入 tcp.flags.syn == 1
即代表底层握手(数据发送成功)
不懂的可以自己去百度什么是三次握手四次挥手。
所抓到也都是底层链接成功和发送成功的包。
当然 命令和命令之间也可以通过and 或者or来完成与或非的关系。
即使讲到了链接和发送的命令 再讲一下发送成功结束的命令tcp.flags.fin==1
其中展示了本机向此服务器发送成功的数据包
之前所讲到的所有协议包 都可以在这里过滤。