首先下载安装 https://www.wireshark.org/download.html
wireshark 的工作过程为:
1、设置要捕获哪个网卡上的流量 捕获 --> 选项
首先你得知道当前机器的IP,然后就很容易找到是哪个网卡了。
文章图片
2、设置要捕获哪些内容 捕获 --> 捕获过滤器
这里我要捕获一个http请求,它是HTTP的80端口。
文章图片
设置好这两步它就会开始捕获数据了。
3、设置显示过滤器 设置好捕获过滤器之后,捕获的内容可能依然很多,这个时候就需要设置一下要显示哪些内容了,也就是显示过滤器。
文章图片
输入的内容http and ip.dst == xxxx
要遵循一定的语法。
使用 and
和 or
来连接。
比较操作符有:等于==
、不等于!=
、大于>
、小于<
、大于等于>=
、小于等于<=
常用的有
表达式 | 含义 |
---|---|
http |
只查看http请求 |
ip.dst == 192.168.2.157 |
请求的目标ip地址 |
tcp.dstport == 80 |
目标端口 |
http.request.method == GET |
http请求方式 |
http.request.uri == "/read5/heartbeat" |
请求uri |
4、追踪流 比如,我要查看上面某个http请求的具体内容,将其选中,追踪流,http流
文章图片
就可以查到到请求信息和响应信息的全部内容。
5、修改显示的时间格式 上面的列表中第二列为请求发出的时间。
视图 --> 时间显示格式 --> 日期和时间
文章图片
6、捕获https的请求 首先设置捕获过滤器为tcp,然后输入显示过滤器
ip.dst==47.104.146.209 and tcp.dstport==443
。发现列出的信息是加密的,这个时候是需要配置证书的,要知道浏览器中是包含证书的。当系统环境变量中存在
SSLKEYLOGFILE
这个变量的时候,chrome与firefox在访问https网站的时候会将密钥写入这个环境变量中,如果在wireshark中设置一下,这样就可以解析https的流量了。编辑 --> 首选项 --> Protocals --> TLS
文章图片
比如我设置
SSLKEYLOGFILE=D:\sslkeylog\sslkey.log
,这个文件要手动创建。重启浏览器
注:不抓包时记得把环境变量删掉,以避免性能浪费和安全性问题
同样都是HTTPS,有的使用的是HTTP/1.1;有的使用的是HTTP/2协议,分别使用http和http2来过滤,如何知道使用的是什么协议呢,打开浏览器调试,右键名称,在弹出的下拉框中勾上协议。
目前都使用的是TLS,它是SSL的升级版本。
以
https://www.baidu.com
为例,配置了TLS文件之前捕获的是Application Data,啥也看不到,设置了之后,就可以看到具体信息了。显示过滤器
tcp.port==443 and ip.dst==14.215.177.38
,然后访问https://www.baidu.com/
。文章图片
从浏览器的调试窗口也看到百度首页使用的是
http/1.1
协议。来测试一个基于 http2 的 https 接口。显示过滤器为
http2
。文章图片
发现请求和响应分开列出来了,
所以响应的目标IP是我本机IP
【杂项|使用 wireshark 抓包,https,http2】点击
200 OK
这一条,点击Data
就能看到响应的内容了。或者右键200 OK
,选中追踪流,http2 stream 也可以看到内容文章图片
我们来测试一下 post方式的接口。
文章图片
右键追踪流,可以看到请求参数和响应结果。
文章图片
推荐阅读
- 杂项|mobaxterm居然无法使用rz sz命令
- Linux|超级详细的Linux抓包工具tcpdump详解!
- Linux|Linux抓包(wireshark+tcpdump)
- 运维笔记|Linux性能优化——使用 tcpdump 和 Wireshark 分析网络流量
- 网络|Linux网络抓包分析工具
- Linux|Linux 抓包分析(Tcpdump + Wireshark 的完美组合)
- 杂项|2、phpstudy本地搭建网站
- 杂项|新编密码学——Hash函数
- #yyds干货盘点#web安全day44(进阶!使用Nmap+Wireshark理解端口扫描)